diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..097f9f9 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,9 @@ +# +# https://help.github.com/articles/dealing-with-line-endings/ +# +# Linux start script should use lf +/gradlew text eol=lf + +# These are Windows script files and should use crlf +*.bat text eol=crlf + diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..b00c3bd --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,6 @@ +version: 2 +updates: + - package-ecosystem: "gradle" + directory: "/" + schedule: + interval: "daily" diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..afd191b --- /dev/null +++ b/.gitignore @@ -0,0 +1,15 @@ +# Compiled class file +*.class + +# Log file +*.log +*.log.gz + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* + +# Project files +/.idea/ +/.gradle/ +/build/ +/out/ diff --git a/README.md b/README.md new file mode 100644 index 0000000..4bcd245 --- /dev/null +++ b/README.md @@ -0,0 +1,21 @@ +# ViaLegacy +ViaVersion addon to add support for EVERY minecraft server version (Classic, Alpha, Beta, Release, April Fools). + +## Supported Server versions +- Classic (c0.0.15 - c0.30 including [CPE](https://wiki.vg/Classic_Protocol_Extension)) +- Alpha (a1.0.15 - a1.2.6) +- Beta (b1.0 - b1.8.1) +- Release (1.0.0 - 1.7.10) +- April Fools (3D Shareware, 20w14infinite) +- Combat Snapshots (Combat Test 8c) + +## Releases +### Gradle/Maven +To use ViaLegacy with Gradle/Maven you can use this [Maven server](https://maven.lenni0451.net/#/releases/net/raphimc/ViaLegacy) or [Jitpack](https://jitpack.io/#RaphiMC/ViaLegacy). +You can also find instructions how to implement it into your build script there. + +### Jar File +If you just want the latest jar file you can download it from this [Jenkins](https://build.lenni0451.net/job/ViaLegacy/). + +## Usage +TODO diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..0a5a26e --- /dev/null +++ b/build.gradle @@ -0,0 +1,63 @@ +plugins { + id "java-library" + id "maven-publish" +} + +java.toolchain.languageVersion = JavaLanguageVersion.of(8) +compileJava.options.encoding = "UTF-8" + +group = project.maven_group +archivesBaseName = project.maven_name +version = project.maven_version + +repositories { + mavenCentral() + maven { + name = "Lenni0451" + url "https://maven.lenni0451.net/releases" + } + maven { + name = "ViaVersion" + url "https://repo.viaversion.com" + } +} + +dependencies { + compileOnly "com.viaversion:viaversion:4.5.2-SNAPSHOT" + compileOnly("com.viaversion:viabackwards-common:4.5.2-SNAPSHOT") { + exclude group: "com.viaversion", module: "viaversion" + } + compileOnly "org.yaml:snakeyaml:1.33" + //api "net.lenni0451.mcstructs:all:1.4.0" // Not yet used +} + +java { + withSourcesJar() + withJavadocJar() +} + +javadoc { + failOnError = false +} + +publishing { + repositories { + maven { + name = "reposilite" + url = "https://maven.lenni0451.net/releases" + credentials(PasswordCredentials) + authentication { + basic(BasicAuthentication) + } + } + } + publications { + maven(MavenPublication) { + groupId = project.maven_group + artifactId = project.maven_name + version = project.maven_version + + from components.java + } + } +} diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..d89bce0 --- /dev/null +++ b/gradle.properties @@ -0,0 +1,9 @@ +# Gradle properties +org.gradle.daemon=true +org.gradle.parallel=true +org.gradle.configureondemand=true + +# Project properties +maven_name=ViaLegacy +maven_group=net.raphimc +maven_version=2.0.0 diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000..249e583 Binary files /dev/null and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..ae04661 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew new file mode 100644 index 0000000..a69d9cb --- /dev/null +++ b/gradlew @@ -0,0 +1,240 @@ +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit + +APP_NAME="Gradle" +APP_BASE_NAME=${0##*/} + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..f127cfd --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,91 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..f598cca --- /dev/null +++ b/settings.gradle @@ -0,0 +1,8 @@ +pluginManagement { + repositories { + mavenCentral() + gradlePluginPortal() + } +} + +rootProject.name = "ViaLegacy" diff --git a/src/main/java/net/raphimc/vialegacy/ViaLegacy.java b/src/main/java/net/raphimc/vialegacy/ViaLegacy.java new file mode 100644 index 0000000..b1b9407 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/ViaLegacy.java @@ -0,0 +1,29 @@ +package net.raphimc.vialegacy; + +import net.raphimc.vialegacy.platform.ViaLegacyConfig; +import net.raphimc.vialegacy.platform.ViaLegacyPlatform; + +public class ViaLegacy { + + private static ViaLegacyPlatform platform; + private static ViaLegacyConfig config; + + private ViaLegacy() { + } + + public static void init(final ViaLegacyPlatform platform, final ViaLegacyConfig config) { + if (ViaLegacy.platform != null) throw new IllegalStateException("ViaLegacy is already initialized"); + + ViaLegacy.platform = platform; + ViaLegacy.config = config; + } + + public static ViaLegacyPlatform getPlatform() { + return ViaLegacy.platform; + } + + public static ViaLegacyConfig getConfig() { + return ViaLegacy.config; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/ViaLegacyConfig.java b/src/main/java/net/raphimc/vialegacy/ViaLegacyConfig.java new file mode 100644 index 0000000..2b595e7 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/ViaLegacyConfig.java @@ -0,0 +1,102 @@ +package net.raphimc.vialegacy; + +import com.viaversion.viaversion.util.Config; + +import java.io.File; +import java.net.URL; +import java.util.*; + +public class ViaLegacyConfig extends Config implements net.raphimc.vialegacy.platform.ViaLegacyConfig { + + private boolean dynamicOnground; + private boolean ignoreLongChannelNames; + private boolean legacySkullLoading; + private boolean legacySkinLoading; + private boolean soundEmulation; + private boolean oldBiomes; + private boolean remapBasedOnColor; + private int classicChunkRange; + private int chunksPerTick; + + public ViaLegacyConfig(final File configFile) { + super(configFile); + } + + @Override + public void reloadConfig() { + super.reloadConfig(); + this.loadFields(); + } + + private void loadFields() { + this.dynamicOnground = this.getBoolean("dynamic-onground", true); + this.ignoreLongChannelNames = this.getBoolean("ignore-long-1_8-channel-names", true); + this.legacySkullLoading = this.getBoolean("legacy-skull-loading", true); + this.legacySkinLoading = this.getBoolean("legacy-skin-loading", false); + this.soundEmulation = this.getBoolean("sound-emulation", true); + this.oldBiomes = this.getBoolean("old-biomes", true); + this.remapBasedOnColor = this.getBoolean("remap-based-on-color", true); + this.classicChunkRange = this.getInt("classic-chunk-range", 10); + this.chunksPerTick = this.getInt("chunks-per-tick", -1); + } + + @Override + public URL getDefaultConfigURL() { + return this.getClass().getClassLoader().getResource("assets/vialegacy/vialegacy.yml"); + } + + @Override + protected void handleConfig(Map map) { + } + + @Override + public List getUnsupportedOptions() { + return Collections.emptyList(); + } + + @Override + public boolean isDynamicOnground() { + return this.dynamicOnground; + } + + @Override + public boolean isIgnoreLong1_8ChannelNames() { + return this.ignoreLongChannelNames; + } + + @Override + public boolean isLegacySkullLoading() { + return this.legacySkullLoading; + } + + @Override + public boolean isLegacySkinLoading() { + return this.legacySkinLoading; + } + + @Override + public boolean isSoundEmulation() { + return this.soundEmulation; + } + + @Override + public boolean isOldBiomes() { + return this.oldBiomes; + } + + @Override + public boolean isRemapBasedOnColor() { + return this.remapBasedOnColor; + } + + @Override + public int getClassicChunkRange() { + return this.classicChunkRange; + } + + @Override + public int getChunksPerTick() { + return this.chunksPerTick; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/api/AbstractBlockRemapper.java b/src/main/java/net/raphimc/vialegacy/api/AbstractBlockRemapper.java new file mode 100644 index 0000000..59ecdf9 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/api/AbstractBlockRemapper.java @@ -0,0 +1,53 @@ +package net.raphimc.vialegacy.api; + +import com.viaversion.viaversion.api.minecraft.BlockChangeRecord; +import com.viaversion.viaversion.api.minecraft.chunks.*; +import com.viaversion.viaversion.libs.fastutil.ints.Int2IntMap; +import com.viaversion.viaversion.libs.fastutil.ints.Int2IntOpenHashMap; + +public abstract class AbstractBlockRemapper { + + private final Int2IntMap REPLACEMENTS = new Int2IntOpenHashMap(); + + protected void registerReplacement(final int from, final int to) { + this.REPLACEMENTS.put(from, to); + } + + protected void registerReplacement(final IdAndData from, final IdAndData to) { + this.REPLACEMENTS.put(from.toCompressedData(), to.toCompressedData()); + } + + public void remapChunk(final Chunk chunk) { + for (int i = 0; i < chunk.getSections().length; i++) { + final ChunkSection section = chunk.getSections()[i]; + if (section == null) continue; + final DataPalette palette = section.palette(PaletteType.BLOCKS); + + for (Int2IntMap.Entry entry : this.REPLACEMENTS.int2IntEntrySet()) { + palette.replaceId(entry.getIntKey(), entry.getIntValue()); + } + } + } + + public void remapBlockChangeRecords(final BlockChangeRecord[] blockChangeRecords) { + for (final BlockChangeRecord record : blockChangeRecords) { + final int id = record.getBlockId(); + if (this.REPLACEMENTS.containsKey(id)) { + record.setBlockId(this.REPLACEMENTS.get(id)); + } + } + } + + public void remapBlock(final IdAndData block) { + if (this.REPLACEMENTS.containsKey(block.toCompressedData())) { + final int replacement = this.REPLACEMENTS.get(block.toCompressedData()); + block.id = replacement >> 4; + block.data = replacement & 15; + } + } + + public int remapBlock(final int id) { + return this.REPLACEMENTS.getOrDefault(id, id); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/api/AbstractChunkTracker.java b/src/main/java/net/raphimc/vialegacy/api/AbstractChunkTracker.java new file mode 100644 index 0000000..9959850 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/api/AbstractChunkTracker.java @@ -0,0 +1,201 @@ +package net.raphimc.vialegacy.api; + +import com.viaversion.viaversion.api.connection.StoredObject; +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.minecraft.Position; +import com.viaversion.viaversion.api.minecraft.chunks.*; +import com.viaversion.viaversion.libs.fastutil.ints.*; + +import java.util.*; + +public abstract class AbstractChunkTracker extends StoredObject { + + private final Map chunks = new HashMap<>(); + private final IntSet toTrack = new IntOpenHashSet(); + private final boolean trackAll; + private final Int2IntMap replacements = new Int2IntOpenHashMap(); + + public AbstractChunkTracker(final UserConnection user, final int... toTrack) { + super(user); + + for (final int trackedBlock : toTrack) { + this.toTrack.add(trackedBlock); + } + this.trackAll = this.toTrack.contains(0); + } + + public void trackAndRemap(final Chunk chunk) { + final ChunkCoord chunkCoord = new ChunkCoord(chunk.getX(), chunk.getZ()); + if (chunk.isFullChunk() && chunk.getBitmask() == 0) { + this.chunks.remove(chunkCoord); + return; + } + + final Chunk copyChunk = new BaseChunk(chunk.getX(), chunk.getZ(), true, false, 0xFFFF, new ChunkSection[chunk.getSections().length], null, new ArrayList<>()); + if (!chunk.isFullChunk()) { + if (this.chunks.containsKey(chunkCoord)) { + copyChunk.setSections(this.chunks.get(chunkCoord).getSections()); + } else { + return; + } + } else { + this.chunks.put(chunkCoord, copyChunk); + } + + // Track + if (!this.toTrack.isEmpty()) { + for (int i = 0; i < chunk.getSections().length; i++) { + final ChunkSection section = chunk.getSections()[i]; + if (section == null) continue; + copyChunk.getSections()[i] = null; + + final DataPalette palette = section.palette(PaletteType.BLOCKS); + if (!this.hasRemappableBlocks(palette)) continue; + + final ChunkSection copySection = copyChunk.getSections()[i] = new ChunkSectionImpl(false); + final DataPalette copyPalette = copySection.palette(PaletteType.BLOCKS); + copyPalette.addId(0); + + for (int x = 0; x < 16; x++) { + for (int y = 0; y < 16; y++) { + for (int z = 0; z < 16; z++) { + final int flatBlock = palette.idAt(x, y, z); + if (this.trackAll || this.toTrack.contains(flatBlock >> 4)) { + copyPalette.setIdAt(x, y, z, flatBlock); + } + } + } + } + } + } + + // Remap + for (int i = 0; i < chunk.getSections().length; i++) { + final ChunkSection section = chunk.getSections()[i]; + if (section == null) continue; + final DataPalette palette = section.palette(PaletteType.BLOCKS); + + for (Int2IntMap.Entry entry : this.replacements.int2IntEntrySet()) { + palette.replaceId(entry.getIntKey(), entry.getIntValue()); + } + + if (!this.hasRemappableBlocks(palette)) continue; + + for (int x = 0; x < 16; x++) { + for (int y = 0; y < 16; y++) { + for (int z = 0; z < 16; z++) { + final int flatBlock = palette.idAt(x, y, z); + if (this.trackAll || this.toTrack.contains(flatBlock >> 4)) { + final IdAndData block = IdAndData.fromCompressedData(flatBlock); + this.remapBlock(block, x + (chunk.getX() << 4), y + (i * 16), z + (chunk.getZ() << 4)); + final int newFlatBlock = block.toCompressedData(); + if (newFlatBlock != flatBlock) { + palette.setIdAt(x, y, z, newFlatBlock); + } + } + } + } + } + + this.postRemap(palette); + } + } + + public void trackAndRemap(final Position position, final IdAndData block) { + final int x = position.x(); + final int y = position.y(); + final int z = position.z(); + final Chunk chunk = this.chunks.get(new ChunkCoord(x >> 4, z >> 4)); + + if (chunk != null && y >= 0 && y >> 4 < chunk.getSections().length) { + ChunkSection section = chunk.getSections()[y >> 4]; + if (this.trackAll || this.toTrack.contains(block.id)) { + if (section == null) { + section = chunk.getSections()[y >> 4] = new ChunkSectionImpl(false); + section.palette(PaletteType.BLOCKS).addId(0); + } + section.palette(PaletteType.BLOCKS).setIdAt(x & 15, y & 15, z & 15, block.toCompressedData()); + } else if (section != null) { + section.palette(PaletteType.BLOCKS).setIdAt(x & 15, y & 15, z & 15, 0); + } + } + + if (this.replacements.containsKey(block.toCompressedData())) { + final int newFlatBlock = this.replacements.get(block.toCompressedData()); + block.id = newFlatBlock >> 4; + block.data = newFlatBlock & 15; + } + if (this.trackAll || this.toTrack.contains(block.id)) { + this.remapBlock(block, x, y, z); + } + } + + public void remapBlockParticle(final IdAndData block) { + if (this.replacements.containsKey(block.toCompressedData())) { + final int newFlatBlock = this.replacements.get(block.toCompressedData()); + block.id = newFlatBlock >> 4; + block.data = newFlatBlock & 15; + } + if (this.trackAll || this.toTrack.contains(block.id)) { + this.remapBlock(block, 0, -16, 0); + } + } + + public void clear() { + this.chunks.clear(); + } + + public boolean isChunkLoaded(final int chunkX, final int chunkZ) { + return this.chunks.containsKey(new ChunkCoord(chunkX, chunkZ)); + } + + public IdAndData getBlockNotNull(final Position position) { + return this.getBlockNotNull(position.x(), position.y(), position.z()); + } + + public IdAndData getBlockNotNull(final int x, final int y, final int z) { + IdAndData block = this.getBlock(x, y, z); + if (block == null) block = new IdAndData(0, 0); + return block; + } + + public IdAndData getBlock(final Position position) { + return this.getBlock(position.x(), position.y(), position.z()); + } + + public IdAndData getBlock(final int x, final int y, final int z) { + final Chunk chunk = this.chunks.get(new ChunkCoord(x >> 4, z >> 4)); + if (chunk != null) { + if (y < 0 || y >> 4 > chunk.getSections().length - 1) return null; + final ChunkSection section = chunk.getSections()[y >> 4]; + if (section != null) { + return IdAndData.fromCompressedData(section.palette(PaletteType.BLOCKS).idAt(x & 15, y & 15, z & 15)); + } + } + return null; + } + + protected void registerReplacement(final IdAndData from, final IdAndData to) { + this.replacements.put(from.toCompressedData(), to.toCompressedData()); + } + + protected void remapBlock(final IdAndData block, final int x, final int y, final int z) { + } + + protected void postRemap(final DataPalette palette) { + } + + private boolean hasRemappableBlocks(final DataPalette palette) { + if (this.trackAll) return true; + if (this.toTrack.isEmpty()) return false; + + boolean hasTrackableBlocks = false; + for (int i = 0; i < palette.size(); i++) { + if (this.toTrack.contains(palette.idByIndex(i) >> 4)) { + hasTrackableBlocks = true; + } + } + return hasTrackableBlocks; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/api/AbstractItemRewriter.java b/src/main/java/net/raphimc/vialegacy/api/AbstractItemRewriter.java new file mode 100644 index 0000000..f9d9fed --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/api/AbstractItemRewriter.java @@ -0,0 +1,171 @@ +package net.raphimc.vialegacy.api; + +import com.viaversion.viaversion.api.minecraft.item.Item; +import com.viaversion.viaversion.libs.fastutil.objects.ObjectArrayList; +import com.viaversion.viaversion.libs.fastutil.objects.ObjectList; +import com.viaversion.viaversion.libs.gson.JsonObject; +import com.viaversion.viaversion.libs.opennbt.tag.builtin.*; + +import java.util.List; + +public abstract class AbstractItemRewriter { + + private final ObjectList REWRITE_ENTRIES = new ObjectArrayList<>(); + protected final String HACK_TAG_NAME; + protected final String protocolName; + private final boolean jsonName; + + public AbstractItemRewriter(final String protocolName, final boolean jsonName) { + this.HACK_TAG_NAME = protocolName.replace(".", "_") + "_ProtocolHack_" + System.currentTimeMillis(); + this.protocolName = protocolName; + this.jsonName = jsonName; + } + + protected void registerRemappedItem(final int oldItemId, final int newItemId, final String newItemName) { + registerRemappedItem(oldItemId, newItemId, -1, newItemName); + } + + protected void registerRemappedItem(final int oldItemId, final int newItemId, final int newItemMeta, final String newItemName) { + registerRemappedItem(oldItemId, -1, newItemId, newItemMeta, newItemName); + } + + protected void registerRemappedItem(final int oldItemId, final int oldItemMeta, final int newItemId, final int newItemMeta, final String newItemName) { + REWRITE_ENTRIES.add(new RewriteEntry(oldItemId, (short) oldItemMeta, newItemId, (short) newItemMeta, newItemName)); + } + + public void rewriteRead(final Item item) { + if (item == null) return; + + for (RewriteEntry rewriteEntry : REWRITE_ENTRIES) { + if (rewriteEntry.rewrites(item)) { + setRemappedNameRead(item, rewriteEntry.newItemName); + if (rewriteEntry.newItemMeta != -1) { + item.setData(rewriteEntry.newItemMeta); + } + item.setIdentifier(rewriteEntry.newItemID); + } + } + } + + public void rewriteWrite(final Item item) { + if (item == null) return; + + setRemappedTagWrite(item); + } + + + private void setRemappedNameRead(final Item item, final String name) { + //Set protocol hack tag for later remapping + CompoundTag protocolHackTag = (item.tag() != null && item.tag().contains(HACK_TAG_NAME) ? item.tag().get(HACK_TAG_NAME) : new CompoundTag()); + if (item.tag() == null || !item.tag().contains(HACK_TAG_NAME)) { + protocolHackTag.put("Id", new IntTag(item.identifier())); + protocolHackTag.put("Meta", new ShortTag(item.data())); + } + + //Get Item tag + CompoundTag tag = item.tag(); + if (tag == null) { + tag = new CompoundTag(); + item.setTag(tag); + protocolHackTag.put("RemoveTag", new IntTag(0)); + } + tag.put(HACK_TAG_NAME, protocolHackTag); + + //Set name/lore of item + CompoundTag display = tag.get("display"); + if (display == null) { + display = new CompoundTag(); + tag.put("display", display); + protocolHackTag.put("RemoveDisplayTag", new IntTag(0)); + } + if (display.contains("Name")) { + ListTag lore = display.get("Lore"); + if (lore == null) { + lore = new ListTag(); + display.put("Lore", lore); + protocolHackTag.put("RemoveLore", new IntTag(0)); + } + if (this.jsonName) { + lore.add(new StringTag(this.messageToJson("§r " + this.protocolName + " Item ID: " + item.identifier() + " (" + name + ")").toString())); + } else { + lore.add(new StringTag("§r " + this.protocolName + " Item ID: " + item.identifier() + " (" + name + ")")); + } + protocolHackTag.put("RemoveLastLore", new IntTag(0)); + } else { + if (this.jsonName) { + display.put("Name", new StringTag(this.messageToJson("§r" + this.protocolName + " " + name).toString())); + } else { + display.put("Name", new StringTag("§r" + this.protocolName + " " + name)); + } + protocolHackTag.put("RemoveDisplayName", new IntTag(0)); + } + } + + private void setRemappedTagWrite(final Item item) { + if (item.tag() == null) return; + if (!item.tag().contains(HACK_TAG_NAME)) return; + + CompoundTag tag = item.tag(); + CompoundTag protocolHackTag = tag.get(HACK_TAG_NAME); + tag.remove(HACK_TAG_NAME); + + item.setIdentifier(((IntTag) protocolHackTag.get("Id")).asInt()); + item.setData(((ShortTag) protocolHackTag.get("Meta")).asShort()); + if (protocolHackTag.contains("RemoveLastLore")) { + ListTag lore = ((CompoundTag) tag.get("display")).get("Lore"); + List tags = lore.getValue(); + tags.remove(lore.size() - 1); + lore.setValue(tags); + } + if (protocolHackTag.contains("RemoveLore")) { + ((CompoundTag) tag.get("display")).remove("Lore"); + } + if (protocolHackTag.contains("RemoveDisplayName")) { + ((CompoundTag) tag.get("display")).remove("Name"); + } + if (protocolHackTag.contains("RemoveDisplayTag")) { + tag.remove("display"); + } + if (protocolHackTag.contains("RemoveTag")) { + item.setTag(null); + } + } + + private JsonObject messageToJson(final String s) { + JsonObject ob = new JsonObject(); + ob.addProperty("text", s); + return ob; + } + + + public static class RewriteEntry { + + private final int oldItemID; + private final short oldItemMeta; + private final int newItemID; + private final short newItemMeta; + private final String newItemName; + + public RewriteEntry(final int oldItemID, final short oldItemMeta, final int newItemID, final short newItemMeta, final String newItemName) { + this.oldItemID = oldItemID; + this.oldItemMeta = oldItemMeta; + this.newItemID = newItemID; + this.newItemMeta = newItemMeta; + this.newItemName = newItemName; + } + + public int getOldItemID() { + return this.oldItemID; + } + + public short getOldItemMeta() { + return this.oldItemMeta; + } + + public boolean rewrites(final Item item) { + return item.identifier() == this.oldItemID && (this.oldItemMeta == -1 || this.oldItemMeta == item.data()); + } + + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/api/BlockList1_6.java b/src/main/java/net/raphimc/vialegacy/api/BlockList1_6.java new file mode 100644 index 0000000..4ad0533 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/api/BlockList1_6.java @@ -0,0 +1,207 @@ +package net.raphimc.vialegacy.api; + +import com.google.common.collect.Lists; + +import java.util.List; + +public class BlockList1_6 { + + public static final List blockList = Lists.newArrayList(); + + public static final Block1_6 stone = new Block1_6(1, "stone"); + public static final Block1_6 grass = new Block1_6(2, "grass"); + public static final Block1_6 dirt = new Block1_6(3, "dirt"); + public static final Block1_6 cobblestone = new Block1_6(4, "stonebrick"); + public static final Block1_6 planks = new Block1_6(5, "wood"); + public static final Block1_6 sapling = new Block1_6(6, "sapling"); + public static final Block1_6 bedrock = new Block1_6(7, "bedrock"); + public static final Block1_6 waterMoving = new Block1_6(8, "water"); + public static final Block1_6 waterStill = new Block1_6(9, "water"); + public static final Block1_6 lavaMoving = new Block1_6(10, "lava"); + public static final Block1_6 lavaStill = new Block1_6(11, "lava"); + public static final Block1_6 sand = new Block1_6(12, "sand"); + public static final Block1_6 gravel = new Block1_6(13, "gravel"); + public static final Block1_6 oreGold = new Block1_6(14, "oreGold"); + public static final Block1_6 oreIron = new Block1_6(15, "oreIron"); + public static final Block1_6 oreCoal = new Block1_6(16, "oreCoal"); + public static final Block1_6 wood = new Block1_6(17, "log"); + public static final Block1_6 leaves = new Block1_6(18, "leaves"); + public static final Block1_6 sponge = new Block1_6(19, "sponge"); + public static final Block1_6 glass = new Block1_6(20, "glass"); + public static final Block1_6 oreLapis = new Block1_6(21, "oreLapis"); + public static final Block1_6 blockLapis = new Block1_6(22, "blockLapis"); + public static final Block1_6 dispenser = new Block1_6(23, "dispenser"); + public static final Block1_6 sandStone = new Block1_6(24, "sandStone"); + public static final Block1_6 music = new Block1_6(25, "musicBlock"); + public static final Block1_6 bed = new Block1_6(26, "bed"); + public static final Block1_6 railPowered = new Block1_6(27, "goldenRail"); + public static final Block1_6 railDetector = new Block1_6(28, "detectorRail"); + public static final Block1_6 pistonStickyBase = new Block1_6(29, "pistonStickyBase"); + public static final Block1_6 web = new Block1_6(30, "web"); + public static final Block1_6 tallGrass = new Block1_6(31, "tallgrass"); + public static final Block1_6 deadBush = new Block1_6(32, "deadbush"); + public static final Block1_6 pistonBase = new Block1_6(33, "pistonBase"); + public static final Block1_6 pistonExtension = new Block1_6(34, "null"); + public static final Block1_6 cloth = new Block1_6(35, "cloth"); + public static final Block1_6 pistonMoving = new Block1_6(36, "null"); + public static final Block1_6 plantYellow = new Block1_6(37, "flower"); + public static final Block1_6 plantRed = new Block1_6(38, "rose"); + public static final Block1_6 mushroomBrown = new Block1_6(39, "mushroom"); + public static final Block1_6 mushroomRed = new Block1_6(40, "mushroom"); + public static final Block1_6 blockGold = new Block1_6(41, "blockGold"); + public static final Block1_6 blockIron = new Block1_6(42, "blockIron"); + public static final Block1_6 stoneDoubleSlab = new Block1_6(43, "stoneSlab"); + public static final Block1_6 stoneSingleSlab = new Block1_6(44, "stoneSlab"); + public static final Block1_6 brick = new Block1_6(45, "brick"); + public static final Block1_6 tnt = new Block1_6(46, "tnt"); + public static final Block1_6 bookShelf = new Block1_6(47, "bookshelf"); + public static final Block1_6 cobblestoneMossy = new Block1_6(48, "stoneMoss"); + public static final Block1_6 obsidian = new Block1_6(49, "obsidian"); + public static final Block1_6 torchWood = new Block1_6(50, "torch"); + public static final Block1_6 fire = new Block1_6(51, "fire"); + public static final Block1_6 mobSpawner = new Block1_6(52, "mobSpawner"); + public static final Block1_6 stairsWoodOak = new Block1_6(53, "stairsWood"); + public static final Block1_6 chest = new Block1_6(54, "chest"); + public static final Block1_6 redstoneWire = new Block1_6(55, "redstoneDust"); + public static final Block1_6 oreDiamond = new Block1_6(56, "oreDiamond"); + public static final Block1_6 blockDiamond = new Block1_6(57, "blockDiamond"); + public static final Block1_6 workbench = new Block1_6(58, "workbench"); + public static final Block1_6 crops = new Block1_6(59, "crops"); + public static final Block1_6 tilledField = new Block1_6(60, "farmland"); + public static final Block1_6 furnaceIdle = new Block1_6(61, "furnace"); + public static final Block1_6 furnaceBurning = new Block1_6(62, "furnace"); + public static final Block1_6 signPost = new Block1_6(63, "sign"); + public static final Block1_6 doorWood = new Block1_6(64, "doorWood"); + public static final Block1_6 ladder = new Block1_6(65, "ladder"); + public static final Block1_6 rail = new Block1_6(66, "rail"); + public static final Block1_6 stairsCobblestone = new Block1_6(67, "stairsStone"); + public static final Block1_6 signWall = new Block1_6(68, "sign"); + public static final Block1_6 lever = new Block1_6(69, "lever"); + public static final Block1_6 pressurePlateStone = new Block1_6(70, "pressurePlate"); + public static final Block1_6 doorIron = new Block1_6(71, "doorIron"); + public static final Block1_6 pressurePlatePlanks = new Block1_6(72, "pressurePlate"); + public static final Block1_6 oreRedstone = new Block1_6(73, "oreRedstone"); + public static final Block1_6 oreRedstoneGlowing = new Block1_6(74, "oreRedstone"); + public static final Block1_6 torchRedstoneIdle = new Block1_6(75, "notGate"); + public static final Block1_6 torchRedstoneActive = new Block1_6(76, "notGate"); + public static final Block1_6 stoneButton = new Block1_6(77, "button"); + public static final Block1_6 snow = new Block1_6(78, "snow"); + public static final Block1_6 ice = new Block1_6(79, "ice"); + public static final Block1_6 blockSnow = new Block1_6(80, "snow"); + public static final Block1_6 cactus = new Block1_6(81, "cactus"); + public static final Block1_6 blockClay = new Block1_6(82, "clay"); + public static final Block1_6 reed = new Block1_6(83, "reeds"); + public static final Block1_6 jukebox = new Block1_6(84, "jukebox"); + public static final Block1_6 fence = new Block1_6(85, "fence"); + public static final Block1_6 pumpkin = new Block1_6(86, "pumpkin"); + public static final Block1_6 netherrack = new Block1_6(87, "hellrock"); + public static final Block1_6 slowSand = new Block1_6(88, "hellsand"); + public static final Block1_6 glowStone = new Block1_6(89, "lightgem"); + public static final Block1_6 portal = new Block1_6(90, "portal"); + public static final Block1_6 pumpkinLantern = new Block1_6(91, "litpumpkin"); + public static final Block1_6 cake = new Block1_6(92, "cake"); + public static final Block1_6 redstoneRepeaterIdle = new Block1_6(93, "diode"); + public static final Block1_6 redstoneRepeaterActive = new Block1_6(94, "diode"); + public static final Block1_6 lockedChest = new Block1_6(95, "lockedchest"); + public static final Block1_6 trapdoor = new Block1_6(96, "trapdoor"); + public static final Block1_6 silverfish = new Block1_6(97, "monsterStoneEgg"); + public static final Block1_6 stoneBrick = new Block1_6(98, "stonebricksmooth"); + public static final Block1_6 mushroomCapBrown = new Block1_6(99, "mushroom"); + public static final Block1_6 mushroomCapRed = new Block1_6(100, "mushroom"); + public static final Block1_6 fenceIron = new Block1_6(101, "fenceIron"); + public static final Block1_6 thinGlass = new Block1_6(102, "thinGlass"); + public static final Block1_6 melon = new Block1_6(103, "melon"); + public static final Block1_6 pumpkinStem = new Block1_6(104, "pumpkinStem"); + public static final Block1_6 melonStem = new Block1_6(105, "pumpkinStem"); + public static final Block1_6 vine = new Block1_6(106, "vine"); + public static final Block1_6 fenceGate = new Block1_6(107, "fenceGate"); + public static final Block1_6 stairsBrick = new Block1_6(108, "stairsBrick"); + public static final Block1_6 stairsStoneBrick = new Block1_6(109, "stairsStoneBrickSmooth"); + public static final Block1_6 mycelium = new Block1_6(110, "mycel"); + public static final Block1_6 waterlily = new Block1_6(111, "waterlily"); + public static final Block1_6 netherBrick = new Block1_6(112, "netherBrick"); + public static final Block1_6 netherFence = new Block1_6(113, "netherFence"); + public static final Block1_6 stairsNetherBrick = new Block1_6(114, "stairsNetherBrick"); + public static final Block1_6 netherStalk = new Block1_6(115, "netherStalk"); + public static final Block1_6 enchantmentTable = new Block1_6(116, "enchantmentTable"); + public static final Block1_6 brewingStand = new Block1_6(117, "brewingStand"); + public static final Block1_6 cauldron = new Block1_6(118, "cauldron"); + public static final Block1_6 endPortal = new Block1_6(119, "null"); + public static final Block1_6 endPortalFrame = new Block1_6(120, "endPortalFrame"); + public static final Block1_6 whiteStone = new Block1_6(121, "whiteStone"); + public static final Block1_6 dragonEgg = new Block1_6(122, "dragonEgg"); + public static final Block1_6 redstoneLampIdle = new Block1_6(123, "redstoneLight"); + public static final Block1_6 redstoneLampActive = new Block1_6(124, "redstoneLight"); + public static final Block1_6 woodDoubleSlab = new Block1_6(125, "woodSlab"); + public static final Block1_6 woodSingleSlab = new Block1_6(126, "woodSlab"); + public static final Block1_6 cocoaPlant = new Block1_6(127, "cocoa"); + public static final Block1_6 stairsSandStone = new Block1_6(128, "stairsSandStone"); + public static final Block1_6 oreEmerald = new Block1_6(129, "oreEmerald"); + public static final Block1_6 enderChest = new Block1_6(130, "enderChest"); + public static final Block1_6 tripWireSource = new Block1_6(131, "tripWireSource"); + public static final Block1_6 tripWire = new Block1_6(132, "tripWire"); + public static final Block1_6 blockEmerald = new Block1_6(133, "blockEmerald"); + public static final Block1_6 stairsWoodSpruce = new Block1_6(134, "stairsWoodSpruce"); + public static final Block1_6 stairsWoodBirch = new Block1_6(135, "stairsWoodBirch"); + public static final Block1_6 stairsWoodJungle = new Block1_6(136, "stairsWoodJungle"); + public static final Block1_6 commandBlock = new Block1_6(137, "commandBlock"); + public static final Block1_6 beacon = new Block1_6(138, "beacon"); + public static final Block1_6 cobblestoneWall = new Block1_6(139, "cobbleWall"); + public static final Block1_6 flowerPot = new Block1_6(140, "flowerPot"); + public static final Block1_6 carrot = new Block1_6(141, "carrots"); + public static final Block1_6 potato = new Block1_6(142, "potatoes"); + public static final Block1_6 woodenButton = new Block1_6(143, "button"); + public static final Block1_6 skull = new Block1_6(144, "skull"); + public static final Block1_6 anvil = new Block1_6(145, "anvil"); + public static final Block1_6 chestTrapped = new Block1_6(146, "chestTrap"); + public static final Block1_6 pressurePlateGold = new Block1_6(147, "weightedPlate_light"); + public static final Block1_6 pressurePlateIron = new Block1_6(148, "weightedPlate_heavy"); + public static final Block1_6 redstoneComparatorIdle = new Block1_6(149, "comparator"); + public static final Block1_6 redstoneComparatorActive = new Block1_6(150, "comparator"); + public static final Block1_6 daylightSensor = new Block1_6(151, "daylightDetector"); + public static final Block1_6 blockRedstone = new Block1_6(152, "blockRedstone"); + public static final Block1_6 oreNetherQuartz = new Block1_6(153, "netherquartz"); + public static final Block1_6 hopperBlock = new Block1_6(154, "hopper"); + public static final Block1_6 blockNetherQuartz = new Block1_6(155, "quartzBlock"); + public static final Block1_6 stairsNetherQuartz = new Block1_6(156, "stairsQuartz"); + public static final Block1_6 railActivator = new Block1_6(157, "activatorRail"); + public static final Block1_6 dropper = new Block1_6(158, "dropper"); + public static final Block1_6 stainedClay = new Block1_6(159, "clayHardenedStained"); + public static final Block1_6 hay = new Block1_6(170, "hayBlock"); + public static final Block1_6 carpet = new Block1_6(171, "woolCarpet"); + public static final Block1_6 hardenedClay = new Block1_6(172, "clayHardened"); + public static final Block1_6 coalBlock = new Block1_6(173, "blockCoal"); + + public static Block1_6 getByID(final int id) { + for (Block1_6 block : blockList) { + if(block.blockID == id) { + return block; + } + } + return null; + } + + public static Block1_6 getByName(final String name) { + for (Block1_6 block : blockList) { + if(block.name.equalsIgnoreCase(name)) { + return block; + } + } + return null; + } + + public static class Block1_6 { + + public final int blockID; + public final String name; + + public Block1_6(final int blockID, final String name) { + this.blockID = blockID; + this.name = name; + + blockList.add(this); + } + + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/api/ChunkCoord.java b/src/main/java/net/raphimc/vialegacy/api/ChunkCoord.java new file mode 100644 index 0000000..855c95e --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/api/ChunkCoord.java @@ -0,0 +1,50 @@ +package net.raphimc.vialegacy.api; + +import java.util.Objects; + +public class ChunkCoord { + + public int chunkX; + public int chunkZ; + + public ChunkCoord(final int chunkX, final int chunkZ) { + this.chunkX = chunkX; + this.chunkZ = chunkZ; + } + + public ChunkCoord(final long pos) { + this.chunkX = (int) pos; + this.chunkZ = (int) (pos >> 32); + } + + public long toLong() { + return toLong(this.chunkX, this.chunkZ); + } + + public static long toLong(final int chunkX, final int chunkZ) { + return (long) chunkX & 4294967295L | ((long) chunkZ & 4294967295L) << 32; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + ChunkCoord that = (ChunkCoord) o; + return chunkX == that.chunkX && + chunkZ == that.chunkZ; + } + + @Override + public int hashCode() { + return Objects.hash(chunkX, chunkZ); + } + + @Override + public String toString() { + return "ChunkCoord{" + + "chunkX=" + chunkX + + ", chunkZ=" + chunkZ + + '}'; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/api/IdAndData.java b/src/main/java/net/raphimc/vialegacy/api/IdAndData.java new file mode 100644 index 0000000..7c147c9 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/api/IdAndData.java @@ -0,0 +1,50 @@ +package net.raphimc.vialegacy.api; + +import java.util.Objects; + +public class IdAndData { + + public int id; + public int data; + + public IdAndData(final int id, final int data) { + if (data < 0 || data > 15) throw new IllegalArgumentException("Block data out of bounds (id:" + id + " data:" + data + ")"); + this.id = id; + this.data = data; + } + + public static IdAndData fromCompressedData(final int idAndData) { + return new IdAndData(idAndData >> 4, idAndData & 15); + } + + public static int toCompressedData(final int id, final int data) { + return id << 4 | data & 15; + } + + public int toCompressedData() { + return toCompressedData(this.id, this.data); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + IdAndData idAndData = (IdAndData) o; + return id == idAndData.id && + data == idAndData.data; + } + + @Override + public int hashCode() { + return Objects.hash(id, data); + } + + @Override + public String toString() { + return "IdAndData{" + + "id=" + id + + ", data=" + data + + '}'; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/api/ItemList1_6.java b/src/main/java/net/raphimc/vialegacy/api/ItemList1_6.java new file mode 100644 index 0000000..df73a29 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/api/ItemList1_6.java @@ -0,0 +1,245 @@ +package net.raphimc.vialegacy.api; + +import com.google.common.collect.Lists; + +import java.util.List; + +public class ItemList1_6 { + + public static final List itemList = Lists.newArrayList(); + + public static final Item1_6 planks = new Item1_6(5, "wood", 0, true); + public static final Item1_6 sapling = new Item1_6(6, "sapling", 0, true); + public static final Item1_6 wood = new Item1_6(17, "log", 0, true); + public static final Item1_6 leaves = new Item1_6(18, "leaves", 0, true); + public static final Item1_6 sandStone = new Item1_6(24, "sandStone", 0, true); + public static final Item1_6 cloth = new Item1_6(35, "cloth", 0, true); + public static final Item1_6 stoneDoubleSlab = new Item1_6(43, "stoneSlab", 0, true); + public static final Item1_6 stoneSingleSlab = new Item1_6(44, "stoneSlab", 0, true); + public static final Item1_6 silverfish = new Item1_6(97, "monsterStoneEgg", 0, true); + public static final Item1_6 stoneBrick = new Item1_6(98, "stonebricksmooth", 0, true); + public static final Item1_6 woodDoubleSlab = new Item1_6(125, "woodSlab", 0, true); + public static final Item1_6 woodSingleSlab = new Item1_6(126, "woodSlab", 0, true); + public static final Item1_6 cobbleWall = new Item1_6(139, "cobbleWall", 0, true); + public static final Item1_6 anvil = new Item1_6(145, "anvil", 0, true); + public static final Item1_6 blockNetherQuartz = new Item1_6(155, "quartzBlock", 0, true); + public static final Item1_6 stainedClay = new Item1_6(159, "clayHardenedStained", 0, true); + public static final Item1_6 carpet = new Item1_6(171, "woolCarpet", 0, true); + public static final Item1_6 vine = new Item1_6(106, "vine", 0, true); + public static final Item1_6 tallGrass = new Item1_6(31, "tallGrass", 0, true); + public static final Item1_6 snow = new Item1_6(78, "snow", 0, true); + public static final Item1_6 waterlily = new Item1_6(111, "waterlily", 0, true); + public static final Item1_6 pistonBase = new Item1_6(33, "pistonBase", 0, true); + public static final Item1_6 pistonStickyBase = new Item1_6(29, "pistonStickyBase", 0, true); + public static final Item1_6 shovelIron = new Item1_6(256, "shovelIron", 250, false); + public static final Item1_6 pickaxeIron = new Item1_6(257, "pickaxeIron", 250, false); + public static final Item1_6 axeIron = new Item1_6(258, "hatchetIron", 250, false); + public static final Item1_6 flintAndSteel = new Item1_6(259, "flintAndSteel", 64, false); + public static final Item1_6 appleRed = new Item1_6(260, "apple", 0, false); + public static final Item1_6 bow = new Item1_6(261, "bow", 384, false); + public static final Item1_6 arrow = new Item1_6(262, "arrow", 0, false); + public static final Item1_6 coal = new Item1_6(263, "coal", 0, true); + public static final Item1_6 diamond = new Item1_6(264, "diamond", 0, false); + public static final Item1_6 ingotIron = new Item1_6(265, "ingotIron", 0, false); + public static final Item1_6 ingotGold = new Item1_6(266, "ingotGold", 0, false); + public static final Item1_6 swordIron = new Item1_6(267, "swordIron", 250, false); + public static final Item1_6 swordWood = new Item1_6(268, "swordWood", 59, false); + public static final Item1_6 shovelWood = new Item1_6(269, "shovelWood", 59, false); + public static final Item1_6 pickaxeWood = new Item1_6(270, "pickaxeWood", 59, false); + public static final Item1_6 axeWood = new Item1_6(271, "hatchetWood", 59, false); + public static final Item1_6 swordStone = new Item1_6(272, "swordStone", 131, false); + public static final Item1_6 shovelStone = new Item1_6(273, "shovelStone", 131, false); + public static final Item1_6 pickaxeStone = new Item1_6(274, "pickaxeStone", 131, false); + public static final Item1_6 axeStone = new Item1_6(275, "hatchetStone", 131, false); + public static final Item1_6 swordDiamond = new Item1_6(276, "swordDiamond", 1561, false); + public static final Item1_6 shovelDiamond = new Item1_6(277, "shovelDiamond", 1561, false); + public static final Item1_6 pickaxeDiamond = new Item1_6(278, "pickaxeDiamond", 1561, false); + public static final Item1_6 axeDiamond = new Item1_6(279, "hatchetDiamond", 1561, false); + public static final Item1_6 stick = new Item1_6(280, "stick", 0, false); + public static final Item1_6 bowlEmpty = new Item1_6(281, "bowl", 0, false); + public static final Item1_6 bowlSoup = new Item1_6(282, "mushroomStew", 0, false); + public static final Item1_6 swordGold = new Item1_6(283, "swordGold", 32, false); + public static final Item1_6 shovelGold = new Item1_6(284, "shovelGold", 32, false); + public static final Item1_6 pickaxeGold = new Item1_6(285, "pickaxeGold", 32, false); + public static final Item1_6 axeGold = new Item1_6(286, "hatchetGold", 32, false); + public static final Item1_6 silk = new Item1_6(287, "string", 0, false); + public static final Item1_6 feather = new Item1_6(288, "feather", 0, false); + public static final Item1_6 gunpowder = new Item1_6(289, "sulphur", 0, false); + public static final Item1_6 hoeWood = new Item1_6(290, "hoeWood", 59, false); + public static final Item1_6 hoeStone = new Item1_6(291, "hoeStone", 131, false); + public static final Item1_6 hoeIron = new Item1_6(292, "hoeIron", 250, false); + public static final Item1_6 hoeDiamond = new Item1_6(293, "hoeDiamond", 1561, false); + public static final Item1_6 hoeGold = new Item1_6(294, "hoeGold", 32, false); + public static final Item1_6 seeds = new Item1_6(295, "seeds", 0, false); + public static final Item1_6 wheat = new Item1_6(296, "wheat", 0, false); + public static final Item1_6 bread = new Item1_6(297, "bread", 0, false); + public static final Item1_6 helmetLeather = new Item1_6(298, "helmetCloth", 55, false); + public static final Item1_6 plateLeather = new Item1_6(299, "chestplateCloth", 80, false); + public static final Item1_6 legsLeather = new Item1_6(300, "leggingsCloth", 75, false); + public static final Item1_6 bootsLeather = new Item1_6(301, "bootsCloth", 65, false); + public static final Item1_6 helmetChain = new Item1_6(302, "helmetChain", 165, false); + public static final Item1_6 plateChain = new Item1_6(303, "chestplateChain", 240, false); + public static final Item1_6 legsChain = new Item1_6(304, "leggingsChain", 225, false); + public static final Item1_6 bootsChain = new Item1_6(305, "bootsChain", 195, false); + public static final Item1_6 helmetIron = new Item1_6(306, "helmetIron", 165, false); + public static final Item1_6 plateIron = new Item1_6(307, "chestplateIron", 240, false); + public static final Item1_6 legsIron = new Item1_6(308, "leggingsIron", 225, false); + public static final Item1_6 bootsIron = new Item1_6(309, "bootsIron", 195, false); + public static final Item1_6 helmetDiamond = new Item1_6(310, "helmetDiamond", 363, false); + public static final Item1_6 plateDiamond = new Item1_6(311, "chestplateDiamond", 528, false); + public static final Item1_6 legsDiamond = new Item1_6(312, "leggingsDiamond", 495, false); + public static final Item1_6 bootsDiamond = new Item1_6(313, "bootsDiamond", 429, false); + public static final Item1_6 helmetGold = new Item1_6(314, "helmetGold", 77, false); + public static final Item1_6 plateGold = new Item1_6(315, "chestplateGold", 112, false); + public static final Item1_6 legsGold = new Item1_6(316, "leggingsGold", 105, false); + public static final Item1_6 bootsGold = new Item1_6(317, "bootsGold", 91, false); + public static final Item1_6 flint = new Item1_6(318, "flint", 0, false); + public static final Item1_6 porkRaw = new Item1_6(319, "porkchopRaw", 0, false); + public static final Item1_6 porkCooked = new Item1_6(320, "porkchopCooked", 0, false); + public static final Item1_6 painting = new Item1_6(321, "painting", 0, false); + public static final Item1_6 appleGold = new Item1_6(322, "appleGold", 0, true); + public static final Item1_6 sign = new Item1_6(323, "sign", 0, false); + public static final Item1_6 doorWood = new Item1_6(324, "doorWood", 0, false); + public static final Item1_6 bucketEmpty = new Item1_6(325, "bucket", 0, false); + public static final Item1_6 bucketWater = new Item1_6(326, "bucketWater", 0, false); + public static final Item1_6 bucketLava = new Item1_6(327, "bucketLava", 0, false); + public static final Item1_6 minecartEmpty = new Item1_6(328, "minecart", 0, false); + public static final Item1_6 saddle = new Item1_6(329, "saddle", 0, false); + public static final Item1_6 doorIron = new Item1_6(330, "doorIron", 0, false); + public static final Item1_6 redstone = new Item1_6(331, "redstone", 0, false); + public static final Item1_6 snowball = new Item1_6(332, "snowball", 0, false); + public static final Item1_6 boat = new Item1_6(333, "boat", 0, false); + public static final Item1_6 leather = new Item1_6(334, "leather", 0, false); + public static final Item1_6 bucketMilk = new Item1_6(335, "milk", 0, false); + public static final Item1_6 brick = new Item1_6(336, "brick", 0, false); + public static final Item1_6 clay = new Item1_6(337, "clay", 0, false); + public static final Item1_6 reed = new Item1_6(338, "reeds", 0, false); + public static final Item1_6 paper = new Item1_6(339, "paper", 0, false); + public static final Item1_6 book = new Item1_6(340, "book", 0, false); + public static final Item1_6 slimeBall = new Item1_6(341, "slimeball", 0, false); + public static final Item1_6 minecartCrate = new Item1_6(342, "minecartChest", 0, false); + public static final Item1_6 minecartPowered = new Item1_6(343, "minecartFurnace", 0, false); + public static final Item1_6 egg = new Item1_6(344, "egg", 0, false); + public static final Item1_6 compass = new Item1_6(345, "compass", 0, false); + public static final Item1_6 fishingRod = new Item1_6(346, "fishingRod", 64, false); + public static final Item1_6 pocketSundial = new Item1_6(347, "clock", 0, false); + public static final Item1_6 glowstone = new Item1_6(348, "yellowDust", 0, false); + public static final Item1_6 fishRaw = new Item1_6(349, "fishRaw", 0, false); + public static final Item1_6 fishCooked = new Item1_6(350, "fishCooked", 0, false); + public static final Item1_6 dyePowder = new Item1_6(351, "dyePowder", 0, true); + public static final Item1_6 bone = new Item1_6(352, "bone", 0, false); + public static final Item1_6 sugar = new Item1_6(353, "sugar", 0, false); + public static final Item1_6 cake = new Item1_6(354, "cake", 0, false); + public static final Item1_6 bed = new Item1_6(355, "bed", 0, false); + public static final Item1_6 redstoneRepeater = new Item1_6(356, "diode", 0, false); + public static final Item1_6 cookie = new Item1_6(357, "cookie", 0, false); + public static final Item1_6 map = new Item1_6(358, "map", 0, true); + public static final Item1_6 shears = new Item1_6(359, "shears", 238, false); + public static final Item1_6 melon = new Item1_6(360, "melon", 0, false); + public static final Item1_6 pumpkinSeeds = new Item1_6(361, "seeds_pumpkin", 0, false); + public static final Item1_6 melonSeeds = new Item1_6(362, "seeds_melon", 0, false); + public static final Item1_6 beefRaw = new Item1_6(363, "beefRaw", 0, false); + public static final Item1_6 beefCooked = new Item1_6(364, "beefCooked", 0, false); + public static final Item1_6 chickenRaw = new Item1_6(365, "chickenRaw", 0, false); + public static final Item1_6 chickenCooked = new Item1_6(366, "chickenCooked", 0, false); + public static final Item1_6 rottenFlesh = new Item1_6(367, "rottenFlesh", 0, false); + public static final Item1_6 enderPearl = new Item1_6(368, "enderPearl", 0, false); + public static final Item1_6 blazeRod = new Item1_6(369, "blazeRod", 0, false); + public static final Item1_6 ghastTear = new Item1_6(370, "ghastTear", 0, false); + public static final Item1_6 goldNugget = new Item1_6(371, "goldNugget", 0, false); + public static final Item1_6 netherStalkSeeds = new Item1_6(372, "netherStalkSeeds", 0, false); + public static final Item1_6 potion = new Item1_6(373, "potion", 0, true); + public static final Item1_6 glassBottle = new Item1_6(374, "glassBottle", 0, false); + public static final Item1_6 spiderEye = new Item1_6(375, "spiderEye", 0, false); + public static final Item1_6 fermentedSpiderEye = new Item1_6(376, "fermentedSpiderEye", 0, false); + public static final Item1_6 blazePowder = new Item1_6(377, "blazePowder", 0, false); + public static final Item1_6 magmaCream = new Item1_6(378, "magmaCream", 0, false); + public static final Item1_6 brewingStand = new Item1_6(379, "brewingStand", 0, false); + public static final Item1_6 cauldron = new Item1_6(380, "cauldron", 0, false); + public static final Item1_6 eyeOfEnder = new Item1_6(381, "eyeOfEnder", 0, false); + public static final Item1_6 speckledMelon = new Item1_6(382, "speckledMelon", 0, false); + public static final Item1_6 monsterPlacer = new Item1_6(383, "monsterPlacer", 0, true); + public static final Item1_6 expBottle = new Item1_6(384, "expBottle", 0, false); + public static final Item1_6 fireballCharge = new Item1_6(385, "fireball", 0, false); + public static final Item1_6 writableBook = new Item1_6(386, "writingBook", 0, false); + public static final Item1_6 writtenBook = new Item1_6(387, "writtenBook", 0, false); + public static final Item1_6 emerald = new Item1_6(388, "emerald", 0, false); + public static final Item1_6 itemFrame = new Item1_6(389, "frame", 0, false); + public static final Item1_6 flowerPot = new Item1_6(390, "flowerPot", 0, false); + public static final Item1_6 carrot = new Item1_6(391, "carrots", 0, false); + public static final Item1_6 potato = new Item1_6(392, "potato", 0, false); + public static final Item1_6 bakedPotato = new Item1_6(393, "potatoBaked", 0, false); + public static final Item1_6 poisonousPotato = new Item1_6(394, "potatoPoisonous", 0, false); + public static final Item1_6 emptyMap = new Item1_6(395, "emptyMap", 0, false); + public static final Item1_6 goldenCarrot = new Item1_6(396, "carrotGolden", 0, false); + public static final Item1_6 skull = new Item1_6(397, "skull", 0, true); + public static final Item1_6 carrotOnAStick = new Item1_6(398, "carrotOnAStick", 25, false); + public static final Item1_6 netherStar = new Item1_6(399, "netherStar", 0, false); + public static final Item1_6 pumpkinPie = new Item1_6(400, "pumpkinPie", 0, false); + public static final Item1_6 firework = new Item1_6(401, "fireworks", 0, false); + public static final Item1_6 fireworkCharge = new Item1_6(402, "fireworksCharge", 0, false); + public static final Item1_6 enchantedBook = new Item1_6(403, "enchantedBook", 0, false); + public static final Item1_6 comparator = new Item1_6(404, "comparator", 0, false); + public static final Item1_6 netherrackBrick = new Item1_6(405, "netherbrick", 0, false); + public static final Item1_6 netherQuartz = new Item1_6(406, "netherquartz", 0, false); + public static final Item1_6 minecartTnt = new Item1_6(407, "minecartTnt", 0, false); + public static final Item1_6 minecartHopper = new Item1_6(408, "minecartHopper", 0, false); + public static final Item1_6 horseArmorIron = new Item1_6(417, "horsearmormetal", 0, false); + public static final Item1_6 horseArmorGold = new Item1_6(418, "horsearmorgold", 0, false); + public static final Item1_6 horseArmorDiamond = new Item1_6(419, "horsearmordiamond", 0, false); + public static final Item1_6 leash = new Item1_6(420, "leash", 0, false); + public static final Item1_6 nameTag = new Item1_6(421, "nameTag", 0, false); + public static final Item1_6 record13 = new Item1_6(2256, "record", 0, false); + public static final Item1_6 recordCat = new Item1_6(2257, "record", 0, false); + public static final Item1_6 recordBlocks = new Item1_6(2258, "record", 0, false); + public static final Item1_6 recordChirp = new Item1_6(2259, "record", 0, false); + public static final Item1_6 recordFar = new Item1_6(2260, "record", 0, false); + public static final Item1_6 recordMall = new Item1_6(2261, "record", 0, false); + public static final Item1_6 recordMellohi = new Item1_6(2262, "record", 0, false); + public static final Item1_6 recordStal = new Item1_6(2263, "record", 0, false); + public static final Item1_6 recordStrad = new Item1_6(2264, "record", 0, false); + public static final Item1_6 recordWard = new Item1_6(2265, "record", 0, false); + public static final Item1_6 record11 = new Item1_6(2266, "record", 0, false); + public static final Item1_6 recordWait = new Item1_6(2267, "record", 0, false); + + public static Item1_6 getByID(final int itemID) { + for (Item1_6 item : itemList) { + if (item.itemID == itemID) { + return item; + } + } + return null; + } + + public static Item1_6 getByName(final String name) { + for (Item1_6 item : itemList) { + if (item.name.equalsIgnoreCase(name)) { + return item; + } + } + return null; + } + + public static class Item1_6 { + + public final int itemID; + public final int maxDamage; + public final boolean hasSubTypes; + public final String name; + + public Item1_6(final int itemID, final String name, final int maxDamage, final boolean hasSubTypes) { + this.itemID = itemID; + this.name = name; + this.maxDamage = maxDamage; + this.hasSubTypes = hasSubTypes; + + itemList.add(this); + } + + public boolean isDamageable() { + return maxDamage > 0 && !hasSubTypes; + } + + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/api/Location.java b/src/main/java/net/raphimc/vialegacy/api/Location.java new file mode 100644 index 0000000..a20758a --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/api/Location.java @@ -0,0 +1,76 @@ +package net.raphimc.vialegacy.api; + +import com.viaversion.viaversion.api.minecraft.Position; + +import java.util.Objects; + +public class Location { + + private double x; + private double y; + private double z; + + public Location(final Position position) { + this(position.x(), position.y(), position.z()); + } + + public Location(final double x, final double y, final double z) { + this.x = x; + this.y = y; + this.z = z; + } + + public void setX(final double x) { + this.x = x; + } + + public double getX() { + return this.x; + } + + public void setY(final double y) { + this.y = y; + } + + public double getY() { + return this.y; + } + + public void setZ(final double z) { + this.z = z; + } + + public double getZ() { + return this.z; + } + + public double distanceTo(final Location p2) { + return Math.sqrt(Math.pow(p2.getX() - this.x, 2) + + Math.pow(p2.getY() - this.y, 2) + + Math.pow(p2.getZ() - this.z, 2) + ); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Location location = (Location) o; + return Double.compare(location.x, x) == 0 && Double.compare(location.y, y) == 0 && Double.compare(location.z, z) == 0; + } + + @Override + public int hashCode() { + return Objects.hash(x, y, z); + } + + @Override + public String toString() { + return "Location{" + + "x=" + x + + ", y=" + y + + ", z=" + z + + '}'; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/netty/PreNettyDecoder.java b/src/main/java/net/raphimc/vialegacy/netty/PreNettyDecoder.java new file mode 100644 index 0000000..e21d1c2 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/netty/PreNettyDecoder.java @@ -0,0 +1,74 @@ +package net.raphimc.vialegacy.netty; + +import com.google.common.collect.EvictingQueue; +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.type.Type; +import io.netty.buffer.ByteBuf; +import io.netty.buffer.ByteBufUtil; +import io.netty.channel.ChannelHandlerContext; +import io.netty.handler.codec.ByteToMessageDecoder; +import net.raphimc.vialegacy.ViaLegacy; +import net.raphimc.vialegacy.util.PreNettyPacketType; +import net.raphimc.vialegacy.util.PreNettySplitter; + +import java.util.List; + +public class PreNettyDecoder extends ByteToMessageDecoder { + + protected final UserConnection user; + private final EvictingQueue lastPackets = EvictingQueue.create(8); + + public PreNettyDecoder(final UserConnection user) { + this.user = user; + } + + @Override + protected void decode(ChannelHandlerContext ctx, ByteBuf in, List out) { + if (!in.isReadable() || in.readableBytes() <= 0) { + return; + } + final PreNettySplitter splitter = this.user.get(PreNettySplitter.class); + if (splitter == null) { + ViaLegacy.getPlatform().getLogger().severe("Received data, but no splitter is set"); + return; + } + + while (in.readableBytes() > 0) { + in.markReaderIndex(); + final int packetId = in.readUnsignedByte(); + final PreNettyPacketType packetType = splitter.getPacketType(packetId); + if (packetType == null) { + ViaLegacy.getPlatform().getLogger().severe("Encountered undefined packet: " + packetId + " in " + splitter.getProtocolName()); + ViaLegacy.getPlatform().getLogger().severe(ByteBufUtil.hexDump(in.readSlice(in.readableBytes()))); + ViaLegacy.getPlatform().getLogger().severe("Last 8 read packet ids: " + this.lastPackets); + ctx.channel().close(); + return; + } + this.lastPackets.add(packetId); + try { + final int begin = in.readerIndex(); + packetType.getPacketReader().accept(this.user, in); + final int length = in.readerIndex() - begin; + in.readerIndex(begin); + + int totalLength = length; + for (int i = 1; i < 5; ++i) { + if ((packetId & -1 << i * 7) == 0) { + totalLength += i; + break; + } + } + + final ByteBuf buf = ctx.alloc().buffer(); + Type.VAR_INT.writePrimitive(buf, totalLength); // Length + Type.VAR_INT.writePrimitive(buf, packetId); // id + buf.writeBytes(in.readSlice(length)); // content + out.add(buf); + } catch (IndexOutOfBoundsException e) { // Not enough data + in.resetReaderIndex(); + return; + } + } + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/netty/PreNettyEncoder.java b/src/main/java/net/raphimc/vialegacy/netty/PreNettyEncoder.java new file mode 100644 index 0000000..1791671 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/netty/PreNettyEncoder.java @@ -0,0 +1,24 @@ +package net.raphimc.vialegacy.netty; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.type.Type; +import io.netty.buffer.ByteBuf; +import io.netty.channel.ChannelHandlerContext; +import io.netty.handler.codec.MessageToByteEncoder; + +public class PreNettyEncoder extends MessageToByteEncoder { + + protected final UserConnection user; + + public PreNettyEncoder(final UserConnection user) { + this.user = user; + } + + @Override + protected void encode(ChannelHandlerContext ctx, ByteBuf in, ByteBuf out) { + Type.VAR_INT.readPrimitive(in); // length + out.writeByte(Type.VAR_INT.readPrimitive(in) & 255); // id + out.writeBytes(in); // content + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/platform/ViaLegacyConfig.java b/src/main/java/net/raphimc/vialegacy/platform/ViaLegacyConfig.java new file mode 100644 index 0000000..476bb22 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/platform/ViaLegacyConfig.java @@ -0,0 +1,23 @@ +package net.raphimc.vialegacy.platform; + +public interface ViaLegacyConfig { + + boolean isDynamicOnground(); + + boolean isIgnoreLong1_8ChannelNames(); + + boolean isLegacySkullLoading(); + + boolean isLegacySkinLoading(); + + boolean isSoundEmulation(); + + boolean isOldBiomes(); + + boolean isRemapBasedOnColor(); + + int getClassicChunkRange(); + + int getChunksPerTick(); + +} diff --git a/src/main/java/net/raphimc/vialegacy/platform/ViaLegacyPlatform.java b/src/main/java/net/raphimc/vialegacy/platform/ViaLegacyPlatform.java new file mode 100644 index 0000000..1596ee5 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/platform/ViaLegacyPlatform.java @@ -0,0 +1,126 @@ +package net.raphimc.vialegacy.platform; + +import com.google.common.collect.Range; +import com.viaversion.viaversion.api.Via; +import com.viaversion.viaversion.api.protocol.ProtocolManager; +import com.viaversion.viaversion.protocols.base.BaseProtocol1_16; +import net.raphimc.vialegacy.ViaLegacy; +import net.raphimc.vialegacy.ViaLegacyConfig; +import net.raphimc.vialegacy.protocols.alpha.protocola1_0_16_2toa1_0_15.Protocola1_0_16_2toa1_0_15; +import net.raphimc.vialegacy.protocols.alpha.protocola1_0_17_1_0_17_4toa1_0_16_2.Protocola1_0_17_1_0_17_4toa1_0_16_2; +import net.raphimc.vialegacy.protocols.alpha.protocola1_1_0_1_1_2_1toa1_0_17_1_0_17_4.Protocola1_1_0_1_1_2_1toa1_0_17_1_0_17_4; +import net.raphimc.vialegacy.protocols.alpha.protocola1_2_0_1_2_1_1toa1_1_0_1_1_2_1.Protocola1_2_0_1_2_1_1toa1_1_0_1_1_2_1; +import net.raphimc.vialegacy.protocols.alpha.protocola1_2_2toa1_2_0_1_2_1_1.Protocola1_2_2toa1_2_0_1_2_1_1; +import net.raphimc.vialegacy.protocols.alpha.protocola1_2_3_1_2_3_4toa1_2_2.Protocola1_2_3_1_2_3_4toa1_2_2; +import net.raphimc.vialegacy.protocols.alpha.protocola1_2_3_5_1_2_6toa1_2_3_1_2_3_4.Protocola1_2_3_5_1_2_6toa1_2_3_1_2_3_4; +import net.raphimc.vialegacy.protocols.alpha.protocolb1_0_1_1_1toa1_2_3_5_1_2_6.Protocolb1_0_1_1_1toa1_2_3_5_1_2_6; +import net.raphimc.vialegacy.protocols.beta.protocol1_0_0_1tob1_8_0_1.Protocol1_0_0_1tob1_8_0_1; +import net.raphimc.vialegacy.protocols.beta.protocolb1_1_2tob1_0_1_1.Protocolb1_1_2tob1_0_1_1; +import net.raphimc.vialegacy.protocols.beta.protocolb1_2_0_2tob1_1_2.Protocolb1_2_0_2tob1_1_2; +import net.raphimc.vialegacy.protocols.beta.protocolb1_3_0_1tob1_2_0_2.Protocolb1_3_0_1tob1_2_0_2; +import net.raphimc.vialegacy.protocols.beta.protocolb1_4_0_1tob1_3_0_1.Protocolb1_4_0_1tob1_3_0_1; +import net.raphimc.vialegacy.protocols.beta.protocolb1_5_0_2tob1_4_0_1.Protocolb1_5_0_2tob1_4_0_1; +import net.raphimc.vialegacy.protocols.beta.protocolb1_6_0_6tob1_5_0_2.Protocolb1_6_0_6tob1_5_0_2; +import net.raphimc.vialegacy.protocols.beta.protocolb1_7_0_3tob1_6_0_6.Protocolb1_7_0_3tob1_6_0_6; +import net.raphimc.vialegacy.protocols.beta.protocolb1_8_0_1tob1_7_0_3.Protocolb1_8_0_1tob1_7_0_3; +import net.raphimc.vialegacy.protocols.classic.protocola1_0_15toc0_28_30.Protocola1_0_15toc0_30; +import net.raphimc.vialegacy.protocols.classic.protocolc0_0_16a_02to0_0_15a_1.Protocolc0_0_16a_02to0_0_15a_1; +import net.raphimc.vialegacy.protocols.classic.protocolc0_0_18a_02toc0_0_16a_02.Protocolc0_0_18a_02toc0_0_16a_02; +import net.raphimc.vialegacy.protocols.classic.protocolc0_0_19a_06toc0_0_18a_02.Protocolc0_0_19a_06toc0_0_18a_02; +import net.raphimc.vialegacy.protocols.classic.protocolc0_0_20a_27toc0_0_19a_06.Protocolc0_27toc0_0_19a_06; +import net.raphimc.vialegacy.protocols.classic.protocolc0_28_30toc0_0_20a_27.Protocolc0_30toc0_27; +import net.raphimc.vialegacy.protocols.classic.protocolc0_28_30toc0_28_30cpe.Protocolc0_30toc0_30cpe; +import net.raphimc.vialegacy.protocols.release.protocol1_1to1_0_0_1.Protocol1_1to1_0_0_1; +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.Protocol1_2_1_3to1_1; +import net.raphimc.vialegacy.protocols.release.protocol1_2_4_5to1_2_1_3.Protocol1_2_4_5to1_2_1_3; +import net.raphimc.vialegacy.protocols.release.protocol1_3_1_2to1_2_4_5.Protocol1_3_1_2to1_2_4_5; +import net.raphimc.vialegacy.protocols.release.protocol1_4_2to1_3_1_2.Protocol1_4_2to1_3_1_2; +import net.raphimc.vialegacy.protocols.release.protocol1_4_4_5to1_4_2.Protocol1_4_4_5to1_4_2; +import net.raphimc.vialegacy.protocols.release.protocol1_4_6_7to1_4_4_5.Protocol1_4_6_7to1_4_4_5; +import net.raphimc.vialegacy.protocols.release.protocol1_5_0_1to1_4_6_7.Protocol1_5_0_1to1_4_6_7; +import net.raphimc.vialegacy.protocols.release.protocol1_5_2to1_5_0_1.Protocol1_5_2to1_5_0_1; +import net.raphimc.vialegacy.protocols.release.protocol1_6_1to1_5_2.Protocol1_6_1to1_5_2; +import net.raphimc.vialegacy.protocols.release.protocol1_6_2to1_6_1.Protocol1_6_2to1_6_1; +import net.raphimc.vialegacy.protocols.release.protocol1_6_4to1_6_2.Protocol1_6_4to1_6_2; +import net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.Protocol1_7_2_5to1_6_4; +import net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.baseprotocols.EmptyBaseProtocol; +import net.raphimc.vialegacy.protocols.release.protocol1_7_6_10to1_7_2_5.Protocol1_7_6_10to1_7_2_5; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.Protocol1_8to1_7_6_10; +import net.raphimc.vialegacy.protocols.snapshot.protocol1_14to3D_Shareware.Protocol1_14to3D_Shareware; +import net.raphimc.vialegacy.protocols.snapshot.protocol1_16_2toCombatTest8c.Protocol1_16_2toCombatTest8c; +import net.raphimc.vialegacy.protocols.snapshot.protocol1_16to20w14infinite.Protocol1_16to20w14infinite; +import net.raphimc.vialegacy.protocols.snapshot.protocol3D_Sharewareto1_14.Protocol3D_Sharewareto1_14; +import net.raphimc.vialegacy.util.VersionEnum; + +import java.io.File; +import java.util.logging.Logger; + +public interface ViaLegacyPlatform { + + default void init(final File dataFolder) { + final ViaLegacyConfig config = new ViaLegacyConfig(new File(dataFolder, "vialegacy.yml")); + config.reloadConfig(); + + ViaLegacy.init(this, config); + VersionEnum.init(); + + Via.getManager().getSubPlatforms().add("ViaLegacy-2.0.0"); + + final ProtocolManager protocolManager = Via.getManager().getProtocolManager(); + protocolManager.registerProtocol(new Protocol1_8to1_7_6_10(), VersionEnum.r1_8.getProtocol(), VersionEnum.r1_7_6tor1_7_10.getProtocol()); + protocolManager.registerProtocol(new Protocol1_7_6_10to1_7_2_5(), VersionEnum.r1_7_6tor1_7_10.getProtocol(), VersionEnum.r1_7_2tor1_7_5.getProtocol()); + protocolManager.registerProtocol(new Protocol1_7_2_5to1_6_4(), VersionEnum.r1_7_2tor1_7_5.getProtocol(), VersionEnum.r1_6_4.getProtocol()); + protocolManager.registerProtocol(new Protocol1_6_4to1_6_2(), VersionEnum.r1_6_4.getProtocol(), VersionEnum.r1_6_2.getProtocol()); + protocolManager.registerProtocol(new Protocol1_6_2to1_6_1(), VersionEnum.r1_6_2.getProtocol(), VersionEnum.r1_6_1.getProtocol()); + protocolManager.registerProtocol(new Protocol1_6_1to1_5_2(), VersionEnum.r1_6_1.getProtocol(), VersionEnum.r1_5_2.getProtocol()); + protocolManager.registerProtocol(new Protocol1_5_2to1_5_0_1(), VersionEnum.r1_5_2.getProtocol(), VersionEnum.r1_5tor1_5_1.getProtocol()); + protocolManager.registerProtocol(new Protocol1_5_0_1to1_4_6_7(), VersionEnum.r1_5tor1_5_1.getProtocol(), VersionEnum.r1_4_6tor1_4_7.getProtocol()); + protocolManager.registerProtocol(new Protocol1_4_6_7to1_4_4_5(), VersionEnum.r1_4_6tor1_4_7.getProtocol(), VersionEnum.r1_4_4tor1_4_5.getProtocol()); + protocolManager.registerProtocol(new Protocol1_4_4_5to1_4_2(), VersionEnum.r1_4_4tor1_4_5.getProtocol(), VersionEnum.r1_4_2.getProtocol()); + protocolManager.registerProtocol(new Protocol1_4_2to1_3_1_2(), VersionEnum.r1_4_2.getProtocol(), VersionEnum.r1_3_1tor1_3_2.getProtocol()); + protocolManager.registerProtocol(new Protocol1_3_1_2to1_2_4_5(), VersionEnum.r1_3_1tor1_3_2.getProtocol(), VersionEnum.r1_2_4tor1_2_5.getProtocol()); + protocolManager.registerProtocol(new Protocol1_2_4_5to1_2_1_3(), VersionEnum.r1_2_4tor1_2_5.getProtocol(), VersionEnum.r1_2_1tor1_2_3.getProtocol()); + protocolManager.registerProtocol(new Protocol1_2_1_3to1_1(), VersionEnum.r1_2_1tor1_2_3.getProtocol(), VersionEnum.r1_1.getProtocol()); + protocolManager.registerProtocol(new Protocol1_1to1_0_0_1(), VersionEnum.r1_1.getProtocol(), VersionEnum.r1_0_0tor1_0_1.getProtocol()); + protocolManager.registerProtocol(new Protocol1_0_0_1tob1_8_0_1(), VersionEnum.r1_0_0tor1_0_1.getProtocol(), VersionEnum.b1_8tob1_8_1.getProtocol()); + protocolManager.registerProtocol(new Protocolb1_8_0_1tob1_7_0_3(), VersionEnum.b1_8tob1_8_1.getProtocol(), VersionEnum.b1_7tob1_7_3.getProtocol()); + protocolManager.registerProtocol(new Protocolb1_7_0_3tob1_6_0_6(), VersionEnum.b1_7tob1_7_3.getProtocol(), VersionEnum.b1_6tob1_6_6.getProtocol()); + protocolManager.registerProtocol(new Protocolb1_6_0_6tob1_5_0_2(), VersionEnum.b1_6tob1_6_6.getProtocol(), VersionEnum.b1_5tob1_5_2.getProtocol()); + protocolManager.registerProtocol(new Protocolb1_5_0_2tob1_4_0_1(), VersionEnum.b1_5tob1_5_2.getProtocol(), VersionEnum.b1_4tob1_4_1.getProtocol()); + protocolManager.registerProtocol(new Protocolb1_4_0_1tob1_3_0_1(), VersionEnum.b1_4tob1_4_1.getProtocol(), VersionEnum.b1_3tob1_3_1.getProtocol()); + protocolManager.registerProtocol(new Protocolb1_3_0_1tob1_2_0_2(), VersionEnum.b1_3tob1_3_1.getProtocol(), VersionEnum.b1_2_0tob1_2_2.getProtocol()); + protocolManager.registerProtocol(new Protocolb1_2_0_2tob1_1_2(), VersionEnum.b1_2_0tob1_2_2.getProtocol(), VersionEnum.b1_1_2.getProtocol()); + protocolManager.registerProtocol(new Protocolb1_1_2tob1_0_1_1(), VersionEnum.b1_1_2.getProtocol(), VersionEnum.b1_0tob1_1_1.getProtocol()); + protocolManager.registerProtocol(new Protocolb1_0_1_1_1toa1_2_3_5_1_2_6(), VersionEnum.b1_0tob1_1_1.getProtocol(), VersionEnum.a1_2_3_5toa1_2_6.getProtocol()); + protocolManager.registerProtocol(new Protocola1_2_3_5_1_2_6toa1_2_3_1_2_3_4(), VersionEnum.a1_2_3_5toa1_2_6.getProtocol(), VersionEnum.a1_2_3toa1_2_3_4.getProtocol()); + protocolManager.registerProtocol(new Protocola1_2_3_1_2_3_4toa1_2_2(), VersionEnum.a1_2_3toa1_2_3_4.getProtocol(), VersionEnum.a1_2_2.getProtocol()); + protocolManager.registerProtocol(new Protocola1_2_2toa1_2_0_1_2_1_1(), VersionEnum.a1_2_2.getProtocol(), VersionEnum.a1_2_0toa1_2_1_1.getProtocol()); + protocolManager.registerProtocol(new Protocola1_2_0_1_2_1_1toa1_1_0_1_1_2_1(), VersionEnum.a1_2_0toa1_2_1_1.getProtocol(), VersionEnum.a1_1_0toa1_1_2_1.getProtocol()); + protocolManager.registerProtocol(new Protocola1_1_0_1_1_2_1toa1_0_17_1_0_17_4(), VersionEnum.a1_1_0toa1_1_2_1.getProtocol(), VersionEnum.a1_0_17toa1_0_17_4.getProtocol()); + protocolManager.registerProtocol(new Protocola1_0_17_1_0_17_4toa1_0_16_2(), VersionEnum.a1_0_17toa1_0_17_4.getProtocol(), VersionEnum.a1_0_16toa1_0_16_2.getProtocol()); + protocolManager.registerProtocol(new Protocola1_0_16_2toa1_0_15(), VersionEnum.a1_0_16toa1_0_16_2.getProtocol(), VersionEnum.a1_0_15.getProtocol()); + protocolManager.registerProtocol(new Protocola1_0_15toc0_30(), VersionEnum.a1_0_15.getProtocol(), VersionEnum.c0_28toc0_30.getProtocol()); + protocolManager.registerProtocol(new Protocolc0_30toc0_30cpe(), VersionEnum.c0_28toc0_30.getProtocol(), VersionEnum.c0_30cpe.getProtocol()); + protocolManager.registerProtocol(new Protocolc0_30toc0_27(), VersionEnum.c0_28toc0_30.getProtocol(), VersionEnum.c0_0_20ac0_27.getProtocol()); + protocolManager.registerProtocol(new Protocolc0_27toc0_0_19a_06(), VersionEnum.c0_0_20ac0_27.getProtocol(), VersionEnum.c0_0_19a_06.getProtocol()); + protocolManager.registerProtocol(new Protocolc0_0_19a_06toc0_0_18a_02(), VersionEnum.c0_0_19a_06.getProtocol(), VersionEnum.c0_0_18a_02.getProtocol()); + protocolManager.registerProtocol(new Protocolc0_0_18a_02toc0_0_16a_02(), VersionEnum.c0_0_18a_02.getProtocol(), VersionEnum.c0_0_16a_02.getProtocol()); + protocolManager.registerProtocol(new Protocolc0_0_16a_02to0_0_15a_1(), VersionEnum.c0_0_16a_02.getProtocol(), VersionEnum.c0_0_15a_1.getProtocol()); + + protocolManager.registerProtocol(new Protocol1_14to3D_Shareware(), VersionEnum.r1_14.getProtocol(), VersionEnum.s3d_shareware.getProtocol()); + protocolManager.registerProtocol(new Protocol3D_Sharewareto1_14(), VersionEnum.s3d_shareware.getProtocol(), VersionEnum.r1_14.getProtocol()); + protocolManager.registerProtocol(new Protocol1_16to20w14infinite(), VersionEnum.r1_16.getProtocol(), VersionEnum.s20w14infinite.getProtocol()); + protocolManager.registerProtocol(new Protocol1_16_2toCombatTest8c(), VersionEnum.r1_16_2.getProtocol(), VersionEnum.sCombatTest8c.getProtocol()); + + for (VersionEnum version : VersionEnum.LEGACY_VERSIONS) { + Via.getManager().getProtocolManager().registerBaseProtocol(new EmptyBaseProtocol(), Range.singleton(version.getVersion())); + } + protocolManager.registerBaseProtocol(new BaseProtocol1_16(), Range.singleton(VersionEnum.s20w14infinite.getVersion())); + protocolManager.registerBaseProtocol(new BaseProtocol1_16(), Range.singleton(VersionEnum.sCombatTest8c.getVersion())); + } + + Logger getLogger(); + + File getDataFolder(); + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_0_16_2toa1_0_15/ClientboundPacketsa1_0_15.java b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_0_16_2toa1_0_15/ClientboundPacketsa1_0_15.java new file mode 100644 index 0000000..b6b1567 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_0_16_2toa1_0_15/ClientboundPacketsa1_0_15.java @@ -0,0 +1,194 @@ +package net.raphimc.vialegacy.protocols.alpha.protocola1_0_16_2toa1_0_15; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType; +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.util.PreNettyPacketType; +import net.raphimc.vialegacy.util.PreNettyTypes; + +import java.util.function.BiConsumer; + +public enum ClientboundPacketsa1_0_15 implements ClientboundPacketType, PreNettyPacketType { + + KEEP_ALIVE(0, (user, buf) -> { + }), + JOIN_GAME(1, (user, buf) -> { + buf.readInt(); + PreNettyTypes.readUTF(buf); + PreNettyTypes.readUTF(buf); + }), + CHAT_MESSAGE(3, (user, buf) -> { + PreNettyTypes.readUTF(buf); + }), + PLAYER_POSITION_ONLY_ONGROUND(10, (user, buf) -> { + buf.readUnsignedByte(); + }), + PLAYER_POSITION_ONLY_POSITION(11, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION_ONLY_LOOK(12, (user, buf) -> { + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION(13, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + HELD_ITEM_CHANGE(16, (user, buf) -> { + buf.readInt(); + buf.readShort(); + }), + ADD_TO_INVENTORY(17, (user, buf) -> { + buf.readShort(); + buf.readByte(); + buf.readShort(); + }), + ENTITY_ANIMATION(18, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + SPAWN_PLAYER(20, (user, buf) -> { + buf.readInt(); + PreNettyTypes.readUTF(buf); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + }), + SPAWN_ITEM(21, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + COLLECT_ITEM(22, (user, buf) -> { + buf.readInt(); + buf.readInt(); + }), + SPAWN_ENTITY(23, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + DESTROY_ENTITIES(29, (user, buf) -> { + buf.readInt(); + }), + ENTITY_MOVEMENT(30, (user, buf) -> { + buf.readInt(); + }), + ENTITY_POSITION(31, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_ROTATION(32, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_POSITION_AND_ROTATION(33, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_TELEPORT(34, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + }), + PRE_CHUNK(50, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readByte(); + }), + CHUNK_DATA(51, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + int x = buf.readInt(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + MULTI_BLOCK_CHANGE(52, (user, buf) -> { + buf.readInt(); + buf.readInt(); + short x = buf.readShort(); + for (int i = 0; i < x; i++) buf.readShort(); + for (int i = 0; i < x; i++) buf.readByte(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + BLOCK_CHANGE(53, (user, buf) -> { + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + buf.readUnsignedByte(); + }), + DISCONNECT(255, (user, buf) -> { + PreNettyTypes.readUTF(buf); + }); + + private static final ClientboundPacketsa1_0_15[] REGISTRY = new ClientboundPacketsa1_0_15[256]; + + static { + for (ClientboundPacketsa1_0_15 packet : values()) { + REGISTRY[packet.id] = packet; + } + } + + public static ClientboundPacketsa1_0_15 getPacket(final int id) { + return REGISTRY[id]; + } + + private final int id; + private final BiConsumer packetReader; + + ClientboundPacketsa1_0_15(final int id, final BiConsumer packetReader) { + this.id = id; + this.packetReader = packetReader; + } + + @Override + public int getId() { + return this.id; + } + + @Override + public String getName() { + return name(); + } + + @Override + public BiConsumer getPacketReader() { + return this.packetReader; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_0_16_2toa1_0_15/Protocola1_0_16_2toa1_0_15.java b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_0_16_2toa1_0_15/Protocola1_0_16_2toa1_0_15.java new file mode 100644 index 0000000..2109454 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_0_16_2toa1_0_15/Protocola1_0_16_2toa1_0_15.java @@ -0,0 +1,40 @@ +package net.raphimc.vialegacy.protocols.alpha.protocola1_0_16_2toa1_0_15; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.AbstractProtocol; +import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; +import com.viaversion.viaversion.api.protocol.packet.State; +import com.viaversion.viaversion.api.protocol.remapper.PacketRemapper; +import net.raphimc.vialegacy.protocols.alpha.protocola1_0_17_1_0_17_4toa1_0_16_2.ClientboundPacketsa1_0_16; +import net.raphimc.vialegacy.protocols.alpha.protocola1_1_0_1_1_2_1toa1_0_17_1_0_17_4.ServerboundPacketsa1_0_17; +import net.raphimc.vialegacy.protocols.beta.protocolb1_8_0_1tob1_7_0_3.types.Typesb1_7_0_3; +import net.raphimc.vialegacy.util.PreNettySplitter; + +public class Protocola1_0_16_2toa1_0_15 extends AbstractProtocol { + + public Protocola1_0_16_2toa1_0_15() { + super(ClientboundPacketsa1_0_15.class, ClientboundPacketsa1_0_16.class, ServerboundPacketsa1_0_15.class, ServerboundPacketsa1_0_17.class); + } + + @Override + protected void registerPackets() { + this.registerServerbound(State.LOGIN, -1, ServerboundPacketsa1_0_17.HANDSHAKE.getId(), new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + wrapper.cancel(); + final PacketWrapper handshake = PacketWrapper.create(ClientboundPacketsa1_0_16.HANDSHAKE, wrapper.user()); + handshake.write(Typesb1_7_0_3.STRING, "-"); // server hash + handshake.send(Protocola1_0_16_2toa1_0_15.class); + }); + } + }); + this.cancelServerbound(ServerboundPacketsa1_0_17.HANDSHAKE); + } + + @Override + public void init(UserConnection userConnection) { + userConnection.put(new PreNettySplitter(userConnection, Protocola1_0_16_2toa1_0_15.class, ClientboundPacketsa1_0_15::getPacket)); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_0_16_2toa1_0_15/ServerboundPacketsa1_0_15.java b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_0_16_2toa1_0_15/ServerboundPacketsa1_0_15.java new file mode 100644 index 0000000..034a52a --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_0_16_2toa1_0_15/ServerboundPacketsa1_0_15.java @@ -0,0 +1,119 @@ +package net.raphimc.vialegacy.protocols.alpha.protocola1_0_16_2toa1_0_15; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.packet.ServerboundPacketType; +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.util.PreNettyPacketType; +import net.raphimc.vialegacy.util.PreNettyTypes; + +import java.util.function.BiConsumer; + +public enum ServerboundPacketsa1_0_15 implements ServerboundPacketType, PreNettyPacketType { + + KEEP_ALIVE(0, (user, buf) -> { + }), + LOGIN(1, (user, buf) -> { + buf.readInt(); + PreNettyTypes.readUTF(buf); + PreNettyTypes.readUTF(buf); + }), + CHAT_MESSAGE(3, (user, buf) -> { + PreNettyTypes.readUTF(buf); + }), + PLAYER_MOVEMENT(10, (user, buf) -> { + buf.readUnsignedByte(); + }), + PLAYER_POSITION(11, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readUnsignedByte(); + }), + PLAYER_ROTATION(12, (user, buf) -> { + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION_AND_ROTATION(13, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_DIGGING(14, (user, buf) -> { + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + }), + PLAYER_BLOCK_PLACEMENT(15, (user, buf) -> { + buf.readShort(); + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + }), + HELD_ITEM_CHANGE(16, (user, buf) -> { + buf.readInt(); + buf.readShort(); + }), + ANIMATION(18, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + SPAWN_ITEM(21, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + DISCONNECT(255, (user, buf) -> { + PreNettyTypes.readUTF(buf); + }); + + private static final ServerboundPacketsa1_0_15[] REGISTRY = new ServerboundPacketsa1_0_15[256]; + + static { + for (ServerboundPacketsa1_0_15 packet : values()) { + REGISTRY[packet.id] = packet; + } + } + + public static ServerboundPacketsa1_0_15 getPacket(final int id) { + return REGISTRY[id]; + } + + private final int id; + private final BiConsumer packetReader; + + ServerboundPacketsa1_0_15(final int id, final BiConsumer packetReader) { + this.id = id; + this.packetReader = packetReader; + } + + @Override + public int getId() { + return this.id; + } + + @Override + public String getName() { + return name(); + } + + @Override + public BiConsumer getPacketReader() { + return this.packetReader; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_0_17_1_0_17_4toa1_0_16_2/ClientboundPacketsa1_0_16.java b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_0_17_1_0_17_4toa1_0_16_2/ClientboundPacketsa1_0_16.java new file mode 100644 index 0000000..e8a0fe2 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_0_17_1_0_17_4toa1_0_16_2/ClientboundPacketsa1_0_16.java @@ -0,0 +1,198 @@ +package net.raphimc.vialegacy.protocols.alpha.protocola1_0_17_1_0_17_4toa1_0_16_2; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType; +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.util.PreNettyPacketType; + +import java.util.function.BiConsumer; + +import static net.raphimc.vialegacy.util.PreNettyTypes.readUTF; + +public enum ClientboundPacketsa1_0_16 implements ClientboundPacketType, PreNettyPacketType { + + KEEP_ALIVE(0, (user, buf) -> { + }), + JOIN_GAME(1, (user, buf) -> { + buf.readInt(); + readUTF(buf); + readUTF(buf); + }), + HANDSHAKE(2, (user, buf) -> { + readUTF(buf); + }), + CHAT_MESSAGE(3, (user, buf) -> { + readUTF(buf); + }), + PLAYER_POSITION_ONLY_ONGROUND(10, (user, buf) -> { + buf.readUnsignedByte(); + }), + PLAYER_POSITION_ONLY_POSITION(11, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION_ONLY_LOOK(12, (user, buf) -> { + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION(13, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + HELD_ITEM_CHANGE(16, (user, buf) -> { + buf.readInt(); + buf.readShort(); + }), + ADD_TO_INVENTORY(17, (user, buf) -> { + buf.readShort(); + buf.readByte(); + buf.readShort(); + }), + ENTITY_ANIMATION(18, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + SPAWN_PLAYER(20, (user, buf) -> { + buf.readInt(); + readUTF(buf); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + }), + SPAWN_ITEM(21, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + COLLECT_ITEM(22, (user, buf) -> { + buf.readInt(); + buf.readInt(); + }), + SPAWN_ENTITY(23, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + DESTROY_ENTITIES(29, (user, buf) -> { + buf.readInt(); + }), + ENTITY_MOVEMENT(30, (user, buf) -> { + buf.readInt(); + }), + ENTITY_POSITION(31, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_ROTATION(32, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_POSITION_AND_ROTATION(33, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_TELEPORT(34, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + }), + PRE_CHUNK(50, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readByte(); + }), + CHUNK_DATA(51, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + int x = buf.readInt(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + MULTI_BLOCK_CHANGE(52, (user, buf) -> { + buf.readInt(); + buf.readInt(); + short x = buf.readShort(); + for (int i = 0; i < x; i++) buf.readShort(); + for (int i = 0; i < x; i++) buf.readByte(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + BLOCK_CHANGE(53, (user, buf) -> { + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + buf.readUnsignedByte(); + }), + DISCONNECT(255, (user, buf) -> { + readUTF(buf); + }); + + private static final ClientboundPacketsa1_0_16[] REGISTRY = new ClientboundPacketsa1_0_16[256]; + + static { + for (ClientboundPacketsa1_0_16 packet : values()) { + REGISTRY[packet.id] = packet; + } + } + + public static ClientboundPacketsa1_0_16 getPacket(final int id) { + return REGISTRY[id]; + } + + private final int id; + private final BiConsumer packetReader; + + ClientboundPacketsa1_0_16(final int id, final BiConsumer packetReader) { + this.id = id; + this.packetReader = packetReader; + } + + @Override + public int getId() { + return this.id; + } + + @Override + public String getName() { + return name(); + } + + @Override + public BiConsumer getPacketReader() { + return this.packetReader; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_0_17_1_0_17_4toa1_0_16_2/Protocola1_0_17_1_0_17_4toa1_0_16_2.java b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_0_17_1_0_17_4toa1_0_16_2/Protocola1_0_17_1_0_17_4toa1_0_16_2.java new file mode 100644 index 0000000..f6e65cb --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_0_17_1_0_17_4toa1_0_16_2/Protocola1_0_17_1_0_17_4toa1_0_16_2.java @@ -0,0 +1,43 @@ +package net.raphimc.vialegacy.protocols.alpha.protocola1_0_17_1_0_17_4toa1_0_16_2; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.AbstractProtocol; +import com.viaversion.viaversion.api.protocol.remapper.PacketRemapper; +import com.viaversion.viaversion.api.type.Type; +import net.raphimc.vialegacy.protocols.alpha.protocola1_0_17_1_0_17_4toa1_0_16_2.storage.TimeLockStorage; +import net.raphimc.vialegacy.protocols.alpha.protocola1_1_0_1_1_2_1toa1_0_17_1_0_17_4.ClientboundPacketsa1_0_17; +import net.raphimc.vialegacy.protocols.alpha.protocola1_1_0_1_1_2_1toa1_0_17_1_0_17_4.ServerboundPacketsa1_0_17; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.Types1_7_6; +import net.raphimc.vialegacy.util.PreNettySplitter; + +public class Protocola1_0_17_1_0_17_4toa1_0_16_2 extends AbstractProtocol { + + public Protocola1_0_17_1_0_17_4toa1_0_16_2() { + super(ClientboundPacketsa1_0_16.class, ClientboundPacketsa1_0_17.class, ServerboundPacketsa1_0_17.class, ServerboundPacketsa1_0_17.class); + } + + @Override + protected void registerPackets() { + this.registerServerbound(ServerboundPacketsa1_0_17.PLAYER_BLOCK_PLACEMENT, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.SHORT); // item id + map(Types1_7_6.POSITION_UBYTE); // position + map(Type.UNSIGNED_BYTE); // direction + handler(wrapper -> { + if (wrapper.get(Type.SHORT, 0) < 0) { + wrapper.cancel(); + } + }); + } + }); + } + + @Override + public void init(UserConnection userConnection) { + userConnection.put(new PreNettySplitter(userConnection, Protocola1_0_17_1_0_17_4toa1_0_16_2.class, ClientboundPacketsa1_0_16::getPacket)); + + userConnection.put(new TimeLockStorage(userConnection, 0)); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_0_17_1_0_17_4toa1_0_16_2/storage/TimeLockStorage.java b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_0_17_1_0_17_4toa1_0_16_2/storage/TimeLockStorage.java new file mode 100644 index 0000000..63ec2c7 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_0_17_1_0_17_4toa1_0_16_2/storage/TimeLockStorage.java @@ -0,0 +1,23 @@ +package net.raphimc.vialegacy.protocols.alpha.protocola1_0_17_1_0_17_4toa1_0_16_2.storage; + +import com.viaversion.viaversion.api.connection.StoredObject; +import com.viaversion.viaversion.api.connection.UserConnection; + +public class TimeLockStorage extends StoredObject { + + private long time; + + public TimeLockStorage(UserConnection user, final long time) { + super(user); + this.time = time; + } + + public void setTime(final long time) { + this.time = time; + } + + public long getTime() { + return this.time; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_0_17_1_0_17_4toa1_0_16_2/task/TimeLockTask.java b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_0_17_1_0_17_4toa1_0_16_2/task/TimeLockTask.java new file mode 100644 index 0000000..094dabc --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_0_17_1_0_17_4toa1_0_16_2/task/TimeLockTask.java @@ -0,0 +1,30 @@ +package net.raphimc.vialegacy.protocols.alpha.protocola1_0_17_1_0_17_4toa1_0_16_2.task; + +import com.viaversion.viaversion.api.Via; +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; +import com.viaversion.viaversion.api.type.Type; +import net.raphimc.vialegacy.protocols.alpha.protocola1_0_17_1_0_17_4toa1_0_16_2.Protocola1_0_17_1_0_17_4toa1_0_16_2; +import net.raphimc.vialegacy.protocols.alpha.protocola1_0_17_1_0_17_4toa1_0_16_2.storage.TimeLockStorage; +import net.raphimc.vialegacy.protocols.alpha.protocola1_1_0_1_1_2_1toa1_0_17_1_0_17_4.ClientboundPacketsa1_0_17; +import net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.storage.PlayerInfoStorage; + +public class TimeLockTask implements Runnable { + + @Override + public void run() { + for (UserConnection info : Via.getManager().getConnectionManager().getConnections()) { + final TimeLockStorage timeLockStorage = info.get(TimeLockStorage.class); + final PlayerInfoStorage playerInfoStorage = info.get(PlayerInfoStorage.class); + if (timeLockStorage != null && playerInfoStorage != null && playerInfoStorage.entityId != -1) { + try { + final PacketWrapper updateTime = PacketWrapper.create(ClientboundPacketsa1_0_17.TIME_UPDATE, info); + updateTime.write(Type.LONG, timeLockStorage.getTime() % 24_000L); + updateTime.send(Protocola1_0_17_1_0_17_4toa1_0_16_2.class); + } catch (Throwable ignored) { + } + } + } + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_1_0_1_1_2_1toa1_0_17_1_0_17_4/ClientboundPacketsa1_0_17.java b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_1_0_1_1_2_1toa1_0_17_1_0_17_4/ClientboundPacketsa1_0_17.java new file mode 100644 index 0000000..75aa31b --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_1_0_1_1_2_1toa1_0_17_1_0_17_4/ClientboundPacketsa1_0_17.java @@ -0,0 +1,210 @@ +package net.raphimc.vialegacy.protocols.alpha.protocola1_1_0_1_1_2_1toa1_0_17_1_0_17_4; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType; +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.util.PreNettyPacketType; + +import java.util.function.BiConsumer; + +import static net.raphimc.vialegacy.util.PreNettyTypes.readUTF; + +public enum ClientboundPacketsa1_0_17 implements ClientboundPacketType, PreNettyPacketType { + + KEEP_ALIVE(0, (user, buf) -> { + }), + JOIN_GAME(1, (user, buf) -> { + buf.readInt(); + readUTF(buf); + readUTF(buf); + }), + HANDSHAKE(2, (user, buf) -> { + readUTF(buf); + }), + CHAT_MESSAGE(3, (user, buf) -> { + readUTF(buf); + }), + TIME_UPDATE(4, (user, buf) -> { + buf.readLong(); + }), + PLAYER_POSITION_ONLY_ONGROUND(10, (user, buf) -> { + buf.readUnsignedByte(); + }), + PLAYER_POSITION_ONLY_POSITION(11, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION_ONLY_LOOK(12, (user, buf) -> { + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION(13, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + HELD_ITEM_CHANGE(16, (user, buf) -> { + buf.readInt(); + buf.readShort(); + }), + ADD_TO_INVENTORY(17, (user, buf) -> { + buf.readShort(); + buf.readByte(); + buf.readShort(); + }), + ENTITY_ANIMATION(18, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + SPAWN_PLAYER(20, (user, buf) -> { + buf.readInt(); + readUTF(buf); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + }), + SPAWN_ITEM(21, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + COLLECT_ITEM(22, (user, buf) -> { + buf.readInt(); + buf.readInt(); + }), + SPAWN_ENTITY(23, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + SPAWN_MOB(24, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + }), + DESTROY_ENTITIES(29, (user, buf) -> { + buf.readInt(); + }), + ENTITY_MOVEMENT(30, (user, buf) -> { + buf.readInt(); + }), + ENTITY_POSITION(31, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_ROTATION(32, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_POSITION_AND_ROTATION(33, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_TELEPORT(34, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + }), + PRE_CHUNK(50, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readByte(); + }), + CHUNK_DATA(51, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + int x = buf.readInt(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + MULTI_BLOCK_CHANGE(52, (user, buf) -> { + buf.readInt(); + buf.readInt(); + short x = buf.readShort(); + for (int i = 0; i < x; i++) buf.readShort(); + for (int i = 0; i < x; i++) buf.readByte(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + BLOCK_CHANGE(53, (user, buf) -> { + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + buf.readUnsignedByte(); + }), + DISCONNECT(255, (user, buf) -> { + readUTF(buf); + }); + + private static final ClientboundPacketsa1_0_17[] REGISTRY = new ClientboundPacketsa1_0_17[256]; + + static { + for (ClientboundPacketsa1_0_17 packet : values()) { + REGISTRY[packet.id] = packet; + } + } + + public static ClientboundPacketsa1_0_17 getPacket(final int id) { + return REGISTRY[id]; + } + + private final int id; + private final BiConsumer packetReader; + + ClientboundPacketsa1_0_17(final int id, final BiConsumer packetReader) { + this.id = id; + this.packetReader = packetReader; + } + + @Override + public int getId() { + return this.id; + } + + @Override + public String getName() { + return name(); + } + + @Override + public BiConsumer getPacketReader() { + return this.packetReader; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_1_0_1_1_2_1toa1_0_17_1_0_17_4/Protocola1_1_0_1_1_2_1toa1_0_17_1_0_17_4.java b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_1_0_1_1_2_1toa1_0_17_1_0_17_4/Protocola1_1_0_1_1_2_1toa1_0_17_1_0_17_4.java new file mode 100644 index 0000000..94a3089 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_1_0_1_1_2_1toa1_0_17_1_0_17_4/Protocola1_1_0_1_1_2_1toa1_0_17_1_0_17_4.java @@ -0,0 +1,26 @@ +package net.raphimc.vialegacy.protocols.alpha.protocola1_1_0_1_1_2_1toa1_0_17_1_0_17_4; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.AbstractProtocol; +import net.raphimc.vialegacy.protocols.alpha.protocola1_2_0_1_2_1_1toa1_1_0_1_1_2_1.ClientboundPacketsa1_1_0; +import net.raphimc.vialegacy.protocols.alpha.protocola1_2_0_1_2_1_1toa1_1_0_1_1_2_1.ServerboundPacketsa1_1_0; +import net.raphimc.vialegacy.util.PreNettySplitter; + +public class Protocola1_1_0_1_1_2_1toa1_0_17_1_0_17_4 extends AbstractProtocol { + + public Protocola1_1_0_1_1_2_1toa1_0_17_1_0_17_4() { + super(ClientboundPacketsa1_0_17.class, ClientboundPacketsa1_1_0.class, ServerboundPacketsa1_0_17.class, ServerboundPacketsa1_1_0.class); + } + + @Override + protected void registerPackets() { + this.cancelServerbound(ServerboundPacketsa1_1_0.COMPLEX_ENTITY); + this.cancelServerbound(ServerboundPacketsa1_1_0.PLAYER_INVENTORY); + } + + @Override + public void init(UserConnection userConnection) { + userConnection.put(new PreNettySplitter(userConnection, Protocola1_1_0_1_1_2_1toa1_0_17_1_0_17_4.class, ClientboundPacketsa1_0_17::getPacket)); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_1_0_1_1_2_1toa1_0_17_1_0_17_4/ServerboundPacketsa1_0_17.java b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_1_0_1_1_2_1toa1_0_17_1_0_17_4/ServerboundPacketsa1_0_17.java new file mode 100644 index 0000000..4534247 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_1_0_1_1_2_1toa1_0_17_1_0_17_4/ServerboundPacketsa1_0_17.java @@ -0,0 +1,123 @@ +package net.raphimc.vialegacy.protocols.alpha.protocola1_1_0_1_1_2_1toa1_0_17_1_0_17_4; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.packet.ServerboundPacketType; +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.util.PreNettyPacketType; + +import java.util.function.BiConsumer; + +import static net.raphimc.vialegacy.util.PreNettyTypes.readUTF; + +public enum ServerboundPacketsa1_0_17 implements ServerboundPacketType, PreNettyPacketType { + + KEEP_ALIVE(0, (user, buf) -> { + }), + LOGIN(1, (user, buf) -> { + buf.readInt(); + readUTF(buf); + readUTF(buf); + }), + HANDSHAKE(2, (user, buf) -> { + readUTF(buf); + }), + CHAT_MESSAGE(3, (user, buf) -> { + readUTF(buf); + }), + PLAYER_MOVEMENT(10, (user, buf) -> { + buf.readUnsignedByte(); + }), + PLAYER_POSITION(11, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readUnsignedByte(); + }), + PLAYER_ROTATION(12, (user, buf) -> { + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION_AND_ROTATION(13, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_DIGGING(14, (user, buf) -> { + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + }), + PLAYER_BLOCK_PLACEMENT(15, (user, buf) -> { + buf.readShort(); + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + }), + HELD_ITEM_CHANGE(16, (user, buf) -> { + buf.readInt(); + buf.readShort(); + }), + ANIMATION(18, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + SPAWN_ITEM(21, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + DISCONNECT(255, (user, buf) -> { + readUTF(buf); + }); + + private static final ServerboundPacketsa1_0_17[] REGISTRY = new ServerboundPacketsa1_0_17[256]; + + static { + for (ServerboundPacketsa1_0_17 packet : values()) { + REGISTRY[packet.id] = packet; + } + } + + public static ServerboundPacketsa1_0_17 getPacket(final int id) { + return REGISTRY[id]; + } + + private final int id; + private final BiConsumer packetReader; + + ServerboundPacketsa1_0_17(final int id, final BiConsumer packetReader) { + this.id = id; + this.packetReader = packetReader; + } + + @Override + public int getId() { + return this.id; + } + + @Override + public String getName() { + return name(); + } + + @Override + public BiConsumer getPacketReader() { + return this.packetReader; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_2_0_1_2_1_1toa1_1_0_1_1_2_1/ClientboundPacketsa1_1_0.java b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_2_0_1_2_1_1toa1_1_0_1_1_2_1/ClientboundPacketsa1_1_0.java new file mode 100644 index 0000000..8e0168e --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_2_0_1_2_1_1toa1_1_0_1_1_2_1/ClientboundPacketsa1_1_0.java @@ -0,0 +1,228 @@ +package net.raphimc.vialegacy.protocols.alpha.protocola1_2_0_1_2_1_1toa1_1_0_1_1_2_1; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType; +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.util.PreNettyPacketType; + +import java.util.function.BiConsumer; + +import static net.raphimc.vialegacy.util.PreNettyTypes.readItemStackb1_2; +import static net.raphimc.vialegacy.util.PreNettyTypes.readUTF; + +public enum ClientboundPacketsa1_1_0 implements ClientboundPacketType, PreNettyPacketType { + + KEEP_ALIVE(0, (user, buf) -> { + }), + JOIN_GAME(1, (user, buf) -> { + buf.readInt(); + readUTF(buf); + readUTF(buf); + }), + HANDSHAKE(2, (user, buf) -> { + readUTF(buf); + }), + CHAT_MESSAGE(3, (user, buf) -> { + readUTF(buf); + }), + TIME_UPDATE(4, (user, buf) -> { + buf.readLong(); + }), + PLAYER_INVENTORY(5, (user, buf) -> { + buf.readInt(); + int x = buf.readShort(); + for (int i = 0; i < x; i++) readItemStackb1_2(buf); + }), + SPAWN_POSITION(6, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + PLAYER_POSITION_ONLY_ONGROUND(10, (user, buf) -> { + buf.readUnsignedByte(); + }), + PLAYER_POSITION_ONLY_POSITION(11, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION_ONLY_LOOK(12, (user, buf) -> { + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION(13, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + HELD_ITEM_CHANGE(16, (user, buf) -> { + buf.readInt(); + buf.readShort(); + }), + ADD_TO_INVENTORY(17, (user, buf) -> { + buf.readShort(); + buf.readByte(); + buf.readShort(); + }), + ENTITY_ANIMATION(18, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + SPAWN_PLAYER(20, (user, buf) -> { + buf.readInt(); + readUTF(buf); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + }), + SPAWN_ITEM(21, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + COLLECT_ITEM(22, (user, buf) -> { + buf.readInt(); + buf.readInt(); + }), + SPAWN_ENTITY(23, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + SPAWN_MOB(24, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + }), + DESTROY_ENTITIES(29, (user, buf) -> { + buf.readInt(); + }), + ENTITY_MOVEMENT(30, (user, buf) -> { + buf.readInt(); + }), + ENTITY_POSITION(31, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_ROTATION(32, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_POSITION_AND_ROTATION(33, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_TELEPORT(34, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + }), + PRE_CHUNK(50, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readByte(); + }), + CHUNK_DATA(51, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + int x = buf.readInt(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + MULTI_BLOCK_CHANGE(52, (user, buf) -> { + buf.readInt(); + buf.readInt(); + short x = buf.readShort(); + for (int i = 0; i < x; i++) buf.readShort(); + for (int i = 0; i < x; i++) buf.readByte(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + BLOCK_CHANGE(53, (user, buf) -> { + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + buf.readUnsignedByte(); + }), + COMPLEX_ENTITY(59, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + int x = buf.readUnsignedShort(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + DISCONNECT(255, (user, buf) -> { + readUTF(buf); + }); + + private static final ClientboundPacketsa1_1_0[] REGISTRY = new ClientboundPacketsa1_1_0[256]; + + static { + for (ClientboundPacketsa1_1_0 packet : values()) { + REGISTRY[packet.id] = packet; + } + } + + public static ClientboundPacketsa1_1_0 getPacket(final int id) { + return REGISTRY[id]; + } + + private final int id; + private final BiConsumer packetReader; + + ClientboundPacketsa1_1_0(final int id, final BiConsumer packetReader) { + this.id = id; + this.packetReader = packetReader; + } + + @Override + public int getId() { + return this.id; + } + + @Override + public String getName() { + return name(); + } + + @Override + public BiConsumer getPacketReader() { + return this.packetReader; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_2_0_1_2_1_1toa1_1_0_1_1_2_1/Protocola1_2_0_1_2_1_1toa1_1_0_1_1_2_1.java b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_2_0_1_2_1_1toa1_1_0_1_1_2_1/Protocola1_2_0_1_2_1_1toa1_1_0_1_1_2_1.java new file mode 100644 index 0000000..a64aef8 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_2_0_1_2_1_1toa1_1_0_1_1_2_1/Protocola1_2_0_1_2_1_1toa1_1_0_1_1_2_1.java @@ -0,0 +1,49 @@ +package net.raphimc.vialegacy.protocols.alpha.protocola1_2_0_1_2_1_1toa1_1_0_1_1_2_1; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.AbstractProtocol; +import com.viaversion.viaversion.api.protocol.packet.State; +import com.viaversion.viaversion.api.protocol.remapper.PacketRemapper; +import com.viaversion.viaversion.api.type.Type; +import net.raphimc.vialegacy.protocols.alpha.protocola1_2_2toa1_2_0_1_2_1_1.ClientboundPacketsa1_2_0; +import net.raphimc.vialegacy.protocols.alpha.protocola1_2_2toa1_2_0_1_2_1_1.ServerboundPacketsa1_2_0; +import net.raphimc.vialegacy.protocols.beta.protocolb1_8_0_1tob1_7_0_3.types.Typesb1_7_0_3; +import net.raphimc.vialegacy.util.PreNettySplitter; + +public class Protocola1_2_0_1_2_1_1toa1_1_0_1_1_2_1 extends AbstractProtocol { + + public Protocola1_2_0_1_2_1_1toa1_1_0_1_1_2_1() { + super(ClientboundPacketsa1_1_0.class, ClientboundPacketsa1_2_0.class, ServerboundPacketsa1_1_0.class, ServerboundPacketsa1_2_0.class); + } + + @Override + protected void registerPackets() { + this.registerClientbound(ClientboundPacketsa1_1_0.JOIN_GAME, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + map(Typesb1_7_0_3.STRING); // username + map(Typesb1_7_0_3.STRING); // password + create(Type.LONG, 0L); // seed + create(Type.BYTE, (byte) 0); // dimension id + } + }); + + this.registerServerbound(State.LOGIN, ServerboundPacketsa1_1_0.LOGIN.getId(), ServerboundPacketsa1_2_0.LOGIN.getId(), new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // protocol id + map(Typesb1_7_0_3.STRING); // username + map(Typesb1_7_0_3.STRING); // password + read(Type.LONG); // seed + read(Type.BYTE); // dimension id + } + }); + } + + @Override + public void init(UserConnection userConnection) { + userConnection.put(new PreNettySplitter(userConnection, Protocola1_2_0_1_2_1_1toa1_1_0_1_1_2_1.class, ClientboundPacketsa1_1_0::getPacket)); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_2_0_1_2_1_1toa1_1_0_1_1_2_1/ServerboundPacketsa1_1_0.java b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_2_0_1_2_1_1toa1_1_0_1_1_2_1/ServerboundPacketsa1_1_0.java new file mode 100644 index 0000000..cbec72a --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_2_0_1_2_1_1toa1_1_0_1_1_2_1/ServerboundPacketsa1_1_0.java @@ -0,0 +1,136 @@ +package net.raphimc.vialegacy.protocols.alpha.protocola1_2_0_1_2_1_1toa1_1_0_1_1_2_1; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.packet.ServerboundPacketType; +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.util.PreNettyPacketType; + +import java.util.function.BiConsumer; + +import static net.raphimc.vialegacy.util.PreNettyTypes.readItemStackb1_2; +import static net.raphimc.vialegacy.util.PreNettyTypes.readUTF; + +public enum ServerboundPacketsa1_1_0 implements ServerboundPacketType, PreNettyPacketType { + + KEEP_ALIVE(0, (user, buf) -> { + }), + LOGIN(1, (user, buf) -> { + buf.readInt(); + readUTF(buf); + readUTF(buf); + }), + HANDSHAKE(2, (user, buf) -> { + readUTF(buf); + }), + CHAT_MESSAGE(3, (user, buf) -> { + readUTF(buf); + }), + PLAYER_INVENTORY(5, (user, buf) -> { + buf.readInt(); + int x = buf.readShort(); + for (int i = 0; i < x; i++) readItemStackb1_2(buf); + }), + PLAYER_MOVEMENT(10, (user, buf) -> { + buf.readUnsignedByte(); + }), + PLAYER_POSITION(11, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readUnsignedByte(); + }), + PLAYER_ROTATION(12, (user, buf) -> { + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION_AND_ROTATION(13, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_DIGGING(14, (user, buf) -> { + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + }), + PLAYER_BLOCK_PLACEMENT(15, (user, buf) -> { + buf.readShort(); + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + }), + HELD_ITEM_CHANGE(16, (user, buf) -> { + buf.readInt(); + buf.readShort(); + }), + ANIMATION(18, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + SPAWN_ITEM(21, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + COMPLEX_ENTITY(59, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + int x = buf.readUnsignedShort(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + DISCONNECT(255, (user, buf) -> { + readUTF(buf); + }); + + private static final ServerboundPacketsa1_1_0[] REGISTRY = new ServerboundPacketsa1_1_0[256]; + + static { + for (ServerboundPacketsa1_1_0 packet : values()) { + REGISTRY[packet.id] = packet; + } + } + + public static ServerboundPacketsa1_1_0 getPacket(final int id) { + return REGISTRY[id]; + } + + private final int id; + private final BiConsumer packetReader; + + ServerboundPacketsa1_1_0(final int id, final BiConsumer packetReader) { + this.id = id; + this.packetReader = packetReader; + } + + @Override + public int getId() { + return this.id; + } + + @Override + public String getName() { + return name(); + } + + @Override + public BiConsumer getPacketReader() { + return this.packetReader; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_2_2toa1_2_0_1_2_1_1/ClientboundPacketsa1_2_0.java b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_2_2toa1_2_0_1_2_1_1/ClientboundPacketsa1_2_0.java new file mode 100644 index 0000000..a36bdbe --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_2_2toa1_2_0_1_2_1_1/ClientboundPacketsa1_2_0.java @@ -0,0 +1,228 @@ +package net.raphimc.vialegacy.protocols.alpha.protocola1_2_2toa1_2_0_1_2_1_1; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType; +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.util.PreNettyPacketType; +import net.raphimc.vialegacy.util.PreNettyTypes; + +import java.util.function.BiConsumer; + +public enum ClientboundPacketsa1_2_0 implements ClientboundPacketType, PreNettyPacketType { + + KEEP_ALIVE(0, (user, buf) -> { + }), + JOIN_GAME(1, (user, buf) -> { + buf.readInt(); + PreNettyTypes.readUTF(buf); + PreNettyTypes.readUTF(buf); + buf.readLong(); + buf.readByte(); + }), + HANDSHAKE(2, (user, buf) -> { + PreNettyTypes.readUTF(buf); + }), + CHAT_MESSAGE(3, (user, buf) -> { + PreNettyTypes.readUTF(buf); + }), + TIME_UPDATE(4, (user, buf) -> { + buf.readLong(); + }), + PLAYER_INVENTORY(5, (user, buf) -> { + buf.readInt(); + int x = buf.readShort(); + for (int i = 0; i < x; i++) PreNettyTypes.readItemStackb1_2(buf); + }), + SPAWN_POSITION(6, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + PLAYER_POSITION_ONLY_ONGROUND(10, (user, buf) -> { + buf.readUnsignedByte(); + }), + PLAYER_POSITION_ONLY_POSITION(11, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION_ONLY_LOOK(12, (user, buf) -> { + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION(13, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + HELD_ITEM_CHANGE(16, (user, buf) -> { + buf.readInt(); + buf.readShort(); + }), + ADD_TO_INVENTORY(17, (user, buf) -> { + buf.readShort(); + buf.readByte(); + buf.readShort(); + }), + ENTITY_ANIMATION(18, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + SPAWN_PLAYER(20, (user, buf) -> { + buf.readInt(); + PreNettyTypes.readUTF(buf); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + }), + SPAWN_ITEM(21, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + COLLECT_ITEM(22, (user, buf) -> { + buf.readInt(); + buf.readInt(); + }), + SPAWN_ENTITY(23, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + SPAWN_MOB(24, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + }), + DESTROY_ENTITIES(29, (user, buf) -> { + buf.readInt(); + }), + ENTITY_MOVEMENT(30, (user, buf) -> { + buf.readInt(); + }), + ENTITY_POSITION(31, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_ROTATION(32, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_POSITION_AND_ROTATION(33, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_TELEPORT(34, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + }), + PRE_CHUNK(50, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readByte(); + }), + CHUNK_DATA(51, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + int x = buf.readInt(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + MULTI_BLOCK_CHANGE(52, (user, buf) -> { + buf.readInt(); + buf.readInt(); + short x = buf.readShort(); + for (int i = 0; i < x; i++) buf.readShort(); + for (int i = 0; i < x; i++) buf.readByte(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + BLOCK_CHANGE(53, (user, buf) -> { + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + buf.readUnsignedByte(); + }), + COMPLEX_ENTITY(59, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + int x = buf.readUnsignedShort(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + DISCONNECT(255, (user, buf) -> { + PreNettyTypes.readUTF(buf); + }); + + private static final ClientboundPacketsa1_2_0[] REGISTRY = new ClientboundPacketsa1_2_0[256]; + + static { + for (ClientboundPacketsa1_2_0 packet : values()) { + REGISTRY[packet.id] = packet; + } + } + + public static ClientboundPacketsa1_2_0 getPacket(final int id) { + return REGISTRY[id]; + } + + private final int id; + private final BiConsumer packetReader; + + ClientboundPacketsa1_2_0(final int id, final BiConsumer packetReader) { + this.id = id; + this.packetReader = packetReader; + } + + @Override + public int getId() { + return this.id; + } + + @Override + public String getName() { + return name(); + } + + @Override + public BiConsumer getPacketReader() { + return this.packetReader; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_2_2toa1_2_0_1_2_1_1/Protocola1_2_2toa1_2_0_1_2_1_1.java b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_2_2toa1_2_0_1_2_1_1/Protocola1_2_2toa1_2_0_1_2_1_1.java new file mode 100644 index 0000000..c90c3e3 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_2_2toa1_2_0_1_2_1_1/Protocola1_2_2toa1_2_0_1_2_1_1.java @@ -0,0 +1,45 @@ +package net.raphimc.vialegacy.protocols.alpha.protocola1_2_2toa1_2_0_1_2_1_1; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.AbstractProtocol; +import com.viaversion.viaversion.api.protocol.remapper.PacketRemapper; +import com.viaversion.viaversion.api.type.Type; +import net.raphimc.vialegacy.protocols.alpha.protocola1_2_3_1_2_3_4toa1_2_2.ClientboundPacketsa1_2_2; +import net.raphimc.vialegacy.protocols.alpha.protocola1_2_3_1_2_3_4toa1_2_2.ServerboundPacketsa1_2_2; +import net.raphimc.vialegacy.util.PreNettySplitter; + +public class Protocola1_2_2toa1_2_0_1_2_1_1 extends AbstractProtocol { + + public Protocola1_2_2toa1_2_0_1_2_1_1() { + super(ClientboundPacketsa1_2_0.class, ClientboundPacketsa1_2_2.class, ServerboundPacketsa1_2_0.class, ServerboundPacketsa1_2_2.class); + } + + @Override + protected void registerPackets() { + this.registerClientbound(ClientboundPacketsa1_2_0.SPAWN_MOB, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + map(Type.UNSIGNED_BYTE); // type id + map(Type.INT); // x + map(Type.INT); // y + map(Type.INT); // z + map(Type.BYTE); // yaw + map(Type.BYTE); // pitch + handler(wrapper -> { + if (wrapper.get(Type.UNSIGNED_BYTE, 0) == 91) { + wrapper.set(Type.UNSIGNED_BYTE, 0, (short) 93); + } + }); + } + }); + + this.cancelServerbound(ServerboundPacketsa1_2_2.INTERACT_ENTITY); + } + + @Override + public void init(UserConnection userConnection) { + userConnection.put(new PreNettySplitter(userConnection, Protocola1_2_2toa1_2_0_1_2_1_1.class, ClientboundPacketsa1_2_0::getPacket)); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_2_2toa1_2_0_1_2_1_1/ServerboundPacketsa1_2_0.java b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_2_2toa1_2_0_1_2_1_1/ServerboundPacketsa1_2_0.java new file mode 100644 index 0000000..2db836b --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_2_2toa1_2_0_1_2_1_1/ServerboundPacketsa1_2_0.java @@ -0,0 +1,136 @@ +package net.raphimc.vialegacy.protocols.alpha.protocola1_2_2toa1_2_0_1_2_1_1; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.packet.ServerboundPacketType; +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.util.PreNettyPacketType; +import net.raphimc.vialegacy.util.PreNettyTypes; + +import java.util.function.BiConsumer; + +public enum ServerboundPacketsa1_2_0 implements ServerboundPacketType, PreNettyPacketType { + + KEEP_ALIVE(0, (user, buf) -> { + }), + LOGIN(1, (user, buf) -> { + buf.readInt(); + PreNettyTypes.readUTF(buf); + PreNettyTypes.readUTF(buf); + buf.readLong(); + buf.readByte(); + }), + HANDSHAKE(2, (user, buf) -> { + PreNettyTypes.readUTF(buf); + }), + CHAT_MESSAGE(3, (user, buf) -> { + PreNettyTypes.readUTF(buf); + }), + PLAYER_INVENTORY(5, (user, buf) -> { + buf.readInt(); + int x = buf.readShort(); + for (int i = 0; i < x; i++) PreNettyTypes.readItemStackb1_2(buf); + }), + PLAYER_MOVEMENT(10, (user, buf) -> { + buf.readUnsignedByte(); + }), + PLAYER_POSITION(11, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readUnsignedByte(); + }), + PLAYER_ROTATION(12, (user, buf) -> { + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION_AND_ROTATION(13, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_DIGGING(14, (user, buf) -> { + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + }), + PLAYER_BLOCK_PLACEMENT(15, (user, buf) -> { + buf.readShort(); + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + }), + HELD_ITEM_CHANGE(16, (user, buf) -> { + buf.readInt(); + buf.readShort(); + }), + ANIMATION(18, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + SPAWN_ITEM(21, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + COMPLEX_ENTITY(59, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + int x = buf.readUnsignedShort(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + DISCONNECT(255, (user, buf) -> { + PreNettyTypes.readUTF(buf); + }); + + private static final ServerboundPacketsa1_2_0[] REGISTRY = new ServerboundPacketsa1_2_0[256]; + + static { + for (ServerboundPacketsa1_2_0 packet : values()) { + REGISTRY[packet.id] = packet; + } + } + + public static ServerboundPacketsa1_2_0 getPacket(final int id) { + return REGISTRY[id]; + } + + private final int id; + private final BiConsumer packetReader; + + ServerboundPacketsa1_2_0(final int id, final BiConsumer packetReader) { + this.id = id; + this.packetReader = packetReader; + } + + @Override + public int getId() { + return this.id; + } + + @Override + public String getName() { + return name(); + } + + @Override + public BiConsumer getPacketReader() { + return this.packetReader; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_2_3_1_2_3_4toa1_2_2/ClientboundPacketsa1_2_2.java b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_2_3_1_2_3_4toa1_2_2/ClientboundPacketsa1_2_2.java new file mode 100644 index 0000000..7e0cf8d --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_2_3_1_2_3_4toa1_2_2/ClientboundPacketsa1_2_2.java @@ -0,0 +1,238 @@ +package net.raphimc.vialegacy.protocols.alpha.protocola1_2_3_1_2_3_4toa1_2_2; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType; +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.util.PreNettyPacketType; +import net.raphimc.vialegacy.util.PreNettyTypes; + +import java.util.function.BiConsumer; + +public enum ClientboundPacketsa1_2_2 implements ClientboundPacketType, PreNettyPacketType { + + KEEP_ALIVE(0, (user, buf) -> { + }), + JOIN_GAME(1, (user, buf) -> { + buf.readInt(); + PreNettyTypes.readUTF(buf); + PreNettyTypes.readUTF(buf); + buf.readLong(); + buf.readByte(); + }), + HANDSHAKE(2, (user, buf) -> { + PreNettyTypes.readUTF(buf); + }), + CHAT_MESSAGE(3, (user, buf) -> { + PreNettyTypes.readUTF(buf); + }), + TIME_UPDATE(4, (user, buf) -> { + buf.readLong(); + }), + PLAYER_INVENTORY(5, (user, buf) -> { + buf.readInt(); + int x = buf.readShort(); + for (int i = 0; i < x; i++) PreNettyTypes.readItemStackb1_2(buf); + }), + SPAWN_POSITION(6, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + PLAYER_POSITION_ONLY_ONGROUND(10, (user, buf) -> { + buf.readUnsignedByte(); + }), + PLAYER_POSITION_ONLY_POSITION(11, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION_ONLY_LOOK(12, (user, buf) -> { + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION(13, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + HELD_ITEM_CHANGE(16, (user, buf) -> { + buf.readInt(); + buf.readShort(); + }), + ADD_TO_INVENTORY(17, (user, buf) -> { + buf.readShort(); + buf.readByte(); + buf.readShort(); + }), + ENTITY_ANIMATION(18, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + SPAWN_PLAYER(20, (user, buf) -> { + buf.readInt(); + PreNettyTypes.readUTF(buf); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + }), + SPAWN_ITEM(21, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + COLLECT_ITEM(22, (user, buf) -> { + buf.readInt(); + buf.readInt(); + }), + SPAWN_ENTITY(23, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + SPAWN_MOB(24, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_VELOCITY(28, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readShort(); + buf.readShort(); + }), + DESTROY_ENTITIES(29, (user, buf) -> { + buf.readInt(); + }), + ENTITY_MOVEMENT(30, (user, buf) -> { + buf.readInt(); + }), + ENTITY_POSITION(31, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_ROTATION(32, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_POSITION_AND_ROTATION(33, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_TELEPORT(34, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + }), + ATTACH_ENTITY(39, (user, buf) -> { + buf.readInt(); + buf.readInt(); + }), + PRE_CHUNK(50, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readByte(); + }), + CHUNK_DATA(51, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + int x = buf.readInt(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + MULTI_BLOCK_CHANGE(52, (user, buf) -> { + buf.readInt(); + buf.readInt(); + short x = buf.readShort(); + for (int i = 0; i < x; i++) buf.readShort(); + for (int i = 0; i < x; i++) buf.readByte(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + BLOCK_CHANGE(53, (user, buf) -> { + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + buf.readUnsignedByte(); + }), + COMPLEX_ENTITY(59, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + int x = buf.readUnsignedShort(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + DISCONNECT(255, (user, buf) -> { + PreNettyTypes.readUTF(buf); + }); + + private static final ClientboundPacketsa1_2_2[] REGISTRY = new ClientboundPacketsa1_2_2[256]; + + static { + for (ClientboundPacketsa1_2_2 packet : values()) { + REGISTRY[packet.id] = packet; + } + } + + public static ClientboundPacketsa1_2_2 getPacket(final int id) { + return REGISTRY[id]; + } + + private final int id; + private final BiConsumer packetReader; + + ClientboundPacketsa1_2_2(final int id, final BiConsumer packetReader) { + this.id = id; + this.packetReader = packetReader; + } + + @Override + public int getId() { + return this.id; + } + + @Override + public String getName() { + return name(); + } + + @Override + public BiConsumer getPacketReader() { + return this.packetReader; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_2_3_1_2_3_4toa1_2_2/Protocola1_2_3_1_2_3_4toa1_2_2.java b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_2_3_1_2_3_4toa1_2_2/Protocola1_2_3_1_2_3_4toa1_2_2.java new file mode 100644 index 0000000..3ab9e91 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_2_3_1_2_3_4toa1_2_2/Protocola1_2_3_1_2_3_4toa1_2_2.java @@ -0,0 +1,50 @@ +package net.raphimc.vialegacy.protocols.alpha.protocola1_2_3_1_2_3_4toa1_2_2; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.AbstractProtocol; +import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; +import com.viaversion.viaversion.api.protocol.remapper.PacketRemapper; +import com.viaversion.viaversion.api.type.Type; +import net.raphimc.vialegacy.protocols.alpha.protocola1_2_3_5_1_2_6toa1_2_3_1_2_3_4.ClientboundPacketsa1_2_3; +import net.raphimc.vialegacy.protocols.alpha.protocolb1_0_1_1_1toa1_2_3_5_1_2_6.ServerboundPacketsa1_2_6; +import net.raphimc.vialegacy.util.PreNettySplitter; + +public class Protocola1_2_3_1_2_3_4toa1_2_2 extends AbstractProtocol { + + public Protocola1_2_3_1_2_3_4toa1_2_2() { + super(ClientboundPacketsa1_2_2.class, ClientboundPacketsa1_2_3.class, ServerboundPacketsa1_2_2.class, ServerboundPacketsa1_2_6.class); + } + + @Override + protected void registerPackets() { + this.registerClientbound(ClientboundPacketsa1_2_2.JOIN_GAME, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + final PacketWrapper updateHealth = PacketWrapper.create(ClientboundPacketsa1_2_3.UPDATE_HEALTH, wrapper.user()); + updateHealth.write(Type.BYTE, (byte) 20); // health + + wrapper.send(Protocola1_2_3_1_2_3_4toa1_2_2.class); + updateHealth.send(Protocola1_2_3_1_2_3_4toa1_2_2.class); + wrapper.cancel(); + }); + } + }); + + this.registerServerbound(ServerboundPacketsa1_2_6.INTERACT_ENTITY, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // player id + map(Type.INT); // entity id + read(Type.BYTE); // mode + } + }); + this.cancelServerbound(ServerboundPacketsa1_2_6.RESPAWN); + } + + @Override + public void init(UserConnection userConnection) { + userConnection.put(new PreNettySplitter(userConnection, Protocola1_2_3_1_2_3_4toa1_2_2.class, ClientboundPacketsa1_2_2::getPacket)); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_2_3_1_2_3_4toa1_2_2/ServerboundPacketsa1_2_2.java b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_2_3_1_2_3_4toa1_2_2/ServerboundPacketsa1_2_2.java new file mode 100644 index 0000000..6f2038e --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_2_3_1_2_3_4toa1_2_2/ServerboundPacketsa1_2_2.java @@ -0,0 +1,140 @@ +package net.raphimc.vialegacy.protocols.alpha.protocola1_2_3_1_2_3_4toa1_2_2; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.packet.ServerboundPacketType; +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.util.PreNettyPacketType; +import net.raphimc.vialegacy.util.PreNettyTypes; + +import java.util.function.BiConsumer; + +public enum ServerboundPacketsa1_2_2 implements ServerboundPacketType, PreNettyPacketType { + + KEEP_ALIVE(0, (user, buf) -> { + }), + LOGIN(1, (user, buf) -> { + buf.readInt(); + PreNettyTypes.readUTF(buf); + PreNettyTypes.readUTF(buf); + buf.readLong(); + buf.readByte(); + }), + HANDSHAKE(2, (user, buf) -> { + PreNettyTypes.readUTF(buf); + }), + CHAT_MESSAGE(3, (user, buf) -> { + PreNettyTypes.readUTF(buf); + }), + PLAYER_INVENTORY(5, (user, buf) -> { + buf.readInt(); + int x = buf.readShort(); + for (int i = 0; i < x; i++) PreNettyTypes.readItemStackb1_2(buf); + }), + INTERACT_ENTITY(7, (user, buf) -> { + buf.readInt(); + buf.readInt(); + }), + PLAYER_MOVEMENT(10, (user, buf) -> { + buf.readUnsignedByte(); + }), + PLAYER_POSITION(11, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readUnsignedByte(); + }), + PLAYER_ROTATION(12, (user, buf) -> { + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION_AND_ROTATION(13, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_DIGGING(14, (user, buf) -> { + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + }), + PLAYER_BLOCK_PLACEMENT(15, (user, buf) -> { + buf.readShort(); + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + }), + HELD_ITEM_CHANGE(16, (user, buf) -> { + buf.readInt(); + buf.readShort(); + }), + ANIMATION(18, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + SPAWN_ITEM(21, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + COMPLEX_ENTITY(59, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + int x = buf.readUnsignedShort(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + DISCONNECT(255, (user, buf) -> { + PreNettyTypes.readUTF(buf); + }); + + private static final ServerboundPacketsa1_2_2[] REGISTRY = new ServerboundPacketsa1_2_2[256]; + + static { + for (ServerboundPacketsa1_2_2 packet : values()) { + REGISTRY[packet.id] = packet; + } + } + + public static ServerboundPacketsa1_2_2 getPacket(final int id) { + return REGISTRY[id]; + } + + private final int id; + private final BiConsumer packetReader; + + ServerboundPacketsa1_2_2(final int id, final BiConsumer packetReader) { + this.id = id; + this.packetReader = packetReader; + } + + @Override + public int getId() { + return this.id; + } + + @Override + public String getName() { + return name(); + } + + @Override + public BiConsumer getPacketReader() { + return this.packetReader; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_2_3_5_1_2_6toa1_2_3_1_2_3_4/ClientboundPacketsa1_2_3.java b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_2_3_5_1_2_6toa1_2_3_1_2_3_4/ClientboundPacketsa1_2_3.java new file mode 100644 index 0000000..e796dc4 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_2_3_5_1_2_6toa1_2_3_1_2_3_4/ClientboundPacketsa1_2_3.java @@ -0,0 +1,249 @@ +package net.raphimc.vialegacy.protocols.alpha.protocola1_2_3_5_1_2_6toa1_2_3_1_2_3_4; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType; +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.util.PreNettyPacketType; + +import java.util.function.BiConsumer; + +import static net.raphimc.vialegacy.util.PreNettyTypes.readItemStackb1_2; +import static net.raphimc.vialegacy.util.PreNettyTypes.readUTF; + +public enum ClientboundPacketsa1_2_3 implements ClientboundPacketType, PreNettyPacketType { + + KEEP_ALIVE(0, (user, buf) -> { + }), + JOIN_GAME(1, (user, buf) -> { + buf.readInt(); + readUTF(buf); + readUTF(buf); + buf.readLong(); + buf.readByte(); + }), + HANDSHAKE(2, (user, buf) -> { + readUTF(buf); + }), + CHAT_MESSAGE(3, (user, buf) -> { + readUTF(buf); + }), + TIME_UPDATE(4, (user, buf) -> { + buf.readLong(); + }), + PLAYER_INVENTORY(5, (user, buf) -> { + buf.readInt(); + int x = buf.readShort(); + for (int i = 0; i < x; i++) readItemStackb1_2(buf); + }), + SPAWN_POSITION(6, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + UPDATE_HEALTH(8, (user, buf) -> { + buf.readByte(); + }), + RESPAWN(9, (user, buf) -> { + }), + PLAYER_POSITION_ONLY_ONGROUND(10, (user, buf) -> { + buf.readUnsignedByte(); + }), + PLAYER_POSITION_ONLY_POSITION(11, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION_ONLY_LOOK(12, (user, buf) -> { + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION(13, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + HELD_ITEM_CHANGE(16, (user, buf) -> { + buf.readInt(); + buf.readShort(); + }), + ADD_TO_INVENTORY(17, (user, buf) -> { + buf.readShort(); + buf.readByte(); + buf.readShort(); + }), + ENTITY_ANIMATION(18, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + SPAWN_PLAYER(20, (user, buf) -> { + buf.readInt(); + readUTF(buf); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + }), + SPAWN_ITEM(21, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + COLLECT_ITEM(22, (user, buf) -> { + buf.readInt(); + buf.readInt(); + }), + SPAWN_ENTITY(23, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + SPAWN_MOB(24, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_VELOCITY(28, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readShort(); + buf.readShort(); + }), + DESTROY_ENTITIES(29, (user, buf) -> { + buf.readInt(); + }), + ENTITY_MOVEMENT(30, (user, buf) -> { + buf.readInt(); + }), + ENTITY_POSITION(31, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_ROTATION(32, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_POSITION_AND_ROTATION(33, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_TELEPORT(34, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_STATUS(38, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + ATTACH_ENTITY(39, (user, buf) -> { + buf.readInt(); + buf.readInt(); + }), + PRE_CHUNK(50, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readByte(); + }), + CHUNK_DATA(51, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + int x = buf.readInt(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + MULTI_BLOCK_CHANGE(52, (user, buf) -> { + buf.readInt(); + buf.readInt(); + short x = buf.readShort(); + for (int i = 0; i < x; i++) buf.readShort(); + for (int i = 0; i < x; i++) buf.readByte(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + BLOCK_CHANGE(53, (user, buf) -> { + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + buf.readUnsignedByte(); + }), + COMPLEX_ENTITY(59, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + int x = buf.readUnsignedShort(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + DISCONNECT(255, (user, buf) -> { + readUTF(buf); + }); + + private static final ClientboundPacketsa1_2_3[] REGISTRY = new ClientboundPacketsa1_2_3[256]; + + static { + for (ClientboundPacketsa1_2_3 packet : values()) { + REGISTRY[packet.id] = packet; + } + } + + public static ClientboundPacketsa1_2_3 getPacket(final int id) { + return REGISTRY[id]; + } + + private final int id; + private final BiConsumer packetReader; + + ClientboundPacketsa1_2_3(final int id, final BiConsumer packetReader) { + this.id = id; + this.packetReader = packetReader; + } + + @Override + public int getId() { + return this.id; + } + + @Override + public String getName() { + return name(); + } + + @Override + public BiConsumer getPacketReader() { + return this.packetReader; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_2_3_5_1_2_6toa1_2_3_1_2_3_4/Protocola1_2_3_5_1_2_6toa1_2_3_1_2_3_4.java b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_2_3_5_1_2_6toa1_2_3_1_2_3_4/Protocola1_2_3_5_1_2_6toa1_2_3_1_2_3_4.java new file mode 100644 index 0000000..6f5857c --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocola1_2_3_5_1_2_6toa1_2_3_1_2_3_4/Protocola1_2_3_5_1_2_6toa1_2_3_1_2_3_4.java @@ -0,0 +1,35 @@ +package net.raphimc.vialegacy.protocols.alpha.protocola1_2_3_5_1_2_6toa1_2_3_1_2_3_4; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.AbstractProtocol; +import com.viaversion.viaversion.api.protocol.remapper.PacketRemapper; +import com.viaversion.viaversion.api.type.Type; +import net.raphimc.vialegacy.protocols.alpha.protocolb1_0_1_1_1toa1_2_3_5_1_2_6.ClientboundPacketsa1_2_6; +import net.raphimc.vialegacy.protocols.alpha.protocolb1_0_1_1_1toa1_2_3_5_1_2_6.ServerboundPacketsa1_2_6; +import net.raphimc.vialegacy.util.PreNettySplitter; + +public class Protocola1_2_3_5_1_2_6toa1_2_3_1_2_3_4 extends AbstractProtocol { + + public Protocola1_2_3_5_1_2_6toa1_2_3_1_2_3_4() { + super(ClientboundPacketsa1_2_3.class, ClientboundPacketsa1_2_6.class, ServerboundPacketsa1_2_6.class, ServerboundPacketsa1_2_6.class); + } + + @Override + protected void registerPackets() { + this.registerClientbound(ClientboundPacketsa1_2_3.ENTITY_VELOCITY, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + map(Type.SHORT, Type.SHORT, v -> (short) (v / 4.0F)); // velocity x + map(Type.SHORT, Type.SHORT, v -> (short) (v / 4.0F)); // velocity y + map(Type.SHORT, Type.SHORT, v -> (short) (v / 4.0F)); // velocity z + } + }); + } + + @Override + public void init(UserConnection userConnection) { + userConnection.put(new PreNettySplitter(userConnection, Protocola1_2_3_5_1_2_6toa1_2_3_1_2_3_4.class, ClientboundPacketsa1_2_3::getPacket)); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocolb1_0_1_1_1toa1_2_3_5_1_2_6/ClientboundPacketsa1_2_6.java b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocolb1_0_1_1_1toa1_2_3_5_1_2_6/ClientboundPacketsa1_2_6.java new file mode 100644 index 0000000..f187d17 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocolb1_0_1_1_1toa1_2_3_5_1_2_6/ClientboundPacketsa1_2_6.java @@ -0,0 +1,261 @@ +package net.raphimc.vialegacy.protocols.alpha.protocolb1_0_1_1_1toa1_2_3_5_1_2_6; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType; +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.util.PreNettyPacketType; + +import java.util.function.BiConsumer; + +import static net.raphimc.vialegacy.util.PreNettyTypes.readItemStackb1_2; +import static net.raphimc.vialegacy.util.PreNettyTypes.readUTF; + +public enum ClientboundPacketsa1_2_6 implements ClientboundPacketType, PreNettyPacketType { + + KEEP_ALIVE(0, (user, buf) -> { + }), + JOIN_GAME(1, (user, buf) -> { + buf.readInt(); + readUTF(buf); + readUTF(buf); + buf.readLong(); + buf.readByte(); + }), + HANDSHAKE(2, (user, buf) -> { + readUTF(buf); + }), + CHAT_MESSAGE(3, (user, buf) -> { + readUTF(buf); + }), + TIME_UPDATE(4, (user, buf) -> { + buf.readLong(); + }), + PLAYER_INVENTORY(5, (user, buf) -> { + buf.readInt(); + int x = buf.readShort(); + for (int i = 0; i < x; i++) readItemStackb1_2(buf); + }), + SPAWN_POSITION(6, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + UPDATE_HEALTH(8, (user, buf) -> { + buf.readByte(); + }), + RESPAWN(9, (user, buf) -> { + }), + PLAYER_POSITION_ONLY_ONGROUND(10, (user, buf) -> { + buf.readUnsignedByte(); + }), + PLAYER_POSITION_ONLY_POSITION(11, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION_ONLY_LOOK(12, (user, buf) -> { + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION(13, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + HELD_ITEM_CHANGE(16, (user, buf) -> { + buf.readInt(); + buf.readShort(); + }), + ADD_TO_INVENTORY(17, (user, buf) -> { + buf.readShort(); + buf.readByte(); + buf.readShort(); + }), + ENTITY_ANIMATION(18, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + SPAWN_PLAYER(20, (user, buf) -> { + buf.readInt(); + readUTF(buf); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + }), + SPAWN_ITEM(21, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + COLLECT_ITEM(22, (user, buf) -> { + buf.readInt(); + buf.readInt(); + }), + SPAWN_ENTITY(23, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + SPAWN_MOB(24, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_VELOCITY(28, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readShort(); + buf.readShort(); + }), + DESTROY_ENTITIES(29, (user, buf) -> { + buf.readInt(); + }), + ENTITY_MOVEMENT(30, (user, buf) -> { + buf.readInt(); + }), + ENTITY_POSITION(31, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_ROTATION(32, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_POSITION_AND_ROTATION(33, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_TELEPORT(34, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_STATUS(38, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + ATTACH_ENTITY(39, (user, buf) -> { + buf.readInt(); + buf.readInt(); + }), + PRE_CHUNK(50, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readByte(); + }), + CHUNK_DATA(51, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + int x = buf.readInt(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + MULTI_BLOCK_CHANGE(52, (user, buf) -> { + buf.readInt(); + buf.readInt(); + short x = buf.readShort(); + for (int i = 0; i < x; i++) buf.readShort(); + for (int i = 0; i < x; i++) buf.readByte(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + BLOCK_CHANGE(53, (user, buf) -> { + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + buf.readUnsignedByte(); + }), + COMPLEX_ENTITY(59, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + int x = buf.readUnsignedShort(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + EXPLOSION(60, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + int x = buf.readInt(); + for (int i = 0; i < x; i++) { + buf.readByte(); + buf.readByte(); + buf.readByte(); + } + }), + DISCONNECT(255, (user, buf) -> { + readUTF(buf); + }); + + private static final ClientboundPacketsa1_2_6[] REGISTRY = new ClientboundPacketsa1_2_6[256]; + + static { + for (ClientboundPacketsa1_2_6 packet : values()) { + REGISTRY[packet.id] = packet; + } + } + + public static ClientboundPacketsa1_2_6 getPacket(final int id) { + return REGISTRY[id]; + } + + private final int id; + private final BiConsumer packetReader; + + ClientboundPacketsa1_2_6(final int id, final BiConsumer packetReader) { + this.id = id; + this.packetReader = packetReader; + } + + @Override + public int getId() { + return this.id; + } + + @Override + public String getName() { + return name(); + } + + @Override + public BiConsumer getPacketReader() { + return this.packetReader; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocolb1_0_1_1_1toa1_2_3_5_1_2_6/Protocolb1_0_1_1_1toa1_2_3_5_1_2_6.java b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocolb1_0_1_1_1toa1_2_3_5_1_2_6/Protocolb1_0_1_1_1toa1_2_3_5_1_2_6.java new file mode 100644 index 0000000..29b3c4e --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocolb1_0_1_1_1toa1_2_3_5_1_2_6/Protocolb1_0_1_1_1toa1_2_3_5_1_2_6.java @@ -0,0 +1,517 @@ +package net.raphimc.vialegacy.protocols.alpha.protocolb1_0_1_1_1toa1_2_3_5_1_2_6; + +import com.viaversion.viaversion.api.Via; +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.minecraft.Position; +import com.viaversion.viaversion.api.minecraft.item.DataItem; +import com.viaversion.viaversion.api.minecraft.item.Item; +import com.viaversion.viaversion.api.platform.providers.ViaProviders; +import com.viaversion.viaversion.api.protocol.AbstractProtocol; +import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; +import com.viaversion.viaversion.api.protocol.remapper.PacketRemapper; +import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.libs.opennbt.tag.builtin.*; +import net.raphimc.vialegacy.ViaLegacy; +import net.raphimc.vialegacy.api.*; +import net.raphimc.vialegacy.protocols.alpha.protocolb1_0_1_1_1toa1_2_3_5_1_2_6.data.AlphaItems; +import net.raphimc.vialegacy.protocols.alpha.protocolb1_0_1_1_1toa1_2_3_5_1_2_6.providers.AlphaInventoryProvider; +import net.raphimc.vialegacy.protocols.alpha.protocolb1_0_1_1_1toa1_2_3_5_1_2_6.providers.TrackingAlphaInventoryProvider; +import net.raphimc.vialegacy.protocols.alpha.protocolb1_0_1_1_1toa1_2_3_5_1_2_6.storage.AlphaInventoryTracker; +import net.raphimc.vialegacy.protocols.alpha.protocolb1_0_1_1_1toa1_2_3_5_1_2_6.storage.InventoryStorage; +import net.raphimc.vialegacy.protocols.beta.protocolb1_2_0_2tob1_1_2.ClientboundPacketsb1_1; +import net.raphimc.vialegacy.protocols.beta.protocolb1_2_0_2tob1_1_2.ServerboundPacketsb1_1; +import net.raphimc.vialegacy.protocols.beta.protocolb1_2_0_2tob1_1_2.types.Typesb1_1; +import net.raphimc.vialegacy.protocols.beta.protocolb1_8_0_1tob1_7_0_3.types.Typesb1_7_0_3; +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.Protocol1_2_1_3to1_1; +import net.raphimc.vialegacy.protocols.release.protocol1_2_4_5to1_2_1_3.ClientboundPackets1_2_1; +import net.raphimc.vialegacy.protocols.release.protocol1_3_1_2to1_2_4_5.data.EntityList; +import net.raphimc.vialegacy.protocols.release.protocol1_4_2to1_3_1_2.types.Types1_3_1; +import net.raphimc.vialegacy.protocols.release.protocol1_4_4_5to1_4_2.types.Types1_4_2; +import net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.storage.ChunkTracker; +import net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.storage.PlayerInfoStorage; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.Types1_7_6; +import net.raphimc.vialegacy.util.PreNettySplitter; + +import java.util.Arrays; +import java.util.Objects; +import java.util.concurrent.ThreadLocalRandom; + +public class Protocolb1_0_1_1_1toa1_2_3_5_1_2_6 extends AbstractProtocol { + + public Protocolb1_0_1_1_1toa1_2_3_5_1_2_6() { + super(ClientboundPacketsa1_2_6.class, ClientboundPacketsb1_1.class, ServerboundPacketsa1_2_6.class, ServerboundPacketsb1_1.class); + } + + @Override + protected void registerPackets() { + this.registerClientbound(ClientboundPacketsa1_2_6.PLAYER_INVENTORY, ClientboundPacketsb1_1.WINDOW_ITEMS, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + final InventoryStorage inventoryStorage = wrapper.user().get(InventoryStorage.class); + final AlphaInventoryTracker inventoryTracker = wrapper.user().get(AlphaInventoryTracker.class); + final int type = wrapper.read(Type.INT); // type + Item[] items = wrapper.read(Types1_4_2.NBTLESS_ITEM_ARRAY); // items + + final Item[] windowItems = new Item[45]; + System.arraycopy(inventoryStorage.mainInventory, 0, windowItems, 36, 9); + System.arraycopy(inventoryStorage.mainInventory, 9, windowItems, 9, 36 - 9); + System.arraycopy(inventoryStorage.craftingInventory, 0, windowItems, 1, 4); + System.arraycopy(inventoryStorage.armorInventory, 0, windowItems, 5, 4); + + switch (type) { + case -1: // main + inventoryStorage.mainInventory = items; + if (inventoryTracker != null) inventoryTracker.setMainInventory(copyItems(items)); + System.arraycopy(items, 0, windowItems, 36, 9); + System.arraycopy(items, 9, windowItems, 9, 36 - 9); + break; + case -2: // crafting + inventoryStorage.craftingInventory = items; + if (inventoryTracker != null) inventoryTracker.setCraftingInventory(copyItems(items)); + System.arraycopy(items, 0, windowItems, 1, 4); + break; + case -3: // armor + inventoryStorage.armorInventory = items; + if (inventoryTracker != null) inventoryTracker.setArmorInventory(copyItems(items)); + System.arraycopy(reverseArray(items), 0, windowItems, 5, 4); + } + + wrapper.write(Type.BYTE, (byte) 0); // window id + wrapper.write(Types1_4_2.NBTLESS_ITEM_ARRAY, copyItems(windowItems)); // items + }); + } + }); + this.registerClientbound(ClientboundPacketsa1_2_6.UPDATE_HEALTH, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.BYTE, Type.SHORT); // health + } + }); + this.registerClientbound(ClientboundPacketsa1_2_6.RESPAWN, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + wrapper.user().get(InventoryStorage.class).resetPlayerInventory(); + + final AlphaInventoryTracker inventoryTracker = wrapper.user().get(AlphaInventoryTracker.class); + if (inventoryTracker != null) inventoryTracker.onRespawn(); + }); + } + }); + this.registerClientbound(ClientboundPacketsa1_2_6.HELD_ITEM_CHANGE, ClientboundPacketsb1_1.ENTITY_EQUIPMENT, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + create(Type.SHORT, (short) 0); // slot (hand) + map(Type.SHORT); // item id + handler(wrapper -> { + if (wrapper.get(Type.SHORT, 1) == 0) { + wrapper.set(Type.SHORT, 1, (short) -1); + } + }); + } + }); + this.registerClientbound(ClientboundPacketsa1_2_6.ADD_TO_INVENTORY, null, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + wrapper.cancel(); + final Item item = wrapper.read(Types1_3_1.NBTLESS_ITEM); // item + Via.getManager().getProviders().get(AlphaInventoryProvider.class).addToInventory(wrapper.user(), item); + }); + } + }); + this.registerClientbound(ClientboundPacketsa1_2_6.PRE_CHUNK, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // chunkX + map(Type.INT); // chunkZ + map(Type.UNSIGNED_BYTE); // mode + handler(wrapper -> { + wrapper.user().get(InventoryStorage.class).unload(wrapper.get(Type.INT, 0), wrapper.get(Type.INT, 1)); + }); + } + }); + this.registerClientbound(ClientboundPacketsa1_2_6.COMPLEX_ENTITY, null, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + wrapper.cancel(); + final InventoryStorage tracker = wrapper.user().get(InventoryStorage.class); + final Position pos = wrapper.read(Types1_7_6.POSITION_SHORT); // position + final CompoundTag tag = wrapper.read(Types1_7_6.COMPRESSED_NBT); // data + + if (tag.get("x").asInt() != pos.x() || tag.get("y").asInt() != pos.y() || tag.get("z").asInt() != pos.z()) { + return; + } + + final IdAndData block = wrapper.user().get(ChunkTracker.class).getBlockNotNull(pos); + final String blockName = tag.get("id") != null ? tag.get("id").getValue() : ""; + + if (block.id == BlockList1_6.signPost.blockID || block.id == BlockList1_6.signWall.blockID || blockName.equals("Sign")) { + final PacketWrapper updateSign = PacketWrapper.create(ClientboundPacketsb1_1.UPDATE_SIGN, wrapper.user()); + updateSign.write(Types1_7_6.POSITION_SHORT, pos); // position + updateSign.write(Typesb1_7_0_3.STRING, tag.get("Text1").getValue()); // line 1 + updateSign.write(Typesb1_7_0_3.STRING, tag.get("Text2").getValue()); // line 2 + updateSign.write(Typesb1_7_0_3.STRING, tag.get("Text3").getValue()); // line 3 + updateSign.write(Typesb1_7_0_3.STRING, tag.get("Text4").getValue()); // line 4 + updateSign.send(Protocolb1_0_1_1_1toa1_2_3_5_1_2_6.class); + } else if (block.id == BlockList1_6.mobSpawner.blockID || blockName.equals("MobSpawner")) { + if (wrapper.user().getProtocolInfo().getPipeline().contains(Protocol1_2_1_3to1_1.class)) { + final PacketWrapper spawnerData = PacketWrapper.create(ClientboundPackets1_2_1.BLOCK_ENTITY_DATA, wrapper.user()); + spawnerData.write(Types1_7_6.POSITION_SHORT, pos); // position + spawnerData.write(Type.BYTE, (byte) 1); // type + spawnerData.write(Type.INT, EntityList.getEntityId(tag.get("EntityId").getValue())); // entity id + spawnerData.write(Type.INT, 0); // unused + spawnerData.write(Type.INT, 0); // unused + spawnerData.send(Protocol1_2_1_3to1_1.class); + } + } else if (block.id == BlockList1_6.chest.blockID || blockName.equals("Chest")) { + final Item[] chestItems = new Item[3 * 9]; + readItemsFromTag(tag, chestItems); + tracker.containers.put(pos, chestItems); + if (pos.equals(tracker.openContainerPos)) sendWindowItems(wrapper.user(), InventoryStorage.CHEST_WID, chestItems); + } else if (block.id == BlockList1_6.furnaceIdle.blockID || block.id == BlockList1_6.furnaceBurning.blockID || blockName.equals("Furnace")) { + final Item[] furnaceItems = new Item[3]; + readItemsFromTag(tag, furnaceItems); + tracker.containers.put(pos, furnaceItems); + if (pos.equals(tracker.openContainerPos)) { + sendWindowItems(wrapper.user(), InventoryStorage.FURNACE_WID, furnaceItems); + sendProgressUpdate(wrapper.user(), InventoryStorage.FURNACE_WID, (short) 0, tag.get("CookTime").asShort()); // cook time + sendProgressUpdate(wrapper.user(), InventoryStorage.FURNACE_WID, (short) 1, tag.get("BurnTime").asShort()); // furnace burn time + sendProgressUpdate(wrapper.user(), InventoryStorage.FURNACE_WID, (short) 2, getBurningTime(furnaceItems[1])); // item burn time + } + } else { + ViaLegacy.getPlatform().getLogger().warning("Unhandled Complex Entity data: " + block + "@" + pos + ": '" + tag + "'"); + } + }); + } + }); + + this.registerServerbound(ServerboundPacketsb1_1.PLAYER_DIGGING, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.UNSIGNED_BYTE); // status + map(Types1_7_6.POSITION_UBYTE); // position + map(Type.UNSIGNED_BYTE); // direction + handler(wrapper -> { + final short status = wrapper.get(Type.UNSIGNED_BYTE, 0); + if (status == 4) { + wrapper.cancel(); + + final Item selectedItem = fixItem(Via.getManager().getProviders().get(AlphaInventoryProvider.class).getHandItem(wrapper.user())); + if (selectedItem == null) { + return; + } + + final AlphaInventoryTracker inventoryTracker = wrapper.user().get(AlphaInventoryTracker.class); + if (inventoryTracker != null) inventoryTracker.onHandItemDrop(); + + selectedItem.setAmount(1); + dropItem(wrapper.user(), selectedItem, false); + } + }); + } + }); + this.registerServerbound(ServerboundPacketsb1_1.PLAYER_BLOCK_PLACEMENT, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + final InventoryStorage tracker = wrapper.user().get(InventoryStorage.class); + final AlphaInventoryTracker inventoryTracker = wrapper.user().get(AlphaInventoryTracker.class); + final Position pos = wrapper.read(Types1_7_6.POSITION_UBYTE); // position + final short direction = wrapper.read(Type.UNSIGNED_BYTE); // direction + Item item = fixItem(wrapper.read(Typesb1_1.NBTLESS_ITEM)); // item + + if (item == null && inventoryTracker != null) { + item = Via.getManager().getProviders().get(AlphaInventoryProvider.class).getHandItem(wrapper.user()); + } + + wrapper.write(Type.SHORT, item == null ? (short) -1 : (short) item.identifier()); // item id + wrapper.write(Types1_7_6.POSITION_UBYTE, pos); + wrapper.write(Type.UNSIGNED_BYTE, direction); + + if (inventoryTracker != null) inventoryTracker.onBlockPlace(pos, direction); + + if (direction == 255) return; + + final IdAndData block = wrapper.user().get(ChunkTracker.class).getBlockNotNull(pos); + if (block.id != BlockList1_6.furnaceIdle.blockID && block.id != BlockList1_6.furnaceBurning.blockID && block.id != BlockList1_6.chest.blockID && block.id != BlockList1_6.workbench.blockID) { + return; + } + + final Item[] containerItems = tracker.containers.get(tracker.openContainerPos = pos); + if (containerItems == null && block.id != BlockList1_6.workbench.blockID) { + tracker.openContainerPos = null; + final PacketWrapper chatMessage = PacketWrapper.create(ClientboundPacketsb1_1.CHAT_MESSAGE, wrapper.user()); + chatMessage.write(Typesb1_7_0_3.STRING, "§cMissing Container"); // message + chatMessage.send(Protocolb1_0_1_1_1toa1_2_3_5_1_2_6.class); + return; + } + + final PacketWrapper openWindow = PacketWrapper.create(ClientboundPacketsb1_1.OPEN_WINDOW, wrapper.user()); + if (block.id == BlockList1_6.chest.blockID) { + openWindow.write(Type.UNSIGNED_BYTE, (short) InventoryStorage.CHEST_WID); // window id + openWindow.write(Type.UNSIGNED_BYTE, (short) 0); // window type + openWindow.write(Typesb1_7_0_3.STRING, "Chest"); // title + openWindow.write(Type.UNSIGNED_BYTE, (short) (3 * 9)); // slots + if (inventoryTracker != null) inventoryTracker.onWindowOpen(0, 3 * 9); + } else if (block.id == BlockList1_6.workbench.blockID) { + openWindow.write(Type.UNSIGNED_BYTE, (short) InventoryStorage.WORKBENCH_WID); // window id + openWindow.write(Type.UNSIGNED_BYTE, (short) 1); // window type + openWindow.write(Typesb1_7_0_3.STRING, "Crafting Table"); // title + openWindow.write(Type.UNSIGNED_BYTE, (short) 9); // slots + if (inventoryTracker != null) inventoryTracker.onWindowOpen(1, 10); + } else { // furnace + openWindow.write(Type.UNSIGNED_BYTE, (short) InventoryStorage.FURNACE_WID); // window id + openWindow.write(Type.UNSIGNED_BYTE, (short) 2); // window type + openWindow.write(Typesb1_7_0_3.STRING, "Furnace"); // title + openWindow.write(Type.UNSIGNED_BYTE, (short) 3); // slots + if (inventoryTracker != null) inventoryTracker.onWindowOpen(2, 3); + } + openWindow.send(Protocolb1_0_1_1_1toa1_2_3_5_1_2_6.class); + + if (block.id != BlockList1_6.workbench.blockID) { + sendWindowItems(wrapper.user(), block.id == BlockList1_6.chest.blockID ? InventoryStorage.CHEST_WID : InventoryStorage.FURNACE_WID, containerItems); + } + }); + } + }); + this.registerServerbound(ServerboundPacketsb1_1.HELD_ITEM_CHANGE, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + final InventoryStorage inventoryStorage = wrapper.user().get(InventoryStorage.class); + short slot = wrapper.read(Type.SHORT); // slot + if (slot < 0 || slot > 8) slot = 0; + inventoryStorage.selectedHotbarSlot = slot; + final Item selectedItem = fixItem(Via.getManager().getProviders().get(AlphaInventoryProvider.class).getHandItem(wrapper.user())); + if (Objects.equals(selectedItem, inventoryStorage.handItem)) { + wrapper.cancel(); + return; + } + inventoryStorage.handItem = selectedItem; + + wrapper.write(Type.INT, 0); // entity id (always 0) + wrapper.write(Type.SHORT, (short) (selectedItem == null ? 0 : selectedItem.identifier())); // item id + }); + } + }); + this.registerServerbound(ServerboundPacketsb1_1.CLOSE_WINDOW, null, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + wrapper.cancel(); + wrapper.user().get(InventoryStorage.class).openContainerPos = null; + + final AlphaInventoryTracker inventoryTracker = wrapper.user().get(AlphaInventoryTracker.class); + if (inventoryTracker != null) inventoryTracker.onWindowClose(); + }); + } + }); + this.registerServerbound(ServerboundPacketsb1_1.CLICK_WINDOW, ServerboundPacketsa1_2_6.COMPLEX_ENTITY, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + final InventoryStorage tracker = wrapper.user().get(InventoryStorage.class); + final AlphaInventoryTracker inventoryTracker = wrapper.user().get(AlphaInventoryTracker.class); + final byte windowId = wrapper.read(Type.BYTE); // window id + final short slot = wrapper.read(Type.SHORT); // slot + final byte button = wrapper.read(Type.BYTE); // button + final short action = wrapper.read(Type.SHORT); // action + final Item item = fixItem(wrapper.read(Typesb1_1.NBTLESS_ITEM)); // item + + if (inventoryTracker != null) inventoryTracker.onWindowClick(windowId, slot, button, action, item); + if ((windowId != InventoryStorage.CHEST_WID && windowId != InventoryStorage.FURNACE_WID) || tracker.openContainerPos == null) { + wrapper.cancel(); + return; + } + + final Item[] containerItems = fixItems(Via.getManager().getProviders().get(AlphaInventoryProvider.class).getContainerItems(wrapper.user())); + if (Arrays.equals(tracker.containers.get(tracker.openContainerPos), containerItems)) { + wrapper.cancel(); + return; + } + tracker.containers.put(tracker.openContainerPos, containerItems); + + final CompoundTag tag = new CompoundTag(); + tag.put("id", new StringTag(windowId == InventoryStorage.CHEST_WID ? "Chest" : "Furnace")); + tag.put("x", new IntTag(tracker.openContainerPos.x())); + tag.put("y", new IntTag(tracker.openContainerPos.y())); + tag.put("z", new IntTag(tracker.openContainerPos.z())); + writeItemsToTag(tag, containerItems); + + wrapper.write(Type.INT, tracker.openContainerPos.x()); + wrapper.write(Type.SHORT, (short) tracker.openContainerPos.y()); + wrapper.write(Type.INT, tracker.openContainerPos.z()); + wrapper.write(Types1_7_6.COMPRESSED_NBT, tag); + }); + } + }); + this.registerServerbound(ServerboundPacketsb1_1.UPDATE_SIGN, ServerboundPacketsa1_2_6.COMPLEX_ENTITY, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + final Position pos = wrapper.passthrough(Types1_7_6.POSITION_SHORT); // position + + final CompoundTag tag = new CompoundTag(); + tag.put("id", new StringTag("Sign")); + tag.put("x", new IntTag(pos.x())); + tag.put("y", new IntTag(pos.y())); + tag.put("z", new IntTag(pos.z())); + tag.put("Text1", new StringTag(wrapper.read(Typesb1_7_0_3.STRING))); // line 1 + tag.put("Text2", new StringTag(wrapper.read(Typesb1_7_0_3.STRING))); // line 2 + tag.put("Text3", new StringTag(wrapper.read(Typesb1_7_0_3.STRING))); // line 3 + tag.put("Text4", new StringTag(wrapper.read(Typesb1_7_0_3.STRING))); // line 4 + wrapper.write(Types1_7_6.COMPRESSED_NBT, tag); // data + }); + } + }); + this.cancelServerbound(ServerboundPacketsb1_1.WINDOW_CONFIRMATION); + } + + private void writeItemsToTag(final CompoundTag tag, final Item[] items) { + final ListTag slotList = new ListTag(); + for (int i = 0; i < items.length; i++) { + final Item item = items[i]; + if (item == null) continue; + final CompoundTag slotTag = new CompoundTag(); + slotTag.put("Slot", new ByteTag((byte) i)); + slotTag.put("id", new ShortTag((short) item.identifier())); + slotTag.put("Count", new ByteTag((byte) item.amount())); + slotTag.put("Damage", new ShortTag(item.data())); + slotList.add(slotTag); + } + tag.put("Items", slotList); + } + + private void readItemsFromTag(final CompoundTag tag, final Item[] items) { + final ListTag slotList = tag.get("Items"); + for (Tag itemTag : slotList) { + final CompoundTag slotTag = (CompoundTag) itemTag; + items[slotTag.get("Slot").asByte() & 255] = new DataItem(slotTag.get("id").asShort(), slotTag.get("Count").asByte(), slotTag.get("Damage").asShort(), null); + } + } + + private void sendWindowItems(final UserConnection user, final byte windowId, final Item[] items) throws Exception { + final PacketWrapper windowItems = PacketWrapper.create(ClientboundPacketsb1_1.WINDOW_ITEMS, user); + windowItems.write(Type.BYTE, windowId); // window id + windowItems.write(Types1_4_2.NBTLESS_ITEM_ARRAY, copyItems(items)); // items + windowItems.send(Protocolb1_0_1_1_1toa1_2_3_5_1_2_6.class); + + final AlphaInventoryTracker inventoryTracker = user.get(AlphaInventoryTracker.class); + if (inventoryTracker != null) inventoryTracker.setOpenContainerItems(copyItems(items)); + } + + private void sendProgressUpdate(final UserConnection user, final short windowId, final short id, final short value) throws Exception { + final PacketWrapper windowProperty = PacketWrapper.create(ClientboundPacketsb1_1.WINDOW_PROPERTY, user); + windowProperty.write(Type.UNSIGNED_BYTE, windowId); // window id + windowProperty.write(Type.SHORT, id); // progress bar id + windowProperty.write(Type.SHORT, value); // progress bar value + windowProperty.send(Protocolb1_0_1_1_1toa1_2_3_5_1_2_6.class); + } + + private short getBurningTime(final Item item) { + if (item == null) return 0; + + final int id = item.identifier(); + if (id == BlockList1_6.bookShelf.blockID || id == BlockList1_6.chest.blockID || id == BlockList1_6.fence.blockID || id == BlockList1_6.jukebox.blockID || id == BlockList1_6.wood.blockID || id == BlockList1_6.planks.blockID || id == BlockList1_6.doorWood.blockID || id == BlockList1_6.signWall.blockID || id == BlockList1_6.signPost.blockID || id == BlockList1_6.workbench.blockID) { + return 300; + } else if (id == ItemList1_6.stick.itemID) { + return 100; + } else if (id == ItemList1_6.coal.itemID) { + return 1600; + } else if (id == ItemList1_6.bucketLava.itemID) { + return 20000; + } + return 0; + } + + public static void dropItem(final UserConnection user, final Item item, final boolean flag) throws Exception { + final PlayerInfoStorage playerInfoStorage = user.get(PlayerInfoStorage.class); + final double itemX = playerInfoStorage.posX; + final double itemY = playerInfoStorage.posY + 1.62F - 0.30000001192092896D + 0.12D; + final double itemZ = playerInfoStorage.posZ; + double motionX; + double motionY; + double motionZ; + if (flag) { + final float f2 = ThreadLocalRandom.current().nextFloat() * 0.5F; + final float f1 = (float) (ThreadLocalRandom.current().nextFloat() * Math.PI * 2.0F); + motionX = -Math.sin(f1) * f2; + motionZ = Math.cos(f1) * f2; + motionY = 0.20000000298023224D; + } else { + motionX = -Math.sin((playerInfoStorage.yaw / 180F) * Math.PI) * Math.cos((playerInfoStorage.pitch / 180F) * Math.PI) * 0.3F; + motionZ = Math.cos((playerInfoStorage.yaw / 180F) * Math.PI) * Math.cos((playerInfoStorage.pitch / 180F) * Math.PI) * 0.3F; + motionY = -Math.sin((playerInfoStorage.pitch / 180F) * Math.PI) * 0.3F + 0.1F; + final float f1 = (float) (ThreadLocalRandom.current().nextFloat() * Math.PI * 2.0F); + final float f2 = 0.02F * ThreadLocalRandom.current().nextFloat(); + motionX += Math.cos(f1) * (double) f2; + motionY += (ThreadLocalRandom.current().nextFloat() - ThreadLocalRandom.current().nextFloat()) * 0.1F; + motionZ += Math.sin(f1) * (double) f2; + } + + final PacketWrapper spawnItem = PacketWrapper.create(ServerboundPacketsa1_2_6.SPAWN_ITEM, user); + spawnItem.write(Type.INT, 0); // entity id + spawnItem.write(Type.SHORT, (short) item.identifier()); // item id + spawnItem.write(Type.BYTE, (byte) item.amount()); // item count + spawnItem.write(Type.INT, (int) (itemX * 32)); // x + spawnItem.write(Type.INT, (int) (itemY * 32)); // y + spawnItem.write(Type.INT, (int) (itemZ * 32)); // z + spawnItem.write(Type.BYTE, (byte) (motionX * 128)); // velocity x + spawnItem.write(Type.BYTE, (byte) (motionY * 128)); // velocity y + spawnItem.write(Type.BYTE, (byte) (motionZ * 128)); // velocity z + spawnItem.sendToServer(Protocolb1_0_1_1_1toa1_2_3_5_1_2_6.class); + } + + public static Item[] reverseArray(final Item[] array) { + if (array == null) return null; + final Item[] reversed = new Item[array.length]; + + for (int i = 0; i < array.length / 2; i++) { + reversed[i] = array[array.length - i - 1]; + reversed[array.length - i - 1] = array[i]; + } + + return reversed; + } + + public static Item copyItem(final Item item) { + return item == null ? null : new DataItem(item); + } + + public static Item[] copyItems(final Item[] items) { + return Arrays.stream(items).map(Protocolb1_0_1_1_1toa1_2_3_5_1_2_6::copyItem).toArray(Item[]::new); + } + + public static Item fixItem(final Item item) { + if (item == null || !AlphaItems.isValid(item.identifier())) return null; + item.setTag(null); + return item; + } + + public static Item[] fixItems(final Item[] items) { + for (int i = 0; i < items.length; i++) { + items[i] = fixItem(items[i]); + } + return items; + } + + @Override + public void register(ViaProviders providers) { + providers.register(AlphaInventoryProvider.class, new TrackingAlphaInventoryProvider()); + } + + @Override + public void init(UserConnection userConnection) { + userConnection.put(new PreNettySplitter(userConnection, Protocolb1_0_1_1_1toa1_2_3_5_1_2_6.class, ClientboundPacketsa1_2_6::getPacket)); + + userConnection.put(new InventoryStorage(userConnection)); + if (Via.getManager().getProviders().get(AlphaInventoryProvider.class).usesInventoryTracker()) { + userConnection.put(new AlphaInventoryTracker(userConnection)); + } + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocolb1_0_1_1_1toa1_2_3_5_1_2_6/ServerboundPacketsa1_2_6.java b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocolb1_0_1_1_1toa1_2_3_5_1_2_6/ServerboundPacketsa1_2_6.java new file mode 100644 index 0000000..e496030 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocolb1_0_1_1_1toa1_2_3_5_1_2_6/ServerboundPacketsa1_2_6.java @@ -0,0 +1,143 @@ +package net.raphimc.vialegacy.protocols.alpha.protocolb1_0_1_1_1toa1_2_3_5_1_2_6; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.packet.ServerboundPacketType; +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.util.PreNettyPacketType; +import net.raphimc.vialegacy.util.PreNettyTypes; + +import java.util.function.BiConsumer; + +public enum ServerboundPacketsa1_2_6 implements ServerboundPacketType, PreNettyPacketType { + + KEEP_ALIVE(0, (user, buf) -> { + }), + LOGIN(1, (user, buf) -> { + buf.readInt(); + PreNettyTypes.readUTF(buf); + PreNettyTypes.readUTF(buf); + buf.readLong(); + buf.readByte(); + }), + HANDSHAKE(2, (user, buf) -> { + PreNettyTypes.readUTF(buf); + }), + CHAT_MESSAGE(3, (user, buf) -> { + PreNettyTypes.readUTF(buf); + }), + PLAYER_INVENTORY(5, (user, buf) -> { + buf.readInt(); + int x = buf.readShort(); + for (int i = 0; i < x; i++) PreNettyTypes.readItemStackb1_2(buf); + }), + INTERACT_ENTITY(7, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readByte(); + }), + RESPAWN(9, (user, buf) -> { + }), + PLAYER_MOVEMENT(10, (user, buf) -> { + buf.readUnsignedByte(); + }), + PLAYER_POSITION(11, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readUnsignedByte(); + }), + PLAYER_ROTATION(12, (user, buf) -> { + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION_AND_ROTATION(13, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_DIGGING(14, (user, buf) -> { + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + }), + PLAYER_BLOCK_PLACEMENT(15, (user, buf) -> { + buf.readShort(); + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + }), + HELD_ITEM_CHANGE(16, (user, buf) -> { + buf.readInt(); + buf.readShort(); + }), + ANIMATION(18, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + SPAWN_ITEM(21, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + COMPLEX_ENTITY(59, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + int x = buf.readUnsignedShort(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + DISCONNECT(255, (user, buf) -> { + PreNettyTypes.readUTF(buf); + }); + + private static final ServerboundPacketsa1_2_6[] REGISTRY = new ServerboundPacketsa1_2_6[256]; + + static { + for (ServerboundPacketsa1_2_6 packet : values()) { + REGISTRY[packet.id] = packet; + } + } + + public static ServerboundPacketsa1_2_6 getPacket(final int id) { + return REGISTRY[id]; + } + + private final int id; + private final BiConsumer packetReader; + + ServerboundPacketsa1_2_6(final int id, final BiConsumer packetReader) { + this.id = id; + this.packetReader = packetReader; + } + + @Override + public int getId() { + return this.id; + } + + @Override + public String getName() { + return name(); + } + + @Override + public BiConsumer getPacketReader() { + return this.packetReader; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocolb1_0_1_1_1toa1_2_3_5_1_2_6/data/AlphaItems.java b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocolb1_0_1_1_1toa1_2_3_5_1_2_6/data/AlphaItems.java new file mode 100644 index 0000000..08514d4 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocolb1_0_1_1_1toa1_2_3_5_1_2_6/data/AlphaItems.java @@ -0,0 +1,394 @@ +package net.raphimc.vialegacy.protocols.alpha.protocolb1_0_1_1_1toa1_2_3_5_1_2_6.data; + +import com.viaversion.viaversion.api.minecraft.item.Item; +import com.viaversion.viaversion.libs.fastutil.ints.*; +import net.raphimc.vialegacy.api.BlockList1_6; +import net.raphimc.vialegacy.api.IdAndData; + +import java.util.function.BiConsumer; +import java.util.function.Consumer; + +public class AlphaItems { + + private static final IntList ITEM_IDS = new IntArrayList(); + private static final Int2IntMap MAX_STACK_SIZE = new Int2IntOpenHashMap(70, 0.99F); + private static final Int2ObjectMap> INTERACT_ACTION = new Int2ObjectOpenHashMap<>(14, 0.99F); + private static final Int2ObjectMap>> PLACE_ACTION = new Int2ObjectOpenHashMap<>(15, 0.99F); + + static { + ITEM_IDS.add(1); + ITEM_IDS.add(2); + ITEM_IDS.add(3); + ITEM_IDS.add(4); + ITEM_IDS.add(5); + ITEM_IDS.add(6); + ITEM_IDS.add(7); + ITEM_IDS.add(8); + ITEM_IDS.add(9); + ITEM_IDS.add(10); + ITEM_IDS.add(11); + ITEM_IDS.add(12); + ITEM_IDS.add(13); + ITEM_IDS.add(14); + ITEM_IDS.add(15); + ITEM_IDS.add(16); + ITEM_IDS.add(17); + ITEM_IDS.add(18); + ITEM_IDS.add(19); + ITEM_IDS.add(20); + ITEM_IDS.add(35); + ITEM_IDS.add(37); + ITEM_IDS.add(38); + ITEM_IDS.add(39); + ITEM_IDS.add(40); + ITEM_IDS.add(41); + ITEM_IDS.add(42); + ITEM_IDS.add(43); + ITEM_IDS.add(44); + ITEM_IDS.add(45); + ITEM_IDS.add(46); + ITEM_IDS.add(47); + ITEM_IDS.add(48); + ITEM_IDS.add(49); + ITEM_IDS.add(50); + ITEM_IDS.add(51); + ITEM_IDS.add(52); + ITEM_IDS.add(53); + ITEM_IDS.add(54); + ITEM_IDS.add(55); + ITEM_IDS.add(56); + ITEM_IDS.add(57); + ITEM_IDS.add(58); + ITEM_IDS.add(59); + ITEM_IDS.add(60); + ITEM_IDS.add(61); + ITEM_IDS.add(62); + ITEM_IDS.add(63); + ITEM_IDS.add(64); + ITEM_IDS.add(65); + ITEM_IDS.add(66); + ITEM_IDS.add(67); + ITEM_IDS.add(68); + ITEM_IDS.add(69); + ITEM_IDS.add(70); + ITEM_IDS.add(71); + ITEM_IDS.add(72); + ITEM_IDS.add(73); + ITEM_IDS.add(74); + ITEM_IDS.add(75); + ITEM_IDS.add(76); + ITEM_IDS.add(77); + ITEM_IDS.add(78); + ITEM_IDS.add(79); + ITEM_IDS.add(80); + ITEM_IDS.add(81); + ITEM_IDS.add(82); + ITEM_IDS.add(83); + ITEM_IDS.add(84); + ITEM_IDS.add(85); + ITEM_IDS.add(86); + ITEM_IDS.add(87); + ITEM_IDS.add(88); + ITEM_IDS.add(89); + ITEM_IDS.add(90); + ITEM_IDS.add(91); + ITEM_IDS.add(256); + ITEM_IDS.add(257); + ITEM_IDS.add(258); + ITEM_IDS.add(259); + ITEM_IDS.add(260); + ITEM_IDS.add(261); + ITEM_IDS.add(262); + ITEM_IDS.add(263); + ITEM_IDS.add(264); + ITEM_IDS.add(265); + ITEM_IDS.add(266); + ITEM_IDS.add(267); + ITEM_IDS.add(268); + ITEM_IDS.add(269); + ITEM_IDS.add(270); + ITEM_IDS.add(271); + ITEM_IDS.add(272); + ITEM_IDS.add(273); + ITEM_IDS.add(274); + ITEM_IDS.add(275); + ITEM_IDS.add(276); + ITEM_IDS.add(277); + ITEM_IDS.add(278); + ITEM_IDS.add(279); + ITEM_IDS.add(280); + ITEM_IDS.add(281); + ITEM_IDS.add(282); + ITEM_IDS.add(283); + ITEM_IDS.add(284); + ITEM_IDS.add(285); + ITEM_IDS.add(286); + ITEM_IDS.add(287); + ITEM_IDS.add(288); + ITEM_IDS.add(289); + ITEM_IDS.add(290); + ITEM_IDS.add(291); + ITEM_IDS.add(292); + ITEM_IDS.add(293); + ITEM_IDS.add(294); + ITEM_IDS.add(295); + ITEM_IDS.add(296); + ITEM_IDS.add(297); + ITEM_IDS.add(298); + ITEM_IDS.add(299); + ITEM_IDS.add(300); + ITEM_IDS.add(301); + ITEM_IDS.add(302); + ITEM_IDS.add(303); + ITEM_IDS.add(304); + ITEM_IDS.add(305); + ITEM_IDS.add(306); + ITEM_IDS.add(307); + ITEM_IDS.add(308); + ITEM_IDS.add(309); + ITEM_IDS.add(310); + ITEM_IDS.add(311); + ITEM_IDS.add(312); + ITEM_IDS.add(313); + ITEM_IDS.add(314); + ITEM_IDS.add(315); + ITEM_IDS.add(316); + ITEM_IDS.add(317); + ITEM_IDS.add(318); + ITEM_IDS.add(319); + ITEM_IDS.add(320); + ITEM_IDS.add(321); + ITEM_IDS.add(322); + ITEM_IDS.add(323); + ITEM_IDS.add(324); + ITEM_IDS.add(325); + ITEM_IDS.add(326); + ITEM_IDS.add(327); + ITEM_IDS.add(328); + ITEM_IDS.add(329); + ITEM_IDS.add(330); + ITEM_IDS.add(331); + ITEM_IDS.add(332); + ITEM_IDS.add(333); + ITEM_IDS.add(334); + ITEM_IDS.add(335); + ITEM_IDS.add(336); + ITEM_IDS.add(337); + ITEM_IDS.add(338); + ITEM_IDS.add(339); + ITEM_IDS.add(340); + ITEM_IDS.add(341); + ITEM_IDS.add(342); + ITEM_IDS.add(343); + ITEM_IDS.add(344); + ITEM_IDS.add(345); + ITEM_IDS.add(346); + ITEM_IDS.add(347); + ITEM_IDS.add(348); + ITEM_IDS.add(349); + ITEM_IDS.add(350); + ITEM_IDS.add(2256); + ITEM_IDS.add(2257); + + MAX_STACK_SIZE.defaultReturnValue(64); + MAX_STACK_SIZE.put(256, 1); + MAX_STACK_SIZE.put(257, 1); + MAX_STACK_SIZE.put(258, 1); + MAX_STACK_SIZE.put(259, 1); + MAX_STACK_SIZE.put(260, 1); + MAX_STACK_SIZE.put(261, 1); + MAX_STACK_SIZE.put(267, 1); + MAX_STACK_SIZE.put(268, 1); + MAX_STACK_SIZE.put(269, 1); + MAX_STACK_SIZE.put(270, 1); + MAX_STACK_SIZE.put(271, 1); + MAX_STACK_SIZE.put(272, 1); + MAX_STACK_SIZE.put(273, 1); + MAX_STACK_SIZE.put(274, 1); + MAX_STACK_SIZE.put(275, 1); + MAX_STACK_SIZE.put(276, 1); + MAX_STACK_SIZE.put(277, 1); + MAX_STACK_SIZE.put(278, 1); + MAX_STACK_SIZE.put(279, 1); + MAX_STACK_SIZE.put(282, 1); + MAX_STACK_SIZE.put(283, 1); + MAX_STACK_SIZE.put(284, 1); + MAX_STACK_SIZE.put(285, 1); + MAX_STACK_SIZE.put(286, 1); + MAX_STACK_SIZE.put(290, 1); + MAX_STACK_SIZE.put(291, 1); + MAX_STACK_SIZE.put(292, 1); + MAX_STACK_SIZE.put(293, 1); + MAX_STACK_SIZE.put(294, 1); + MAX_STACK_SIZE.put(297, 1); + MAX_STACK_SIZE.put(298, 1); + MAX_STACK_SIZE.put(299, 1); + MAX_STACK_SIZE.put(300, 1); + MAX_STACK_SIZE.put(301, 1); + MAX_STACK_SIZE.put(302, 1); + MAX_STACK_SIZE.put(303, 1); + MAX_STACK_SIZE.put(304, 1); + MAX_STACK_SIZE.put(305, 1); + MAX_STACK_SIZE.put(306, 1); + MAX_STACK_SIZE.put(307, 1); + MAX_STACK_SIZE.put(308, 1); + MAX_STACK_SIZE.put(309, 1); + MAX_STACK_SIZE.put(310, 1); + MAX_STACK_SIZE.put(311, 1); + MAX_STACK_SIZE.put(312, 1); + MAX_STACK_SIZE.put(313, 1); + MAX_STACK_SIZE.put(314, 1); + MAX_STACK_SIZE.put(315, 1); + MAX_STACK_SIZE.put(316, 1); + MAX_STACK_SIZE.put(317, 1); + MAX_STACK_SIZE.put(319, 1); + MAX_STACK_SIZE.put(320, 1); + MAX_STACK_SIZE.put(322, 1); + MAX_STACK_SIZE.put(323, 1); + MAX_STACK_SIZE.put(324, 1); + MAX_STACK_SIZE.put(325, 1); + MAX_STACK_SIZE.put(326, 1); + MAX_STACK_SIZE.put(327, 1); + MAX_STACK_SIZE.put(328, 1); + MAX_STACK_SIZE.put(329, 1); + MAX_STACK_SIZE.put(330, 1); + MAX_STACK_SIZE.put(332, 16); + MAX_STACK_SIZE.put(333, 1); + MAX_STACK_SIZE.put(335, 1); + MAX_STACK_SIZE.put(342, 1); + MAX_STACK_SIZE.put(343, 1); + MAX_STACK_SIZE.put(349, 1); + MAX_STACK_SIZE.put(350, 1); + MAX_STACK_SIZE.put(2256, 1); + MAX_STACK_SIZE.put(2257, 1); + + INTERACT_ACTION.defaultReturnValue(Item::identifier); // no op + INTERACT_ACTION.put(260, i -> i.setAmount(i.amount() - 1)); + INTERACT_ACTION.put(297, i -> i.setAmount(i.amount() - 1)); + INTERACT_ACTION.put(319, i -> i.setAmount(i.amount() - 1)); + INTERACT_ACTION.put(320, i -> i.setAmount(i.amount() - 1)); + INTERACT_ACTION.put(322, i -> i.setAmount(i.amount() - 1)); + INTERACT_ACTION.put(326, i -> i.setIdentifier(325)); + INTERACT_ACTION.put(327, i -> i.setIdentifier(325)); + INTERACT_ACTION.put(332, i -> i.setAmount(i.amount() - 1)); + INTERACT_ACTION.put(333, i -> i.setAmount(i.amount() - 1)); + INTERACT_ACTION.put(335, i -> i.setIdentifier(325)); + INTERACT_ACTION.put(346, i -> { + i.setData((short) (i.data() + 1)); + if (i.data() > 64) { + i.setAmount(i.amount() - 1); + } + }); + INTERACT_ACTION.put(349, i -> i.setAmount(i.amount() - 1)); + INTERACT_ACTION.put(350, i -> i.setAmount(i.amount() - 1)); + INTERACT_ACTION.put(282, i -> { + i.setIdentifier(281); + i.setAmount(1); + i.setData((short) 0); + }); + + PLACE_ACTION.defaultReturnValue((i, d) -> i.identifier()); // no op + PLACE_ACTION.put(259, (i, d) -> { + i.setData((short) (i.data() + 1)); + if (i.data() > 64) { + i.setAmount(i.amount() - 1); + } + }); + PLACE_ACTION.put(290, (i, d) -> { + if (d.value().id == BlockList1_6.grass.blockID || d.value().id == BlockList1_6.dirt.blockID) { + i.setData((short) (i.data() + 1)); + if (i.data() > 32) { + i.setAmount(i.amount() - 1); + } + } + }); + PLACE_ACTION.put(291, (i, d) -> { + if (d.value().id == BlockList1_6.grass.blockID || d.value().id == BlockList1_6.dirt.blockID) { + i.setData((short) (i.data() + 1)); + if (i.data() > 64) { + i.setAmount(i.amount() - 1); + } + } + }); + PLACE_ACTION.put(292, (i, d) -> { + if (d.value().id == BlockList1_6.grass.blockID || d.value().id == BlockList1_6.dirt.blockID) { + i.setData((short) (i.data() + 1)); + if (i.data() > 128) { + i.setAmount(i.amount() - 1); + } + } + }); + PLACE_ACTION.put(293, (i, d) -> { + if (d.value().id == BlockList1_6.grass.blockID || d.value().id == BlockList1_6.dirt.blockID) { + i.setData((short) (i.data() + 1)); + if (i.data() > 256) { + i.setAmount(i.amount() - 1); + } + } + }); + PLACE_ACTION.put(294, (i, d) -> { + if (d.value().id == BlockList1_6.grass.blockID || d.value().id == BlockList1_6.dirt.blockID) { + i.setData((short) (i.data() + 1)); + if (i.data() > 64) { + i.setAmount(i.amount() - 1); + } + } + }); + PLACE_ACTION.put(295, (i, d) -> { + if (d.keyInt() == 1 && d.value().id == BlockList1_6.tilledField.blockID) { + i.setAmount(i.amount() - 1); + } + }); + PLACE_ACTION.put(321, (i, d) -> { + if (d.keyInt() != 0 && d.keyInt() != 1) i.setAmount(i.amount() - 1); + }); + PLACE_ACTION.put(324, (i, d) -> { + if (d.keyInt() == 1) i.setAmount(i.amount() - 1); + }); + PLACE_ACTION.put(328, (i, d) -> { + if (d.value().id == BlockList1_6.rail.blockID) { + i.setAmount(i.amount() - 1); + } + }); + PLACE_ACTION.put(330, (i, d) -> { + if (d.keyInt() == 1) i.setAmount(i.amount() - 1); + }); + PLACE_ACTION.put(342, (i, d) -> { + if (d.value().id == BlockList1_6.rail.blockID) { + i.setAmount(i.amount() - 1); + } + }); + PLACE_ACTION.put(343, (i, d) -> { + if (d.value().id == BlockList1_6.rail.blockID) { + i.setAmount(i.amount() - 1); + } + }); + PLACE_ACTION.put(2256, (i, d) -> { + if (d.value().id == BlockList1_6.jukebox.blockID && d.value().data == 0) { + i.setAmount(i.amount() - 1); + } + }); + PLACE_ACTION.put(2257, (i, d) -> { + if (d.value().id == BlockList1_6.jukebox.blockID && d.value().data == 0) { + i.setAmount(i.amount() - 1); + } + }); + } + + public static boolean isValid(final int itemId) { + return ITEM_IDS.contains(itemId); + } + + public static int getMaxStackSize(final int itemId) { + return MAX_STACK_SIZE.get(itemId); + } + + public static void doInteract(final Item item) { + INTERACT_ACTION.get(item.identifier()).accept(item); + } + + public static void doPlace(final Item item, final short direction, final IdAndData placedAgainst) { + PLACE_ACTION.get(item.identifier()).accept(item, new IntObjectImmutablePair<>(direction, placedAgainst)); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocolb1_0_1_1_1toa1_2_3_5_1_2_6/data/CraftingManager.java b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocolb1_0_1_1_1toa1_2_3_5_1_2_6/data/CraftingManager.java new file mode 100644 index 0000000..523dce1 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocolb1_0_1_1_1toa1_2_3_5_1_2_6/data/CraftingManager.java @@ -0,0 +1,163 @@ +package net.raphimc.vialegacy.protocols.alpha.protocolb1_0_1_1_1toa1_2_3_5_1_2_6.data; + +import com.viaversion.viaversion.api.minecraft.item.DataItem; +import com.viaversion.viaversion.api.minecraft.item.Item; +import net.raphimc.vialegacy.api.BlockList1_6; +import net.raphimc.vialegacy.api.ItemList1_6; +import net.raphimc.vialegacy.protocols.alpha.protocolb1_0_1_1_1toa1_2_3_5_1_2_6.model.CraftingRecipe; + +import java.util.*; + +public class CraftingManager { + + private static final List recipes = new ArrayList<>(); + + private static final String[][] tools_pattern = new String[][]{{"XXX", " # ", " # "}, {"X", "#", "#"}, {"XX", "X#", " #"}, {"XX", " #", " #"}}; + private static final int[][] tools_ingredients = new int[][]{{BlockList1_6.planks.blockID, BlockList1_6.cobblestone.blockID, ItemList1_6.ingotIron.itemID, ItemList1_6.diamond.itemID, ItemList1_6.ingotGold.itemID}, {ItemList1_6.pickaxeWood.itemID, ItemList1_6.pickaxeStone.itemID, ItemList1_6.pickaxeIron.itemID, ItemList1_6.pickaxeDiamond.itemID, ItemList1_6.pickaxeGold.itemID}, {ItemList1_6.shovelWood.itemID, ItemList1_6.shovelStone.itemID, ItemList1_6.shovelIron.itemID, ItemList1_6.shovelDiamond.itemID, ItemList1_6.shovelGold.itemID}, {ItemList1_6.axeWood.itemID, ItemList1_6.axeStone.itemID, ItemList1_6.axeIron.itemID, ItemList1_6.axeDiamond.itemID, ItemList1_6.axeGold.itemID}, {ItemList1_6.hoeWood.itemID, ItemList1_6.hoeStone.itemID, ItemList1_6.hoeIron.itemID, ItemList1_6.hoeDiamond.itemID, ItemList1_6.hoeGold.itemID}}; + + private static final String[][] weapons_pattern = new String[][]{{"X", "X", "#"}}; + private static final int[][] weapons_ingredients = new int[][]{{BlockList1_6.planks.blockID, BlockList1_6.cobblestone.blockID, ItemList1_6.ingotIron.itemID, ItemList1_6.diamond.itemID, ItemList1_6.ingotGold.itemID}, {ItemList1_6.swordWood.itemID, ItemList1_6.swordStone.itemID, ItemList1_6.swordIron.itemID, ItemList1_6.swordDiamond.itemID, ItemList1_6.swordGold.itemID}}; + + private static final int[][] ingots_ingredients = new int[][]{{BlockList1_6.blockGold.blockID, ItemList1_6.ingotGold.itemID}, {BlockList1_6.blockIron.blockID, ItemList1_6.ingotIron.itemID}, {BlockList1_6.blockDiamond.blockID, ItemList1_6.diamond.itemID}}; + + private static final String[][] armor_pattern = new String[][]{{"XXX", "X X"}, {"X X", "XXX", "XXX"}, {"XXX", "X X", "X X"}, {"X X", "X X"}}; + private static final int[][] armor_ingredients = new int[][]{{ItemList1_6.leather.itemID, BlockList1_6.fire.blockID, ItemList1_6.ingotIron.itemID, ItemList1_6.diamond.itemID, ItemList1_6.ingotGold.itemID}, {ItemList1_6.helmetLeather.itemID, ItemList1_6.helmetChain.itemID, ItemList1_6.helmetIron.itemID, ItemList1_6.helmetDiamond.itemID, ItemList1_6.helmetGold.itemID}, {ItemList1_6.plateLeather.itemID, ItemList1_6.plateChain.itemID, ItemList1_6.plateIron.itemID, ItemList1_6.plateDiamond.itemID, ItemList1_6.plateGold.itemID}, {ItemList1_6.legsLeather.itemID, ItemList1_6.legsChain.itemID, ItemList1_6.legsIron.itemID, ItemList1_6.legsDiamond.itemID, ItemList1_6.legsGold.itemID}, {ItemList1_6.bootsLeather.itemID, ItemList1_6.bootsChain.itemID, ItemList1_6.bootsIron.itemID, ItemList1_6.bootsDiamond.itemID, ItemList1_6.bootsGold.itemID}}; + + static { + for (int i = 0; i < tools_ingredients[0].length; ++i) { + for (int i1 = 0; i1 < tools_ingredients.length - 1; ++i1) { + addRecipe(new DataItem(tools_ingredients[i1 + 1][i], (byte) 1, (short) 0, null), tools_pattern[i1], '#', ItemList1_6.stick.itemID, 'X', tools_ingredients[0][i]); + } + } + for (int i = 0; i < weapons_ingredients[0].length; ++i) { + for (int i1 = 0; i1 < weapons_ingredients.length - 1; ++i1) { + addRecipe(new DataItem(weapons_ingredients[i1 + 1][i], (byte) 1, (short) 0, null), weapons_pattern[i1], '#', ItemList1_6.stick.itemID, 'X', weapons_ingredients[0][i]); + } + } + addRecipe(new DataItem(ItemList1_6.bow.itemID, (byte) 1, (short) 0, null), " #X", "# X", " #X", 'X', ItemList1_6.silk.itemID, '#', ItemList1_6.stick.itemID); + addRecipe(new DataItem(ItemList1_6.arrow.itemID, (byte) 4, (short) 0, null), "X", "#", "Y", 'Y', ItemList1_6.feather.itemID, 'X', ItemList1_6.flint.itemID, '#', ItemList1_6.stick.itemID); + for (int[] ingots_ingredient : ingots_ingredients) { + addRecipe(new DataItem(ingots_ingredient[0], (byte) 1, (short) 0, null), "###", "###", "###", '#', ingots_ingredient[1]); + addRecipe(new DataItem(ingots_ingredient[1], (byte) 9, (short) 0, null), "#", '#', ingots_ingredient[0]); + } + addRecipe(new DataItem(ItemList1_6.bowlSoup.itemID, (byte) 1, (short) 0, null), "Y", "X", "#", 'X', BlockList1_6.mushroomBrown.blockID, 'Y', BlockList1_6.mushroomRed.blockID, '#', ItemList1_6.bowlEmpty.itemID); + addRecipe(new DataItem(ItemList1_6.bowlSoup.itemID, (byte) 1, (short) 0, null), "Y", "X", "#", 'X', BlockList1_6.mushroomRed.blockID, 'Y', BlockList1_6.mushroomBrown.blockID, '#', ItemList1_6.bowlEmpty.itemID); + addRecipe(new DataItem(BlockList1_6.chest.blockID, (byte) 1, (short) 0, null), "###", "# #", "###", '#', BlockList1_6.planks.blockID); + addRecipe(new DataItem(BlockList1_6.furnaceIdle.blockID, (byte) 1, (short) 0, null), "###", "# #", "###", '#', BlockList1_6.cobblestone.blockID); + addRecipe(new DataItem(BlockList1_6.workbench.blockID, (byte) 1, (short) 0, null), "##", "##", '#', BlockList1_6.planks.blockID); + for (int i = 0; i < armor_ingredients[0].length; ++i) { + for (int i1 = 0; i1 < armor_ingredients.length - 1; ++i1) { + addRecipe(new DataItem(armor_ingredients[i1 + 1][i], (byte) 1, (short) 0, null), armor_pattern[i1], 'X', armor_ingredients[0][i]); + } + } + addRecipe(new DataItem(ItemList1_6.paper.itemID, (byte) 3, (short) 0, null), "###", '#', ItemList1_6.reed.itemID); + addRecipe(new DataItem(ItemList1_6.book.itemID, (byte) 1, (short) 0, null), "#", "#", "#", '#', ItemList1_6.paper.itemID); + addRecipe(new DataItem(BlockList1_6.fence.blockID, (byte) 2, (short) 0, null), "###", "###", '#', ItemList1_6.stick.itemID); + addRecipe(new DataItem(BlockList1_6.jukebox.blockID, (byte) 1, (short) 0, null), "###", "#X#", "###", '#', BlockList1_6.planks.blockID, 'X', ItemList1_6.diamond.itemID); + addRecipe(new DataItem(BlockList1_6.bookShelf.blockID, (byte) 1, (short) 0, null), "###", "XXX", "###", '#', BlockList1_6.planks.blockID, 'X', ItemList1_6.book.itemID); + addRecipe(new DataItem(BlockList1_6.blockSnow.blockID, (byte) 1, (short) 0, null), "##", "##", '#', ItemList1_6.snowball.itemID); + addRecipe(new DataItem(BlockList1_6.blockClay.blockID, (byte) 1, (short) 0, null), "##", "##", '#', ItemList1_6.clay.itemID); + addRecipe(new DataItem(BlockList1_6.brick.blockID, (byte) 1, (short) 0, null), "##", "##", '#', ItemList1_6.brick.itemID); + addRecipe(new DataItem(BlockList1_6.glowStone.blockID, (byte) 1, (short) 0, null), "###", "###", "###", '#', ItemList1_6.glowstone.itemID); + addRecipe(new DataItem(BlockList1_6.cloth.blockID, (byte) 1, (short) 0, null), "###", "###", "###", '#', ItemList1_6.silk.itemID); + addRecipe(new DataItem(BlockList1_6.tnt.blockID, (byte) 1, (short) 0, null), "X#X", "#X#", "X#X", 'X', ItemList1_6.gunpowder.itemID, '#', BlockList1_6.sand.blockID); + addRecipe(new DataItem(BlockList1_6.stoneSingleSlab.blockID, (byte) 3, (short) 0, null), "###", '#', BlockList1_6.cobblestone.blockID); + addRecipe(new DataItem(BlockList1_6.ladder.blockID, (byte) 1, (short) 0, null), "# #", "###", "# #", '#', ItemList1_6.stick.itemID); + addRecipe(new DataItem(ItemList1_6.doorWood.itemID, (byte) 1, (short) 0, null), "##", "##", "##", '#', BlockList1_6.planks.blockID); + addRecipe(new DataItem(ItemList1_6.doorIron.itemID, (byte) 1, (short) 0, null), "##", "##", "##", '#', ItemList1_6.ingotIron.itemID); + addRecipe(new DataItem(ItemList1_6.sign.itemID, (byte) 1, (short) 0, null), "###", "###", " X ", '#', BlockList1_6.planks.blockID, 'X', ItemList1_6.stick.itemID); + addRecipe(new DataItem(BlockList1_6.planks.blockID, (byte) 4, (short) 0, null), "#", '#', BlockList1_6.wood.blockID); + addRecipe(new DataItem(ItemList1_6.stick.itemID, (byte) 4, (short) 0, null), "#", "#", '#', BlockList1_6.planks.blockID); + addRecipe(new DataItem(BlockList1_6.torchWood.blockID, (byte) 4, (short) 0, null), "X", "#", 'X', ItemList1_6.coal.itemID, '#', ItemList1_6.stick.itemID); + addRecipe(new DataItem(ItemList1_6.bowlEmpty.itemID, (byte) 4, (short) 0, null), "# #", " # ", '#', BlockList1_6.planks.blockID); + addRecipe(new DataItem(BlockList1_6.rail.blockID, (byte) 16, (short) 0, null), "X X", "X#X", "X X", 'X', ItemList1_6.ingotIron.itemID, '#', ItemList1_6.stick.itemID); + addRecipe(new DataItem(ItemList1_6.minecartEmpty.itemID, (byte) 1, (short) 0, null), "# #", "###", '#', ItemList1_6.ingotIron.itemID); + addRecipe(new DataItem(BlockList1_6.pumpkinLantern.blockID, (byte) 1, (short) 0, null), "A", "B", 'A', BlockList1_6.pumpkin.blockID, 'B', BlockList1_6.torchWood.blockID); + addRecipe(new DataItem(ItemList1_6.minecartCrate.itemID, (byte) 1, (short) 0, null), "A", "B", 'A', BlockList1_6.chest.blockID, 'B', ItemList1_6.minecartEmpty.itemID); + addRecipe(new DataItem(ItemList1_6.minecartPowered.itemID, (byte) 1, (short) 0, null), "A", "B", 'A', BlockList1_6.furnaceIdle.blockID, 'B', ItemList1_6.minecartEmpty.itemID); + addRecipe(new DataItem(ItemList1_6.boat.itemID, (byte) 1, (short) 0, null), "# #", "###", '#', BlockList1_6.planks.blockID); + addRecipe(new DataItem(ItemList1_6.bucketEmpty.itemID, (byte) 1, (short) 0, null), "# #", " # ", '#', ItemList1_6.ingotIron.itemID); + addRecipe(new DataItem(ItemList1_6.flintAndSteel.itemID, (byte) 1, (short) 0, null), "A ", " B", 'A', ItemList1_6.ingotIron.itemID, 'B', ItemList1_6.flint.itemID); + addRecipe(new DataItem(ItemList1_6.bread.itemID, (byte) 1, (short) 0, null), "###", '#', ItemList1_6.wheat.itemID); + addRecipe(new DataItem(BlockList1_6.stairsWoodOak.blockID, (byte) 4, (short) 0, null), "# ", "## ", "###", '#', BlockList1_6.planks.blockID); + addRecipe(new DataItem(ItemList1_6.fishingRod.itemID, (byte) 1, (short) 0, null), " #", " #X", "# X", '#', ItemList1_6.stick.itemID, 'X', ItemList1_6.silk.itemID); + addRecipe(new DataItem(BlockList1_6.stairsCobblestone.blockID, (byte) 4, (short) 0, null), "# ", "## ", "###", '#', BlockList1_6.cobblestone.blockID); + addRecipe(new DataItem(ItemList1_6.painting.itemID, (byte) 1, (short) 0, null), "###", "#X#", "###", '#', ItemList1_6.stick.itemID, 'X', BlockList1_6.cloth.blockID); + addRecipe(new DataItem(ItemList1_6.appleGold.itemID, (byte) 1, (short) 0, null), "###", "#X#", "###", '#', BlockList1_6.blockGold.blockID, 'X', ItemList1_6.appleRed.itemID); + addRecipe(new DataItem(BlockList1_6.lever.blockID, (byte) 1, (short) 0, null), "X", "#", '#', BlockList1_6.cobblestone.blockID, 'X', ItemList1_6.stick.itemID); + addRecipe(new DataItem(BlockList1_6.torchRedstoneActive.blockID, (byte) 1, (short) 0, null), "X", "#", '#', ItemList1_6.stick.itemID, 'X', ItemList1_6.redstone.itemID); + addRecipe(new DataItem(ItemList1_6.pocketSundial.itemID, (byte) 1, (short) 0, null), " # ", "#X#", " # ", '#', ItemList1_6.ingotGold.itemID, 'X', ItemList1_6.redstone.itemID); + addRecipe(new DataItem(ItemList1_6.compass.itemID, (byte) 1, (short) 0, null), " # ", "#X#", " # ", '#', ItemList1_6.ingotIron.itemID, 'X', ItemList1_6.redstone.itemID); + addRecipe(new DataItem(BlockList1_6.stoneButton.blockID, (byte) 1, (short) 0, null), "#", "#", '#', BlockList1_6.stone.blockID); + addRecipe(new DataItem(BlockList1_6.pressurePlateStone.blockID, (byte) 1, (short) 0, null), "###", '#', BlockList1_6.stone.blockID); + addRecipe(new DataItem(BlockList1_6.pressurePlatePlanks.blockID, (byte) 1, (short) 0, null), "###", '#', BlockList1_6.planks.blockID); + recipes.sort((o1, o2) -> Integer.compare(o2.getRecipeSize(), o1.getRecipeSize())); + } + + private static void addRecipe(final Item resultItem, final Object... objects) { + String var3 = ""; + int pos = 0; + int width = 0; + int height = 0; + + if (objects[pos] instanceof String[]) { + String[] var11 = (String[]) objects[pos++]; + + for (String var9 : var11) { + height++; + width = var9.length(); + var3 = var3 + var9; + } + } else { + while (objects[pos] instanceof String) { + String var7 = (String) objects[pos++]; + height++; + width = var7.length(); + var3 = var3 + var7; + } + } + + final HashMap lookup = new HashMap<>(); + while (pos < objects.length) { + lookup.put((char) objects[pos], (int) objects[pos + 1]); + pos += 2; + } + + final int[] ingredientMap = new int[width * height]; + for (int i = 0; i < ingredientMap.length; i++) { + ingredientMap[i] = lookup.getOrDefault(var3.charAt(i), -1); + } + + recipes.add(new CraftingRecipe(width, height, ingredientMap, resultItem)); + } + + public static Item getResult(final Item[] craftingGrid) { + final int gridSize = (int) Math.sqrt(craftingGrid.length); + final int[] ingredientMap = new int[9]; + for (int x = 0; x < 3; ++x) { + for (int y = 0; y < 3; ++y) { + int ingredient = -1; + if (x < gridSize && y < gridSize) { + final Item item = craftingGrid[x + y * gridSize]; + if (item != null) { + ingredient = item.identifier(); + } + } + ingredientMap[x + y * 3] = ingredient; + } + } + + return getResult(ingredientMap); + } + + public static Item getResult(final int[] ingredientMap) { + for (CraftingRecipe recipe : recipes) { + if (recipe.matches(ingredientMap)) { + return recipe.createResult(); + } + } + + return null; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocolb1_0_1_1_1toa1_2_3_5_1_2_6/model/CraftingRecipe.java b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocolb1_0_1_1_1toa1_2_3_5_1_2_6/model/CraftingRecipe.java new file mode 100644 index 0000000..64c1dcf --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocolb1_0_1_1_1toa1_2_3_5_1_2_6/model/CraftingRecipe.java @@ -0,0 +1,65 @@ +package net.raphimc.vialegacy.protocols.alpha.protocolb1_0_1_1_1toa1_2_3_5_1_2_6.model; + +import com.viaversion.viaversion.api.minecraft.item.DataItem; +import com.viaversion.viaversion.api.minecraft.item.Item; + +public class CraftingRecipe { + + private final int width; + private final int height; + private final int[] ingredientMap; + private final Item resultItem; + + public CraftingRecipe(final int width, final int height, final int[] ingredientMap, final Item resultItem) { + this.width = width; + this.height = height; + this.ingredientMap = ingredientMap; + this.resultItem = resultItem; + } + + public boolean matches(final int[] ingredientMap) { + for (int x = 0; x <= 3 - this.width; x++) { + for (int y = 0; y <= 3 - this.height; y++) { + if (this.matches(ingredientMap, x, y, true)) { + return true; + } else if (this.matches(ingredientMap, x, y, false)) { + return true; + } + } + } + + return false; + } + + private boolean matches(final int[] ingredientMap, final int x, final int y, final boolean b) { + for (int xx = 0; xx < 3; xx++) { + for (int yy = 0; yy < 3; yy++) { + final int rx = xx - x; + final int ry = yy - y; + int var9 = -1; + if (rx >= 0 && ry >= 0 && rx < this.width && ry < this.height) { + if (b) { + var9 = this.ingredientMap[this.width - rx - 1 + ry * this.width]; + } else { + var9 = this.ingredientMap[rx + ry * this.width]; + } + } + + if (ingredientMap[xx + yy * 3] != var9) { + return false; + } + } + } + + return true; + } + + public Item createResult() { + return new DataItem(this.resultItem); + } + + public int getRecipeSize() { + return this.width * this.height; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocolb1_0_1_1_1toa1_2_3_5_1_2_6/providers/AlphaInventoryProvider.java b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocolb1_0_1_1_1toa1_2_3_5_1_2_6/providers/AlphaInventoryProvider.java new file mode 100644 index 0000000..7703a2e --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocolb1_0_1_1_1toa1_2_3_5_1_2_6/providers/AlphaInventoryProvider.java @@ -0,0 +1,28 @@ +package net.raphimc.vialegacy.protocols.alpha.protocolb1_0_1_1_1toa1_2_3_5_1_2_6.providers; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.minecraft.item.Item; +import com.viaversion.viaversion.api.platform.providers.Provider; +import net.raphimc.vialegacy.protocols.alpha.protocolb1_0_1_1_1toa1_2_3_5_1_2_6.storage.InventoryStorage; + +public abstract class AlphaInventoryProvider implements Provider { + + public abstract boolean usesInventoryTracker(); + + public Item getHandItem(final UserConnection user) { + final InventoryStorage inventoryStorage = user.get(InventoryStorage.class); + final Item[] inventory = this.getMainInventoryItems(user); + return inventory[inventoryStorage.selectedHotbarSlot]; + } + + public abstract Item[] getMainInventoryItems(final UserConnection user); + + public abstract Item[] getCraftingInventoryItems(final UserConnection user); + + public abstract Item[] getArmorInventoryItems(final UserConnection user); + + public abstract Item[] getContainerItems(final UserConnection user); + + public abstract void addToInventory(final UserConnection user, final Item item); + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocolb1_0_1_1_1toa1_2_3_5_1_2_6/providers/NoOpAlphaInventoryProvider.java b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocolb1_0_1_1_1toa1_2_3_5_1_2_6/providers/NoOpAlphaInventoryProvider.java new file mode 100644 index 0000000..a0a350c --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocolb1_0_1_1_1toa1_2_3_5_1_2_6/providers/NoOpAlphaInventoryProvider.java @@ -0,0 +1,39 @@ +package net.raphimc.vialegacy.protocols.alpha.protocolb1_0_1_1_1toa1_2_3_5_1_2_6.providers; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.minecraft.item.Item; +import net.raphimc.vialegacy.protocols.alpha.protocolb1_0_1_1_1toa1_2_3_5_1_2_6.storage.InventoryStorage; + +public class NoOpAlphaInventoryProvider extends AlphaInventoryProvider { + + @Override + public boolean usesInventoryTracker() { + return false; + } + + @Override + public Item[] getMainInventoryItems(UserConnection user) { + return new Item[36]; + } + + @Override + public Item[] getCraftingInventoryItems(UserConnection user) { + return new Item[4]; + } + + @Override + public Item[] getArmorInventoryItems(UserConnection user) { + return new Item[4]; + } + + @Override + public Item[] getContainerItems(UserConnection user) { + final InventoryStorage inventoryStorage = user.get(InventoryStorage.class); + return inventoryStorage.containers.get(inventoryStorage.openContainerPos); + } + + @Override + public void addToInventory(UserConnection user, Item item) { + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocolb1_0_1_1_1toa1_2_3_5_1_2_6/providers/TrackingAlphaInventoryProvider.java b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocolb1_0_1_1_1toa1_2_3_5_1_2_6/providers/TrackingAlphaInventoryProvider.java new file mode 100644 index 0000000..a620a74 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocolb1_0_1_1_1toa1_2_3_5_1_2_6/providers/TrackingAlphaInventoryProvider.java @@ -0,0 +1,41 @@ +package net.raphimc.vialegacy.protocols.alpha.protocolb1_0_1_1_1toa1_2_3_5_1_2_6.providers; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.minecraft.item.Item; +import net.raphimc.vialegacy.protocols.alpha.protocolb1_0_1_1_1toa1_2_3_5_1_2_6.storage.AlphaInventoryTracker; + +import static net.raphimc.vialegacy.protocols.alpha.protocolb1_0_1_1_1toa1_2_3_5_1_2_6.Protocolb1_0_1_1_1toa1_2_3_5_1_2_6.copyItems; + +public class TrackingAlphaInventoryProvider extends AlphaInventoryProvider { + + @Override + public boolean usesInventoryTracker() { + return true; + } + + @Override + public Item[] getMainInventoryItems(UserConnection user) { + return copyItems(user.get(AlphaInventoryTracker.class).getMainInventory()); + } + + @Override + public Item[] getCraftingInventoryItems(UserConnection user) { + return copyItems(user.get(AlphaInventoryTracker.class).getCraftingInventory()); + } + + @Override + public Item[] getArmorInventoryItems(UserConnection user) { + return copyItems(user.get(AlphaInventoryTracker.class).getArmorInventory()); + } + + @Override + public Item[] getContainerItems(UserConnection user) { + return copyItems(user.get(AlphaInventoryTracker.class).getOpenContainerItems()); + } + + @Override + public void addToInventory(UserConnection user, Item item) { + user.get(AlphaInventoryTracker.class).addItem(item); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocolb1_0_1_1_1toa1_2_3_5_1_2_6/storage/AlphaInventoryTracker.java b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocolb1_0_1_1_1toa1_2_3_5_1_2_6/storage/AlphaInventoryTracker.java new file mode 100644 index 0000000..12586ca --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocolb1_0_1_1_1toa1_2_3_5_1_2_6/storage/AlphaInventoryTracker.java @@ -0,0 +1,443 @@ +package net.raphimc.vialegacy.protocols.alpha.protocolb1_0_1_1_1toa1_2_3_5_1_2_6.storage; + +import com.viaversion.viaversion.api.connection.StoredObject; +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.minecraft.Position; +import com.viaversion.viaversion.api.minecraft.item.DataItem; +import com.viaversion.viaversion.api.minecraft.item.Item; +import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; +import com.viaversion.viaversion.api.type.Type; +import net.raphimc.vialegacy.api.*; +import net.raphimc.vialegacy.protocols.alpha.protocolb1_0_1_1_1toa1_2_3_5_1_2_6.Protocolb1_0_1_1_1toa1_2_3_5_1_2_6; +import net.raphimc.vialegacy.protocols.alpha.protocolb1_0_1_1_1toa1_2_3_5_1_2_6.data.AlphaItems; +import net.raphimc.vialegacy.protocols.alpha.protocolb1_0_1_1_1toa1_2_3_5_1_2_6.data.CraftingManager; +import net.raphimc.vialegacy.protocols.beta.protocolb1_2_0_2tob1_1_2.ClientboundPacketsb1_1; +import net.raphimc.vialegacy.protocols.beta.protocolb1_2_0_2tob1_1_2.types.Typesb1_1; +import net.raphimc.vialegacy.protocols.classic.protocolc0_28_30toc0_28_30cpe.Protocolc0_30toc0_30cpe; +import net.raphimc.vialegacy.protocols.release.protocol1_4_4_5to1_4_2.types.Types1_4_2; +import net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.storage.ChunkTracker; +import net.raphimc.vialegacy.util.BlockFaceUtils; + +import java.util.Arrays; + +import static net.raphimc.vialegacy.protocols.alpha.protocolb1_0_1_1_1toa1_2_3_5_1_2_6.Protocolb1_0_1_1_1toa1_2_3_5_1_2_6.*; + +public class AlphaInventoryTracker extends StoredObject { + + private boolean creativeMode; + + private Item[] mainInventory = null; + private Item[] craftingInventory = null; + private Item[] armorInventory = null; + + private Item[] openContainerItems = null; + private Item cursorItem = null; + + private int openWindowType = -1; + + final InventoryStorage inventoryStorage; + + public AlphaInventoryTracker(UserConnection user) { + super(user); + this.inventoryStorage = user.get(InventoryStorage.class); + this.onRespawn(); + } + + public void onWindowOpen(final int windowType, final int containerSlots) { + this.openWindowType = windowType; + this.openContainerItems = new Item[containerSlots]; + } + + public void onWindowClose() throws Exception { + if (this.openWindowType == 1) { // crafting table + for (int i = 1; i <= 9; i++) { + final Item item = this.openContainerItems[i]; + if (item == null) continue; + dropItem(this.getUser(), item, false); + this.openContainerItems[i] = null; + } + } + for (int i = 0; i < 4; i++) { + final Item item = this.craftingInventory[i]; + if (item == null) continue; + dropItem(this.getUser(), item, false); + this.craftingInventory[i] = null; + } + + if (this.cursorItem != null) { + dropItem(this.getUser(), this.cursorItem, false); + this.cursorItem = null; + } + this.openWindowType = -1; + + this.updatePlayerInventory(); + this.updateCursorItem(); + } + + public void onWindowClick(final byte windowId, final short slot, final byte button, final short action, final Item item) throws Exception { + final boolean leftClick = button != 1; + + if (slot == -999) { + if (this.cursorItem != null) { + if (leftClick) { + dropItem(this.getUser(), this.cursorItem, false); + this.cursorItem = null; + } else { + dropItem(this.getUser(), this.splitStack(this.cursorItem, 1), false); + } + } + } else { + Item[] slots = null; + boolean slotTakesItems = true; + int slotStackLimit = 64; + boolean isCraftingResultSlot = false; + switch (windowId) { + case 0: + slots = new Item[45]; + System.arraycopy(this.mainInventory, 0, slots, 36, 9); + System.arraycopy(this.mainInventory, 9, slots, 9, 36 - 9); + System.arraycopy(this.craftingInventory, 0, slots, 1, 4); + System.arraycopy(reverseArray(this.armorInventory), 0, slots, 5, 4); + isCraftingResultSlot = slot == 0; // crafting result slot + slotTakesItems = !isCraftingResultSlot; + slotStackLimit = slot >= 5 && slot <= 8 ? 1 : 64; // armor slots + if (isCraftingResultSlot) { + slots[0] = CraftingManager.getResult(this.craftingInventory); + } + break; + case InventoryStorage.WORKBENCH_WID: + slots = new Item[46]; + System.arraycopy(this.openContainerItems, 0, slots, 0, 10); + System.arraycopy(this.mainInventory, 0, slots, 37, 9); + System.arraycopy(this.mainInventory, 9, slots, 10, 36 - 9); + isCraftingResultSlot = slot == 0; // crafting result slot + slotTakesItems = !isCraftingResultSlot; + if (isCraftingResultSlot) { + final Item[] craftingGrid = Arrays.copyOfRange(this.openContainerItems, 1, 10); + slots[0] = CraftingManager.getResult(craftingGrid); + } + break; + case InventoryStorage.FURNACE_WID: + slots = new Item[39]; + System.arraycopy(this.openContainerItems, 0, slots, 0, 3); + System.arraycopy(this.mainInventory, 0, slots, 30, 9); + System.arraycopy(this.mainInventory, 9, slots, 3, 36 - 9); + break; + case InventoryStorage.CHEST_WID: + slots = new Item[63]; + System.arraycopy(this.openContainerItems, 0, slots, 0, 3 * 9); + System.arraycopy(this.mainInventory, 0, slots, 54, 9); + System.arraycopy(this.mainInventory, 9, slots, 27, 36 - 9); + break; + } + + if (slots != null) { + final Item itm = slots[slot]; + if (itm == null) { // click empty slot + if (this.cursorItem != null && slotTakesItems) { // with item on cursor + int amount = leftClick ? this.cursorItem.amount() : 1; + if (amount > slotStackLimit) amount = slotStackLimit; + slots[slot] = splitStack(this.cursorItem, amount); + } + } else if (this.cursorItem == null) { // click filled slot with no item on cursor + int amount = leftClick ? itm.amount() : (itm.amount() + 1) / 2; + if (isCraftingResultSlot) amount = itm.amount(); // crafting result slot does not support taking half the stack + this.cursorItem = splitStack(itm, amount); + if (isCraftingResultSlot) this.onCraftingResultPickup(windowId, slots); + } else if (slotTakesItems) { // click filled slot with item on cursor + if (itm.identifier() != this.cursorItem.identifier()) { // items are different + if (this.cursorItem.amount() <= slotStackLimit) { + slots[slot] = this.cursorItem; + this.cursorItem = itm; + } + } else { // items are the same + int amount = leftClick ? this.cursorItem.amount() : 1; + if (amount > slotStackLimit - itm.amount()) amount = slotStackLimit - itm.amount(); + if (amount > AlphaItems.getMaxStackSize(this.cursorItem.identifier()) - itm.amount()) { + amount = AlphaItems.getMaxStackSize(this.cursorItem.identifier()) - itm.amount(); + } + this.cursorItem.setAmount(this.cursorItem.amount() - amount); + itm.setAmount(itm.amount() + amount); + } + } else if (itm.identifier() == this.cursorItem.identifier() && AlphaItems.getMaxStackSize(this.cursorItem.identifier()) > 1) { + int amount = itm.amount(); + if (amount > 0 && amount + this.cursorItem.amount() <= AlphaItems.getMaxStackSize(this.cursorItem.identifier())) { + itm.setAmount(itm.amount() - amount); + this.cursorItem.setAmount(this.cursorItem.amount() + amount); + if (isCraftingResultSlot) this.onCraftingResultPickup(windowId, slots); + } + } + + for (int i = 0; i < slots.length; i++) { + final Item slotItem = slots[i]; + if (slotItem != null && slotItem.amount() == 0) slots[i] = null; + } + + switch (windowId) { + case 0: + System.arraycopy(slots, 36, this.mainInventory, 0, 9); + System.arraycopy(slots, 9, this.mainInventory, 9, 36 - 9); + System.arraycopy(slots, 1, this.craftingInventory, 0, 4); + System.arraycopy(slots, 5, this.armorInventory, 0, 4); + this.armorInventory = reverseArray(this.armorInventory); + break; + case InventoryStorage.WORKBENCH_WID: + System.arraycopy(slots, 0, this.openContainerItems, 0, 10); + System.arraycopy(slots, 37, this.mainInventory, 0, 9); + System.arraycopy(slots, 10, this.mainInventory, 9, 36 - 9); + break; + case InventoryStorage.FURNACE_WID: + System.arraycopy(slots, 0, this.openContainerItems, 0, 3); + System.arraycopy(slots, 30, this.mainInventory, 0, 9); + System.arraycopy(slots, 3, this.mainInventory, 9, 36 - 9); + break; + case InventoryStorage.CHEST_WID: + System.arraycopy(slots, 0, this.openContainerItems, 0, 3 * 9); + System.arraycopy(slots, 54, this.mainInventory, 0, 9); + System.arraycopy(slots, 27, this.mainInventory, 9, 36 - 9); + break; + } + this.updateInventory(windowId, slots); + + boolean updateCraftResultSlot = false; + switch (windowId) { + case 0: + updateCraftResultSlot = !this.isEmpty(this.craftingInventory); + if (updateCraftResultSlot) { + slots[0] = CraftingManager.getResult(this.craftingInventory); + } + break; + case InventoryStorage.WORKBENCH_WID: + final Item[] craftingGrid = Arrays.copyOfRange(this.openContainerItems, 1, 10); + updateCraftResultSlot = !this.isEmpty(craftingGrid); + if (updateCraftResultSlot) { + slots[0] = CraftingManager.getResult(craftingGrid); + } + break; + } + + if (updateCraftResultSlot) this.updateInventorySlot(windowId, (short) 0, slots[0]); + } else { + this.updatePlayerInventory(); + } + } + + if (this.cursorItem != null && this.cursorItem.amount() == 0) { + this.cursorItem = null; + } + this.updateCursorItem(); + } + + public void onBlockPlace(final Position position, final short direction) { + if (this.creativeMode) return; + + final Item handItem = this.mainInventory[this.inventoryStorage.selectedHotbarSlot]; + if (handItem == null) return; + + if (direction == 255) { // interact + AlphaItems.doInteract(handItem); + } else { // place + final IdAndData placedAgainst = this.getUser().get(ChunkTracker.class).getBlockNotNull(position); + final IdAndData targetBlock = this.getUser().get(ChunkTracker.class).getBlockNotNull(position.getRelative(BlockFaceUtils.getFace(direction))); + AlphaItems.doPlace(handItem, direction, placedAgainst); + + if (handItem.identifier() < 256 || handItem.identifier() == ItemList1_6.reed.itemID) { // block item + if (targetBlock.id == 0 || targetBlock.id == BlockList1_6.waterStill.blockID || targetBlock.id == BlockList1_6.waterMoving.blockID || targetBlock.id == BlockList1_6.lavaStill.blockID || targetBlock.id == BlockList1_6.lavaMoving.blockID || targetBlock.id == BlockList1_6.fire.blockID || targetBlock.id == BlockList1_6.snow.blockID) { + handItem.setAmount(handItem.amount() - 1); + } + } else if (handItem.identifier() == ItemList1_6.sign.itemID) { + if (direction != 0 && targetBlock.id == 0) handItem.setAmount(handItem.amount() - 1); + } else if (handItem.identifier() == ItemList1_6.redstone.itemID) { + if (targetBlock.id == 0) handItem.setAmount(handItem.amount() - 1); + } + } + + if (handItem.amount() == 0) { + this.mainInventory[this.inventoryStorage.selectedHotbarSlot] = null; + } + this.updatePlayerInventorySlot(this.inventoryStorage.selectedHotbarSlot); + } + + public void onHandItemDrop() { + final Item handItem = this.mainInventory[this.inventoryStorage.selectedHotbarSlot]; + if (handItem == null) return; + + handItem.setAmount(handItem.amount() - 1); + if (handItem.amount() == 0) { + this.mainInventory[this.inventoryStorage.selectedHotbarSlot] = null; + } + this.updatePlayerInventorySlot(this.inventoryStorage.selectedHotbarSlot); + } + + public void onRespawn() { + this.mainInventory = new Item[37]; + this.craftingInventory = new Item[4]; + this.armorInventory = new Item[4]; + this.openContainerItems = new Item[0]; + this.cursorItem = null; + this.openWindowType = -1; + } + + public void addItem(final Item item) { + if (item == null) return; + if (item.amount() == 0) return; + + if (item.data() == 0) { // item is stackable, try to merge it with stacks of same type + int slot = -1; + for (int i = 0; i < this.mainInventory.length; i++) { + if (this.mainInventory[i] != null && this.mainInventory[i].identifier() == item.identifier() && this.mainInventory[i].amount() < AlphaItems.getMaxStackSize(this.mainInventory[i].identifier())) { + slot = i; + break; + } + } + + if (slot != -1) { + int amount = item.amount(); + if (amount > AlphaItems.getMaxStackSize(this.mainInventory[slot].identifier()) - this.mainInventory[slot].amount()) { + amount = AlphaItems.getMaxStackSize(this.mainInventory[slot].identifier()) - this.mainInventory[slot].amount(); + } + + item.setAmount(item.amount() - amount); + this.mainInventory[slot].setAmount(this.mainInventory[slot].amount() + amount); + this.updatePlayerInventorySlot((short) slot); + } + } + + if (item.amount() != 0) { // if the item couldn't be fully merged with another stack or is unstackable + int slot = -1; + for (int i = 0; i < this.mainInventory.length; i++) { + if (this.mainInventory[i] == null) { + slot = i; + break; + } + } + + if (slot != -1) { + this.mainInventory[slot] = item; + this.updatePlayerInventorySlot((short) slot); + } + } + } + + // Add support for cheating items and classic block placement + public void handleCreativeSetSlot(short slot, Item item) throws Exception { + if (!this.getUser().getProtocolInfo().getPipeline().contains(Protocolc0_30toc0_30cpe.class)) item = fixItem(item); + if (slot <= 0) return; + + if (slot <= 4) { + slot--; // remove result slot + this.craftingInventory[slot] = item; + } else if (slot <= 8) { + slot -= 5; + slot = (short) (3 - slot); // reverse array + this.armorInventory[slot] = item; + } else if (slot <= 44) { + if (slot >= 36) slot -= 36; + this.mainInventory[slot] = item; + } + } + + public void setCreativeMode(final boolean creativeMode) { + this.creativeMode = creativeMode; + } + + public void setMainInventory(final Item[] items) { + this.mainInventory = items; + } + + public void setCraftingInventory(final Item[] items) { + this.craftingInventory = items; + } + + public void setArmorInventory(final Item[] items) { + this.armorInventory = items; + } + + public void setOpenContainerItems(final Item[] items) { + this.openContainerItems = items; + } + + public Item[] getMainInventory() { + return this.mainInventory; + } + + public Item[] getCraftingInventory() { + return this.craftingInventory; + } + + public Item[] getArmorInventory() { + return this.armorInventory; + } + + public Item[] getOpenContainerItems() { + return this.openContainerItems; + } + + public Item getCursorItem() { + return this.cursorItem; + } + + private void updatePlayerInventorySlot(final short slot) { + this.updateInventorySlot((byte) 0, slot >= 0 && slot < 9 ? (short) (slot + 36) : slot, this.mainInventory[slot]); + } + + private void updateCursorItem() { + this.updateInventorySlot((byte) -1, (short) 0, this.cursorItem); + } + + private void updateInventorySlot(final byte windowId, final short slot, final Item item) { + try { + final PacketWrapper setSlot = PacketWrapper.create(ClientboundPacketsb1_1.SET_SLOT, this.getUser()); + setSlot.write(Type.BYTE, windowId); // window id + setSlot.write(Type.SHORT, slot); // slot + setSlot.write(Typesb1_1.NBTLESS_ITEM, copyItem(item)); // item + setSlot.send(Protocolb1_0_1_1_1toa1_2_3_5_1_2_6.class); + } catch (Throwable e) { + e.printStackTrace(); + } + } + + private void updatePlayerInventory() { + final Item[] items = new Item[45]; + System.arraycopy(this.mainInventory, 0, items, 36, 9); + System.arraycopy(this.mainInventory, 9, items, 9, 36 - 9); + System.arraycopy(this.craftingInventory, 0, items, 1, 4); + System.arraycopy(reverseArray(this.armorInventory), 0, items, 5, 4); + + this.updateInventory((byte) 0, items); + } + + private void updateInventory(final byte windowId, final Item[] items) { + try { + final PacketWrapper windowItems = PacketWrapper.create(ClientboundPacketsb1_1.WINDOW_ITEMS, this.getUser()); + windowItems.write(Type.BYTE, windowId); // window id + windowItems.write(Types1_4_2.NBTLESS_ITEM_ARRAY, copyItems(items)); // items + windowItems.send(Protocolb1_0_1_1_1toa1_2_3_5_1_2_6.class); + } catch (Throwable e) { + e.printStackTrace(); + } + } + + private Item splitStack(final Item item, final int size) { + item.setAmount(item.amount() - size); + final Item newItem = new DataItem(item); + newItem.setAmount(size); + return newItem; + } + + private void onCraftingResultPickup(final byte windowId, final Item[] slots) { + for (int i = 1; i < 1 + (windowId == 0 ? 4 : 9); i++) { + final Item item = slots[i]; + if (item == null) continue; + item.setAmount(item.amount() - 1); + } + } + + private boolean isEmpty(final Item[] items) { + for (Item item : items) { + if (item != null && item.amount() != 0) return false; + } + return true; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocolb1_0_1_1_1toa1_2_3_5_1_2_6/storage/InventoryStorage.java b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocolb1_0_1_1_1toa1_2_3_5_1_2_6/storage/InventoryStorage.java new file mode 100644 index 0000000..23197c5 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocolb1_0_1_1_1toa1_2_3_5_1_2_6/storage/InventoryStorage.java @@ -0,0 +1,52 @@ +package net.raphimc.vialegacy.protocols.alpha.protocolb1_0_1_1_1toa1_2_3_5_1_2_6.storage; + +import com.viaversion.viaversion.api.connection.StoredObject; +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.minecraft.Position; +import com.viaversion.viaversion.api.minecraft.item.Item; + +import java.util.*; + +public class InventoryStorage extends StoredObject { + + public static final byte WORKBENCH_WID = 33; + public static final byte FURNACE_WID = 44; + public static final byte CHEST_WID = 55; + + public Item handItem = null; + public Item[] mainInventory = null; + public Item[] craftingInventory = null; + public Item[] armorInventory = null; + + public final Map containers = new HashMap<>(); + + public Position openContainerPos = null; + public short selectedHotbarSlot = 0; + + public InventoryStorage(UserConnection user) { + super(user); + this.resetPlayerInventory(); + } + + public void unload(final int chunkX, final int chunkZ) { + final Iterator it = this.containers.keySet().iterator(); + while (it.hasNext()) { + final Position entry = it.next(); + final int x = entry.x() >> 4; + final int z = entry.z() >> 4; + + if (chunkX == x && chunkZ == z) { + it.remove(); + } + } + } + + public void resetPlayerInventory() { + // alpha keeps handItem value after respawn + this.mainInventory = new Item[37]; + this.craftingInventory = new Item[4]; + this.armorInventory = new Item[4]; + this.openContainerPos = null; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocolb1_0_1_1_1toa1_2_3_5_1_2_6/task/AlphaInventoryUpdateTask.java b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocolb1_0_1_1_1toa1_2_3_5_1_2_6/task/AlphaInventoryUpdateTask.java new file mode 100644 index 0000000..369bc1d --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/alpha/protocolb1_0_1_1_1toa1_2_3_5_1_2_6/task/AlphaInventoryUpdateTask.java @@ -0,0 +1,77 @@ +package net.raphimc.vialegacy.protocols.alpha.protocolb1_0_1_1_1toa1_2_3_5_1_2_6.task; + +import com.viaversion.viaversion.api.Via; +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.minecraft.item.Item; +import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; +import com.viaversion.viaversion.api.type.Type; +import net.raphimc.vialegacy.ViaLegacy; +import net.raphimc.vialegacy.protocols.alpha.protocolb1_0_1_1_1toa1_2_3_5_1_2_6.Protocolb1_0_1_1_1toa1_2_3_5_1_2_6; +import net.raphimc.vialegacy.protocols.alpha.protocolb1_0_1_1_1toa1_2_3_5_1_2_6.ServerboundPacketsa1_2_6; +import net.raphimc.vialegacy.protocols.alpha.protocolb1_0_1_1_1toa1_2_3_5_1_2_6.providers.AlphaInventoryProvider; +import net.raphimc.vialegacy.protocols.alpha.protocolb1_0_1_1_1toa1_2_3_5_1_2_6.storage.InventoryStorage; +import net.raphimc.vialegacy.protocols.beta.protocolb1_2_0_2tob1_1_2.ServerboundPacketsb1_1; +import net.raphimc.vialegacy.protocols.release.protocol1_4_4_5to1_4_2.types.Types1_4_2; + +import java.util.Arrays; +import java.util.Objects; +import java.util.logging.Level; + +import static net.raphimc.vialegacy.protocols.alpha.protocolb1_0_1_1_1toa1_2_3_5_1_2_6.Protocolb1_0_1_1_1toa1_2_3_5_1_2_6.*; + +public class AlphaInventoryUpdateTask implements Runnable { + + @Override + public void run() { + for (UserConnection info : Via.getManager().getConnectionManager().getConnections()) { + final InventoryStorage inventoryStorage = info.get(InventoryStorage.class); + if (inventoryStorage == null) continue; + + try { + final Item[] mainInventory = fixItems(Via.getManager().getProviders().get(AlphaInventoryProvider.class).getMainInventoryItems(info)); + final Item[] craftingInventory = fixItems(Via.getManager().getProviders().get(AlphaInventoryProvider.class).getCraftingInventoryItems(info)); + final Item[] armorInventory = fixItems(Via.getManager().getProviders().get(AlphaInventoryProvider.class).getArmorInventoryItems(info)); + final Item handItem = fixItem(Via.getManager().getProviders().get(AlphaInventoryProvider.class).getHandItem(info)); + + if (!Objects.equals(handItem, inventoryStorage.handItem)) { + final PacketWrapper heldItemChange = PacketWrapper.create(ServerboundPacketsb1_1.HELD_ITEM_CHANGE, info); + heldItemChange.write(Type.SHORT, inventoryStorage.selectedHotbarSlot); // slot + heldItemChange.sendToServer(Protocolb1_0_1_1_1toa1_2_3_5_1_2_6.class, false); + } + + final Item[] mergedMainInventory = copyItems(inventoryStorage.mainInventory); + final Item[] mergedCraftingInventory = copyItems(inventoryStorage.craftingInventory); + final Item[] mergedArmorInventory = copyItems(inventoryStorage.armorInventory); + System.arraycopy(mainInventory, 0, mergedMainInventory, 0, mainInventory.length); + System.arraycopy(craftingInventory, 0, mergedCraftingInventory, 0, craftingInventory.length); + System.arraycopy(armorInventory, 0, mergedArmorInventory, 0, armorInventory.length); + + boolean hasChanged = !Arrays.equals(mergedMainInventory, inventoryStorage.mainInventory) || !Arrays.equals(mergedCraftingInventory, inventoryStorage.craftingInventory) || !Arrays.equals(mergedArmorInventory, inventoryStorage.armorInventory); + if (!hasChanged) continue; + + inventoryStorage.mainInventory = copyItems(mergedMainInventory); + inventoryStorage.craftingInventory = copyItems(mergedCraftingInventory); + inventoryStorage.armorInventory = copyItems(mergedArmorInventory); + + final PacketWrapper mainContent = PacketWrapper.create(ServerboundPacketsa1_2_6.PLAYER_INVENTORY, info); + mainContent.write(Type.INT, -1); // type + mainContent.write(Types1_4_2.NBTLESS_ITEM_ARRAY, mergedMainInventory); // items + + final PacketWrapper craftingContent = PacketWrapper.create(ServerboundPacketsa1_2_6.PLAYER_INVENTORY, info); + craftingContent.write(Type.INT, -2); // type + craftingContent.write(Types1_4_2.NBTLESS_ITEM_ARRAY, mergedCraftingInventory); // items + + final PacketWrapper armorContent = PacketWrapper.create(ServerboundPacketsa1_2_6.PLAYER_INVENTORY, info); + armorContent.write(Type.INT, -3); // type + armorContent.write(Types1_4_2.NBTLESS_ITEM_ARRAY, mergedArmorInventory); // items + + mainContent.sendToServer(Protocolb1_0_1_1_1toa1_2_3_5_1_2_6.class); + craftingContent.sendToServer(Protocolb1_0_1_1_1toa1_2_3_5_1_2_6.class); + armorContent.sendToServer(Protocolb1_0_1_1_1toa1_2_3_5_1_2_6.class); + } catch (Throwable e) { + ViaLegacy.getPlatform().getLogger().log(Level.WARNING, "Error sending inventory update packets", e); + } + } + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/beta/protocol1_0_0_1tob1_8_0_1/ClientboundPacketsb1_8.java b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocol1_0_0_1tob1_8_0_1/ClientboundPacketsb1_8.java new file mode 100644 index 0000000..f9f59f3 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocol1_0_0_1tob1_8_0_1/ClientboundPacketsb1_8.java @@ -0,0 +1,390 @@ +package net.raphimc.vialegacy.protocols.beta.protocol1_0_0_1tob1_8_0_1; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType; +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.util.PreNettyPacketType; + +import java.util.function.BiConsumer; + +import static net.raphimc.vialegacy.util.PreNettyTypes.*; + +public enum ClientboundPacketsb1_8 implements ClientboundPacketType, PreNettyPacketType { + + KEEP_ALIVE(0, (user, buf) -> { + buf.readInt(); + }), + JOIN_GAME(1, (user, buf) -> { + buf.readInt(); + readString(buf); + buf.readLong(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + HANDSHAKE(2, (user, buf) -> { + readString(buf); + }), + CHAT_MESSAGE(3, (user, buf) -> { + readString(buf); + }), + TIME_UPDATE(4, (user, buf) -> { + buf.readLong(); + }), + ENTITY_EQUIPMENT(5, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readShort(); + buf.readShort(); + }), + SPAWN_POSITION(6, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + UPDATE_HEALTH(8, (user, buf) -> { + buf.readShort(); + buf.readShort(); + buf.readFloat(); + }), + RESPAWN(9, (user, buf) -> { + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + buf.readLong(); + }), + PLAYER_POSITION_ONLY_ONGROUND(10, (user, buf) -> { + buf.readUnsignedByte(); + }), + PLAYER_POSITION_ONLY_POSITION(11, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION_ONLY_LOOK(12, (user, buf) -> { + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION(13, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + USE_BED(17, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readByte(); + buf.readInt(); + }), + ENTITY_ANIMATION(18, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + SPAWN_PLAYER(20, (user, buf) -> { + buf.readInt(); + readString(buf); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + }), + SPAWN_ITEM(21, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readByte(); + buf.readShort(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + COLLECT_ITEM(22, (user, buf) -> { + buf.readInt(); + buf.readInt(); + }), + SPAWN_ENTITY(23, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + int i = buf.readInt(); + if (i > 0) { + buf.readShort(); + buf.readShort(); + buf.readShort(); + } + }), + SPAWN_MOB(24, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + readEntityMetadatab1_5(buf); + }), + SPAWN_PAINTING(25, (user, buf) -> { + buf.readInt(); + readString(buf); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + SPAWN_EXPERIENCE_ORB(26, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readShort(); + }), + ENTITY_VELOCITY(28, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readShort(); + buf.readShort(); + }), + DESTROY_ENTITIES(29, (user, buf) -> { + buf.readInt(); + }), + ENTITY_MOVEMENT(30, (user, buf) -> { + buf.readInt(); + }), + ENTITY_POSITION(31, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_ROTATION(32, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_POSITION_AND_ROTATION(33, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_TELEPORT(34, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_STATUS(38, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + ATTACH_ENTITY(39, (user, buf) -> { + buf.readInt(); + buf.readInt(); + }), + ENTITY_METADATA(40, (user, buf) -> { + buf.readInt(); + readEntityMetadatab1_5(buf); + }), + ENTITY_EFFECT(41, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + }), + REMOVE_ENTITY_EFFECT(42, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + SET_EXPERIENCE(43, (user, buf) -> { + buf.readByte(); + buf.readByte(); + buf.readShort(); + }), + PRE_CHUNK(50, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readByte(); + }), + CHUNK_DATA(51, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + int x = buf.readInt(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + MULTI_BLOCK_CHANGE(52, (user, buf) -> { + buf.readInt(); + buf.readInt(); + short x = buf.readShort(); + for (int i = 0; i < x; i++) buf.readShort(); + for (int i = 0; i < x; i++) buf.readByte(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + BLOCK_CHANGE(53, (user, buf) -> { + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + buf.readUnsignedByte(); + }), + BLOCK_ACTION(54, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + buf.readUnsignedByte(); + buf.readUnsignedByte(); + }), + EXPLOSION(60, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + int x = buf.readInt(); + for (int i = 0; i < x; i++) { + buf.readByte(); + buf.readByte(); + buf.readByte(); + } + }), + EFFECT(61, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + }), + GAME_EVENT(70, (user, buf) -> { + buf.readByte(); + buf.readByte(); + }), + SPAWN_GLOBAL_ENTITY(71, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + OPEN_WINDOW(100, (user, buf) -> { + buf.readByte(); + buf.readByte(); + readString(buf); + buf.readByte(); + }), + CLOSE_WINDOW(101, (user, buf) -> { + buf.readByte(); + }), + SET_SLOT(103, (user, buf) -> { + buf.readByte(); + buf.readShort(); + readItemStackb1_2(buf); + }), + WINDOW_ITEMS(104, (user, buf) -> { + buf.readByte(); + int x = buf.readShort(); + for (int i = 0; i < x; i++) readItemStackb1_2(buf); + }), + WINDOW_PROPERTY(105, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readShort(); + }), + WINDOW_CONFIRMATION(106, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readByte(); + }), + CREATIVE_INVENTORY_ACTION(107, (user, buf) -> { + buf.readShort(); + buf.readShort(); + buf.readShort(); + buf.readShort(); + buf.readShort(); + }), + UPDATE_SIGN(130, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + readString(buf); + readString(buf); + readString(buf); + readString(buf); + }), + MAP_DATA(131, (user, buf) -> { + buf.readShort(); + buf.readShort(); + short x = buf.readUnsignedByte(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + STATISTICS(200, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + PLAYER_INFO(201, (user, buf) -> { + readString(buf); + buf.readByte(); + buf.readShort(); + }), + DISCONNECT(255, (user, buf) -> { + readString(buf); + }); + + private static final ClientboundPacketsb1_8[] REGISTRY = new ClientboundPacketsb1_8[256]; + + static { + for (ClientboundPacketsb1_8 packet : values()) { + REGISTRY[packet.id] = packet; + } + } + + public static ClientboundPacketsb1_8 getPacket(final int id) { + return REGISTRY[id]; + } + + private final int id; + private final BiConsumer packetReader; + + ClientboundPacketsb1_8(final int id, final BiConsumer packetReader) { + this.id = id; + this.packetReader = packetReader; + } + + @Override + public int getId() { + return this.id; + } + + @Override + public String getName() { + return name(); + } + + @Override + public BiConsumer getPacketReader() { + return this.packetReader; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/beta/protocol1_0_0_1tob1_8_0_1/Protocol1_0_0_1tob1_8_0_1.java b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocol1_0_0_1tob1_8_0_1/Protocol1_0_0_1tob1_8_0_1.java new file mode 100644 index 0000000..5ca6dfb --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocol1_0_0_1tob1_8_0_1/Protocol1_0_0_1tob1_8_0_1.java @@ -0,0 +1,90 @@ +package net.raphimc.vialegacy.protocols.beta.protocol1_0_0_1tob1_8_0_1; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.AbstractProtocol; +import com.viaversion.viaversion.api.protocol.remapper.PacketRemapper; +import com.viaversion.viaversion.api.type.Type; +import net.raphimc.vialegacy.protocols.beta.protocol1_0_0_1tob1_8_0_1.storage.PlayerAirTimeStorage; +import net.raphimc.vialegacy.protocols.beta.protocol1_0_0_1tob1_8_0_1.types.Typesb1_8_0_1; +import net.raphimc.vialegacy.protocols.release.protocol1_1to1_0_0_1.ClientboundPackets1_0; +import net.raphimc.vialegacy.protocols.release.protocol1_1to1_0_0_1.ServerboundPackets1_0; +import net.raphimc.vialegacy.protocols.release.protocol1_3_1_2to1_2_4_5.types.Types1_2_4; +import net.raphimc.vialegacy.protocols.release.protocol1_4_4_5to1_4_2.types.Types1_4_2; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.Types1_7_6; +import net.raphimc.vialegacy.util.PreNettySplitter; + +public class Protocol1_0_0_1tob1_8_0_1 extends AbstractProtocol { + + public Protocol1_0_0_1tob1_8_0_1() { + super(ClientboundPacketsb1_8.class, ClientboundPackets1_0.class, ServerboundPacketsb1_8.class, ServerboundPackets1_0.class); + } + + @Override + protected void registerPackets() { + this.registerClientbound(ClientboundPacketsb1_8.SET_EXPERIENCE, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + float experience = (float) wrapper.read(Type.BYTE); + final byte experienceLevel = wrapper.read(Type.BYTE); + final short experienceTotal = wrapper.read(Type.SHORT); + experience = (experience - 1.0f) / (10 * experienceLevel); + wrapper.write(Type.FLOAT, experience); // experience bar + wrapper.write(Type.SHORT, (short) experienceLevel); // level + wrapper.write(Type.SHORT, experienceTotal); // total experience + }); + } + }); + this.registerClientbound(ClientboundPacketsb1_8.SET_SLOT, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.BYTE); // window id + map(Type.SHORT); // slot + map(Types1_4_2.NBTLESS_ITEM, Types1_2_4.COMPRESSED_NBT_ITEM); // item + } + }); + this.registerClientbound(ClientboundPacketsb1_8.WINDOW_ITEMS, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.BYTE); // window id + map(Types1_4_2.NBTLESS_ITEM_ARRAY, Types1_2_4.COMPRESSED_NBT_ITEM_ARRAY); // item + } + }); + + this.registerServerbound(ServerboundPackets1_0.PLAYER_BLOCK_PLACEMENT, new PacketRemapper() { + @Override + public void registerMap() { + map(Types1_7_6.POSITION_UBYTE); // position + map(Type.UNSIGNED_BYTE); // direction + map(Types1_2_4.COMPRESSED_NBT_ITEM, Types1_4_2.NBTLESS_ITEM); + } + }); + this.registerServerbound(ServerboundPackets1_0.CLICK_WINDOW, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.BYTE); // window id + map(Type.SHORT); // slot + map(Type.BYTE); // button + map(Type.SHORT); // action + map(Type.BYTE); // mode + map(Types1_2_4.COMPRESSED_NBT_ITEM, Types1_4_2.NBTLESS_ITEM); // item + } + }); + this.registerServerbound(ServerboundPackets1_0.CREATIVE_INVENTORY_ACTION, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.SHORT); // slot + map(Types1_2_4.COMPRESSED_NBT_ITEM, Typesb1_8_0_1.CREATIVE_ITEM); // item + } + }); + this.cancelServerbound(ServerboundPackets1_0.CLICK_WINDOW_BUTTON); + } + + @Override + public void init(UserConnection userConnection) { + userConnection.put(new PreNettySplitter(userConnection, Protocol1_0_0_1tob1_8_0_1.class, ClientboundPacketsb1_8::getPacket)); + + userConnection.put(new PlayerAirTimeStorage(userConnection)); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/beta/protocol1_0_0_1tob1_8_0_1/ServerboundPacketsb1_8.java b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocol1_0_0_1tob1_8_0_1/ServerboundPacketsb1_8.java new file mode 100644 index 0000000..ad564fa --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocol1_0_0_1tob1_8_0_1/ServerboundPacketsb1_8.java @@ -0,0 +1,176 @@ +package net.raphimc.vialegacy.protocols.beta.protocol1_0_0_1tob1_8_0_1; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.packet.ServerboundPacketType; +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.util.PreNettyPacketType; + +import java.util.function.BiConsumer; + +import static net.raphimc.vialegacy.util.PreNettyTypes.readItemStackb1_2; +import static net.raphimc.vialegacy.util.PreNettyTypes.readString; + +public enum ServerboundPacketsb1_8 implements ServerboundPacketType, PreNettyPacketType { + + KEEP_ALIVE(0, (user, buf) -> { + buf.readInt(); + }), + LOGIN(1, (user, buf) -> { + buf.readInt(); + readString(buf); + buf.readLong(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + HANDSHAKE(2, (user, buf) -> { + readString(buf); + }), + CHAT_MESSAGE(3, (user, buf) -> { + readString(buf); + }), + INTERACT_ENTITY(7, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readByte(); + }), + RESPAWN(9, (user, buf) -> { + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + buf.readLong(); + }), + PLAYER_MOVEMENT(10, (user, buf) -> { + buf.readUnsignedByte(); + }), + PLAYER_POSITION(11, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readUnsignedByte(); + }), + PLAYER_ROTATION(12, (user, buf) -> { + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION_AND_ROTATION(13, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_DIGGING(14, (user, buf) -> { + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + }), + PLAYER_BLOCK_PLACEMENT(15, (user, buf) -> { + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + readItemStackb1_2(buf); + }), + HELD_ITEM_CHANGE(16, (user, buf) -> { + buf.readShort(); + }), + ANIMATION(18, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + ENTITY_ACTION(19, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + POSITION(27, (user, buf) -> { + buf.readFloat(); + buf.readFloat(); + buf.readFloat(); + buf.readFloat(); + buf.readBoolean(); + buf.readBoolean(); + }), + CLOSE_WINDOW(101, (user, buf) -> { + buf.readByte(); + }), + CLICK_WINDOW(102, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readByte(); + buf.readShort(); + buf.readBoolean(); + readItemStackb1_2(buf); + }), + WINDOW_CONFIRMATION(106, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readByte(); + }), + CREATIVE_INVENTORY_ACTION(107, (user, buf) -> { + buf.readShort(); + buf.readShort(); + buf.readShort(); + buf.readShort(); + buf.readShort(); + }), + UPDATE_SIGN(130, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + readString(buf); + readString(buf); + readString(buf); + readString(buf); + }), + SERVER_PING(254, (user, buf) -> { + }), + DISCONNECT(255, (user, buf) -> { + readString(buf); + }); + + private static final ServerboundPacketsb1_8[] REGISTRY = new ServerboundPacketsb1_8[256]; + + static { + for (ServerboundPacketsb1_8 packet : values()) { + REGISTRY[packet.id] = packet; + } + } + + public static ServerboundPacketsb1_8 getPacket(final int id) { + return REGISTRY[id]; + } + + private final int id; + private final BiConsumer packetReader; + + ServerboundPacketsb1_8(final int id, final BiConsumer packetReader) { + this.id = id; + this.packetReader = packetReader; + } + + @Override + public int getId() { + return this.id; + } + + @Override + public String getName() { + return name(); + } + + @Override + public BiConsumer getPacketReader() { + return this.packetReader; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/beta/protocol1_0_0_1tob1_8_0_1/storage/PlayerAirTimeStorage.java b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocol1_0_0_1tob1_8_0_1/storage/PlayerAirTimeStorage.java new file mode 100644 index 0000000..9fe9129 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocol1_0_0_1tob1_8_0_1/storage/PlayerAirTimeStorage.java @@ -0,0 +1,16 @@ +package net.raphimc.vialegacy.protocols.beta.protocol1_0_0_1tob1_8_0_1.storage; + +import com.viaversion.viaversion.api.connection.StoredObject; +import com.viaversion.viaversion.api.connection.UserConnection; + +public class PlayerAirTimeStorage extends StoredObject { + + public final int MAX_AIR = 300; + public int air = MAX_AIR; + public boolean sentPacket = true; + + public PlayerAirTimeStorage(UserConnection user) { + super(user); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/beta/protocol1_0_0_1tob1_8_0_1/task/PlayerAirTimeUpdateTask.java b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocol1_0_0_1tob1_8_0_1/task/PlayerAirTimeUpdateTask.java new file mode 100644 index 0000000..3342d1a --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocol1_0_0_1tob1_8_0_1/task/PlayerAirTimeUpdateTask.java @@ -0,0 +1,59 @@ +package net.raphimc.vialegacy.protocols.beta.protocol1_0_0_1tob1_8_0_1.task; + +import com.google.common.collect.Lists; +import com.viaversion.viaversion.api.Via; +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.minecraft.metadata.Metadata; +import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; +import com.viaversion.viaversion.api.type.Type; +import net.raphimc.vialegacy.api.BlockList1_6; +import net.raphimc.vialegacy.api.IdAndData; +import net.raphimc.vialegacy.protocols.beta.protocol1_0_0_1tob1_8_0_1.Protocol1_0_0_1tob1_8_0_1; +import net.raphimc.vialegacy.protocols.beta.protocol1_0_0_1tob1_8_0_1.storage.PlayerAirTimeStorage; +import net.raphimc.vialegacy.protocols.release.protocol1_1to1_0_0_1.ClientboundPackets1_0; +import net.raphimc.vialegacy.protocols.release.protocol1_4_2to1_3_1_2.types.MetaType1_3_1; +import net.raphimc.vialegacy.protocols.release.protocol1_4_2to1_3_1_2.types.Types1_3_1; +import net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.storage.ChunkTracker; +import net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.storage.PlayerInfoStorage; + +public class PlayerAirTimeUpdateTask implements Runnable { + + @Override + public void run() { + for (UserConnection info : Via.getManager().getConnectionManager().getConnections()) { + final PlayerAirTimeStorage playerAirTimeStorage = info.get(PlayerAirTimeStorage.class); + if (playerAirTimeStorage != null) { + final PlayerInfoStorage playerInfoStorage = info.get(PlayerInfoStorage.class); + if (playerInfoStorage == null) continue; + final IdAndData headBlock = info.get(ChunkTracker.class).getBlockNotNull(floor(playerInfoStorage.posX), floor(playerInfoStorage.posY + 1.62F), floor(playerInfoStorage.posZ)); + if (headBlock.id == BlockList1_6.waterMoving.blockID || headBlock.id == BlockList1_6.waterStill.blockID) { + playerAirTimeStorage.sentPacket = false; + playerAirTimeStorage.air--; + if (playerAirTimeStorage.air < 0) playerAirTimeStorage.air = 0; + this.sendAirTime(playerInfoStorage, playerAirTimeStorage, info); + } else if (!playerAirTimeStorage.sentPacket) { + playerAirTimeStorage.sentPacket = true; + playerAirTimeStorage.air = playerAirTimeStorage.MAX_AIR; + this.sendAirTime(playerInfoStorage, playerAirTimeStorage, info); + } + } + } + } + + private void sendAirTime(final PlayerInfoStorage playerInfoStorage, final PlayerAirTimeStorage playerAirTimeStorage, final UserConnection userConnection) { + try { + final PacketWrapper updateAirTime = PacketWrapper.create(ClientboundPackets1_0.ENTITY_METADATA, userConnection); + updateAirTime.write(Type.INT, playerInfoStorage.entityId); // entity id + updateAirTime.write(Types1_3_1.METADATA_LIST, Lists.newArrayList(new Metadata(1, MetaType1_3_1.Short, Integer.valueOf(playerAirTimeStorage.air).shortValue()))); // metadata + updateAirTime.send(Protocol1_0_0_1tob1_8_0_1.class); + } catch (Throwable e) { + e.printStackTrace(); + } + } + + private static int floor(double f) { + int i = (int) f; + return f < (double) i ? i - 1 : i; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/beta/protocol1_0_0_1tob1_8_0_1/types/NbtLessItemType.java b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocol1_0_0_1tob1_8_0_1/types/NbtLessItemType.java new file mode 100644 index 0000000..9701e85 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocol1_0_0_1tob1_8_0_1/types/NbtLessItemType.java @@ -0,0 +1,39 @@ +package net.raphimc.vialegacy.protocols.beta.protocol1_0_0_1tob1_8_0_1.types; + +import com.viaversion.viaversion.api.minecraft.item.DataItem; +import com.viaversion.viaversion.api.minecraft.item.Item; +import com.viaversion.viaversion.api.type.Type; +import io.netty.buffer.ByteBuf; + +public class NbtLessItemType extends Type { + + public NbtLessItemType() { + super(Item.class); + } + + public Item read(ByteBuf buffer) throws Exception { + final short id = buffer.readShort(); + if (id < 0) { + return null; + } else { + final Item item = new DataItem(); + item.setIdentifier(id); + item.setAmount((byte) buffer.readShort()); + item.setData(buffer.readShort()); + return item; + } + } + + public void write(ByteBuf buffer, Item item) throws Exception { + if (item == null) { + buffer.writeShort(-1); + buffer.writeShort(0); + buffer.writeShort(0); + } else { + buffer.writeShort(item.identifier()); + buffer.writeShort(item.amount()); + buffer.writeShort(item.data()); + } + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/beta/protocol1_0_0_1tob1_8_0_1/types/Typesb1_8_0_1.java b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocol1_0_0_1tob1_8_0_1/types/Typesb1_8_0_1.java new file mode 100644 index 0000000..077a6d9 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocol1_0_0_1tob1_8_0_1/types/Typesb1_8_0_1.java @@ -0,0 +1,12 @@ +package net.raphimc.vialegacy.protocols.beta.protocol1_0_0_1tob1_8_0_1.types; + +import com.viaversion.viaversion.api.minecraft.item.Item; +import com.viaversion.viaversion.api.type.Type; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.ItemArrayType; + +public class Typesb1_8_0_1 { + + public static final Type CREATIVE_ITEM = new NbtLessItemType(); + public static final Type CREATIVE_ITEM_ARRAY = new ItemArrayType<>(CREATIVE_ITEM); + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_1_2tob1_0_1_1/Protocolb1_1_2tob1_0_1_1.java b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_1_2tob1_0_1_1/Protocolb1_1_2tob1_0_1_1.java new file mode 100644 index 0000000..5e97006 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_1_2tob1_0_1_1/Protocolb1_1_2tob1_0_1_1.java @@ -0,0 +1,13 @@ +package net.raphimc.vialegacy.protocols.beta.protocolb1_1_2tob1_0_1_1; + +import com.viaversion.viaversion.api.protocol.AbstractProtocol; +import net.raphimc.vialegacy.protocols.beta.protocolb1_2_0_2tob1_1_2.ClientboundPacketsb1_1; +import net.raphimc.vialegacy.protocols.beta.protocolb1_2_0_2tob1_1_2.ServerboundPacketsb1_1; + +public class Protocolb1_1_2tob1_0_1_1 extends AbstractProtocol { + + public Protocolb1_1_2tob1_0_1_1() { + super(ClientboundPacketsb1_1.class, ClientboundPacketsb1_1.class, ServerboundPacketsb1_1.class, ServerboundPacketsb1_1.class); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_2_0_2tob1_1_2/ClientboundPacketsb1_1.java b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_2_0_2tob1_1_2/ClientboundPacketsb1_1.java new file mode 100644 index 0000000..61108cd --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_2_0_2tob1_1_2/ClientboundPacketsb1_1.java @@ -0,0 +1,282 @@ +package net.raphimc.vialegacy.protocols.beta.protocolb1_2_0_2tob1_1_2; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType; +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.util.PreNettyPacketType; + +import java.util.function.BiConsumer; + +import static net.raphimc.vialegacy.util.PreNettyTypes.*; + +public enum ClientboundPacketsb1_1 implements ClientboundPacketType, PreNettyPacketType { + + KEEP_ALIVE(0, (user, buf) -> { + }), + JOIN_GAME(1, (user, buf) -> { + buf.readInt(); + readUTF(buf); + readUTF(buf); + buf.readLong(); + buf.readByte(); + }), + HANDSHAKE(2, (user, buf) -> { + readUTF(buf); + }), + CHAT_MESSAGE(3, (user, buf) -> { + readUTF(buf); + }), + TIME_UPDATE(4, (user, buf) -> { + buf.readLong(); + }), + ENTITY_EQUIPMENT(5, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readShort(); + }), + SPAWN_POSITION(6, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + UPDATE_HEALTH(8, (user, buf) -> { + buf.readShort(); + }), + RESPAWN(9, (user, buf) -> { + }), + PLAYER_POSITION_ONLY_ONGROUND(10, (user, buf) -> { + buf.readUnsignedByte(); + }), + PLAYER_POSITION_ONLY_POSITION(11, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION_ONLY_LOOK(12, (user, buf) -> { + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION(13, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + ENTITY_ANIMATION(18, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + SPAWN_PLAYER(20, (user, buf) -> { + buf.readInt(); + readUTF(buf); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + }), + SPAWN_ITEM(21, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + COLLECT_ITEM(22, (user, buf) -> { + buf.readInt(); + buf.readInt(); + }), + SPAWN_ENTITY(23, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + SPAWN_MOB(24, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_VELOCITY(28, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readShort(); + buf.readShort(); + }), + DESTROY_ENTITIES(29, (user, buf) -> { + buf.readInt(); + }), + ENTITY_MOVEMENT(30, (user, buf) -> { + buf.readInt(); + }), + ENTITY_POSITION(31, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_ROTATION(32, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_POSITION_AND_ROTATION(33, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_TELEPORT(34, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_STATUS(38, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + ATTACH_ENTITY(39, (user, buf) -> { + buf.readInt(); + buf.readInt(); + }), + PRE_CHUNK(50, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readByte(); + }), + CHUNK_DATA(51, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + int x = buf.readInt(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + MULTI_BLOCK_CHANGE(52, (user, buf) -> { + buf.readInt(); + buf.readInt(); + short x = buf.readShort(); + for (int i = 0; i < x; i++) buf.readShort(); + for (int i = 0; i < x; i++) buf.readByte(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + BLOCK_CHANGE(53, (user, buf) -> { + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + buf.readUnsignedByte(); + }), + EXPLOSION(60, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + int x = buf.readInt(); + for (int i = 0; i < x; i++) { + buf.readByte(); + buf.readByte(); + buf.readByte(); + } + }), + OPEN_WINDOW(100, (user, buf) -> { + buf.readByte(); + buf.readByte(); + readUTF(buf); + buf.readByte(); + }), + CLOSE_WINDOW(101, (user, buf) -> { + buf.readByte(); + }), + SET_SLOT(103, (user, buf) -> { + buf.readByte(); + buf.readShort(); + readItemStackb1_1(buf); + }), + WINDOW_ITEMS(104, (user, buf) -> { + buf.readByte(); + int x = buf.readShort(); + for (int i = 0; i < x; i++) readItemStackb1_2(buf); + }), + WINDOW_PROPERTY(105, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readShort(); + }), + WINDOW_CONFIRMATION(106, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readByte(); + }), + UPDATE_SIGN(130, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + readUTF(buf); + readUTF(buf); + readUTF(buf); + readUTF(buf); + }), + DISCONNECT(255, (user, buf) -> { + readUTF(buf); + }); + + private static final ClientboundPacketsb1_1[] REGISTRY = new ClientboundPacketsb1_1[256]; + + static { + for (ClientboundPacketsb1_1 packet : values()) { + REGISTRY[packet.id] = packet; + } + } + + public static ClientboundPacketsb1_1 getPacket(final int id) { + return REGISTRY[id]; + } + + private final int id; + private final BiConsumer packetReader; + + ClientboundPacketsb1_1(final int id, final BiConsumer packetReader) { + this.id = id; + this.packetReader = packetReader; + } + + @Override + public int getId() { + return this.id; + } + + @Override + public String getName() { + return name(); + } + + @Override + public BiConsumer getPacketReader() { + return this.packetReader; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_2_0_2tob1_1_2/Protocolb1_2_0_2tob1_1_2.java b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_2_0_2tob1_1_2/Protocolb1_2_0_2tob1_1_2.java new file mode 100644 index 0000000..16a9b59 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_2_0_2tob1_1_2/Protocolb1_2_0_2tob1_1_2.java @@ -0,0 +1,197 @@ +package net.raphimc.vialegacy.protocols.beta.protocolb1_2_0_2tob1_1_2; + +import com.google.common.collect.Lists; +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.minecraft.item.DataItem; +import com.viaversion.viaversion.api.minecraft.metadata.Metadata; +import com.viaversion.viaversion.api.protocol.AbstractProtocol; +import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; +import com.viaversion.viaversion.api.protocol.remapper.PacketRemapper; +import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; +import net.raphimc.vialegacy.api.IdAndData; +import net.raphimc.vialegacy.protocols.beta.protocolb1_2_0_2tob1_1_2.rewriter.BlockDataRewriter; +import net.raphimc.vialegacy.protocols.beta.protocolb1_2_0_2tob1_1_2.storage.EntityFlagStorage; +import net.raphimc.vialegacy.protocols.beta.protocolb1_2_0_2tob1_1_2.types.Typesb1_1; +import net.raphimc.vialegacy.protocols.beta.protocolb1_3_0_1tob1_2_0_2.ClientboundPacketsb1_2; +import net.raphimc.vialegacy.protocols.beta.protocolb1_3_0_1tob1_2_0_2.ServerboundPacketsb1_2; +import net.raphimc.vialegacy.protocols.beta.protocolb1_3_0_1tob1_2_0_2.types.MetaTypeb1_2; +import net.raphimc.vialegacy.protocols.beta.protocolb1_3_0_1tob1_2_0_2.types.Typesb1_2; +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.types.Chunk1_1Type; +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.types.Types1_1; +import net.raphimc.vialegacy.protocols.release.protocol1_4_2to1_3_1_2.types.Types1_3_1; +import net.raphimc.vialegacy.protocols.release.protocol1_4_4_5to1_4_2.types.Types1_4_2; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.Types1_7_6; +import net.raphimc.vialegacy.util.PreNettySplitter; + +import java.util.ArrayList; + +public class Protocolb1_2_0_2tob1_1_2 extends AbstractProtocol { + + private final BlockDataRewriter BLOCK_DATA_REWRITER = new BlockDataRewriter(); + + public Protocolb1_2_0_2tob1_1_2() { + super(ClientboundPacketsb1_1.class, ClientboundPacketsb1_2.class, ServerboundPacketsb1_1.class, ServerboundPacketsb1_2.class); + } + + @Override + protected void registerPackets() { + this.registerClientbound(ClientboundPacketsb1_1.ENTITY_EQUIPMENT, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + map(Type.SHORT); // slot + map(Type.SHORT); // item id + create(Type.SHORT, (short) 0); // item damage + } + }); + this.registerClientbound(ClientboundPacketsb1_1.ENTITY_ANIMATION, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + map(Type.BYTE); // animation id + handler(wrapper -> { + final int entityId = wrapper.get(Type.INT, 0); + final byte animationId = wrapper.get(Type.BYTE, 0); + if (animationId <= 2) return; // 1 - Swing | 2 - Hurt + + wrapper.cancel(); + final EntityFlagStorage entityFlagStorage = wrapper.user().get(EntityFlagStorage.class); + final int oldMask = entityFlagStorage.getFlagMask(entityId); + switch (animationId) { + case 100: // start riding + entityFlagStorage.setFlag(entityId, 2, true); + break; + case 101: // stop riding + entityFlagStorage.setFlag(entityId, 2, false); + break; + case 102: // start burning + entityFlagStorage.setFlag(entityId, 0, true); + break; + case 103: // stop burning + entityFlagStorage.setFlag(entityId, 0, false); + break; + case 104: // start sneaking + entityFlagStorage.setFlag(entityId, 1, true); + break; + case 105: // stop sneaking + entityFlagStorage.setFlag(entityId, 1, false); + break; + } + + if (oldMask != entityFlagStorage.getFlagMask(entityId)) { + final PacketWrapper metadata = PacketWrapper.create(ClientboundPacketsb1_2.ENTITY_METADATA, wrapper.user()); + metadata.write(Type.INT, wrapper.get(Type.INT, 0)); // entity id + metadata.write(Typesb1_2.METADATA_LIST, Lists.newArrayList(new Metadata(0, MetaTypeb1_2.Byte, (byte) entityFlagStorage.getFlagMask(entityId)))); // metadata + metadata.send(Protocolb1_2_0_2tob1_1_2.class); + } + }); + } + }); + this.registerClientbound(ClientboundPacketsb1_1.SPAWN_ITEM, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + handler(wrapper -> { + final short itemId = wrapper.read(Type.SHORT); // item id + final byte itemCount = wrapper.read(Type.BYTE); // item count + wrapper.write(Types1_3_1.NBTLESS_ITEM, new DataItem(itemId, itemCount, (short) 0, null)); // item + }); + map(Type.INT); // x + map(Type.INT); // y + map(Type.INT); // z + map(Type.BYTE); // velocity x + map(Type.BYTE); // velocity y + map(Type.BYTE); // velocity z + } + }); + this.registerClientbound(ClientboundPacketsb1_1.SPAWN_MOB, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + map(Type.UNSIGNED_BYTE); // type id + map(Type.INT); // x + map(Type.INT); // y + map(Type.INT); // z + map(Type.BYTE); // yaw + map(Type.BYTE); // pitch + create(Typesb1_2.METADATA_LIST, new ArrayList<>()); // metadata + } + }); + this.registerClientbound(ClientboundPacketsb1_1.CHUNK_DATA, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + final ClientWorld clientWorld = new ClientWorld(wrapper.user()); + clientWorld.setEnvironment(0); + BLOCK_DATA_REWRITER.remapChunk(wrapper.passthrough(new Chunk1_1Type(clientWorld))); + }); + } + }); + this.registerClientbound(ClientboundPacketsb1_1.MULTI_BLOCK_CHANGE, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // chunkX + map(Type.INT); // chunkZ + map(Types1_1.BLOCK_CHANGE_RECORD_ARRAY); // blockChangeRecords + handler(wrapper -> BLOCK_DATA_REWRITER.remapBlockChangeRecords(wrapper.get(Types1_1.BLOCK_CHANGE_RECORD_ARRAY, 0))); + } + }); + this.registerClientbound(ClientboundPacketsb1_1.BLOCK_CHANGE, new PacketRemapper() { + @Override + public void registerMap() { + map(Types1_7_6.POSITION_UBYTE); // position + map(Type.UNSIGNED_BYTE); // block id + map(Type.UNSIGNED_BYTE); // block data + handler(wrapper -> { + final IdAndData block = new IdAndData(wrapper.get(Type.UNSIGNED_BYTE, 0), wrapper.get(Type.UNSIGNED_BYTE, 1)); + BLOCK_DATA_REWRITER.remapBlock(block); + wrapper.set(Type.UNSIGNED_BYTE, 0, (short) block.id); + wrapper.set(Type.UNSIGNED_BYTE, 1, (short) block.data); + }); + } + }); + this.registerClientbound(ClientboundPacketsb1_1.SET_SLOT, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.BYTE); // window id + map(Type.SHORT); // slot + map(Typesb1_1.NBTLESS_ITEM, Types1_4_2.NBTLESS_ITEM); // item + } + }); + + this.registerServerbound(ServerboundPacketsb1_2.PLAYER_BLOCK_PLACEMENT, new PacketRemapper() { + @Override + public void registerMap() { + map(Types1_7_6.POSITION_UBYTE); // position + map(Type.UNSIGNED_BYTE); // direction + map(Types1_4_2.NBTLESS_ITEM, Typesb1_1.NBTLESS_ITEM); // item + } + }); + this.registerServerbound(ServerboundPacketsb1_2.ENTITY_ACTION, ServerboundPacketsb1_1.ANIMATION, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + map(Type.BYTE, Type.UNSIGNED_BYTE, i -> (short) (i + 103)); // action id | start/stop sneaking (1/2) -> 104/105 + } + }); + this.registerServerbound(ServerboundPacketsb1_2.CLICK_WINDOW, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.BYTE); // window id + map(Type.SHORT); // slot + map(Type.BYTE); // button + map(Type.SHORT); // action + map(Types1_4_2.NBTLESS_ITEM, Typesb1_1.NBTLESS_ITEM); // item + } + }); + } + + @Override + public void init(UserConnection userConnection) { + userConnection.put(new PreNettySplitter(userConnection, Protocolb1_2_0_2tob1_1_2.class, ClientboundPacketsb1_1::getPacket)); + + userConnection.put(new EntityFlagStorage(userConnection)); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_2_0_2tob1_1_2/ServerboundPacketsb1_1.java b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_2_0_2tob1_1_2/ServerboundPacketsb1_1.java new file mode 100644 index 0000000..88dc536 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_2_0_2tob1_1_2/ServerboundPacketsb1_1.java @@ -0,0 +1,145 @@ +package net.raphimc.vialegacy.protocols.beta.protocolb1_2_0_2tob1_1_2; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.packet.ServerboundPacketType; +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.util.PreNettyPacketType; + +import java.util.function.BiConsumer; + +import static net.raphimc.vialegacy.util.PreNettyTypes.readItemStackb1_1; +import static net.raphimc.vialegacy.util.PreNettyTypes.readUTF; + +public enum ServerboundPacketsb1_1 implements ServerboundPacketType, PreNettyPacketType { + + KEEP_ALIVE(0, (user, buf) -> { + }), + LOGIN(1, (user, buf) -> { + buf.readInt(); + readUTF(buf); + readUTF(buf); + buf.readLong(); + buf.readByte(); + }), + HANDSHAKE(2, (user, buf) -> { + readUTF(buf); + }), + CHAT_MESSAGE(3, (user, buf) -> { + readUTF(buf); + }), + INTERACT_ENTITY(7, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readByte(); + }), + RESPAWN(9, (user, buf) -> { + }), + PLAYER_MOVEMENT(10, (user, buf) -> { + buf.readUnsignedByte(); + }), + PLAYER_POSITION(11, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readUnsignedByte(); + }), + PLAYER_ROTATION(12, (user, buf) -> { + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION_AND_ROTATION(13, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_DIGGING(14, (user, buf) -> { + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + }), + PLAYER_BLOCK_PLACEMENT(15, (user, buf) -> { + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + readItemStackb1_1(buf); + }), + HELD_ITEM_CHANGE(16, (user, buf) -> { + buf.readShort(); + }), + ANIMATION(18, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + CLOSE_WINDOW(101, (user, buf) -> { + buf.readByte(); + }), + CLICK_WINDOW(102, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readByte(); + buf.readShort(); + readItemStackb1_1(buf); + }), + WINDOW_CONFIRMATION(106, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readByte(); + }), + UPDATE_SIGN(130, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + readUTF(buf); + readUTF(buf); + readUTF(buf); + readUTF(buf); + }), + DISCONNECT(255, (user, buf) -> { + readUTF(buf); + }); + + private static final ServerboundPacketsb1_1[] REGISTRY = new ServerboundPacketsb1_1[256]; + + static { + for (ServerboundPacketsb1_1 packet : values()) { + REGISTRY[packet.id] = packet; + } + } + + public static ServerboundPacketsb1_1 getPacket(final int id) { + return REGISTRY[id]; + } + + private final int id; + private final BiConsumer packetReader; + + ServerboundPacketsb1_1(final int id, final BiConsumer packetReader) { + this.id = id; + this.packetReader = packetReader; + } + + @Override + public int getId() { + return this.id; + } + + @Override + public String getName() { + return name(); + } + + @Override + public BiConsumer getPacketReader() { + return this.packetReader; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_2_0_2tob1_1_2/rewriter/BlockDataRewriter.java b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_2_0_2tob1_1_2/rewriter/BlockDataRewriter.java new file mode 100644 index 0000000..09c1980 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_2_0_2tob1_1_2/rewriter/BlockDataRewriter.java @@ -0,0 +1,22 @@ +package net.raphimc.vialegacy.protocols.beta.protocolb1_2_0_2tob1_1_2.rewriter; + +import net.raphimc.vialegacy.api.*; + +public class BlockDataRewriter extends AbstractBlockRemapper { + + public BlockDataRewriter() { + for (int i = 1; i < 16; i++) { // cobblestone + this.registerReplacement(new IdAndData(BlockList1_6.cobblestone.blockID, i), new IdAndData(BlockList1_6.cobblestone.blockID, 0)); + } + for (int i = 1; i < 16; i++) { // sand + this.registerReplacement(new IdAndData(BlockList1_6.sand.blockID, i), new IdAndData(BlockList1_6.sand.blockID, 0)); + } + for (int i = 1; i < 16; i++) { // gravel + this.registerReplacement(new IdAndData(BlockList1_6.gravel.blockID, i), new IdAndData(BlockList1_6.gravel.blockID, 0)); + } + for (int i = 1; i < 16; i++) { // obsidian + this.registerReplacement(new IdAndData(BlockList1_6.obsidian.blockID, i), new IdAndData(BlockList1_6.obsidian.blockID, 0)); + } + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_2_0_2tob1_1_2/storage/EntityFlagStorage.java b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_2_0_2tob1_1_2/storage/EntityFlagStorage.java new file mode 100644 index 0000000..424db70 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_2_0_2tob1_1_2/storage/EntityFlagStorage.java @@ -0,0 +1,33 @@ +package net.raphimc.vialegacy.protocols.beta.protocolb1_2_0_2tob1_1_2.storage; + +import com.viaversion.viaversion.api.connection.StoredObject; +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.libs.fastutil.ints.Int2IntMap; +import com.viaversion.viaversion.libs.fastutil.ints.Int2IntOpenHashMap; + +public class EntityFlagStorage extends StoredObject { + + private final Int2IntMap animationFlags = new Int2IntOpenHashMap(); + + public EntityFlagStorage(UserConnection user) { + super(user); + } + + public boolean getFlag(final int entityId, final int index) { + return (this.getFlagMask(entityId) & 1 << index) != 0; + } + + public int getFlagMask(final int entityId) { + return this.animationFlags.get(entityId); + } + + public void setFlag(final int entityId, final int index, final boolean flag) { + final int mask = this.animationFlags.get(entityId); + if (flag) { + this.animationFlags.put(entityId, mask | 1 << index); + } else { + this.animationFlags.put(entityId, mask & ~(1 << index)); + } + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_2_0_2tob1_1_2/types/NbtLessItemType.java b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_2_0_2tob1_1_2/types/NbtLessItemType.java new file mode 100644 index 0000000..4024223 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_2_0_2tob1_1_2/types/NbtLessItemType.java @@ -0,0 +1,37 @@ +package net.raphimc.vialegacy.protocols.beta.protocolb1_2_0_2tob1_1_2.types; + +import com.viaversion.viaversion.api.minecraft.item.DataItem; +import com.viaversion.viaversion.api.minecraft.item.Item; +import com.viaversion.viaversion.api.type.Type; +import io.netty.buffer.ByteBuf; + +public class NbtLessItemType extends Type { + + public NbtLessItemType() { + super(Item.class); + } + + public Item read(ByteBuf buffer) throws Exception { + final short id = buffer.readShort(); + if (id < 0) { + return null; + } + + final Item item = new DataItem(); + item.setIdentifier(id); + item.setAmount(buffer.readByte()); + item.setData(buffer.readByte()); + return item; + } + + public void write(ByteBuf buffer, Item item) throws Exception { + if (item == null) { + buffer.writeShort(-1); + } else { + buffer.writeShort(item.identifier()); + buffer.writeByte(item.amount()); + buffer.writeByte(item.data()); + } + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_2_0_2tob1_1_2/types/Typesb1_1.java b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_2_0_2tob1_1_2/types/Typesb1_1.java new file mode 100644 index 0000000..36c0c8d --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_2_0_2tob1_1_2/types/Typesb1_1.java @@ -0,0 +1,10 @@ +package net.raphimc.vialegacy.protocols.beta.protocolb1_2_0_2tob1_1_2.types; + +import com.viaversion.viaversion.api.minecraft.item.Item; +import com.viaversion.viaversion.api.type.Type; + +public class Typesb1_1 { + + public static final Type NBTLESS_ITEM = new NbtLessItemType(); + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_3_0_1tob1_2_0_2/ClientboundPacketsb1_2.java b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_3_0_1tob1_2_0_2/ClientboundPacketsb1_2.java new file mode 100644 index 0000000..e3e6ce1 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_3_0_1tob1_2_0_2/ClientboundPacketsb1_2.java @@ -0,0 +1,303 @@ +package net.raphimc.vialegacy.protocols.beta.protocolb1_3_0_1tob1_2_0_2; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType; +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.util.PreNettyPacketType; +import net.raphimc.vialegacy.util.PreNettyTypes; + +import java.util.function.BiConsumer; + +public enum ClientboundPacketsb1_2 implements ClientboundPacketType, PreNettyPacketType { + + KEEP_ALIVE(0, (user, buf) -> { + }), + JOIN_GAME(1, (user, buf) -> { + buf.readInt(); + PreNettyTypes.readUTF(buf); + PreNettyTypes.readUTF(buf); + buf.readLong(); + buf.readByte(); + }), + HANDSHAKE(2, (user, buf) -> { + PreNettyTypes.readUTF(buf); + }), + CHAT_MESSAGE(3, (user, buf) -> { + PreNettyTypes.readUTF(buf); + }), + TIME_UPDATE(4, (user, buf) -> { + buf.readLong(); + }), + ENTITY_EQUIPMENT(5, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readShort(); + buf.readShort(); + }), + SPAWN_POSITION(6, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + UPDATE_HEALTH(8, (user, buf) -> { + buf.readShort(); + }), + RESPAWN(9, (user, buf) -> { + }), + PLAYER_POSITION_ONLY_ONGROUND(10, (user, buf) -> { + buf.readUnsignedByte(); + }), + PLAYER_POSITION_ONLY_POSITION(11, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION_ONLY_LOOK(12, (user, buf) -> { + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION(13, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + ENTITY_ANIMATION(18, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + SPAWN_PLAYER(20, (user, buf) -> { + buf.readInt(); + PreNettyTypes.readUTF(buf); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + }), + SPAWN_ITEM(21, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readByte(); + buf.readShort(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + COLLECT_ITEM(22, (user, buf) -> { + buf.readInt(); + buf.readInt(); + }), + SPAWN_ENTITY(23, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + SPAWN_MOB(24, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + PreNettyTypes.readEntityMetadatab1_2(buf); + }), + SPAWN_PAINTING(25, (user, buf) -> { + buf.readInt(); + PreNettyTypes.readUTF(buf); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + ENTITY_VELOCITY(28, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readShort(); + buf.readShort(); + }), + DESTROY_ENTITIES(29, (user, buf) -> { + buf.readInt(); + }), + ENTITY_MOVEMENT(30, (user, buf) -> { + buf.readInt(); + }), + ENTITY_POSITION(31, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_ROTATION(32, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_POSITION_AND_ROTATION(33, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_TELEPORT(34, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_STATUS(38, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + ATTACH_ENTITY(39, (user, buf) -> { + buf.readInt(); + buf.readInt(); + }), + ENTITY_METADATA(40, (user, buf) -> { + buf.readInt(); + PreNettyTypes.readEntityMetadatab1_2(buf); + }), + PRE_CHUNK(50, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readByte(); + }), + CHUNK_DATA(51, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + int x = buf.readInt(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + MULTI_BLOCK_CHANGE(52, (user, buf) -> { + buf.readInt(); + buf.readInt(); + short x = buf.readShort(); + for (int i = 0; i < x; i++) buf.readShort(); + for (int i = 0; i < x; i++) buf.readByte(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + BLOCK_CHANGE(53, (user, buf) -> { + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + buf.readUnsignedByte(); + }), + BLOCK_ACTION(54, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + buf.readUnsignedByte(); + buf.readUnsignedByte(); + }), + EXPLOSION(60, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + int x = buf.readInt(); + for (int i = 0; i < x; i++) { + buf.readByte(); + buf.readByte(); + buf.readByte(); + } + }), + OPEN_WINDOW(100, (user, buf) -> { + buf.readByte(); + buf.readByte(); + PreNettyTypes.readUTF(buf); + buf.readByte(); + }), + CLOSE_WINDOW(101, (user, buf) -> { + buf.readByte(); + }), + SET_SLOT(103, (user, buf) -> { + buf.readByte(); + buf.readShort(); + PreNettyTypes.readItemStackb1_2(buf); + }), + WINDOW_ITEMS(104, (user, buf) -> { + buf.readByte(); + int x = buf.readShort(); + for (int i = 0; i < x; i++) PreNettyTypes.readItemStackb1_2(buf); + }), + WINDOW_PROPERTY(105, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readShort(); + }), + WINDOW_CONFIRMATION(106, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readByte(); + }), + UPDATE_SIGN(130, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + PreNettyTypes.readUTF(buf); + PreNettyTypes.readUTF(buf); + PreNettyTypes.readUTF(buf); + PreNettyTypes.readUTF(buf); + }), + DISCONNECT(255, (user, buf) -> { + PreNettyTypes.readUTF(buf); + }); + + private static final ClientboundPacketsb1_2[] REGISTRY = new ClientboundPacketsb1_2[256]; + + static { + for (ClientboundPacketsb1_2 packet : values()) { + REGISTRY[packet.id] = packet; + } + } + + public static ClientboundPacketsb1_2 getPacket(final int id) { + return REGISTRY[id]; + } + + private final int id; + private final BiConsumer packetReader; + + ClientboundPacketsb1_2(final int id, final BiConsumer packetReader) { + this.id = id; + this.packetReader = packetReader; + } + + @Override + public int getId() { + return this.id; + } + + @Override + public String getName() { + return name(); + } + + @Override + public BiConsumer getPacketReader() { + return this.packetReader; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_3_0_1tob1_2_0_2/Protocolb1_3_0_1tob1_2_0_2.java b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_3_0_1tob1_2_0_2/Protocolb1_3_0_1tob1_2_0_2.java new file mode 100644 index 0000000..b2886bc --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_3_0_1tob1_2_0_2/Protocolb1_3_0_1tob1_2_0_2.java @@ -0,0 +1,130 @@ +package net.raphimc.vialegacy.protocols.beta.protocolb1_3_0_1tob1_2_0_2; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.minecraft.Position; +import com.viaversion.viaversion.api.minecraft.metadata.Metadata; +import com.viaversion.viaversion.api.protocol.AbstractProtocol; +import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; +import com.viaversion.viaversion.api.protocol.remapper.PacketRemapper; +import com.viaversion.viaversion.api.type.Type; +import net.raphimc.vialegacy.api.IdAndData; +import net.raphimc.vialegacy.protocols.beta.protocolb1_3_0_1tob1_2_0_2.data.BlockHardnessList; +import net.raphimc.vialegacy.protocols.beta.protocolb1_3_0_1tob1_2_0_2.storage.BlockDigStorage; +import net.raphimc.vialegacy.protocols.beta.protocolb1_3_0_1tob1_2_0_2.types.Typesb1_2; +import net.raphimc.vialegacy.protocols.beta.protocolb1_4_0_1tob1_3_0_1.ClientboundPacketsb1_3; +import net.raphimc.vialegacy.protocols.beta.protocolb1_5_0_2tob1_4_0_1.ServerboundPacketsb1_4; +import net.raphimc.vialegacy.protocols.beta.protocolb1_5_0_2tob1_4_0_1.types.MetaTypeb1_4; +import net.raphimc.vialegacy.protocols.beta.protocolb1_5_0_2tob1_4_0_1.types.Typesb1_4; +import net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.storage.ChunkTracker; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.Types1_7_6; +import net.raphimc.vialegacy.util.PreNettySplitter; + +import java.util.List; + +public class Protocolb1_3_0_1tob1_2_0_2 extends AbstractProtocol { + + public Protocolb1_3_0_1tob1_2_0_2() { + super(ClientboundPacketsb1_2.class, ClientboundPacketsb1_3.class, ServerboundPacketsb1_2.class, ServerboundPacketsb1_4.class); + } + + @Override + protected void registerPackets() { + this.registerClientbound(ClientboundPacketsb1_2.SPAWN_MOB, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + map(Type.UNSIGNED_BYTE); // type id + map(Type.INT); // x + map(Type.INT); // y + map(Type.INT); // z + map(Type.BYTE); // yaw + map(Type.BYTE); // pitch + map(Typesb1_2.METADATA_LIST, Typesb1_4.METADATA_LIST); // metadata + handler(wrapper -> rewriteMetadata(wrapper.get(Typesb1_4.METADATA_LIST, 0))); + } + }); + this.registerClientbound(ClientboundPacketsb1_2.ENTITY_METADATA, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + map(Typesb1_2.METADATA_LIST, Typesb1_4.METADATA_LIST); // metadata + handler(wrapper -> rewriteMetadata(wrapper.get(Typesb1_4.METADATA_LIST, 0))); + } + }); + + this.registerServerbound(ServerboundPacketsb1_4.PLAYER_DIGGING, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + wrapper.cancel(); + final short status = wrapper.read(Type.UNSIGNED_BYTE); // status + final Position pos = wrapper.read(Types1_7_6.POSITION_UBYTE); // position + final short facing = wrapper.read(Type.UNSIGNED_BYTE); // direction + + if (status != 4) { + wrapper.user().getStoredObjects().remove(BlockDigStorage.class); + } + + switch (status) { + case 0: + final IdAndData blockBeingBroken = wrapper.user().get(ChunkTracker.class).getBlockNotNull(pos); + if (BlockHardnessList.canBeBrokenInstantly(blockBeingBroken)) { + sendBlockDigPacket(wrapper.user(), (byte) 0, pos, facing); + sendBlockDigPacket(wrapper.user(), (byte) 3, pos, facing); + sendBlockDigPacket(wrapper.user(), (byte) 1, pos, facing); + sendBlockDigPacket(wrapper.user(), (byte) 2, pos, facing); + return; + } + wrapper.user().put(new BlockDigStorage(wrapper.user(), pos, facing)); + sendBlockDigPacket(wrapper.user(), (byte) 0, pos, facing); + sendBlockDigPacket(wrapper.user(), (byte) 1, pos, facing); + break; + case 1: + sendBlockDigPacket(wrapper.user(), (byte) 2, pos, facing); + break; + case 2: + sendBlockDigPacket(wrapper.user(), (byte) 1, pos, facing); + sendBlockDigPacket(wrapper.user(), (byte) 3, pos, facing); + sendBlockDigPacket(wrapper.user(), (byte) 2, pos, facing); + break; + case 4: + sendBlockDigPacket(wrapper.user(), (byte) 4, pos, facing); + break; + } + }); + } + }); + this.registerServerbound(ServerboundPacketsb1_4.ENTITY_ACTION, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + map(Type.BYTE); // action id + handler(wrapper -> { + if (wrapper.get(Type.BYTE, 0) > 2) wrapper.cancel(); + }); + } + }); + this.cancelServerbound(ServerboundPacketsb1_4.POSITION); + } + + private void rewriteMetadata(final List metadataList) { + for (Metadata metadata : metadataList) { + metadata.setMetaType(MetaTypeb1_4.byId(metadata.metaType().typeId())); + } + } + + @Override + public void init(UserConnection userConnection) { + userConnection.put(new PreNettySplitter(userConnection, Protocolb1_3_0_1tob1_2_0_2.class, ClientboundPacketsb1_2::getPacket)); + } + + + public static void sendBlockDigPacket(final UserConnection userConnection, final short status, final Position position, final short facing) throws Exception { + final PacketWrapper blockDig = PacketWrapper.create(ServerboundPacketsb1_2.PLAYER_DIGGING, userConnection); + blockDig.write(Type.UNSIGNED_BYTE, status); // status + blockDig.write(Types1_7_6.POSITION_UBYTE, position); // position + blockDig.write(Type.UNSIGNED_BYTE, facing); // direction + blockDig.sendToServer(Protocolb1_3_0_1tob1_2_0_2.class); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_3_0_1tob1_2_0_2/ServerboundPacketsb1_2.java b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_3_0_1tob1_2_0_2/ServerboundPacketsb1_2.java new file mode 100644 index 0000000..ec23b87 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_3_0_1tob1_2_0_2/ServerboundPacketsb1_2.java @@ -0,0 +1,147 @@ +package net.raphimc.vialegacy.protocols.beta.protocolb1_3_0_1tob1_2_0_2; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.packet.ServerboundPacketType; +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.util.PreNettyPacketType; +import net.raphimc.vialegacy.util.PreNettyTypes; + +import java.util.function.BiConsumer; + +public enum ServerboundPacketsb1_2 implements ServerboundPacketType, PreNettyPacketType { + + KEEP_ALIVE(0, (user, buf) -> { + }), + LOGIN(1, (user, buf) -> { + buf.readInt(); + PreNettyTypes.readUTF(buf); + PreNettyTypes.readUTF(buf); + buf.readLong(); + buf.readByte(); + }), + HANDSHAKE(2, (user, buf) -> { + PreNettyTypes.readUTF(buf); + }), + CHAT_MESSAGE(3, (user, buf) -> { + PreNettyTypes.readUTF(buf); + }), + INTERACT_ENTITY(7, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readByte(); + }), + RESPAWN(9, (user, buf) -> { + }), + PLAYER_MOVEMENT(10, (user, buf) -> { + buf.readUnsignedByte(); + }), + PLAYER_POSITION(11, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readUnsignedByte(); + }), + PLAYER_ROTATION(12, (user, buf) -> { + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION_AND_ROTATION(13, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_DIGGING(14, (user, buf) -> { + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + }), + PLAYER_BLOCK_PLACEMENT(15, (user, buf) -> { + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + PreNettyTypes.readItemStackb1_2(buf); + }), + HELD_ITEM_CHANGE(16, (user, buf) -> { + buf.readShort(); + }), + ANIMATION(18, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + ENTITY_ACTION(19, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + CLOSE_WINDOW(101, (user, buf) -> { + buf.readByte(); + }), + CLICK_WINDOW(102, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readByte(); + buf.readShort(); + PreNettyTypes.readItemStackb1_2(buf); + }), + WINDOW_CONFIRMATION(106, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readByte(); + }), + UPDATE_SIGN(130, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + PreNettyTypes.readUTF(buf); + PreNettyTypes.readUTF(buf); + PreNettyTypes.readUTF(buf); + PreNettyTypes.readUTF(buf); + }), + DISCONNECT(255, (user, buf) -> { + PreNettyTypes.readUTF(buf); + }); + + private static final ServerboundPacketsb1_2[] REGISTRY = new ServerboundPacketsb1_2[256]; + + static { + for (ServerboundPacketsb1_2 packet : values()) { + REGISTRY[packet.id] = packet; + } + } + + public static ServerboundPacketsb1_2 getPacket(final int id) { + return REGISTRY[id]; + } + + private final int id; + private final BiConsumer packetReader; + + ServerboundPacketsb1_2(final int id, final BiConsumer packetReader) { + this.id = id; + this.packetReader = packetReader; + } + + @Override + public int getId() { + return this.id; + } + + @Override + public String getName() { + return name(); + } + + @Override + public BiConsumer getPacketReader() { + return this.packetReader; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_3_0_1tob1_2_0_2/data/BlockHardnessList.java b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_3_0_1tob1_2_0_2/data/BlockHardnessList.java new file mode 100644 index 0000000..9671ba3 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_3_0_1tob1_2_0_2/data/BlockHardnessList.java @@ -0,0 +1,105 @@ +package net.raphimc.vialegacy.protocols.beta.protocolb1_3_0_1tob1_2_0_2.data; + +import net.raphimc.vialegacy.api.IdAndData; + +import java.util.HashMap; +import java.util.Map; + +public class BlockHardnessList { + + private static final Map HARDNESS_TABLE = new HashMap<>(82, 0.99F); + + static { + HARDNESS_TABLE.put(1, 1.5f); + HARDNESS_TABLE.put(2, 0.6f); + HARDNESS_TABLE.put(3, 0.5f); + HARDNESS_TABLE.put(4, 2.0f); + HARDNESS_TABLE.put(5, 2.0f); + HARDNESS_TABLE.put(6, 0.0f); + HARDNESS_TABLE.put(7, -1.0f); + HARDNESS_TABLE.put(8, 100.0f); + HARDNESS_TABLE.put(9, 100.0f); + HARDNESS_TABLE.put(10, 0.0f); + HARDNESS_TABLE.put(11, 100.0f); + HARDNESS_TABLE.put(12, 0.5f); + HARDNESS_TABLE.put(13, 0.6f); + HARDNESS_TABLE.put(14, 3.0f); + HARDNESS_TABLE.put(15, 3.0f); + HARDNESS_TABLE.put(16, 3.0f); + HARDNESS_TABLE.put(17, 2.0f); + HARDNESS_TABLE.put(18, 0.2f); + HARDNESS_TABLE.put(19, 0.6f); + HARDNESS_TABLE.put(20, 0.3f); + HARDNESS_TABLE.put(21, 3.0f); + HARDNESS_TABLE.put(22, 3.0f); + HARDNESS_TABLE.put(23, 3.5f); + HARDNESS_TABLE.put(24, 0.8f); + HARDNESS_TABLE.put(25, 0.8f); + HARDNESS_TABLE.put(35, 0.8f); + HARDNESS_TABLE.put(37, 0.0f); + HARDNESS_TABLE.put(38, 0.0f); + HARDNESS_TABLE.put(39, 0.0f); + HARDNESS_TABLE.put(40, 0.0f); + HARDNESS_TABLE.put(41, 3.0f); + HARDNESS_TABLE.put(42, 5.0f); + HARDNESS_TABLE.put(43, 2.0f); + HARDNESS_TABLE.put(44, 2.0f); + HARDNESS_TABLE.put(45, 2.0f); + HARDNESS_TABLE.put(46, 0.0f); + HARDNESS_TABLE.put(47, 1.5f); + HARDNESS_TABLE.put(48, 2.0f); + HARDNESS_TABLE.put(49, 10.0f); + HARDNESS_TABLE.put(50, 0.0f); + HARDNESS_TABLE.put(51, 0.0f); + HARDNESS_TABLE.put(52, 5.0f); + HARDNESS_TABLE.put(53, 2.0f); + HARDNESS_TABLE.put(54, 2.5f); + HARDNESS_TABLE.put(55, 0.0f); + HARDNESS_TABLE.put(56, 3.0f); + HARDNESS_TABLE.put(57, 5.0f); + HARDNESS_TABLE.put(58, 2.5f); + HARDNESS_TABLE.put(59, 0.0f); + HARDNESS_TABLE.put(60, 0.6f); + HARDNESS_TABLE.put(61, 3.5f); + HARDNESS_TABLE.put(62, 3.5f); + HARDNESS_TABLE.put(63, 1.0f); + HARDNESS_TABLE.put(64, 3.0f); + HARDNESS_TABLE.put(65, 0.4f); + HARDNESS_TABLE.put(66, 0.7f); + HARDNESS_TABLE.put(67, 2.0f); + HARDNESS_TABLE.put(68, 1.0f); + HARDNESS_TABLE.put(69, 0.5f); + HARDNESS_TABLE.put(70, 0.5f); + HARDNESS_TABLE.put(71, 5.0f); + HARDNESS_TABLE.put(72, 0.5f); + HARDNESS_TABLE.put(73, 3.0f); + HARDNESS_TABLE.put(74, 3.0f); + HARDNESS_TABLE.put(75, 0.0f); + HARDNESS_TABLE.put(76, 0.0f); + HARDNESS_TABLE.put(77, 0.5f); + HARDNESS_TABLE.put(78, 0.1f); + HARDNESS_TABLE.put(79, 0.5f); + HARDNESS_TABLE.put(80, 0.2f); + HARDNESS_TABLE.put(81, 0.4f); + HARDNESS_TABLE.put(82, 0.6f); + HARDNESS_TABLE.put(83, 0.0f); + HARDNESS_TABLE.put(84, 2.0f); + HARDNESS_TABLE.put(85, 2.0f); + HARDNESS_TABLE.put(86, 1.0f); + HARDNESS_TABLE.put(87, 0.4f); + HARDNESS_TABLE.put(88, 0.5f); + HARDNESS_TABLE.put(89, 0.3f); + HARDNESS_TABLE.put(90, -1.0f); + HARDNESS_TABLE.put(91, 1.0f); + HARDNESS_TABLE.put(92, 0.5f); + } + + public static boolean canBeBrokenInstantly(final int blockID) { + return HARDNESS_TABLE.get(blockID) == 0; + } + + public static boolean canBeBrokenInstantly(final IdAndData block) { + return canBeBrokenInstantly(block.id); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_3_0_1tob1_2_0_2/storage/BlockDigStorage.java b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_3_0_1tob1_2_0_2/storage/BlockDigStorage.java new file mode 100644 index 0000000..c163361 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_3_0_1tob1_2_0_2/storage/BlockDigStorage.java @@ -0,0 +1,34 @@ +package net.raphimc.vialegacy.protocols.beta.protocolb1_3_0_1tob1_2_0_2.storage; + +import com.viaversion.viaversion.api.connection.StoredObject; +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.minecraft.Position; +import net.raphimc.vialegacy.protocols.beta.protocolb1_3_0_1tob1_2_0_2.Protocolb1_3_0_1tob1_2_0_2; + +public class BlockDigStorage extends StoredObject { + + public int tick = 1; + private final Position position; + private final short facing; + + public BlockDigStorage(UserConnection user, final Position position, final short facing) { + super(user); + this.position = position; + this.facing = facing; + } + + public void tick() { + try { + if (tick >= 5) { + Protocolb1_3_0_1tob1_2_0_2.sendBlockDigPacket(this.getUser(), (byte) 0, position, facing); + tick = 0; + } else { + tick++; + } + Protocolb1_3_0_1tob1_2_0_2.sendBlockDigPacket(this.getUser(), (byte) 1, position, facing); + } catch (Throwable e) { + e.printStackTrace(); + } + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_3_0_1tob1_2_0_2/task/BlockDigTickTask.java b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_3_0_1tob1_2_0_2/task/BlockDigTickTask.java new file mode 100644 index 0000000..ede3630 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_3_0_1tob1_2_0_2/task/BlockDigTickTask.java @@ -0,0 +1,17 @@ +package net.raphimc.vialegacy.protocols.beta.protocolb1_3_0_1tob1_2_0_2.task; + +import com.viaversion.viaversion.api.Via; +import com.viaversion.viaversion.api.connection.UserConnection; +import net.raphimc.vialegacy.protocols.beta.protocolb1_3_0_1tob1_2_0_2.storage.BlockDigStorage; + +public class BlockDigTickTask implements Runnable { + + @Override + public void run() { + for (UserConnection info : Via.getManager().getConnectionManager().getConnections()) { + final BlockDigStorage blockDigStorage = info.get(BlockDigStorage.class); + if (blockDigStorage != null) blockDigStorage.tick(); + } + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_3_0_1tob1_2_0_2/types/MetaTypeb1_2.java b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_3_0_1tob1_2_0_2/types/MetaTypeb1_2.java new file mode 100644 index 0000000..facb39a --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_3_0_1tob1_2_0_2/types/MetaTypeb1_2.java @@ -0,0 +1,37 @@ +package net.raphimc.vialegacy.protocols.beta.protocolb1_3_0_1tob1_2_0_2.types; + +import com.viaversion.viaversion.api.minecraft.metadata.MetaType; +import com.viaversion.viaversion.api.type.Type; +import net.raphimc.vialegacy.protocols.beta.protocolb1_8_0_1tob1_7_0_3.types.Typesb1_7_0_3; +import net.raphimc.vialegacy.protocols.release.protocol1_4_2to1_3_1_2.types.Types1_3_1; + +public enum MetaTypeb1_2 implements MetaType { + + Byte(0, Type.BYTE), + Short(1, Type.SHORT), + Int(2, Type.INT), + Float(3, Type.FLOAT), + String(4, Typesb1_7_0_3.STRING), + Slot(5, Types1_3_1.NBTLESS_ITEM); + + private final int typeID; + private final Type type; + + MetaTypeb1_2(int typeID, Type type) { + this.typeID = typeID; + this.type = type; + } + + public static MetaTypeb1_2 byId(int id) { + return values()[id]; + } + + public int typeId() { + return this.typeID; + } + + public Type type() { + return this.type; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_3_0_1tob1_2_0_2/types/MetadataType.java b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_3_0_1tob1_2_0_2/types/MetadataType.java new file mode 100644 index 0000000..7287140 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_3_0_1tob1_2_0_2/types/MetadataType.java @@ -0,0 +1,13 @@ +package net.raphimc.vialegacy.protocols.beta.protocolb1_3_0_1tob1_2_0_2.types; + +import com.viaversion.viaversion.api.minecraft.metadata.MetaType; +import com.viaversion.viaversion.api.type.types.minecraft.OldMetaType; + +public class MetadataType extends OldMetaType { + + @Override + protected MetaType getType(int index) { + return MetaTypeb1_2.byId(index); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_3_0_1tob1_2_0_2/types/Typesb1_2.java b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_3_0_1tob1_2_0_2/types/Typesb1_2.java new file mode 100644 index 0000000..0984291 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_3_0_1tob1_2_0_2/types/Typesb1_2.java @@ -0,0 +1,14 @@ +package net.raphimc.vialegacy.protocols.beta.protocolb1_3_0_1tob1_2_0_2.types; + +import com.viaversion.viaversion.api.minecraft.metadata.Metadata; +import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.types.minecraft.MetaListType; + +import java.util.List; + +public class Typesb1_2 { + + public static final Type METADATA = new MetadataType(); + public static final Type> METADATA_LIST = new MetaListType(METADATA); + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_4_0_1tob1_3_0_1/ClientboundPacketsb1_3.java b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_4_0_1tob1_3_0_1/ClientboundPacketsb1_3.java new file mode 100644 index 0000000..f2fee6a --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_4_0_1tob1_3_0_1/ClientboundPacketsb1_3.java @@ -0,0 +1,311 @@ +package net.raphimc.vialegacy.protocols.beta.protocolb1_4_0_1tob1_3_0_1; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType; +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.util.PreNettyPacketType; + +import java.util.function.BiConsumer; + +import static net.raphimc.vialegacy.util.PreNettyTypes.*; + +public enum ClientboundPacketsb1_3 implements ClientboundPacketType, PreNettyPacketType { + + KEEP_ALIVE(0, (user, buf) -> { + }), + JOIN_GAME(1, (user, buf) -> { + buf.readInt(); + readUTF(buf); + readUTF(buf); + buf.readLong(); + buf.readByte(); + }), + HANDSHAKE(2, (user, buf) -> { + readUTF(buf); + }), + CHAT_MESSAGE(3, (user, buf) -> { + readUTF(buf); + }), + TIME_UPDATE(4, (user, buf) -> { + buf.readLong(); + }), + ENTITY_EQUIPMENT(5, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readShort(); + buf.readShort(); + }), + SPAWN_POSITION(6, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + UPDATE_HEALTH(8, (user, buf) -> { + buf.readShort(); + }), + RESPAWN(9, (user, buf) -> { + }), + PLAYER_POSITION_ONLY_ONGROUND(10, (user, buf) -> { + buf.readUnsignedByte(); + }), + PLAYER_POSITION_ONLY_POSITION(11, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION_ONLY_LOOK(12, (user, buf) -> { + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION(13, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + USE_BED(17, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readByte(); + buf.readInt(); + }), + ENTITY_ANIMATION(18, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + SPAWN_PLAYER(20, (user, buf) -> { + buf.readInt(); + readUTF(buf); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + }), + SPAWN_ITEM(21, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readByte(); + buf.readShort(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + COLLECT_ITEM(22, (user, buf) -> { + buf.readInt(); + buf.readInt(); + }), + SPAWN_ENTITY(23, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + SPAWN_MOB(24, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + readEntityMetadatab1_3(buf); + }), + SPAWN_PAINTING(25, (user, buf) -> { + buf.readInt(); + readUTF(buf); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + ENTITY_VELOCITY(28, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readShort(); + buf.readShort(); + }), + DESTROY_ENTITIES(29, (user, buf) -> { + buf.readInt(); + }), + ENTITY_MOVEMENT(30, (user, buf) -> { + buf.readInt(); + }), + ENTITY_POSITION(31, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_ROTATION(32, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_POSITION_AND_ROTATION(33, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_TELEPORT(34, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_STATUS(38, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + ATTACH_ENTITY(39, (user, buf) -> { + buf.readInt(); + buf.readInt(); + }), + ENTITY_METADATA(40, (user, buf) -> { + buf.readInt(); + readEntityMetadatab1_3(buf); + }), + PRE_CHUNK(50, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readByte(); + }), + CHUNK_DATA(51, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + int x = buf.readInt(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + MULTI_BLOCK_CHANGE(52, (user, buf) -> { + buf.readInt(); + buf.readInt(); + short x = buf.readShort(); + for (int i = 0; i < x; i++) buf.readShort(); + for (int i = 0; i < x; i++) buf.readByte(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + BLOCK_CHANGE(53, (user, buf) -> { + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + buf.readUnsignedByte(); + }), + BLOCK_ACTION(54, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + buf.readUnsignedByte(); + buf.readUnsignedByte(); + }), + EXPLOSION(60, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + int x = buf.readInt(); + for (int i = 0; i < x; i++) { + buf.readByte(); + buf.readByte(); + buf.readByte(); + } + }), + OPEN_WINDOW(100, (user, buf) -> { + buf.readByte(); + buf.readByte(); + readUTF(buf); + buf.readByte(); + }), + CLOSE_WINDOW(101, (user, buf) -> { + buf.readByte(); + }), + SET_SLOT(103, (user, buf) -> { + buf.readByte(); + buf.readShort(); + readItemStackb1_2(buf); + }), + WINDOW_ITEMS(104, (user, buf) -> { + buf.readByte(); + int x = buf.readShort(); + for (int i = 0; i < x; i++) readItemStackb1_2(buf); + }), + WINDOW_PROPERTY(105, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readShort(); + }), + WINDOW_CONFIRMATION(106, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readByte(); + }), + UPDATE_SIGN(130, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + readUTF(buf); + readUTF(buf); + readUTF(buf); + readUTF(buf); + }), + DISCONNECT(255, (user, buf) -> { + readUTF(buf); + }); + + private static final ClientboundPacketsb1_3[] REGISTRY = new ClientboundPacketsb1_3[256]; + + static { + for (ClientboundPacketsb1_3 packet : values()) { + REGISTRY[packet.id] = packet; + } + } + + public static ClientboundPacketsb1_3 getPacket(final int id) { + return REGISTRY[id]; + } + + private final int id; + private final BiConsumer packetReader; + + ClientboundPacketsb1_3(final int id, final BiConsumer packetReader) { + this.id = id; + this.packetReader = packetReader; + } + + @Override + public int getId() { + return this.id; + } + + @Override + public String getName() { + return name(); + } + + @Override + public BiConsumer getPacketReader() { + return this.packetReader; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_4_0_1tob1_3_0_1/Protocolb1_4_0_1tob1_3_0_1.java b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_4_0_1tob1_3_0_1/Protocolb1_4_0_1tob1_3_0_1.java new file mode 100644 index 0000000..98c4767 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_4_0_1tob1_3_0_1/Protocolb1_4_0_1tob1_3_0_1.java @@ -0,0 +1,20 @@ +package net.raphimc.vialegacy.protocols.beta.protocolb1_4_0_1tob1_3_0_1; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.AbstractProtocol; +import net.raphimc.vialegacy.protocols.beta.protocolb1_5_0_2tob1_4_0_1.ClientboundPacketsb1_4; +import net.raphimc.vialegacy.protocols.beta.protocolb1_5_0_2tob1_4_0_1.ServerboundPacketsb1_4; +import net.raphimc.vialegacy.util.PreNettySplitter; + +public class Protocolb1_4_0_1tob1_3_0_1 extends AbstractProtocol { + + public Protocolb1_4_0_1tob1_3_0_1() { + super(ClientboundPacketsb1_3.class, ClientboundPacketsb1_4.class, ServerboundPacketsb1_4.class, ServerboundPacketsb1_4.class); + } + + @Override + public void init(UserConnection userConnection) { + userConnection.put(new PreNettySplitter(userConnection, Protocolb1_4_0_1tob1_3_0_1.class, ClientboundPacketsb1_3::getPacket)); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_5_0_2tob1_4_0_1/ClientboundPacketsb1_4.java b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_5_0_2tob1_4_0_1/ClientboundPacketsb1_4.java new file mode 100644 index 0000000..55e447b --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_5_0_2tob1_4_0_1/ClientboundPacketsb1_4.java @@ -0,0 +1,314 @@ +package net.raphimc.vialegacy.protocols.beta.protocolb1_5_0_2tob1_4_0_1; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType; +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.util.PreNettyPacketType; + +import java.util.function.BiConsumer; + +import static net.raphimc.vialegacy.util.PreNettyTypes.*; + +public enum ClientboundPacketsb1_4 implements ClientboundPacketType, PreNettyPacketType { + + KEEP_ALIVE(0, (user, buf) -> { + }), + JOIN_GAME(1, (user, buf) -> { + buf.readInt(); + readUTF(buf); + readUTF(buf); + buf.readLong(); + buf.readByte(); + }), + HANDSHAKE(2, (user, buf) -> { + readUTF(buf); + }), + CHAT_MESSAGE(3, (user, buf) -> { + readUTF(buf); + }), + TIME_UPDATE(4, (user, buf) -> { + buf.readLong(); + }), + ENTITY_EQUIPMENT(5, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readShort(); + buf.readShort(); + }), + SPAWN_POSITION(6, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + UPDATE_HEALTH(8, (user, buf) -> { + buf.readShort(); + }), + RESPAWN(9, (user, buf) -> { + }), + PLAYER_POSITION_ONLY_ONGROUND(10, (user, buf) -> { + buf.readUnsignedByte(); + }), + PLAYER_POSITION_ONLY_POSITION(11, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION_ONLY_LOOK(12, (user, buf) -> { + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION(13, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + USE_BED(17, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readByte(); + buf.readInt(); + }), + ENTITY_ANIMATION(18, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + SPAWN_PLAYER(20, (user, buf) -> { + buf.readInt(); + readUTF(buf); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + }), + SPAWN_ITEM(21, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readByte(); + buf.readShort(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + COLLECT_ITEM(22, (user, buf) -> { + buf.readInt(); + buf.readInt(); + }), + SPAWN_ENTITY(23, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + SPAWN_MOB(24, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + readEntityMetadatab1_3(buf); + }), + SPAWN_PAINTING(25, (user, buf) -> { + buf.readInt(); + readUTF(buf); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + ENTITY_VELOCITY(28, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readShort(); + buf.readShort(); + }), + DESTROY_ENTITIES(29, (user, buf) -> { + buf.readInt(); + }), + ENTITY_MOVEMENT(30, (user, buf) -> { + buf.readInt(); + }), + ENTITY_POSITION(31, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_ROTATION(32, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_POSITION_AND_ROTATION(33, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_TELEPORT(34, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_STATUS(38, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + ATTACH_ENTITY(39, (user, buf) -> { + buf.readInt(); + buf.readInt(); + }), + ENTITY_METADATA(40, (user, buf) -> { + buf.readInt(); + readEntityMetadatab1_3(buf); + }), + PRE_CHUNK(50, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readByte(); + }), + CHUNK_DATA(51, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + int x = buf.readInt(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + MULTI_BLOCK_CHANGE(52, (user, buf) -> { + buf.readInt(); + buf.readInt(); + short x = buf.readShort(); + for (int i = 0; i < x; i++) buf.readShort(); + for (int i = 0; i < x; i++) buf.readByte(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + BLOCK_CHANGE(53, (user, buf) -> { + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + buf.readUnsignedByte(); + }), + BLOCK_ACTION(54, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + buf.readUnsignedByte(); + buf.readUnsignedByte(); + }), + EXPLOSION(60, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + int x = buf.readInt(); + for (int i = 0; i < x; i++) { + buf.readByte(); + buf.readByte(); + buf.readByte(); + } + }), + GAME_EVENT(70, (user, buf) -> { + buf.readByte(); + }), + OPEN_WINDOW(100, (user, buf) -> { + buf.readByte(); + buf.readByte(); + readUTF(buf); + buf.readByte(); + }), + CLOSE_WINDOW(101, (user, buf) -> { + buf.readByte(); + }), + SET_SLOT(103, (user, buf) -> { + buf.readByte(); + buf.readShort(); + readItemStackb1_2(buf); + }), + WINDOW_ITEMS(104, (user, buf) -> { + buf.readByte(); + int x = buf.readShort(); + for (int i = 0; i < x; i++) readItemStackb1_2(buf); + }), + WINDOW_PROPERTY(105, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readShort(); + }), + WINDOW_CONFIRMATION(106, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readByte(); + }), + UPDATE_SIGN(130, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + readUTF(buf); + readUTF(buf); + readUTF(buf); + readUTF(buf); + }), + DISCONNECT(255, (user, buf) -> { + readUTF(buf); + }); + + private static final ClientboundPacketsb1_4[] REGISTRY = new ClientboundPacketsb1_4[256]; + + static { + for (ClientboundPacketsb1_4 packet : values()) { + REGISTRY[packet.id] = packet; + } + } + + public static ClientboundPacketsb1_4 getPacket(final int id) { + return REGISTRY[id]; + } + + private final int id; + private final BiConsumer packetReader; + + ClientboundPacketsb1_4(final int id, final BiConsumer packetReader) { + this.id = id; + this.packetReader = packetReader; + } + + @Override + public int getId() { + return this.id; + } + + @Override + public String getName() { + return name(); + } + + @Override + public BiConsumer getPacketReader() { + return this.packetReader; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_5_0_2tob1_4_0_1/Protocolb1_5_0_2tob1_4_0_1.java b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_5_0_2tob1_4_0_1/Protocolb1_5_0_2tob1_4_0_1.java new file mode 100644 index 0000000..6126218 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_5_0_2tob1_4_0_1/Protocolb1_5_0_2tob1_4_0_1.java @@ -0,0 +1,186 @@ +package net.raphimc.vialegacy.protocols.beta.protocolb1_5_0_2tob1_4_0_1; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.minecraft.metadata.Metadata; +import com.viaversion.viaversion.api.protocol.AbstractProtocol; +import com.viaversion.viaversion.api.protocol.packet.State; +import com.viaversion.viaversion.api.protocol.remapper.PacketRemapper; +import com.viaversion.viaversion.api.type.Type; +import net.raphimc.vialegacy.protocols.beta.protocolb1_5_0_2tob1_4_0_1.types.Typesb1_4; +import net.raphimc.vialegacy.protocols.beta.protocolb1_6_0_6tob1_5_0_2.ClientboundPacketsb1_5; +import net.raphimc.vialegacy.protocols.beta.protocolb1_6_0_6tob1_5_0_2.ServerboundPacketsb1_5; +import net.raphimc.vialegacy.protocols.beta.protocolb1_8_0_1tob1_7_0_3.types.Typesb1_7_0_3; +import net.raphimc.vialegacy.protocols.release.protocol1_4_2to1_3_1_2.types.MetaType1_3_1; +import net.raphimc.vialegacy.protocols.release.protocol1_4_2to1_3_1_2.types.Types1_3_1; +import net.raphimc.vialegacy.protocols.release.protocol1_4_4_5to1_4_2.types.Types1_4_2; +import net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.types.Types1_6_4; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.Types1_7_6; +import net.raphimc.vialegacy.util.PreNettySplitter; + +import java.util.List; + +public class Protocolb1_5_0_2tob1_4_0_1 extends AbstractProtocol { + + public Protocolb1_5_0_2tob1_4_0_1() { + super(ClientboundPacketsb1_4.class, ClientboundPacketsb1_5.class, ServerboundPacketsb1_4.class, ServerboundPacketsb1_5.class); + } + + @Override + protected void registerPackets() { + this.registerClientbound(State.LOGIN, ClientboundPacketsb1_4.HANDSHAKE.getId(), ClientboundPacketsb1_5.HANDSHAKE.getId(), new PacketRemapper() { + @Override + public void registerMap() { + map(Typesb1_7_0_3.STRING, Types1_6_4.STRING); // server hash + } + }); + this.registerClientbound(State.LOGIN, ClientboundPacketsb1_4.DISCONNECT.getId(), ClientboundPacketsb1_5.DISCONNECT.getId(), new PacketRemapper() { + @Override + public void registerMap() { + map(Typesb1_7_0_3.STRING, Types1_6_4.STRING); // reason + } + }); + this.registerClientbound(ClientboundPacketsb1_4.JOIN_GAME, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + map(Typesb1_7_0_3.STRING, Types1_6_4.STRING); // username + read(Typesb1_7_0_3.STRING); // password + map(Type.LONG); // seed + map(Type.BYTE); // dimension id + } + }); + this.registerClientbound(ClientboundPacketsb1_4.CHAT_MESSAGE, new PacketRemapper() { + @Override + public void registerMap() { + map(Typesb1_7_0_3.STRING, Types1_6_4.STRING); // message + } + }); + this.registerClientbound(ClientboundPacketsb1_4.SPAWN_PLAYER, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + map(Typesb1_7_0_3.STRING, Types1_6_4.STRING); // username + handler(wrapper -> { + String name = wrapper.get(Types1_6_4.STRING, 0); + name = name.substring(0, Math.min(name.length(), 16)); + wrapper.set(Types1_6_4.STRING, 0, name); + }); + map(Type.INT); // x + map(Type.INT); // y + map(Type.INT); // z + map(Type.BYTE); // yaw + map(Type.BYTE); // pitch + map(Type.UNSIGNED_SHORT); // item + } + }); + this.registerClientbound(ClientboundPacketsb1_4.SPAWN_MOB, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + map(Type.UNSIGNED_BYTE); // type id + map(Type.INT); // x + map(Type.INT); // y + map(Type.INT); // z + map(Type.BYTE); // yaw + map(Type.BYTE); // pitch + map(Typesb1_4.METADATA_LIST, Types1_3_1.METADATA_LIST); // metadata + handler(wrapper -> rewriteMetadata(wrapper.get(Types1_3_1.METADATA_LIST, 0))); + } + }); + this.registerClientbound(ClientboundPacketsb1_4.SPAWN_PAINTING, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + map(Typesb1_7_0_3.STRING, Types1_6_4.STRING); // motive + map(Types1_7_6.POSITION_INT); // position + map(Type.INT); // rotation + } + }); + this.registerClientbound(ClientboundPacketsb1_4.ENTITY_METADATA, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + map(Typesb1_4.METADATA_LIST, Types1_3_1.METADATA_LIST); // metadata + handler(wrapper -> rewriteMetadata(wrapper.get(Types1_3_1.METADATA_LIST, 0))); + } + }); + this.registerClientbound(ClientboundPacketsb1_4.UPDATE_SIGN, new PacketRemapper() { + @Override + public void registerMap() { + map(Types1_7_6.POSITION_SHORT); // position + map(Typesb1_7_0_3.STRING, Types1_6_4.STRING); // line 1 + map(Typesb1_7_0_3.STRING, Types1_6_4.STRING); // line 2 + map(Typesb1_7_0_3.STRING, Types1_6_4.STRING); // line 3 + map(Typesb1_7_0_3.STRING, Types1_6_4.STRING); // line 4 + } + }); + this.registerClientbound(ClientboundPacketsb1_4.DISCONNECT, new PacketRemapper() { + @Override + public void registerMap() { + map(Typesb1_7_0_3.STRING, Types1_6_4.STRING); // reason + } + }); + + this.registerServerbound(State.LOGIN, ServerboundPacketsb1_5.HANDSHAKE.getId(), ServerboundPacketsb1_4.HANDSHAKE.getId(), new PacketRemapper() { + @Override + public void registerMap() { + map(Types1_6_4.STRING, Typesb1_7_0_3.STRING); // username + } + }); + this.registerServerbound(State.LOGIN, ServerboundPacketsb1_4.LOGIN.getId(), ServerboundPacketsb1_5.LOGIN.getId(), new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // protocol id + map(Types1_6_4.STRING, Typesb1_7_0_3.STRING); // username + create(Typesb1_7_0_3.STRING, "Password"); // password + map(Type.LONG); // seed + map(Type.BYTE); // dimension id + } + }); + this.registerServerbound(ServerboundPacketsb1_5.CHAT_MESSAGE, new PacketRemapper() { + @Override + public void registerMap() { + map(Types1_6_4.STRING, Typesb1_7_0_3.STRING); // message + } + }); + this.registerServerbound(ServerboundPacketsb1_5.CLICK_WINDOW, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.BYTE); // window id + map(Type.SHORT); // slot + map(Type.BYTE); // button + map(Type.SHORT); // action + read(Type.BYTE); // mode + map(Types1_4_2.NBTLESS_ITEM); // item + } + }); + this.registerServerbound(ServerboundPacketsb1_5.UPDATE_SIGN, new PacketRemapper() { + @Override + public void registerMap() { + map(Types1_7_6.POSITION_SHORT); // position + map(Types1_6_4.STRING, Typesb1_7_0_3.STRING); // line 1 + map(Types1_6_4.STRING, Typesb1_7_0_3.STRING); // line 2 + map(Types1_6_4.STRING, Typesb1_7_0_3.STRING); // line 3 + map(Types1_6_4.STRING, Typesb1_7_0_3.STRING); // line 4 + } + }); + this.registerServerbound(ServerboundPacketsb1_5.DISCONNECT, new PacketRemapper() { + @Override + public void registerMap() { + map(Types1_6_4.STRING, Typesb1_7_0_3.STRING); // reason + } + }); + } + + private void rewriteMetadata(final List metadataList) { + for (Metadata metadata : metadataList) { + metadata.setMetaType(MetaType1_3_1.byId(metadata.metaType().typeId())); + } + } + + @Override + public void init(UserConnection userConnection) { + userConnection.put(new PreNettySplitter(userConnection, Protocolb1_5_0_2tob1_4_0_1.class, ClientboundPacketsb1_4::getPacket)); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_5_0_2tob1_4_0_1/ServerboundPacketsb1_4.java b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_5_0_2tob1_4_0_1/ServerboundPacketsb1_4.java new file mode 100644 index 0000000..16ccc42 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_5_0_2tob1_4_0_1/ServerboundPacketsb1_4.java @@ -0,0 +1,157 @@ +package net.raphimc.vialegacy.protocols.beta.protocolb1_5_0_2tob1_4_0_1; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.packet.ServerboundPacketType; +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.util.PreNettyPacketType; + +import java.util.function.BiConsumer; + +import static net.raphimc.vialegacy.util.PreNettyTypes.readItemStackb1_2; +import static net.raphimc.vialegacy.util.PreNettyTypes.readUTF; + +public enum ServerboundPacketsb1_4 implements ServerboundPacketType, PreNettyPacketType { + + KEEP_ALIVE(0, (user, buf) -> { + }), + LOGIN(1, (user, buf) -> { + buf.readInt(); + readUTF(buf); + readUTF(buf); + buf.readLong(); + buf.readByte(); + }), + HANDSHAKE(2, (user, buf) -> { + readUTF(buf); + }), + CHAT_MESSAGE(3, (user, buf) -> { + readUTF(buf); + }), + INTERACT_ENTITY(7, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readByte(); + }), + RESPAWN(9, (user, buf) -> { + }), + PLAYER_MOVEMENT(10, (user, buf) -> { + buf.readUnsignedByte(); + }), + PLAYER_POSITION(11, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readUnsignedByte(); + }), + PLAYER_ROTATION(12, (user, buf) -> { + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION_AND_ROTATION(13, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_DIGGING(14, (user, buf) -> { + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + }), + PLAYER_BLOCK_PLACEMENT(15, (user, buf) -> { + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + readItemStackb1_2(buf); + }), + HELD_ITEM_CHANGE(16, (user, buf) -> { + buf.readShort(); + }), + ANIMATION(18, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + ENTITY_ACTION(19, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + POSITION(27, (user, buf) -> { + buf.readFloat(); + buf.readFloat(); + buf.readFloat(); + buf.readFloat(); + buf.readBoolean(); + buf.readBoolean(); + }), + CLOSE_WINDOW(101, (user, buf) -> { + buf.readByte(); + }), + CLICK_WINDOW(102, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readByte(); + buf.readShort(); + readItemStackb1_2(buf); + }), + WINDOW_CONFIRMATION(106, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readByte(); + }), + UPDATE_SIGN(130, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + readUTF(buf); + readUTF(buf); + readUTF(buf); + readUTF(buf); + }), + DISCONNECT(255, (user, buf) -> { + readUTF(buf); + }); + + private static final ServerboundPacketsb1_4[] REGISTRY = new ServerboundPacketsb1_4[256]; + + static { + for (ServerboundPacketsb1_4 packet : values()) { + REGISTRY[packet.id] = packet; + } + } + + public static ServerboundPacketsb1_4 getPacket(final int id) { + return REGISTRY[id]; + } + + private final int id; + private final BiConsumer packetReader; + + ServerboundPacketsb1_4(final int id, final BiConsumer packetReader) { + this.id = id; + this.packetReader = packetReader; + } + + @Override + public int getId() { + return this.id; + } + + @Override + public String getName() { + return name(); + } + + @Override + public BiConsumer getPacketReader() { + return this.packetReader; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_5_0_2tob1_4_0_1/types/MetaTypeb1_4.java b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_5_0_2tob1_4_0_1/types/MetaTypeb1_4.java new file mode 100644 index 0000000..c3201fb --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_5_0_2tob1_4_0_1/types/MetaTypeb1_4.java @@ -0,0 +1,38 @@ +package net.raphimc.vialegacy.protocols.beta.protocolb1_5_0_2tob1_4_0_1.types; + +import com.viaversion.viaversion.api.minecraft.metadata.MetaType; +import com.viaversion.viaversion.api.type.Type; +import net.raphimc.vialegacy.protocols.beta.protocolb1_8_0_1tob1_7_0_3.types.Typesb1_7_0_3; +import net.raphimc.vialegacy.protocols.release.protocol1_4_2to1_3_1_2.types.Types1_3_1; + +public enum MetaTypeb1_4 implements MetaType { + + Byte(0, Type.BYTE), + Short(1, Type.SHORT), + Int(2, Type.INT), + Float(3, Type.FLOAT), + String(4, Typesb1_7_0_3.STRING), + Slot(5, Types1_3_1.NBTLESS_ITEM), + Position(6, Type.VECTOR); + + private final int typeID; + private final Type type; + + MetaTypeb1_4(int typeID, Type type) { + this.typeID = typeID; + this.type = type; + } + + public static MetaTypeb1_4 byId(int id) { + return values()[id]; + } + + public int typeId() { + return this.typeID; + } + + public Type type() { + return this.type; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_5_0_2tob1_4_0_1/types/MetadataType.java b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_5_0_2tob1_4_0_1/types/MetadataType.java new file mode 100644 index 0000000..3e89fa2 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_5_0_2tob1_4_0_1/types/MetadataType.java @@ -0,0 +1,13 @@ +package net.raphimc.vialegacy.protocols.beta.protocolb1_5_0_2tob1_4_0_1.types; + +import com.viaversion.viaversion.api.minecraft.metadata.MetaType; +import com.viaversion.viaversion.api.type.types.minecraft.OldMetaType; + +public class MetadataType extends OldMetaType { + + @Override + protected MetaType getType(int index) { + return MetaTypeb1_4.byId(index); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_5_0_2tob1_4_0_1/types/Typesb1_4.java b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_5_0_2tob1_4_0_1/types/Typesb1_4.java new file mode 100644 index 0000000..e138e33 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_5_0_2tob1_4_0_1/types/Typesb1_4.java @@ -0,0 +1,14 @@ +package net.raphimc.vialegacy.protocols.beta.protocolb1_5_0_2tob1_4_0_1.types; + +import com.viaversion.viaversion.api.minecraft.metadata.Metadata; +import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.types.minecraft.MetaListType; + +import java.util.List; + +public class Typesb1_4 { + + public static final Type METADATA = new MetadataType(); + public static final Type> METADATA_LIST = new MetaListType(METADATA); + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_6_0_6tob1_5_0_2/ClientboundPacketsb1_5.java b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_6_0_6tob1_5_0_2/ClientboundPacketsb1_5.java new file mode 100644 index 0000000..af2a79b --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_6_0_6tob1_5_0_2/ClientboundPacketsb1_5.java @@ -0,0 +1,324 @@ +package net.raphimc.vialegacy.protocols.beta.protocolb1_6_0_6tob1_5_0_2; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType; +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.util.PreNettyPacketType; + +import java.util.function.BiConsumer; + +import static net.raphimc.vialegacy.util.PreNettyTypes.*; + +public enum ClientboundPacketsb1_5 implements ClientboundPacketType, PreNettyPacketType { + + KEEP_ALIVE(0, (user, buf) -> { + }), + JOIN_GAME(1, (user, buf) -> { + buf.readInt(); + readString(buf); + buf.readLong(); + buf.readByte(); + }), + HANDSHAKE(2, (user, buf) -> { + readString(buf); + }), + CHAT_MESSAGE(3, (user, buf) -> { + readString(buf); + }), + TIME_UPDATE(4, (user, buf) -> { + buf.readLong(); + }), + ENTITY_EQUIPMENT(5, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readShort(); + buf.readShort(); + }), + SPAWN_POSITION(6, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + UPDATE_HEALTH(8, (user, buf) -> { + buf.readShort(); + }), + RESPAWN(9, (user, buf) -> { + }), + PLAYER_POSITION_ONLY_ONGROUND(10, (user, buf) -> { + buf.readUnsignedByte(); + }), + PLAYER_POSITION_ONLY_POSITION(11, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION_ONLY_LOOK(12, (user, buf) -> { + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION(13, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + USE_BED(17, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readByte(); + buf.readInt(); + }), + ENTITY_ANIMATION(18, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + SPAWN_PLAYER(20, (user, buf) -> { + buf.readInt(); + readString(buf); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + }), + SPAWN_ITEM(21, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readByte(); + buf.readShort(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + COLLECT_ITEM(22, (user, buf) -> { + buf.readInt(); + buf.readInt(); + }), + SPAWN_ENTITY(23, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + SPAWN_MOB(24, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + readEntityMetadatab1_5(buf); + }), + SPAWN_PAINTING(25, (user, buf) -> { + buf.readInt(); + readString(buf); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + ENTITY_VELOCITY(28, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readShort(); + buf.readShort(); + }), + DESTROY_ENTITIES(29, (user, buf) -> { + buf.readInt(); + }), + ENTITY_MOVEMENT(30, (user, buf) -> { + buf.readInt(); + }), + ENTITY_POSITION(31, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_ROTATION(32, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_POSITION_AND_ROTATION(33, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_TELEPORT(34, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_STATUS(38, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + ATTACH_ENTITY(39, (user, buf) -> { + buf.readInt(); + buf.readInt(); + }), + ENTITY_METADATA(40, (user, buf) -> { + buf.readInt(); + readEntityMetadatab1_5(buf); + }), + PRE_CHUNK(50, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readByte(); + }), + CHUNK_DATA(51, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + int x = buf.readInt(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + MULTI_BLOCK_CHANGE(52, (user, buf) -> { + buf.readInt(); + buf.readInt(); + short x = buf.readShort(); + for (int i = 0; i < x; i++) buf.readShort(); + for (int i = 0; i < x; i++) buf.readByte(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + BLOCK_CHANGE(53, (user, buf) -> { + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + buf.readUnsignedByte(); + }), + BLOCK_ACTION(54, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + buf.readUnsignedByte(); + buf.readUnsignedByte(); + }), + EXPLOSION(60, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + int x = buf.readInt(); + for (int i = 0; i < x; i++) { + buf.readByte(); + buf.readByte(); + buf.readByte(); + } + }), + GAME_EVENT(70, (user, buf) -> { + buf.readByte(); + }), + SPAWN_GLOBAL_ENTITY(71, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + OPEN_WINDOW(100, (user, buf) -> { + buf.readByte(); + buf.readByte(); + readUTF(buf); + buf.readByte(); + }), + CLOSE_WINDOW(101, (user, buf) -> { + buf.readByte(); + }), + SET_SLOT(103, (user, buf) -> { + buf.readByte(); + buf.readShort(); + readItemStackb1_2(buf); + }), + WINDOW_ITEMS(104, (user, buf) -> { + buf.readByte(); + int x = buf.readShort(); + for (int i = 0; i < x; i++) readItemStackb1_2(buf); + }), + WINDOW_PROPERTY(105, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readShort(); + }), + WINDOW_CONFIRMATION(106, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readByte(); + }), + UPDATE_SIGN(130, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + readString(buf); + readString(buf); + readString(buf); + readString(buf); + }), + STATISTICS(200, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + DISCONNECT(255, (user, buf) -> { + readString(buf); + }); + + private static final ClientboundPacketsb1_5[] REGISTRY = new ClientboundPacketsb1_5[256]; + + static { + for (ClientboundPacketsb1_5 packet : values()) { + REGISTRY[packet.id] = packet; + } + } + + public static ClientboundPacketsb1_5 getPacket(final int id) { + return REGISTRY[id]; + } + + private final int id; + private final BiConsumer packetReader; + + ClientboundPacketsb1_5(final int id, final BiConsumer packetReader) { + this.id = id; + this.packetReader = packetReader; + } + + @Override + public int getId() { + return this.id; + } + + @Override + public String getName() { + return name(); + } + + @Override + public BiConsumer getPacketReader() { + return this.packetReader; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_6_0_6tob1_5_0_2/Protocolb1_6_0_6tob1_5_0_2.java b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_6_0_6tob1_5_0_2/Protocolb1_6_0_6tob1_5_0_2.java new file mode 100644 index 0000000..d2d156a --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_6_0_6tob1_5_0_2/Protocolb1_6_0_6tob1_5_0_2.java @@ -0,0 +1,146 @@ +package net.raphimc.vialegacy.protocols.beta.protocolb1_6_0_6tob1_5_0_2; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.minecraft.Position; +import com.viaversion.viaversion.api.minecraft.item.Item; +import com.viaversion.viaversion.api.protocol.AbstractProtocol; +import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; +import com.viaversion.viaversion.api.protocol.remapper.PacketRemapper; +import com.viaversion.viaversion.api.type.Type; +import net.raphimc.vialegacy.api.*; +import net.raphimc.vialegacy.protocols.beta.protocolb1_6_0_6tob1_5_0_2.storage.WorldTimeStorage; +import net.raphimc.vialegacy.protocols.beta.protocolb1_8_0_1tob1_7_0_3.ClientboundPacketsb1_7; +import net.raphimc.vialegacy.protocols.beta.protocolb1_8_0_1tob1_7_0_3.ServerboundPacketsb1_7; +import net.raphimc.vialegacy.protocols.release.protocol1_4_4_5to1_4_2.types.Types1_4_2; +import net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.storage.ChunkTracker; +import net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.storage.PlayerInfoStorage; +import net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.types.Types1_6_4; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.Types1_7_6; +import net.raphimc.vialegacy.util.PreNettySplitter; + +public class Protocolb1_6_0_6tob1_5_0_2 extends AbstractProtocol { + + public Protocolb1_6_0_6tob1_5_0_2() { + super(ClientboundPacketsb1_5.class, ClientboundPacketsb1_7.class, ServerboundPacketsb1_5.class, ServerboundPacketsb1_7.class); + } + + @Override + protected void registerPackets() { + this.registerClientbound(ClientboundPacketsb1_5.TIME_UPDATE, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.LONG); // time + handler(wrapper -> wrapper.user().get(WorldTimeStorage.class).time = wrapper.get(Type.LONG, 0)); + } + }); + this.registerClientbound(ClientboundPacketsb1_5.RESPAWN, new PacketRemapper() { + @Override + public void registerMap() { + create(Type.BYTE, (byte) 0); // dimension id + } + }); + this.registerClientbound(ClientboundPacketsb1_5.SPAWN_ENTITY, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + map(Type.BYTE); // type id + map(Type.INT); // x + map(Type.INT); // y + map(Type.INT); // z + create(Type.INT, 0); // data + } + }); + + this.registerServerbound(ServerboundPacketsb1_7.RESPAWN, new PacketRemapper() { + @Override + public void registerMap() { + read(Type.BYTE); // dimension id + } + }); + this.registerServerbound(ServerboundPacketsb1_7.PLAYER_BLOCK_PLACEMENT, new PacketRemapper() { + @Override + public void registerMap() { + map(Types1_7_6.POSITION_UBYTE); // position + map(Type.UNSIGNED_BYTE); // direction + map(Types1_4_2.NBTLESS_ITEM); // item + handler(wrapper -> { + final PlayerInfoStorage playerInfoStorage = wrapper.user().get(PlayerInfoStorage.class); + Position pos = wrapper.get(Types1_7_6.POSITION_UBYTE, 0); + IdAndData block = wrapper.user().get(ChunkTracker.class).getBlockNotNull(pos); + final Item item = wrapper.get(Types1_4_2.NBTLESS_ITEM, 0); + if (block.id == BlockList1_6.bed.blockID) { + final byte[][] headBlockToFootBlock = {{0, 1}, {-1, 0}, {0, -1}, {1, 0}}; + final boolean isFoot = (block.data & 8) != 0; + if (!isFoot) { + final int bedDirection = block.data & 3; + pos = new Position(pos.x() + headBlockToFootBlock[bedDirection][0], pos.y(), pos.z() + headBlockToFootBlock[bedDirection][1]); + block = wrapper.user().get(ChunkTracker.class).getBlockNotNull(pos); + if (block.id != BlockList1_6.bed.blockID) return; + } + + final boolean isOccupied = (block.data & 4) != 0; + if (isOccupied) { + final PacketWrapper chat = PacketWrapper.create(ClientboundPacketsb1_7.CHAT_MESSAGE, wrapper.user()); + chat.write(Types1_6_4.STRING, "This bed is occupied"); + chat.send(Protocolb1_6_0_6tob1_5_0_2.class); + return; + } + + int dayTime = (int) (wrapper.user().get(WorldTimeStorage.class).time % 24000L); + float dayPercent = (dayTime + 1.0F) / 24000F - 0.25F; + if (dayPercent < 0.0F) dayPercent++; + if (dayPercent > 1.0F) dayPercent--; + + final float tempDayPercent = dayPercent; + dayPercent = 1.0F - (float) ((Math.cos((double) dayPercent * Math.PI) + 1.0D) / 2D); + dayPercent = tempDayPercent + (dayPercent - tempDayPercent) / 3F; + float skyRotation = (float) (1.0F - (Math.cos(dayPercent * Math.PI * 2.0F) * 2.0F + 0.5F)); + if (skyRotation < 0.0F) skyRotation = 0.0F; + if (skyRotation > 1.0F) skyRotation = 1.0F; + + final boolean isDayTime = (int) (skyRotation * 11F) < 4; + + if (isDayTime) { + final PacketWrapper chat = PacketWrapper.create(ClientboundPacketsb1_7.CHAT_MESSAGE, wrapper.user()); + chat.write(Types1_6_4.STRING, "You can only sleep at night"); + chat.send(Protocolb1_6_0_6tob1_5_0_2.class); + return; + } + + if (Math.abs(playerInfoStorage.posX - (double) pos.x()) > 3D || Math.abs(playerInfoStorage.posY - (double) pos.y()) > 2D || Math.abs(playerInfoStorage.posZ - (double) pos.z()) > 3D) { + return; + } + + final PacketWrapper useBed = PacketWrapper.create(ClientboundPacketsb1_7.USE_BED, wrapper.user()); + useBed.write(Type.INT, playerInfoStorage.entityId); // entity id + useBed.write(Type.BYTE, (byte) 0); // magic value (always 0) + useBed.write(Types1_7_6.POSITION_BYTE, pos); // position + useBed.send(Protocolb1_6_0_6tob1_5_0_2.class); + } else if (block.id == BlockList1_6.jukebox.blockID) { + if (block.data > 0) { + final PacketWrapper effect = PacketWrapper.create(ClientboundPacketsb1_7.EFFECT, wrapper.user()); + effect.write(Type.INT, 1005); // effect id + effect.write(Types1_7_6.POSITION_UBYTE, pos); // position + effect.write(Type.INT, 0); // data + effect.send(Protocolb1_6_0_6tob1_5_0_2.class); + } else if (item != null && (item.identifier() == ItemList1_6.record13.itemID || item.identifier() == ItemList1_6.recordCat.itemID)) { + final PacketWrapper effect = PacketWrapper.create(ClientboundPacketsb1_7.EFFECT, wrapper.user()); + effect.write(Type.INT, 1005); // effect id + effect.write(Types1_7_6.POSITION_UBYTE, pos); // position + effect.write(Type.INT, item.identifier()); // data + effect.send(Protocolb1_6_0_6tob1_5_0_2.class); + } + } + }); + } + }); + } + + @Override + public void init(UserConnection userConnection) { + userConnection.put(new PreNettySplitter(userConnection, Protocolb1_6_0_6tob1_5_0_2.class, ClientboundPacketsb1_5::getPacket)); + + userConnection.put(new WorldTimeStorage(userConnection)); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_6_0_6tob1_5_0_2/ServerboundPacketsb1_5.java b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_6_0_6tob1_5_0_2/ServerboundPacketsb1_5.java new file mode 100644 index 0000000..078a36d --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_6_0_6tob1_5_0_2/ServerboundPacketsb1_5.java @@ -0,0 +1,157 @@ +package net.raphimc.vialegacy.protocols.beta.protocolb1_6_0_6tob1_5_0_2; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.packet.ServerboundPacketType; +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.util.PreNettyPacketType; + +import java.util.function.BiConsumer; + +import static net.raphimc.vialegacy.util.PreNettyTypes.readItemStackb1_2; +import static net.raphimc.vialegacy.util.PreNettyTypes.readString; + +public enum ServerboundPacketsb1_5 implements ServerboundPacketType, PreNettyPacketType { + + KEEP_ALIVE(0, (user, buf) -> { + }), + LOGIN(1, (user, buf) -> { + buf.readInt(); + readString(buf); + buf.readLong(); + buf.readByte(); + }), + HANDSHAKE(2, (user, buf) -> { + readString(buf); + }), + CHAT_MESSAGE(3, (user, buf) -> { + readString(buf); + }), + INTERACT_ENTITY(7, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readByte(); + }), + RESPAWN(9, (user, buf) -> { + }), + PLAYER_MOVEMENT(10, (user, buf) -> { + buf.readUnsignedByte(); + }), + PLAYER_POSITION(11, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readUnsignedByte(); + }), + PLAYER_ROTATION(12, (user, buf) -> { + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION_AND_ROTATION(13, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_DIGGING(14, (user, buf) -> { + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + }), + PLAYER_BLOCK_PLACEMENT(15, (user, buf) -> { + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + readItemStackb1_2(buf); + }), + HELD_ITEM_CHANGE(16, (user, buf) -> { + buf.readShort(); + }), + ANIMATION(18, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + ENTITY_ACTION(19, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + POSITION(27, (user, buf) -> { + buf.readFloat(); + buf.readFloat(); + buf.readFloat(); + buf.readFloat(); + buf.readBoolean(); + buf.readBoolean(); + }), + CLOSE_WINDOW(101, (user, buf) -> { + buf.readByte(); + }), + CLICK_WINDOW(102, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readByte(); + buf.readShort(); + buf.readBoolean(); + readItemStackb1_2(buf); + }), + WINDOW_CONFIRMATION(106, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readByte(); + }), + UPDATE_SIGN(130, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + readString(buf); + readString(buf); + readString(buf); + readString(buf); + }), + DISCONNECT(255, (user, buf) -> { + readString(buf); + }); + + private static final ServerboundPacketsb1_5[] REGISTRY = new ServerboundPacketsb1_5[256]; + + static { + for (ServerboundPacketsb1_5 packet : values()) { + REGISTRY[packet.id] = packet; + } + } + + public static ServerboundPacketsb1_5 getPacket(final int id) { + return REGISTRY[id]; + } + + private final int id; + private final BiConsumer packetReader; + + ServerboundPacketsb1_5(final int id, final BiConsumer packetReader) { + this.id = id; + this.packetReader = packetReader; + } + + @Override + public int getId() { + return this.id; + } + + @Override + public String getName() { + return name(); + } + + @Override + public BiConsumer getPacketReader() { + return this.packetReader; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_6_0_6tob1_5_0_2/storage/WorldTimeStorage.java b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_6_0_6tob1_5_0_2/storage/WorldTimeStorage.java new file mode 100644 index 0000000..f4306a5 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_6_0_6tob1_5_0_2/storage/WorldTimeStorage.java @@ -0,0 +1,14 @@ +package net.raphimc.vialegacy.protocols.beta.protocolb1_6_0_6tob1_5_0_2.storage; + +import com.viaversion.viaversion.api.connection.StoredObject; +import com.viaversion.viaversion.api.connection.UserConnection; + +public class WorldTimeStorage extends StoredObject { + + public long time; + + public WorldTimeStorage(UserConnection user) { + super(user); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_6_0_6tob1_5_0_2/task/TimeTrackTask.java b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_6_0_6tob1_5_0_2/task/TimeTrackTask.java new file mode 100644 index 0000000..276dca2 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_6_0_6tob1_5_0_2/task/TimeTrackTask.java @@ -0,0 +1,17 @@ +package net.raphimc.vialegacy.protocols.beta.protocolb1_6_0_6tob1_5_0_2.task; + +import com.viaversion.viaversion.api.Via; +import com.viaversion.viaversion.api.connection.UserConnection; +import net.raphimc.vialegacy.protocols.beta.protocolb1_6_0_6tob1_5_0_2.storage.WorldTimeStorage; + +public class TimeTrackTask implements Runnable { + + @Override + public void run() { + for (UserConnection info : Via.getManager().getConnectionManager().getConnections()) { + final WorldTimeStorage worldTimeStorage = info.get(WorldTimeStorage.class); + if (worldTimeStorage != null) worldTimeStorage.time++; + } + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_7_0_3tob1_6_0_6/Protocolb1_7_0_3tob1_6_0_6.java b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_7_0_3tob1_6_0_6/Protocolb1_7_0_3tob1_6_0_6.java new file mode 100644 index 0000000..6f7d346 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_7_0_3tob1_6_0_6/Protocolb1_7_0_3tob1_6_0_6.java @@ -0,0 +1,13 @@ +package net.raphimc.vialegacy.protocols.beta.protocolb1_7_0_3tob1_6_0_6; + +import com.viaversion.viaversion.api.protocol.AbstractProtocol; +import net.raphimc.vialegacy.protocols.beta.protocolb1_8_0_1tob1_7_0_3.ClientboundPacketsb1_7; +import net.raphimc.vialegacy.protocols.beta.protocolb1_8_0_1tob1_7_0_3.ServerboundPacketsb1_7; + +public class Protocolb1_7_0_3tob1_6_0_6 extends AbstractProtocol { + + public Protocolb1_7_0_3tob1_6_0_6() { + super(ClientboundPacketsb1_7.class, ClientboundPacketsb1_7.class, ServerboundPacketsb1_7.class, ServerboundPacketsb1_7.class); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_8_0_1tob1_7_0_3/ClientboundPacketsb1_7.java b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_8_0_1tob1_7_0_3/ClientboundPacketsb1_7.java new file mode 100644 index 0000000..9e59b52 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_8_0_1tob1_7_0_3/ClientboundPacketsb1_7.java @@ -0,0 +1,344 @@ +package net.raphimc.vialegacy.protocols.beta.protocolb1_8_0_1tob1_7_0_3; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType; +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.util.PreNettyPacketType; + +import java.util.function.BiConsumer; + +import static net.raphimc.vialegacy.util.PreNettyTypes.*; + +public enum ClientboundPacketsb1_7 implements ClientboundPacketType, PreNettyPacketType { + + KEEP_ALIVE(0, (user, buf) -> { + }), + JOIN_GAME(1, (user, buf) -> { + buf.readInt(); + readString(buf); + buf.readLong(); + buf.readByte(); + }), + HANDSHAKE(2, (user, buf) -> { + readString(buf); + }), + CHAT_MESSAGE(3, (user, buf) -> { + readString(buf); + }), + TIME_UPDATE(4, (user, buf) -> { + buf.readLong(); + }), + ENTITY_EQUIPMENT(5, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readShort(); + buf.readShort(); + }), + SPAWN_POSITION(6, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + UPDATE_HEALTH(8, (user, buf) -> { + buf.readShort(); + }), + RESPAWN(9, (user, buf) -> { + buf.readByte(); + }), + PLAYER_POSITION_ONLY_ONGROUND(10, (user, buf) -> { + buf.readUnsignedByte(); + }), + PLAYER_POSITION_ONLY_POSITION(11, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION_ONLY_LOOK(12, (user, buf) -> { + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION(13, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + USE_BED(17, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readByte(); + buf.readInt(); + }), + ENTITY_ANIMATION(18, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + SPAWN_PLAYER(20, (user, buf) -> { + buf.readInt(); + readString(buf); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + }), + SPAWN_ITEM(21, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readByte(); + buf.readShort(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + COLLECT_ITEM(22, (user, buf) -> { + buf.readInt(); + buf.readInt(); + }), + SPAWN_ENTITY(23, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + int i = buf.readInt(); + if (i > 0) { + buf.readShort(); + buf.readShort(); + buf.readShort(); + } + }), + SPAWN_MOB(24, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + readEntityMetadatab1_5(buf); + }), + SPAWN_PAINTING(25, (user, buf) -> { + buf.readInt(); + readString(buf); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + ENTITY_VELOCITY(28, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readShort(); + buf.readShort(); + }), + DESTROY_ENTITIES(29, (user, buf) -> { + buf.readInt(); + }), + ENTITY_MOVEMENT(30, (user, buf) -> { + buf.readInt(); + }), + ENTITY_POSITION(31, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_ROTATION(32, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_POSITION_AND_ROTATION(33, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_TELEPORT(34, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_STATUS(38, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + ATTACH_ENTITY(39, (user, buf) -> { + buf.readInt(); + buf.readInt(); + }), + ENTITY_METADATA(40, (user, buf) -> { + buf.readInt(); + readEntityMetadatab1_5(buf); + }), + PRE_CHUNK(50, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readByte(); + }), + CHUNK_DATA(51, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + int x = buf.readInt(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + MULTI_BLOCK_CHANGE(52, (user, buf) -> { + buf.readInt(); + buf.readInt(); + short x = buf.readShort(); + for (int i = 0; i < x; i++) buf.readShort(); + for (int i = 0; i < x; i++) buf.readByte(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + BLOCK_CHANGE(53, (user, buf) -> { + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + buf.readUnsignedByte(); + }), + BLOCK_ACTION(54, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + buf.readUnsignedByte(); + buf.readUnsignedByte(); + }), + EXPLOSION(60, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + int x = buf.readInt(); + for (int i = 0; i < x; i++) { + buf.readByte(); + buf.readByte(); + buf.readByte(); + } + }), + EFFECT(61, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + }), + GAME_EVENT(70, (user, buf) -> { + buf.readByte(); + }), + SPAWN_GLOBAL_ENTITY(71, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + OPEN_WINDOW(100, (user, buf) -> { + buf.readByte(); + buf.readByte(); + readUTF(buf); + buf.readByte(); + }), + CLOSE_WINDOW(101, (user, buf) -> { + buf.readByte(); + }), + SET_SLOT(103, (user, buf) -> { + buf.readByte(); + buf.readShort(); + readItemStackb1_2(buf); + }), + WINDOW_ITEMS(104, (user, buf) -> { + buf.readByte(); + int x = buf.readShort(); + for (int i = 0; i < x; i++) readItemStackb1_2(buf); + }), + WINDOW_PROPERTY(105, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readShort(); + }), + WINDOW_CONFIRMATION(106, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readByte(); + }), + UPDATE_SIGN(130, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + readString(buf); + readString(buf); + readString(buf); + readString(buf); + }), + MAP_DATA(131, (user, buf) -> { + buf.readShort(); + buf.readShort(); + short x = buf.readUnsignedByte(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + STATISTICS(200, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + DISCONNECT(255, (user, buf) -> { + readString(buf); + }); + + private static final ClientboundPacketsb1_7[] REGISTRY = new ClientboundPacketsb1_7[256]; + + static { + for (ClientboundPacketsb1_7 packet : values()) { + REGISTRY[packet.id] = packet; + } + } + + public static ClientboundPacketsb1_7 getPacket(final int id) { + return REGISTRY[id]; + } + + private final int id; + private final BiConsumer packetReader; + + ClientboundPacketsb1_7(final int id, final BiConsumer packetReader) { + this.id = id; + this.packetReader = packetReader; + } + + @Override + public int getId() { + return this.id; + } + + @Override + public String getName() { + return name(); + } + + @Override + public BiConsumer getPacketReader() { + return this.packetReader; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_8_0_1tob1_7_0_3/Protocolb1_8_0_1tob1_7_0_3.java b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_8_0_1tob1_7_0_3/Protocolb1_8_0_1tob1_7_0_3.java new file mode 100644 index 0000000..9179ee4 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_8_0_1tob1_7_0_3/Protocolb1_8_0_1tob1_7_0_3.java @@ -0,0 +1,318 @@ +package net.raphimc.vialegacy.protocols.beta.protocolb1_8_0_1tob1_7_0_3; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.minecraft.Position; +import com.viaversion.viaversion.api.minecraft.chunks.*; +import com.viaversion.viaversion.api.protocol.AbstractProtocol; +import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; +import com.viaversion.viaversion.api.protocol.packet.State; +import com.viaversion.viaversion.api.protocol.remapper.PacketRemapper; +import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; +import net.raphimc.vialegacy.api.BlockList1_6; +import net.raphimc.vialegacy.protocols.alpha.protocolb1_0_1_1_1toa1_2_3_5_1_2_6.storage.AlphaInventoryTracker; +import net.raphimc.vialegacy.protocols.beta.protocol1_0_0_1tob1_8_0_1.ClientboundPacketsb1_8; +import net.raphimc.vialegacy.protocols.beta.protocol1_0_0_1tob1_8_0_1.ServerboundPacketsb1_8; +import net.raphimc.vialegacy.protocols.beta.protocol1_0_0_1tob1_8_0_1.types.Typesb1_8_0_1; +import net.raphimc.vialegacy.protocols.beta.protocolb1_8_0_1tob1_7_0_3.storage.PlayerHealthTracker; +import net.raphimc.vialegacy.protocols.beta.protocolb1_8_0_1tob1_7_0_3.storage.PlayerNameTracker; +import net.raphimc.vialegacy.protocols.beta.protocolb1_8_0_1tob1_7_0_3.types.Typesb1_7_0_3; +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.chunks.NibbleArray1_1; +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.storage.SeedStorage; +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.types.Chunk1_1Type; +import net.raphimc.vialegacy.protocols.release.protocol1_4_2to1_3_1_2.types.Types1_3_1; +import net.raphimc.vialegacy.protocols.release.protocol1_4_4_5to1_4_2.types.Types1_4_2; +import net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.storage.ChunkTracker; +import net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.types.Types1_6_4; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.Types1_7_6; +import net.raphimc.vialegacy.util.PreNettySplitter; + +import java.util.concurrent.ThreadLocalRandom; + +public class Protocolb1_8_0_1tob1_7_0_3 extends AbstractProtocol { + + public Protocolb1_8_0_1tob1_7_0_3() { + super(ClientboundPacketsb1_7.class, ClientboundPacketsb1_8.class, ServerboundPacketsb1_7.class, ServerboundPacketsb1_8.class); + } + + @Override + protected void registerPackets() { + this.registerClientbound(ClientboundPacketsb1_7.KEEP_ALIVE, new PacketRemapper() { + @Override + public void registerMap() { + create(Type.INT, ThreadLocalRandom.current().nextInt(Short.MAX_VALUE)); // key + } + }); + this.registerClientbound(ClientboundPacketsb1_7.JOIN_GAME, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + map(Types1_6_4.STRING); // username + map(Type.LONG); // seed + create(Type.INT, 0); // game mode + map(Type.BYTE); // dimension id + create(Type.BYTE, (byte) 1); // difficulty + create(Type.BYTE, (byte) -128); // world height + create(Type.BYTE, (byte) 100); // max players + handler(wrapper -> { + final PacketWrapper playerListEntry = PacketWrapper.create(ClientboundPacketsb1_8.PLAYER_INFO, wrapper.user()); + playerListEntry.write(Types1_6_4.STRING, wrapper.user().getProtocolInfo().getUsername()); // name + playerListEntry.write(Type.BOOLEAN, true); // online + playerListEntry.write(Type.SHORT, (short) 0); // ping + + wrapper.send(Protocolb1_8_0_1tob1_7_0_3.class); + playerListEntry.send(Protocolb1_8_0_1tob1_7_0_3.class); + wrapper.cancel(); + }); + } + }); + this.registerClientbound(ClientboundPacketsb1_7.UPDATE_HEALTH, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.SHORT); // health + create(Type.SHORT, (short) 6); // food + create(Type.FLOAT, 0F); // saturation + handler(wrapper -> wrapper.user().get(PlayerHealthTracker.class).setHealth(wrapper.get(Type.SHORT, 0))); + } + }); + this.registerClientbound(ClientboundPacketsb1_7.RESPAWN, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.BYTE); // dimension id + create(Type.BYTE, (byte) 1); // difficulty + create(Type.BYTE, (byte) 0); // game mode + create(Type.SHORT, (short) 128); // world height + handler(wrapper -> wrapper.write(Type.LONG, wrapper.user().get(SeedStorage.class).seed)); // seed + } + }); + this.registerClientbound(ClientboundPacketsb1_7.SPAWN_PLAYER, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + map(Types1_6_4.STRING); // username + map(Type.INT); // x + map(Type.INT); // y + map(Type.INT); // z + map(Type.BYTE); // yaw + map(Type.BYTE); // pitch + map(Type.UNSIGNED_SHORT); // item + handler(wrapper -> { + final int entityId = wrapper.get(Type.INT, 0); + final PlayerNameTracker playerNameTracker = wrapper.user().get(PlayerNameTracker.class); + playerNameTracker.names.put(entityId, wrapper.get(Types1_6_4.STRING, 0)); + + final PacketWrapper playerListEntry = PacketWrapper.create(ClientboundPacketsb1_8.PLAYER_INFO, wrapper.user()); + playerListEntry.write(Types1_6_4.STRING, playerNameTracker.names.get(entityId)); // name + playerListEntry.write(Type.BOOLEAN, true); // online + playerListEntry.write(Type.SHORT, (short) 0); // ping + playerListEntry.send(Protocolb1_8_0_1tob1_7_0_3.class); + }); + } + }); + this.registerClientbound(ClientboundPacketsb1_7.SPAWN_MOB, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + map(Type.UNSIGNED_BYTE); // type id + map(Type.INT); // x + map(Type.INT); // y + map(Type.INT); // z + map(Type.BYTE); // yaw + map(Type.BYTE); // pitch + map(Types1_3_1.METADATA_LIST); // metadata + handler(wrapper -> { + final short entityType = wrapper.get(Type.UNSIGNED_BYTE, 0); + if (entityType == 49) { // monster + final PacketWrapper spawnMonster = PacketWrapper.create(ClientboundPacketsb1_8.SPAWN_PLAYER, wrapper.user()); + spawnMonster.write(Type.INT, wrapper.get(Type.INT, 0)); // entity id + spawnMonster.write(Types1_6_4.STRING, "Monster"); // username + spawnMonster.write(Type.INT, wrapper.get(Type.INT, 1)); // x + spawnMonster.write(Type.INT, wrapper.get(Type.INT, 2)); // y + spawnMonster.write(Type.INT, wrapper.get(Type.INT, 3)); // z + spawnMonster.write(Type.BYTE, wrapper.get(Type.BYTE, 0)); // yaw + spawnMonster.write(Type.BYTE, wrapper.get(Type.BYTE, 1)); // pitch + spawnMonster.write(Type.UNSIGNED_SHORT, 0); // item + + final PacketWrapper entityMetadata = PacketWrapper.create(ClientboundPacketsb1_8.ENTITY_METADATA, wrapper.user()); + entityMetadata.write(Type.INT, wrapper.get(Type.INT, 0)); // entity id + entityMetadata.write(Types1_3_1.METADATA_LIST, wrapper.get(Types1_3_1.METADATA_LIST, 0)); // metadata + + wrapper.cancel(); + spawnMonster.send(Protocolb1_8_0_1tob1_7_0_3.class); + entityMetadata.send(Protocolb1_8_0_1tob1_7_0_3.class); + } + }); + } + }); + this.registerClientbound(ClientboundPacketsb1_7.DESTROY_ENTITIES, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + handler(wrapper -> { + final PlayerNameTracker playerNameTracker = wrapper.user().get(PlayerNameTracker.class); + final String name = playerNameTracker.names.get(wrapper.get(Type.INT, 0)); + if (name != null) { + final PacketWrapper playerListEntry = PacketWrapper.create(ClientboundPacketsb1_8.PLAYER_INFO, wrapper.user()); + playerListEntry.write(Types1_6_4.STRING, name); // name + playerListEntry.write(Type.BOOLEAN, false); // online + playerListEntry.write(Type.SHORT, (short) 0); // ping + playerListEntry.send(Protocolb1_8_0_1tob1_7_0_3.class); + } + }); + } + }); + this.registerClientbound(ClientboundPacketsb1_7.CHUNK_DATA, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + final Chunk chunk = wrapper.passthrough(new Chunk1_1Type(wrapper.user().get(ClientWorld.class))); + + boolean hasChest = false; + for (ChunkSection section : chunk.getSections()) { + if (section == null || !section.getLight().hasSkyLight()) continue; + for (int i = 0; i < section.palette(PaletteType.BLOCKS).size(); i++) { + if (section.palette(PaletteType.BLOCKS).idByIndex(i) >> 4 == BlockList1_6.chest.blockID) { + hasChest = true; + break; + } + } + if (!hasChest) continue; + + final NibbleArray1_1 sectionSkyLight = new NibbleArray1_1(section.getLight().getSkyLight(), 4); + for (int y = 0; y < 16; y++) + for (int x = 0; x < 16; x++) + for (int z = 0; z < 16; z++) + if (section.palette(PaletteType.BLOCKS).idAt(x, y, z) >> 4 == BlockList1_6.chest.blockID) + sectionSkyLight.set(x, y, z, 15); + } + }); + } + }); + this.registerClientbound(ClientboundPacketsb1_7.GAME_EVENT, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.BYTE); // reason + create(Type.BYTE, (byte) 0); // value + } + }); + this.registerClientbound(ClientboundPacketsb1_7.OPEN_WINDOW, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.UNSIGNED_BYTE); // window id + map(Type.UNSIGNED_BYTE); // window type + map(Typesb1_7_0_3.STRING, Types1_6_4.STRING); // title + map(Type.UNSIGNED_BYTE); // slots + } + }); + + this.registerServerbound(State.STATUS, -1, ServerboundPacketsb1_8.SERVER_PING.getId(), new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + wrapper.cancel(); + final PacketWrapper pingResponse = PacketWrapper.create(ClientboundPacketsb1_8.DISCONNECT, wrapper.user()); + pingResponse.write(Types1_6_4.STRING, "The server seems to be running!\nWait 5 seconds between each connection§0§1"); + pingResponse.send(Protocolb1_8_0_1tob1_7_0_3.class); + }); + } + }); + this.cancelServerbound(ServerboundPacketsb1_8.SERVER_PING); + this.registerServerbound(State.LOGIN, ServerboundPacketsb1_7.LOGIN.getId(), ServerboundPacketsb1_8.LOGIN.getId(), new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // protocol id + map(Types1_6_4.STRING); // username + map(Type.LONG); // seed + read(Type.INT); // game mode + map(Type.BYTE); // dimension id + read(Type.BYTE); // difficulty + read(Type.BYTE); // world height + read(Type.BYTE); // max players + } + }); + this.registerServerbound(ServerboundPacketsb1_8.RESPAWN, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.BYTE); // dimension id + read(Type.BYTE); // difficulty + read(Type.BYTE); // game mode + read(Type.SHORT); // world height + read(Type.LONG); // seed + } + }); + this.registerServerbound(ServerboundPacketsb1_8.PLAYER_DIGGING, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.UNSIGNED_BYTE); // status + handler(wrapper -> { + final short status = wrapper.get(Type.UNSIGNED_BYTE, 0); + if (status == 5) wrapper.cancel(); // Stop using item + }); + map(Types1_7_6.POSITION_UBYTE); // position + map(Type.UNSIGNED_BYTE); // direction + } + }); + this.registerServerbound(ServerboundPacketsb1_8.PLAYER_BLOCK_PLACEMENT, new PacketRemapper() { + @Override + public void registerMap() { + map(Types1_7_6.POSITION_UBYTE); // position + map(Type.UNSIGNED_BYTE); // direction + map(Types1_4_2.NBTLESS_ITEM); // item + handler(wrapper -> { + final Position pos = wrapper.get(Types1_7_6.POSITION_UBYTE, 0); + if (wrapper.user().get(ChunkTracker.class).getBlockNotNull(pos).id == BlockList1_6.cake.blockID) { + final PacketWrapper updateHealth = PacketWrapper.create(ClientboundPacketsb1_8.UPDATE_HEALTH, wrapper.user()); + updateHealth.write(Type.SHORT, wrapper.user().get(PlayerHealthTracker.class).getHealth()); // health + updateHealth.write(Type.SHORT, (short) 6); // food + updateHealth.write(Type.FLOAT, 0F); // saturation + updateHealth.send(Protocolb1_8_0_1tob1_7_0_3.class); + } + }); + } + }); + this.registerServerbound(ServerboundPacketsb1_8.ENTITY_ACTION, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + map(Type.BYTE); // action id + handler(wrapper -> { + if (wrapper.get(Type.BYTE, 0) > 3) wrapper.cancel(); + }); + } + }); + this.registerServerbound(ServerboundPacketsb1_8.CLICK_WINDOW, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.BYTE); // window id + handler(wrapper -> { + if (wrapper.passthrough(Type.SHORT) /*slot*/ == -1) wrapper.cancel(); + }); + map(Type.BYTE); // button + map(Type.SHORT); // action + map(Type.BYTE); // mode + map(Types1_4_2.NBTLESS_ITEM); // item + } + }); + this.registerServerbound(ServerboundPacketsb1_8.CREATIVE_INVENTORY_ACTION, null, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + wrapper.cancel(); + // Track the item for later use in classic protocols + final AlphaInventoryTracker inventoryTracker = wrapper.user().get(AlphaInventoryTracker.class); + if (inventoryTracker != null) inventoryTracker.handleCreativeSetSlot(wrapper.read(Type.SHORT), wrapper.read(Typesb1_8_0_1.CREATIVE_ITEM)); + }); + } + }); + this.cancelServerbound(ServerboundPacketsb1_8.KEEP_ALIVE); // beta client only sends this packet every second if in downloading terrain screen + } + + @Override + public void init(UserConnection userConnection) { + userConnection.put(new PreNettySplitter(userConnection, Protocolb1_8_0_1tob1_7_0_3.class, ClientboundPacketsb1_7::getPacket)); + + userConnection.put(new PlayerNameTracker(userConnection)); + userConnection.put(new PlayerHealthTracker(userConnection)); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_8_0_1tob1_7_0_3/ServerboundPacketsb1_7.java b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_8_0_1tob1_7_0_3/ServerboundPacketsb1_7.java new file mode 100644 index 0000000..def843c --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_8_0_1tob1_7_0_3/ServerboundPacketsb1_7.java @@ -0,0 +1,158 @@ +package net.raphimc.vialegacy.protocols.beta.protocolb1_8_0_1tob1_7_0_3; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.packet.ServerboundPacketType; +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.util.PreNettyPacketType; + +import java.util.function.BiConsumer; + +import static net.raphimc.vialegacy.util.PreNettyTypes.readItemStackb1_2; +import static net.raphimc.vialegacy.util.PreNettyTypes.readString; + +public enum ServerboundPacketsb1_7 implements ServerboundPacketType, PreNettyPacketType { + + KEEP_ALIVE(0, (user, buf) -> { + }), + LOGIN(1, (user, buf) -> { + buf.readInt(); + readString(buf); + buf.readLong(); + buf.readByte(); + }), + HANDSHAKE(2, (user, buf) -> { + readString(buf); + }), + CHAT_MESSAGE(3, (user, buf) -> { + readString(buf); + }), + INTERACT_ENTITY(7, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readByte(); + }), + RESPAWN(9, (user, buf) -> { + buf.readByte(); + }), + PLAYER_MOVEMENT(10, (user, buf) -> { + buf.readUnsignedByte(); + }), + PLAYER_POSITION(11, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readUnsignedByte(); + }), + PLAYER_ROTATION(12, (user, buf) -> { + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION_AND_ROTATION(13, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_DIGGING(14, (user, buf) -> { + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + }), + PLAYER_BLOCK_PLACEMENT(15, (user, buf) -> { + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + readItemStackb1_2(buf); + }), + HELD_ITEM_CHANGE(16, (user, buf) -> { + buf.readShort(); + }), + ANIMATION(18, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + ENTITY_ACTION(19, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + POSITION(27, (user, buf) -> { + buf.readFloat(); + buf.readFloat(); + buf.readFloat(); + buf.readFloat(); + buf.readBoolean(); + buf.readBoolean(); + }), + CLOSE_WINDOW(101, (user, buf) -> { + buf.readByte(); + }), + CLICK_WINDOW(102, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readByte(); + buf.readShort(); + buf.readBoolean(); + readItemStackb1_2(buf); + }), + WINDOW_CONFIRMATION(106, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readByte(); + }), + UPDATE_SIGN(130, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + readString(buf); + readString(buf); + readString(buf); + readString(buf); + }), + DISCONNECT(255, (user, buf) -> { + readString(buf); + }); + + private static final ServerboundPacketsb1_7[] REGISTRY = new ServerboundPacketsb1_7[256]; + + static { + for (ServerboundPacketsb1_7 packet : values()) { + REGISTRY[packet.id] = packet; + } + } + + public static ServerboundPacketsb1_7 getPacket(final int id) { + return REGISTRY[id]; + } + + private final int id; + private final BiConsumer packetReader; + + ServerboundPacketsb1_7(final int id, final BiConsumer packetReader) { + this.id = id; + this.packetReader = packetReader; + } + + @Override + public int getId() { + return this.id; + } + + @Override + public String getName() { + return name(); + } + + @Override + public BiConsumer getPacketReader() { + return this.packetReader; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_8_0_1tob1_7_0_3/storage/PlayerHealthTracker.java b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_8_0_1tob1_7_0_3/storage/PlayerHealthTracker.java new file mode 100644 index 0000000..b35375c --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_8_0_1tob1_7_0_3/storage/PlayerHealthTracker.java @@ -0,0 +1,22 @@ +package net.raphimc.vialegacy.protocols.beta.protocolb1_8_0_1tob1_7_0_3.storage; + +import com.viaversion.viaversion.api.connection.StoredObject; +import com.viaversion.viaversion.api.connection.UserConnection; + +public class PlayerHealthTracker extends StoredObject { + + private short health = 20; + + public PlayerHealthTracker(UserConnection user) { + super(user); + } + + public void setHealth(final short health) { + this.health = health; + } + + public short getHealth() { + return this.health; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_8_0_1tob1_7_0_3/storage/PlayerNameTracker.java b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_8_0_1tob1_7_0_3/storage/PlayerNameTracker.java new file mode 100644 index 0000000..8f562a0 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_8_0_1tob1_7_0_3/storage/PlayerNameTracker.java @@ -0,0 +1,16 @@ +package net.raphimc.vialegacy.protocols.beta.protocolb1_8_0_1tob1_7_0_3.storage; + +import com.viaversion.viaversion.api.connection.StoredObject; +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.libs.fastutil.ints.Int2ObjectArrayMap; +import com.viaversion.viaversion.libs.fastutil.ints.Int2ObjectMap; + +public class PlayerNameTracker extends StoredObject { + + public final Int2ObjectMap names = new Int2ObjectArrayMap<>(); + + public PlayerNameTracker(UserConnection user) { + super(user); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_8_0_1tob1_7_0_3/types/StringType.java b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_8_0_1tob1_7_0_3/types/StringType.java new file mode 100644 index 0000000..c277cf7 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_8_0_1tob1_7_0_3/types/StringType.java @@ -0,0 +1,24 @@ +package net.raphimc.vialegacy.protocols.beta.protocolb1_8_0_1tob1_7_0_3.types; + +import com.viaversion.viaversion.api.type.Type; +import io.netty.buffer.*; + +import java.io.IOException; + +public class StringType extends Type { + + public StringType() { + super(String.class); + } + + public String read(ByteBuf buffer) throws IOException { + final ByteBufInputStream dis = new ByteBufInputStream(buffer); + return dis.readUTF(); + } + + public void write(ByteBuf buffer, String s) throws IOException { + final ByteBufOutputStream dos = new ByteBufOutputStream(buffer); + dos.writeUTF(s); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_8_0_1tob1_7_0_3/types/Typesb1_7_0_3.java b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_8_0_1tob1_7_0_3/types/Typesb1_7_0_3.java new file mode 100644 index 0000000..8c36bc3 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/beta/protocolb1_8_0_1tob1_7_0_3/types/Typesb1_7_0_3.java @@ -0,0 +1,9 @@ +package net.raphimc.vialegacy.protocols.beta.protocolb1_8_0_1tob1_7_0_3.types; + +import com.viaversion.viaversion.api.type.Type; + +public class Typesb1_7_0_3 { + + public static final Type STRING = new StringType(); + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/ClientboundPacketsc0_28.java b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/ClientboundPacketsc0_28.java new file mode 100644 index 0000000..652d429 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/ClientboundPacketsc0_28.java @@ -0,0 +1,124 @@ +package net.raphimc.vialegacy.protocols.classic.protocola1_0_15toc0_28_30; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType; +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.util.PreNettyPacketType; +import net.raphimc.vialegacy.util.PreNettyTypes; + +import java.util.function.BiConsumer; + +public enum ClientboundPacketsc0_28 implements ClientboundPacketType, PreNettyPacketType { + + JOIN_GAME(0, (user, buf) -> { + buf.readByte(); + PreNettyTypes.readString64(buf); + PreNettyTypes.readString64(buf); + buf.readByte(); + }), + KEEP_ALIVE(1, (user, buf) -> { + }), + LEVEL_INIT(2, (user, buf) -> { + }), + LEVEL_DATA(3, (user, buf) -> { + buf.readShort(); + PreNettyTypes.readByteArray1024(buf); + buf.readByte(); + }), + LEVEL_FINALIZE(4, (user, buf) -> { + buf.readShort(); + buf.readShort(); + buf.readShort(); + }), + BLOCK_CHANGE(6, (user, buf) -> { + buf.readShort(); + buf.readShort(); + buf.readShort(); + buf.readByte(); + }), + SPAWN_PLAYER(7, (user, buf) -> { + buf.readByte(); + PreNettyTypes.readString64(buf); + buf.readShort(); + buf.readShort(); + buf.readShort(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_TELEPORT(8, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readShort(); + buf.readShort(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_POSITION_AND_ROTATION(9, (user, buf) -> { + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_POSITION(10, (user, buf) -> { + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_ROTATION(11, (user, buf) -> { + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + DESTROY_ENTITIES(12, (user, buf) -> { + buf.readByte(); + }), + CHAT_MESSAGE(13, (user, buf) -> { + buf.readByte(); + PreNettyTypes.readString64(buf); + }), + DISCONNECT(14, (user, buf) -> { + PreNettyTypes.readString64(buf); + }), + OP_LEVEL_UPDATE(15, (user, buf) -> { + buf.readByte(); + }); + + private static final ClientboundPacketsc0_28[] REGISTRY = new ClientboundPacketsc0_28[256]; + + static { + for (ClientboundPacketsc0_28 packet : values()) { + REGISTRY[packet.id] = packet; + } + } + + public static ClientboundPacketsc0_28 getPacket(final int id) { + return REGISTRY[id]; + } + + private final int id; + private final BiConsumer packetReader; + + ClientboundPacketsc0_28(final int id, final BiConsumer packetReader) { + this.id = id; + this.packetReader = packetReader; + } + + @Override + public int getId() { + return this.id; + } + + @Override + public String getName() { + return name(); + } + + @Override + public BiConsumer getPacketReader() { + return this.packetReader; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/Protocola1_0_15toc0_30.java b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/Protocola1_0_15toc0_30.java new file mode 100644 index 0000000..921820f --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/Protocola1_0_15toc0_30.java @@ -0,0 +1,560 @@ +package net.raphimc.vialegacy.protocols.classic.protocola1_0_15toc0_28_30; + +import com.viaversion.viaversion.api.Via; +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.minecraft.Position; +import com.viaversion.viaversion.api.minecraft.item.Item; +import com.viaversion.viaversion.api.platform.providers.ViaProviders; +import com.viaversion.viaversion.api.protocol.AbstractProtocol; +import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; +import com.viaversion.viaversion.api.protocol.packet.State; +import com.viaversion.viaversion.api.protocol.remapper.PacketRemapper; +import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.protocols.protocol1_8.ClientboundPackets1_8; +import net.raphimc.vialegacy.api.*; +import net.raphimc.vialegacy.protocols.alpha.protocola1_0_16_2toa1_0_15.ClientboundPacketsa1_0_15; +import net.raphimc.vialegacy.protocols.alpha.protocola1_0_16_2toa1_0_15.ServerboundPacketsa1_0_15; +import net.raphimc.vialegacy.protocols.alpha.protocola1_0_17_1_0_17_4toa1_0_16_2.storage.TimeLockStorage; +import net.raphimc.vialegacy.protocols.alpha.protocola1_1_0_1_1_2_1toa1_0_17_1_0_17_4.Protocola1_1_0_1_1_2_1toa1_0_17_1_0_17_4; +import net.raphimc.vialegacy.protocols.alpha.protocola1_2_0_1_2_1_1toa1_1_0_1_1_2_1.ClientboundPacketsa1_1_0; +import net.raphimc.vialegacy.protocols.alpha.protocolb1_0_1_1_1toa1_2_3_5_1_2_6.providers.AlphaInventoryProvider; +import net.raphimc.vialegacy.protocols.alpha.protocolb1_0_1_1_1toa1_2_3_5_1_2_6.storage.AlphaInventoryTracker; +import net.raphimc.vialegacy.protocols.beta.protocol1_0_0_1tob1_8_0_1.ClientboundPacketsb1_8; +import net.raphimc.vialegacy.protocols.beta.protocolb1_3_0_1tob1_2_0_2.storage.BlockDigStorage; +import net.raphimc.vialegacy.protocols.beta.protocolb1_6_0_6tob1_5_0_2.Protocolb1_6_0_6tob1_5_0_2; +import net.raphimc.vialegacy.protocols.beta.protocolb1_8_0_1tob1_7_0_3.ClientboundPacketsb1_7; +import net.raphimc.vialegacy.protocols.beta.protocolb1_8_0_1tob1_7_0_3.Protocolb1_8_0_1tob1_7_0_3; +import net.raphimc.vialegacy.protocols.beta.protocolb1_8_0_1tob1_7_0_3.types.Typesb1_7_0_3; +import net.raphimc.vialegacy.protocols.classic.protocola1_0_15toc0_28_30.data.ClassicBlocks; +import net.raphimc.vialegacy.protocols.classic.protocola1_0_15toc0_28_30.model.ClassicLevel; +import net.raphimc.vialegacy.protocols.classic.protocola1_0_15toc0_28_30.providers.*; +import net.raphimc.vialegacy.protocols.classic.protocola1_0_15toc0_28_30.storage.*; +import net.raphimc.vialegacy.protocols.classic.protocola1_0_15toc0_28_30.types.Typesc0_30; +import net.raphimc.vialegacy.protocols.classic.protocolc0_28_30toc0_28_30cpe.storage.ExtBlockPermissionsStorage; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.Protocol1_8to1_7_6_10; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.Types1_7_6; +import net.raphimc.vialegacy.util.*; + +public class Protocola1_0_15toc0_30 extends AbstractProtocol { + + public Protocola1_0_15toc0_30() { + super(ClientboundPacketsc0_28.class, ClientboundPacketsa1_0_15.class, ServerboundPacketsc0_28.class, ServerboundPacketsa1_0_15.class); + } + + @Override + protected void registerPackets() { + this.registerClientbound(State.LOGIN, ClientboundPacketsc0_28.DISCONNECT.getId(), ClientboundPacketsa1_0_15.DISCONNECT.getId(), new PacketRemapper() { + @Override + public void registerMap() { + map(Typesc0_30.STRING, Typesb1_7_0_3.STRING, s -> s.replace("&", "§")); // reason + } + }); + + this.registerClientbound(ClientboundPacketsc0_28.JOIN_GAME, new PacketRemapper() { + @Override + public void registerMap() { + read(Type.BYTE); // protocol id + handler(wrapper -> { + final String title = wrapper.read(Typesc0_30.STRING).replace("&", "§"); // title + final String motd = wrapper.read(Typesc0_30.STRING).replace("&", "§"); // motd + final byte opLevel = wrapper.read(Type.BYTE); // op level + wrapper.user().put(new ClassicServerTitleStorage(wrapper.user(), title, motd)); + wrapper.user().get(ClassicOpLevelStorage.class).setOpLevel(opLevel); + + wrapper.write(Type.INT, wrapper.user().getProtocolInfo().getUsername().hashCode()); // entity id + wrapper.write(Typesb1_7_0_3.STRING, wrapper.user().getProtocolInfo().getUsername()); // username + wrapper.write(Typesb1_7_0_3.STRING, ""); // password + + if (wrapper.user().has(ClassicLevelStorage.class)) { // World already loaded + wrapper.cancel(); + } + + if (wrapper.user().getProtocolInfo().getPipeline().contains(Protocol1_8to1_7_6_10.class)) { + final PacketWrapper tabList = PacketWrapper.create(ClientboundPackets1_8.TAB_LIST, wrapper.user()); + tabList.write(Type.STRING, Protocol1_8to1_7_6_10.LEGACY_TO_JSON.transform(wrapper, "§6" + title + "\n")); // header + tabList.write(Type.STRING, Protocol1_8to1_7_6_10.LEGACY_TO_JSON.transform(wrapper, "\n§b" + motd)); // footer + tabList.send(Protocol1_8to1_7_6_10.class); + } + + final ClassicProgressStorage classicProgressStorage = wrapper.user().get(ClassicProgressStorage.class); + classicProgressStorage.progress = 1; + classicProgressStorage.upperBound = 2; + classicProgressStorage.status = "Waiting for server..."; + }); + } + }); + this.registerClientbound(ClientboundPacketsc0_28.LEVEL_INIT, null, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + wrapper.cancel(); + + if (wrapper.user().has(ClassicLevelStorage.class)) { // Switch world + if (wrapper.user().getProtocolInfo().getPipeline().contains(Protocolb1_6_0_6tob1_5_0_2.class)) { + final PacketWrapper fakeRespawn = PacketWrapper.create(ClientboundPacketsb1_7.RESPAWN, wrapper.user()); + fakeRespawn.write(Type.BYTE, (byte) -1); // dimension id + fakeRespawn.send(Protocolb1_6_0_6tob1_5_0_2.class); + final PacketWrapper respawn = PacketWrapper.create(ClientboundPacketsb1_7.RESPAWN, wrapper.user()); + respawn.write(Type.BYTE, (byte) 0); // dimension id + respawn.send(Protocolb1_6_0_6tob1_5_0_2.class); + wrapper.user().get(ClassicPositionTracker.class).spawned = false; + } + } + if (wrapper.user().getProtocolInfo().getPipeline().contains(Protocolb1_8_0_1tob1_7_0_3.class)) { + final PacketWrapper gameEvent = PacketWrapper.create(ClientboundPacketsb1_8.GAME_EVENT, wrapper.user()); + gameEvent.write(Type.BYTE, (byte) 3); // reason (game mode) + gameEvent.write(Type.BYTE, (byte) 1); // value (creative) + gameEvent.send(Protocolb1_8_0_1tob1_7_0_3.class); + } + + wrapper.user().put(new ClassicLevelStorage(wrapper.user())); + + final ClassicProgressStorage classicProgressStorage = wrapper.user().get(ClassicProgressStorage.class); + classicProgressStorage.progress = 2; + classicProgressStorage.upperBound = 2; + classicProgressStorage.status = "Waiting for server..."; + }); + } + }); + this.registerClientbound(ClientboundPacketsc0_28.LEVEL_DATA, null, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + wrapper.cancel(); + final short partSize = wrapper.read(Type.SHORT); // part size + final byte[] data = wrapper.read(Typesc0_30.BYTE_ARRAY); // data + final byte progress = wrapper.read(Type.BYTE); // progress + + wrapper.user().get(ClassicLevelStorage.class).addDataPart(data, partSize); + + final ClassicProgressStorage classicProgressStorage = wrapper.user().get(ClassicProgressStorage.class); + classicProgressStorage.upperBound = 100; + classicProgressStorage.progress = progress; + classicProgressStorage.status = "Receiving level... §7" + progress + "%"; + }); + } + }); + this.registerClientbound(ClientboundPacketsc0_28.LEVEL_FINALIZE, null, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + wrapper.cancel(); + final short sizeX = wrapper.read(Type.SHORT); + final short sizeY = wrapper.read(Type.SHORT); + final short sizeZ = wrapper.read(Type.SHORT); + + final ClassicProgressStorage classicProgressStorage = wrapper.user().get(ClassicProgressStorage.class); + final ClassicLevelStorage levelStorage = wrapper.user().get(ClassicLevelStorage.class); + final short maxChunkSectionCount = Via.getManager().getProviders().get(ClassicWorldHeightProvider.class).getMaxChunkSectionCount(wrapper.user()); + + classicProgressStorage.upperBound = 2; + classicProgressStorage.progress = 0; + classicProgressStorage.status = "Finishing level... §7Decompressing"; + levelStorage.finish(sizeX, sizeY, sizeZ); + levelStorage.sendChunk(new ChunkCoord(0, 0)); + + if (wrapper.user().getProtocolInfo().getPipeline().contains(Protocol1_8to1_7_6_10.class)) { + final PacketWrapper worldBorder = PacketWrapper.create(ClientboundPackets1_8.WORLD_BORDER, wrapper.user()); + worldBorder.write(Type.VAR_INT, 3); // action (INITIALIZE) + worldBorder.write(Type.DOUBLE, sizeX / 2D); // centerX + worldBorder.write(Type.DOUBLE, sizeZ / 2D); // centerZ + worldBorder.write(Type.DOUBLE, 0.0D); // diameter + worldBorder.write(Type.DOUBLE, (double) Math.max(sizeX, sizeZ)); // target size + worldBorder.write(Type.VAR_LONG, 0L); // time until target size + worldBorder.write(Type.VAR_INT, Math.max(sizeX, sizeZ)); // size + worldBorder.write(Type.VAR_INT, 0); // warning distance + worldBorder.write(Type.VAR_INT, 0); // warning time + worldBorder.send(Protocol1_8to1_7_6_10.class); + } + + sendChatMessage(wrapper.user(), "§aWorld dimensions: §6" + sizeX + "§ax§6" + sizeY + "§ax§6" + sizeZ); + if (sizeY > (maxChunkSectionCount << 4)) { + sendChatMessage(wrapper.user(), "§cThis server has a world higher than " + (maxChunkSectionCount << 4) + " blocks! Expect world errors"); + } + + classicProgressStorage.progress = 1; + classicProgressStorage.status = "Finishing level... §7Waiting for server"; + }); + } + }); + this.registerClientbound(ClientboundPacketsc0_28.BLOCK_CHANGE, new PacketRemapper() { + @Override + public void registerMap() { + map(Typesc0_30.POSITION, Types1_7_6.POSITION_UBYTE); // position + handler(wrapper -> { + final ClassicLevelStorage levelStorage = wrapper.user().get(ClassicLevelStorage.class); + if (levelStorage == null || !levelStorage.hasReceivedLevel()) { + wrapper.cancel(); + return; + } + final ClassicBlockRemapper remapper = wrapper.user().get(ClassicBlockRemapper.class); + final Position pos = wrapper.get(Types1_7_6.POSITION_UBYTE, 0); + final byte blockId = wrapper.read(Type.BYTE); // block id + levelStorage.getClassicLevel().setBlock(pos, blockId); + if (!levelStorage.isChunkLoaded(pos)) { + wrapper.cancel(); + return; + } + final IdAndData mappedBlock = remapper.getMapper().get(blockId); + wrapper.write(Type.UNSIGNED_BYTE, (short) mappedBlock.id); // block id + wrapper.write(Type.UNSIGNED_BYTE, (short) mappedBlock.data); // block data + }); + } + }); + this.registerClientbound(ClientboundPacketsc0_28.SPAWN_PLAYER, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.BYTE, Type.INT); // entity id + map(Typesc0_30.STRING, Typesb1_7_0_3.STRING, n -> n.replace("&", "§")); // username + map(Type.SHORT, Type.INT); // x + map(Type.SHORT, Type.INT); // y + map(Type.SHORT, Type.INT); // z + map(Type.BYTE, Type.BYTE, yaw -> (byte) (yaw + 128)); // yaw + map(Type.BYTE); // pitch + create(Type.UNSIGNED_SHORT, 0); // item + handler(wrapper -> { + if (wrapper.get(Type.INT, 0) < 0) { // client player + wrapper.cancel(); + final int x = wrapper.get(Type.INT, 1); + final int y = wrapper.get(Type.INT, 2); + final int z = wrapper.get(Type.INT, 3); + final byte yaw = wrapper.get(Type.BYTE, 0); + final byte pitch = wrapper.get(Type.BYTE, 1); + + final ClassicProgressStorage classicProgressStorage = wrapper.user().get(ClassicProgressStorage.class); + classicProgressStorage.progress = 2; + classicProgressStorage.status = "Finishing level... §7Loading spawn chunks"; + + final ClassicPositionTracker classicPositionTracker = wrapper.user().get(ClassicPositionTracker.class); + classicPositionTracker.posX = (x / 32.0F); + classicPositionTracker.stance = (y / 32.0F) + 0.714F; + classicPositionTracker.posZ = (z / 32.0F); + classicPositionTracker.yaw = yaw * 360 / 256.0F; + classicPositionTracker.pitch = pitch * 360 / 256.0F; + wrapper.user().get(ClassicLevelStorage.class).sendChunks(classicPositionTracker.getChunkPosition(), 1); + + if (wrapper.user().getProtocolInfo().getPipeline().contains(Protocola1_1_0_1_1_2_1toa1_0_17_1_0_17_4.class)) { + final PacketWrapper spawnPosition = PacketWrapper.create(ClientboundPacketsa1_1_0.SPAWN_POSITION, wrapper.user()); + spawnPosition.write(Types1_7_6.POSITION_INT, new Position((int) classicPositionTracker.posX, (int) (classicPositionTracker.stance), (int) classicPositionTracker.posZ)); + spawnPosition.send(Protocola1_1_0_1_1_2_1toa1_0_17_1_0_17_4.class); + } + + final PacketWrapper playerPosition = PacketWrapper.create(ClientboundPacketsa1_0_15.PLAYER_POSITION, wrapper.user()); + playerPosition.write(Type.DOUBLE, classicPositionTracker.posX); // x + playerPosition.write(Type.DOUBLE, classicPositionTracker.stance); // stance + playerPosition.write(Type.DOUBLE, classicPositionTracker.stance - 1.62F); // y + playerPosition.write(Type.DOUBLE, classicPositionTracker.posZ); // z + playerPosition.write(Type.FLOAT, classicPositionTracker.yaw); // yaw + playerPosition.write(Type.FLOAT, classicPositionTracker.pitch); // pitch + playerPosition.write(Type.BOOLEAN, true); // onGround + playerPosition.send(Protocola1_0_15toc0_30.class); + classicPositionTracker.spawned = true; + } else { + wrapper.set(Type.INT, 2, wrapper.get(Type.INT, 2) - Float.valueOf(1.62F * 32).intValue()); + } + }); + } + }); + this.registerClientbound(ClientboundPacketsc0_28.ENTITY_TELEPORT, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.BYTE, Type.INT); // entity id + map(Type.SHORT, Type.INT); // x + map(Type.SHORT, Type.INT); // y + map(Type.SHORT, Type.INT); // z + map(Type.BYTE, Type.BYTE, yaw -> (byte) (yaw + 128)); // yaw + map(Type.BYTE); // pitch + handler(wrapper -> { + if (wrapper.get(Type.INT, 0) < 0) { // client player + wrapper.set(Type.INT, 2, wrapper.get(Type.INT, 2) - 29); + wrapper.set(Type.INT, 0, wrapper.user().getProtocolInfo().getUsername().hashCode()); + } else { + wrapper.set(Type.INT, 2, wrapper.get(Type.INT, 2) - Float.valueOf(1.62F * 32).intValue()); + } + }); + } + }); + this.registerClientbound(ClientboundPacketsc0_28.ENTITY_POSITION_AND_ROTATION, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.BYTE, Type.INT); // entity id + map(Type.BYTE); // x + map(Type.BYTE); // y + map(Type.BYTE); // z + map(Type.BYTE, Type.BYTE, yaw -> (byte) (yaw + 128)); // yaw + map(Type.BYTE); // pitch + } + }); + this.registerClientbound(ClientboundPacketsc0_28.ENTITY_POSITION, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.BYTE, Type.INT); // entity id + map(Type.BYTE); // x + map(Type.BYTE); // y + map(Type.BYTE); // z + } + }); + this.registerClientbound(ClientboundPacketsc0_28.ENTITY_ROTATION, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.BYTE, Type.INT); // entity id + map(Type.BYTE, Type.BYTE, yaw -> (byte) (yaw + 128)); // yaw + map(Type.BYTE); // pitch + } + }); + this.registerClientbound(ClientboundPacketsc0_28.DESTROY_ENTITIES, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.BYTE, Type.INT); // entity id + } + }); + this.registerClientbound(ClientboundPacketsc0_28.CHAT_MESSAGE, new PacketRemapper() { + @Override + public void registerMap() { + handler(packetWrapper -> { + final byte senderId = packetWrapper.read(Type.BYTE); // sender id + String message = packetWrapper.read(Typesc0_30.STRING).replace("&", "§"); // message + if (senderId < 0) { + message = "§e" + message; + } + packetWrapper.write(Typesb1_7_0_3.STRING, message); + }); + } + }); + this.registerClientbound(ClientboundPacketsc0_28.DISCONNECT, new PacketRemapper() { + @Override + public void registerMap() { + map(Typesc0_30.STRING, Typesb1_7_0_3.STRING, s -> s.replace("&", "§")); // reason + } + }); + this.registerClientbound(ClientboundPacketsc0_28.OP_LEVEL_UPDATE, null, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + wrapper.cancel(); + final byte opLevel = wrapper.read(Type.BYTE); // op level + wrapper.user().get(ClassicOpLevelStorage.class).setOpLevel(opLevel); + }); + } + }); + + this.registerServerbound(State.LOGIN, ServerboundPacketsc0_28.LOGIN.getId(), ServerboundPacketsa1_0_15.LOGIN.getId(), new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT, Type.BYTE); // protocol id + map(Typesb1_7_0_3.STRING, Typesc0_30.STRING); // username + read(Typesb1_7_0_3.STRING); // password + handler(wrapper -> { + wrapper.write(Typesc0_30.STRING, Via.getManager().getProviders().get(ClassicMPPassProvider.class).getMpPass(wrapper.user())); // mp pass + wrapper.write(Type.BYTE, (byte) 0); // op level + + final ClassicProgressStorage classicProgressStorage = wrapper.user().get(ClassicProgressStorage.class); + classicProgressStorage.upperBound = 2; + classicProgressStorage.status = "Logging in..."; + }); + } + }); + this.registerServerbound(ServerboundPacketsa1_0_15.CHAT_MESSAGE, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + final String message = wrapper.read(Typesb1_7_0_3.STRING); // message + wrapper.write(Type.BYTE, (byte) 0); // sender id + wrapper.write(Typesc0_30.STRING, message); // message + if (Via.getManager().getProviders().get(ClassicCustomCommandProvider.class).handleChatMessage(wrapper.user(), message)) { + wrapper.cancel(); + } + }); + } + }); + this.registerServerbound(ServerboundPacketsa1_0_15.PLAYER_MOVEMENT, ServerboundPacketsc0_28.PLAYER_POSITION_AND_ROTATION, new PacketRemapper() { + @Override + public void registerMap() { + read(Type.BOOLEAN); // onGround + handler(wrapper -> { + final ClassicPositionTracker positionTracker = wrapper.user().get(ClassicPositionTracker.class); + final ClassicLevelStorage levelStorage = wrapper.user().get(ClassicLevelStorage.class); + positionTracker.writeToPacket(wrapper); + if (levelStorage != null) levelStorage.tickChunks(positionTracker.getChunkPosition()); + }); + } + }); + this.registerServerbound(ServerboundPacketsa1_0_15.PLAYER_POSITION, ServerboundPacketsc0_28.PLAYER_POSITION_AND_ROTATION, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + final ClassicPositionTracker positionTracker = wrapper.user().get(ClassicPositionTracker.class); + final ClassicLevelStorage levelStorage = wrapper.user().get(ClassicLevelStorage.class); + positionTracker.posX = wrapper.read(Type.DOUBLE); // x + wrapper.read(Type.DOUBLE); // y + positionTracker.stance = wrapper.read(Type.DOUBLE); // stance + positionTracker.posZ = wrapper.read(Type.DOUBLE); // z + wrapper.read(Type.BOOLEAN); // onGround + + positionTracker.writeToPacket(wrapper); + if (levelStorage != null) levelStorage.tickChunks(positionTracker.getChunkPosition()); + }); + } + }); + this.registerServerbound(ServerboundPacketsa1_0_15.PLAYER_ROTATION, ServerboundPacketsc0_28.PLAYER_POSITION_AND_ROTATION, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + final ClassicPositionTracker positionTracker = wrapper.user().get(ClassicPositionTracker.class); + final ClassicLevelStorage levelStorage = wrapper.user().get(ClassicLevelStorage.class); + positionTracker.yaw = wrapper.read(Type.FLOAT); // yaw + positionTracker.pitch = wrapper.read(Type.FLOAT); // pitch + wrapper.read(Type.BOOLEAN); // onGround + + positionTracker.writeToPacket(wrapper); + if (levelStorage != null) levelStorage.tickChunks(positionTracker.getChunkPosition()); + }); + } + }); + this.registerServerbound(ServerboundPacketsa1_0_15.PLAYER_POSITION_AND_ROTATION, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + final ClassicPositionTracker positionTracker = wrapper.user().get(ClassicPositionTracker.class); + final ClassicLevelStorage levelStorage = wrapper.user().get(ClassicLevelStorage.class); + positionTracker.posX = wrapper.read(Type.DOUBLE); // x + wrapper.read(Type.DOUBLE); // y + positionTracker.stance = wrapper.read(Type.DOUBLE); // stance + positionTracker.posZ = wrapper.read(Type.DOUBLE); // z + positionTracker.yaw = wrapper.read(Type.FLOAT); // yaw + positionTracker.pitch = wrapper.read(Type.FLOAT); // pitch + wrapper.read(Type.BOOLEAN); // onGround + + positionTracker.writeToPacket(wrapper); + if (levelStorage != null) levelStorage.tickChunks(positionTracker.getChunkPosition()); + }); + } + }); + this.registerServerbound(ServerboundPacketsa1_0_15.PLAYER_DIGGING, ServerboundPacketsc0_28.PLAYER_BLOCK_PLACEMENT, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + wrapper.user().getStoredObjects().remove(BlockDigStorage.class); + final ClassicLevel level = wrapper.user().get(ClassicLevelStorage.class).getClassicLevel(); + final ClassicOpLevelStorage opTracker = wrapper.user().get(ClassicOpLevelStorage.class); + final boolean extendedVerification = wrapper.user().has(ExtBlockPermissionsStorage.class); + + final short status = wrapper.read(Type.UNSIGNED_BYTE); // status + final Position pos = wrapper.read(Types1_7_6.POSITION_UBYTE); // position + wrapper.read(Type.UNSIGNED_BYTE); // direction + final int blockId = level.getBlock(pos); + + final boolean hasCreative = wrapper.user().getProtocolInfo().getPipeline().contains(Protocolb1_8_0_1tob1_7_0_3.class); + if ((status == 0 && hasCreative) || (status == 2 && !hasCreative)) { + if (!extendedVerification && blockId == ClassicBlocks.BEDROCK && opTracker.getOpLevel() < 100) { + wrapper.cancel(); + sendChatMessage(wrapper.user(), "§cOnly op players can break bedrock!"); + sendBlockChange(wrapper.user(), pos, new IdAndData(BlockList1_6.bedrock.blockID, 0)); + return; + } + if (!extendedVerification) { + level.setBlock(pos, ClassicBlocks.AIR); + sendBlockChange(wrapper.user(), pos, new IdAndData(0, 0)); + } + + wrapper.write(Typesc0_30.POSITION, pos); // position + wrapper.write(Type.BOOLEAN, false); // place block + wrapper.write(Type.BYTE, (byte) ClassicBlocks.STONE); // block id + } else { + wrapper.cancel(); + } + }); + } + }); + this.registerServerbound(ServerboundPacketsa1_0_15.PLAYER_BLOCK_PLACEMENT, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + final ClassicLevel level = wrapper.user().get(ClassicLevelStorage.class).getClassicLevel(); + final ClassicBlockRemapper remapper = wrapper.user().get(ClassicBlockRemapper.class); + final boolean extendedVerification = wrapper.user().has(ExtBlockPermissionsStorage.class); + + wrapper.read(Type.SHORT); // item id (is useless because it has no item damage) + Position pos = wrapper.read(Types1_7_6.POSITION_UBYTE); // position + final short direction = wrapper.read(Type.UNSIGNED_BYTE); // direction + + final Item item = Via.getManager().getProviders().get(AlphaInventoryProvider.class).getHandItem(wrapper.user()); + if (item == null || direction == 255) { + wrapper.cancel(); + return; + } + pos = pos.getRelative(BlockFaceUtils.getFace(direction)); + + if (pos.y() >= level.getSizeY()) { + wrapper.cancel(); + sendChatMessage(wrapper.user(), "§cHeight limit for building is " + level.getSizeY() + " blocks"); + sendBlockChange(wrapper.user(), pos, new IdAndData(0, 0)); + return; + } + + final byte classicBlock = (byte) remapper.getReverseMapper().getInt(new IdAndData(item.identifier(), item.data() & 15)); + + if (!extendedVerification) { + level.setBlock(pos, classicBlock); + sendBlockChange(wrapper.user(), pos, remapper.getMapper().get(classicBlock)); + } + + wrapper.write(Typesc0_30.POSITION, pos); // position + wrapper.write(Type.BOOLEAN, true); // place block + wrapper.write(Type.BYTE, classicBlock); // block id + }); + } + }); + this.cancelServerbound(ServerboundPacketsa1_0_15.KEEP_ALIVE); + this.cancelServerbound(ServerboundPacketsa1_0_15.HELD_ITEM_CHANGE); + this.cancelServerbound(ServerboundPacketsa1_0_15.ANIMATION); + this.cancelServerbound(ServerboundPacketsa1_0_15.SPAWN_ITEM); + this.cancelServerbound(ServerboundPacketsa1_0_15.DISCONNECT); + } + + private void sendChatMessage(final UserConnection user, final String msg) throws Exception { + final PacketWrapper message = PacketWrapper.create(ClientboundPacketsa1_0_15.CHAT_MESSAGE, user); + message.write(Typesb1_7_0_3.STRING, msg); // message + message.send(Protocola1_0_15toc0_30.class); + } + + private void sendBlockChange(final UserConnection user, final Position pos, final IdAndData block) throws Exception { + final PacketWrapper blockChange = PacketWrapper.create(ClientboundPacketsa1_0_15.BLOCK_CHANGE, user); + blockChange.write(Types1_7_6.POSITION_UBYTE, pos); // position + blockChange.write(Type.UNSIGNED_BYTE, (short) block.id); // block id + blockChange.write(Type.UNSIGNED_BYTE, (short) block.data); // block data + blockChange.send(Protocola1_0_15toc0_30.class); + } + + @Override + public void register(ViaProviders providers) { + providers.register(ClassicWorldHeightProvider.class, new ClassicWorldHeightProvider()); + providers.register(ClassicMPPassProvider.class, new ClassicMPPassProvider()); + providers.register(ClassicCustomCommandProvider.class, new ClassicCustomCommandProvider()); + } + + @Override + public void init(UserConnection userConnection) { + userConnection.put(new PreNettySplitter(userConnection, Protocola1_0_15toc0_30.class, ClientboundPacketsc0_28::getPacket)); + + userConnection.put(new ClassicPositionTracker(userConnection)); + userConnection.put(new ClassicOpLevelStorage(userConnection)); + userConnection.put(new ClassicProgressStorage(userConnection)); + userConnection.put(new ClassicBlockRemapper(userConnection, i -> ClassicBlocks.MAPPING.get(i), o -> { + int block = ClassicBlocks.REVERSE_MAPPING.getInt(o); + + if (!VersionEnum.fromUserConnection(userConnection).equals(VersionEnum.c0_30cpe)) { + if (block == ClassicBlocks.GRASS) block = ClassicBlocks.DIRT; + else if (block == ClassicBlocks.BEDROCK) block = ClassicBlocks.STONE; + else if (block == ClassicBlocks.STATIONARY_WATER) block = ClassicBlocks.BLUE_WOOL; + else if (block == ClassicBlocks.STATIONARY_LAVA) block = ClassicBlocks.ORANGE_WOOL; + } + + return block; + })); + + if (userConnection.has(AlphaInventoryTracker.class)) userConnection.get(AlphaInventoryTracker.class).setCreativeMode(true); + if (userConnection.has(TimeLockStorage.class)) userConnection.get(TimeLockStorage.class).setTime(6000L); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/ServerboundPacketsc0_28.java b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/ServerboundPacketsc0_28.java new file mode 100644 index 0000000..98bc81a --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/ServerboundPacketsc0_28.java @@ -0,0 +1,75 @@ +package net.raphimc.vialegacy.protocols.classic.protocola1_0_15toc0_28_30; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.packet.ServerboundPacketType; +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.util.PreNettyPacketType; + +import java.util.function.BiConsumer; + +import static net.raphimc.vialegacy.util.PreNettyTypes.readString64; + +public enum ServerboundPacketsc0_28 implements ServerboundPacketType, PreNettyPacketType { + + LOGIN(0, (user, buf) -> { + buf.readByte(); + readString64(buf); + readString64(buf); + buf.readByte(); + }), + PLAYER_BLOCK_PLACEMENT(5, (user, buf) -> { + buf.readShort(); + buf.readShort(); + buf.readShort(); + buf.readByte(); + buf.readByte(); + }), + PLAYER_POSITION_AND_ROTATION(8, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readShort(); + buf.readShort(); + buf.readByte(); + buf.readByte(); + }), + CHAT_MESSAGE(13, (user, buf) -> { + buf.readByte(); + readString64(buf); + }); + + private static final ServerboundPacketsc0_28[] REGISTRY = new ServerboundPacketsc0_28[256]; + + static { + for (ServerboundPacketsc0_28 packet : values()) { + REGISTRY[packet.id] = packet; + } + } + + public static ServerboundPacketsc0_28 getPacket(final int id) { + return REGISTRY[id]; + } + + private final int id; + private final BiConsumer packetReader; + + ServerboundPacketsc0_28(final int id, final BiConsumer packetReader) { + this.id = id; + this.packetReader = packetReader; + } + + @Override + public int getId() { + return this.id; + } + + @Override + public String getName() { + return name(); + } + + @Override + public BiConsumer getPacketReader() { + return this.packetReader; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/data/ClassicBlocks.java b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/data/ClassicBlocks.java new file mode 100644 index 0000000..d3b84c3 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/data/ClassicBlocks.java @@ -0,0 +1,166 @@ +package net.raphimc.vialegacy.protocols.classic.protocola1_0_15toc0_28_30.data; + +import com.viaversion.viaversion.libs.fastutil.ints.Int2ObjectMap; +import com.viaversion.viaversion.libs.fastutil.ints.Int2ObjectOpenHashMap; +import com.viaversion.viaversion.libs.fastutil.objects.Object2IntMap; +import com.viaversion.viaversion.libs.fastutil.objects.Object2IntOpenHashMap; +import net.raphimc.vialegacy.api.*; + +public class ClassicBlocks { + + public static final int AIR = 0; + public static final int STONE = 1; + public static final int GRASS = 2; + public static final int DIRT = 3; + public static final int COBBLESTONE = 4; + public static final int WOOD = 5; + public static final int SAPLING = 6; + public static final int BEDROCK = 7; + public static final int WATER = 8; + public static final int STATIONARY_WATER = 9; + public static final int LAVA = 10; + public static final int STATIONARY_LAVA = 11; + public static final int SAND = 12; + public static final int GRAVEL = 13; + public static final int GOLD_ORE = 14; + public static final int IRON_ORE = 15; + public static final int COAL_ORE = 16; + public static final int LOG = 17; + public static final int LEAVES = 18; + public static final int SPONGE = 19; + public static final int GLASS = 20; + public static final int RED_WOOL = 21; + public static final int ORANGE_WOOL = 22; + public static final int YELLOW_WOOL = 23; + public static final int LIME_WOOL = 24; + public static final int GREEN_WOOL = 25; + public static final int TEAL_WOOL = 26; + public static final int AQUA_BLUE_WOOL = 27; + public static final int CYAN_WOOL = 28; + public static final int BLUE_WOOL = 29; + public static final int INDIGO_WOOL = 30; + public static final int VIOLET_WOOL = 31; + public static final int MAGENTA_WOOL = 32; + public static final int PINK_WOOL = 33; + public static final int BLACK_WOOL = 34; + public static final int GRAY_WOOL = 35; + public static final int WHITE_WOOL = 36; + public static final int DANDELION = 37; + public static final int ROSE = 38; + public static final int BROWN_MUSHROOM = 39; + public static final int RED_MUSHROOM = 40; + public static final int GOLD_BLOCK = 41; + public static final int IRON_BLOCK = 42; + public static final int DOUBLE_SLAB = 43; + public static final int SLAB = 44; + public static final int BRICK = 45; + public static final int TNT = 46; + public static final int BOOKSHELF = 47; + public static final int MOSSY_COBBLESTONE = 48; + public static final int OBSIDIAN = 49; + + public static Int2ObjectMap MAPPING = new Int2ObjectOpenHashMap<>(50, 0.99F); + public static Object2IntMap REVERSE_MAPPING = new Object2IntOpenHashMap<>(42, 0.99F); + + static { + MAPPING.defaultReturnValue(new IdAndData(BlockList1_6.stone.blockID, 0)); + REVERSE_MAPPING.defaultReturnValue(STONE); + + MAPPING.put(AIR, new IdAndData(0, 0)); + MAPPING.put(STONE, new IdAndData(BlockList1_6.stone.blockID, 0)); + MAPPING.put(GRASS, new IdAndData(BlockList1_6.grass.blockID, 0)); + MAPPING.put(DIRT, new IdAndData(BlockList1_6.dirt.blockID, 0)); + MAPPING.put(COBBLESTONE, new IdAndData(BlockList1_6.cobblestone.blockID, 0)); + MAPPING.put(WOOD, new IdAndData(BlockList1_6.planks.blockID, 0)); + MAPPING.put(SAPLING, new IdAndData(BlockList1_6.sapling.blockID, 0)); + MAPPING.put(BEDROCK, new IdAndData(BlockList1_6.bedrock.blockID, 0)); + MAPPING.put(WATER, new IdAndData(BlockList1_6.waterMoving.blockID, 0)); + MAPPING.put(STATIONARY_WATER, new IdAndData(BlockList1_6.waterStill.blockID, 0)); + MAPPING.put(LAVA, new IdAndData(BlockList1_6.lavaMoving.blockID, 0)); + MAPPING.put(STATIONARY_LAVA, new IdAndData(BlockList1_6.lavaStill.blockID, 0)); + MAPPING.put(SAND, new IdAndData(BlockList1_6.sand.blockID, 0)); + MAPPING.put(GRAVEL, new IdAndData(BlockList1_6.gravel.blockID, 0)); + MAPPING.put(GOLD_ORE, new IdAndData(BlockList1_6.oreGold.blockID, 0)); + MAPPING.put(IRON_ORE, new IdAndData(BlockList1_6.oreIron.blockID, 0)); + MAPPING.put(COAL_ORE, new IdAndData(BlockList1_6.oreCoal.blockID, 0)); + MAPPING.put(LOG, new IdAndData(BlockList1_6.wood.blockID, 0)); + MAPPING.put(LEAVES, new IdAndData(BlockList1_6.leaves.blockID, 0)); + MAPPING.put(SPONGE, new IdAndData(BlockList1_6.sponge.blockID, 0)); + MAPPING.put(GLASS, new IdAndData(BlockList1_6.glass.blockID, 0)); + MAPPING.put(RED_WOOL, new IdAndData(BlockList1_6.cloth.blockID, 14)); + MAPPING.put(ORANGE_WOOL, new IdAndData(BlockList1_6.cloth.blockID, 1)); + MAPPING.put(YELLOW_WOOL, new IdAndData(BlockList1_6.cloth.blockID, 4)); + MAPPING.put(LIME_WOOL, new IdAndData(BlockList1_6.cloth.blockID, 5)); + MAPPING.put(GREEN_WOOL, new IdAndData(BlockList1_6.cloth.blockID, 13)); + MAPPING.put(TEAL_WOOL, new IdAndData(BlockList1_6.cloth.blockID, 5)); + MAPPING.put(AQUA_BLUE_WOOL, new IdAndData(BlockList1_6.cloth.blockID, 3)); + MAPPING.put(CYAN_WOOL, new IdAndData(BlockList1_6.cloth.blockID, 9)); + MAPPING.put(BLUE_WOOL, new IdAndData(BlockList1_6.cloth.blockID, 11)); + MAPPING.put(INDIGO_WOOL, new IdAndData(BlockList1_6.cloth.blockID, 10)); + MAPPING.put(VIOLET_WOOL, new IdAndData(BlockList1_6.cloth.blockID, 2)); + MAPPING.put(MAGENTA_WOOL, new IdAndData(BlockList1_6.cloth.blockID, 2)); + MAPPING.put(PINK_WOOL, new IdAndData(BlockList1_6.cloth.blockID, 6)); + MAPPING.put(BLACK_WOOL, new IdAndData(BlockList1_6.cloth.blockID, 7)); + MAPPING.put(GRAY_WOOL, new IdAndData(BlockList1_6.cloth.blockID, 8)); + MAPPING.put(WHITE_WOOL, new IdAndData(BlockList1_6.cloth.blockID, 0)); + MAPPING.put(DANDELION, new IdAndData(BlockList1_6.plantYellow.blockID, 0)); + MAPPING.put(ROSE, new IdAndData(BlockList1_6.plantRed.blockID, 0)); + MAPPING.put(BROWN_MUSHROOM, new IdAndData(BlockList1_6.mushroomBrown.blockID, 0)); + MAPPING.put(RED_MUSHROOM, new IdAndData(BlockList1_6.mushroomRed.blockID, 0)); + MAPPING.put(GOLD_BLOCK, new IdAndData(BlockList1_6.blockGold.blockID, 0)); + MAPPING.put(IRON_BLOCK, new IdAndData(BlockList1_6.blockIron.blockID, 0)); + MAPPING.put(DOUBLE_SLAB, new IdAndData(BlockList1_6.stoneDoubleSlab.blockID, 0)); + MAPPING.put(SLAB, new IdAndData(BlockList1_6.stoneSingleSlab.blockID, 0)); + MAPPING.put(BRICK, new IdAndData(BlockList1_6.brick.blockID, 0)); + MAPPING.put(TNT, new IdAndData(BlockList1_6.tnt.blockID, 0)); + MAPPING.put(BOOKSHELF, new IdAndData(BlockList1_6.bookShelf.blockID, 0)); + MAPPING.put(MOSSY_COBBLESTONE, new IdAndData(BlockList1_6.cobblestoneMossy.blockID, 0)); + MAPPING.put(OBSIDIAN, new IdAndData(BlockList1_6.obsidian.blockID, 0)); + + REVERSE_MAPPING.put(new IdAndData(BlockList1_6.stone.blockID, 0), STONE); + REVERSE_MAPPING.put(new IdAndData(BlockList1_6.grass.blockID, 0), GRASS); // normally not placeable + REVERSE_MAPPING.put(new IdAndData(BlockList1_6.dirt.blockID, 0), DIRT); + REVERSE_MAPPING.put(new IdAndData(BlockList1_6.cobblestone.blockID, 0), COBBLESTONE); + REVERSE_MAPPING.put(new IdAndData(BlockList1_6.planks.blockID, 0), WOOD); + REVERSE_MAPPING.put(new IdAndData(BlockList1_6.sapling.blockID, 0), SAPLING); + REVERSE_MAPPING.put(new IdAndData(BlockList1_6.bedrock.blockID, 0), BEDROCK); // normally not placeable + REVERSE_MAPPING.put(new IdAndData(ItemList1_6.bucketWater.itemID, 0), STATIONARY_WATER); // normally not placeable + REVERSE_MAPPING.put(new IdAndData(ItemList1_6.bucketLava.itemID, 0), STATIONARY_LAVA); // normally not placeable + REVERSE_MAPPING.put(new IdAndData(BlockList1_6.sand.blockID, 0), SAND); + REVERSE_MAPPING.put(new IdAndData(BlockList1_6.gravel.blockID, 0), GRAVEL); + REVERSE_MAPPING.put(new IdAndData(BlockList1_6.oreGold.blockID, 0), GOLD_ORE); + REVERSE_MAPPING.put(new IdAndData(BlockList1_6.oreIron.blockID, 0), IRON_ORE); + REVERSE_MAPPING.put(new IdAndData(BlockList1_6.oreCoal.blockID, 0), COAL_ORE); + REVERSE_MAPPING.put(new IdAndData(BlockList1_6.wood.blockID, 0), LOG); + REVERSE_MAPPING.put(new IdAndData(BlockList1_6.leaves.blockID, 0), LEAVES); + REVERSE_MAPPING.put(new IdAndData(BlockList1_6.sponge.blockID, 0), SPONGE); + REVERSE_MAPPING.put(new IdAndData(BlockList1_6.glass.blockID, 0), GLASS); + REVERSE_MAPPING.put(new IdAndData(BlockList1_6.plantYellow.blockID, 0), DANDELION); + REVERSE_MAPPING.put(new IdAndData(BlockList1_6.plantRed.blockID, 0), ROSE); + REVERSE_MAPPING.put(new IdAndData(BlockList1_6.mushroomBrown.blockID, 0), BROWN_MUSHROOM); + REVERSE_MAPPING.put(new IdAndData(BlockList1_6.mushroomRed.blockID, 0), RED_MUSHROOM); + REVERSE_MAPPING.put(new IdAndData(BlockList1_6.cloth.blockID, 14), RED_WOOL); + REVERSE_MAPPING.put(new IdAndData(BlockList1_6.cloth.blockID, 1), ORANGE_WOOL); + REVERSE_MAPPING.put(new IdAndData(BlockList1_6.cloth.blockID, 4), YELLOW_WOOL); + REVERSE_MAPPING.put(new IdAndData(BlockList1_6.cloth.blockID, 5), LIME_WOOL); + REVERSE_MAPPING.put(new IdAndData(BlockList1_6.cloth.blockID, 13), GREEN_WOOL); + REVERSE_MAPPING.put(new IdAndData(BlockList1_6.cloth.blockID, 3), AQUA_BLUE_WOOL); + REVERSE_MAPPING.put(new IdAndData(BlockList1_6.cloth.blockID, 9), CYAN_WOOL); + REVERSE_MAPPING.put(new IdAndData(BlockList1_6.cloth.blockID, 11), BLUE_WOOL); + REVERSE_MAPPING.put(new IdAndData(BlockList1_6.cloth.blockID, 10), INDIGO_WOOL); + REVERSE_MAPPING.put(new IdAndData(BlockList1_6.cloth.blockID, 2), MAGENTA_WOOL); + REVERSE_MAPPING.put(new IdAndData(BlockList1_6.cloth.blockID, 6), PINK_WOOL); + REVERSE_MAPPING.put(new IdAndData(BlockList1_6.cloth.blockID, 7), BLACK_WOOL); + REVERSE_MAPPING.put(new IdAndData(BlockList1_6.cloth.blockID, 8), GRAY_WOOL); + REVERSE_MAPPING.put(new IdAndData(BlockList1_6.cloth.blockID, 0), WHITE_WOOL); + REVERSE_MAPPING.put(new IdAndData(BlockList1_6.blockGold.blockID, 0), GOLD_BLOCK); + REVERSE_MAPPING.put(new IdAndData(BlockList1_6.blockIron.blockID, 0), IRON_BLOCK); + REVERSE_MAPPING.put(new IdAndData(BlockList1_6.stoneSingleSlab.blockID, 0), SLAB); + REVERSE_MAPPING.put(new IdAndData(BlockList1_6.brick.blockID, 0), BRICK); + REVERSE_MAPPING.put(new IdAndData(BlockList1_6.tnt.blockID, 0), TNT); + REVERSE_MAPPING.put(new IdAndData(BlockList1_6.bookShelf.blockID, 0), BOOKSHELF); + REVERSE_MAPPING.put(new IdAndData(BlockList1_6.cobblestoneMossy.blockID, 0), MOSSY_COBBLESTONE); + REVERSE_MAPPING.put(new IdAndData(BlockList1_6.obsidian.blockID, 0), OBSIDIAN); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/data/Cp437String.java b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/data/Cp437String.java new file mode 100644 index 0000000..4532937 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/data/Cp437String.java @@ -0,0 +1,60 @@ +package net.raphimc.vialegacy.protocols.classic.protocola1_0_15toc0_28_30.data; + +import com.viaversion.viaversion.util.Int2IntBiHashMap; +import com.viaversion.viaversion.util.Int2IntBiMap; + +public class Cp437String { + + // Cp437 -> Unicode | https://en.wikipedia.org/wiki/Code_page_437#Characters + private static final short[] LOOKUP_TABLE = new short[]{ + 0x0000, 0x263a, 0x263b, 0x2665, 0x2666, 0x2663, 0x2660, 0x2022, 0x25d8, 0x25cb, 0x25d9, + 0x2642, 0x2640, 0x266a, 0x266b, 0x263c, 0x25ba, 0x25c4, 0x2195, 0x203c, 0x00b6, 0x00a7, + 0x25ac, 0x21a8, 0x2191, 0x2193, 0x2192, 0x2190, 0x221f, 0x2194, 0x25b2, 0x25bc, 0x0020, + 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, + 0x002c, 0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, + 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, 0x0040, 0x0041, + 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, + 0x004d, 0x004e, 0x004f, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, + 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062, + 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, + 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, + 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x2302, 0x00c7, 0x00fc, 0x00e9, 0x00e2, + 0x00e4, 0x00e0, 0x00e5, 0x00e7, 0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x00ec, 0x00c4, + 0x00c5, 0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9, 0x00ff, 0x00d6, + 0x00dc, 0x00a2, 0x00a3, 0x00a5, 0x20a7, 0x0192, 0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, + 0x00d1, 0x00aa, 0x00ba, 0x00bf, 0x2310, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb, + 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556, 0x2555, 0x2563, 0x2551, + 0x2557, 0x255d, 0x255c, 0x255b, 0x2510, 0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, + 0x255e, 0x255f, 0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567, 0x2568, + 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b, 0x256a, 0x2518, 0x250c, 0x2588, + 0x2584, 0x258c, 0x2590, 0x2580, 0x03b1, 0x00df, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x00b5, + 0x03c4, 0x03a6, 0x0398, 0x03a9, 0x03b4, 0x221e, 0x03c6, 0x03b5, 0x2229, 0x2261, 0x00b1, + 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248, 0x00b0, 0x2219, 0x00b7, 0x221a, 0x207f, + 0x00b2, 0x25a0, 0x00a0 + }; + private static final Int2IntBiMap LOOKUP = new Int2IntBiHashMap(); + + static { + for (int i = 0; i < LOOKUP_TABLE.length; i++) { + LOOKUP.put(i, LOOKUP_TABLE[i]); + } + } + + public static String fromBytes(final byte[] data) { + final char[] stringData = new char[data.length]; + for (int i = 0; i < data.length; i++) { + stringData[i] = (char) LOOKUP.get(data[i] & 255); + } + return new String(stringData); + } + + public static byte[] toBytes(final String string) { + final byte[] data = new byte[string.length()]; + final int[] chars = string.chars().toArray(); + for (int i = 0; i < chars.length; i++) { + data[i] = (byte) LOOKUP.inverse().get(chars[i]); + } + return data; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/model/ClassicLevel.java b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/model/ClassicLevel.java new file mode 100644 index 0000000..3b35bef --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/model/ClassicLevel.java @@ -0,0 +1,110 @@ +package net.raphimc.vialegacy.protocols.classic.protocola1_0_15toc0_28_30.model; + +import com.viaversion.viaversion.api.minecraft.Position; +import net.raphimc.vialegacy.protocols.classic.protocola1_0_15toc0_28_30.data.ClassicBlocks; + +public class ClassicLevel { + + private final int sizeX; + private final int sizeY; + private final int sizeZ; + + private final byte[] blocks; + private final int[] lightBlocking; + + public ClassicLevel(final int sizeX, final int sizeY, final int sizeZ) { + this(sizeX, sizeY, sizeZ, new byte[sizeX * sizeY * sizeZ], new int[sizeX * sizeZ]); + } + + public ClassicLevel(final int sizeX, final int sizeY, final int sizeZ, final byte[] blocks) { + this(sizeX, sizeY, sizeZ, blocks, new int[sizeX * sizeZ]); + } + + public ClassicLevel(final int sizeX, final int sizeY, final int sizeZ, final byte[] blocks, final int[] lightBlocking) { + this.sizeX = sizeX; + this.sizeY = sizeY; + this.sizeZ = sizeZ; + this.blocks = blocks; + this.lightBlocking = lightBlocking; + } + + public void calculateLight(int startX, int startZ, int sizeX, int sizeZ) { + for (int x = startX; x < startX + sizeX; x++) { + for (int z = startZ; z < startZ + sizeZ; z++) { + if (!this.isInBounds(x, 0, z)) continue; + int y = this.sizeY - 1; + while (y > 0 && !this.isLightBlocking(x, y, z)) { + y--; + } + this.lightBlocking[x + z * this.sizeX] = y; + } + } + } + + public int getSizeX() { + return this.sizeX; + } + + public int getSizeY() { + return this.sizeY; + } + + public int getSizeZ() { + return this.sizeZ; + } + + public int getBlock(Position position) { + return this.getBlock(position.x(), position.y(), position.z()); + } + + public int getBlock(int x, int y, int z) { + return this.isInBounds(x, y, z) ? this.blocks[(y * this.sizeZ + z) * this.sizeX + x] & 255 : 0; + } + + public void setBlock(Position position, int block) { + this.setBlock(position.x(), position.y(), position.z(), block); + } + + public void setBlock(int x, int y, int z, int block) { + if (this.isInBounds(x, y, z)) { + this.blocks[(y * this.sizeZ + z) * this.sizeX + x] = (byte) block; + this.calculateLight(x, z, 1, 1); + } + } + + public boolean isLightBlocking(Position position) { + return this.isLightBlocking(position.x(), position.y(), position.z()); + } + + public boolean isLightBlocking(int x, int y, int z) { + switch (this.getBlock(x, y, z)) { + case ClassicBlocks.AIR: + case ClassicBlocks.WATER: + case ClassicBlocks.STATIONARY_WATER: + case ClassicBlocks.LAVA: + case ClassicBlocks.STATIONARY_LAVA: + case ClassicBlocks.LEAVES: + case ClassicBlocks.DANDELION: + case ClassicBlocks.ROSE: + case ClassicBlocks.BROWN_MUSHROOM: + case ClassicBlocks.RED_MUSHROOM: + case ClassicBlocks.GLASS: + return false; + default: + return true; + } + } + + public boolean isLit(Position position) { + return this.isLit(position.x(), position.y(), position.z()); + } + + public boolean isLit(int x, int y, int z) { + return !this.isInBounds(x, y, z) || y >= this.lightBlocking[x + z * this.sizeX]; + } + + public boolean isInBounds(int x, int y, int z) { + return x >= 0 && y >= 0 && z >= 0 && x < this.sizeX && y < this.sizeY && z < this.sizeZ; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/providers/ClassicCustomCommandProvider.java b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/providers/ClassicCustomCommandProvider.java new file mode 100644 index 0000000..c436fdf --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/providers/ClassicCustomCommandProvider.java @@ -0,0 +1,22 @@ +package net.raphimc.vialegacy.protocols.classic.protocola1_0_15toc0_28_30.providers; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.platform.providers.Provider; +import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; +import net.raphimc.vialegacy.protocols.alpha.protocola1_0_16_2toa1_0_15.ClientboundPacketsa1_0_15; +import net.raphimc.vialegacy.protocols.beta.protocolb1_8_0_1tob1_7_0_3.types.Typesb1_7_0_3; +import net.raphimc.vialegacy.protocols.classic.protocola1_0_15toc0_28_30.Protocola1_0_15toc0_30; + +public class ClassicCustomCommandProvider implements Provider { + + public boolean handleChatMessage(final UserConnection user, final String message) { + return false; + } + + public void sendFeedback(final UserConnection user, final String message) throws Exception { + final PacketWrapper chatMessage = PacketWrapper.create(ClientboundPacketsa1_0_15.CHAT_MESSAGE, user); + chatMessage.write(Typesb1_7_0_3.STRING, message); // message + chatMessage.send(Protocola1_0_15toc0_30.class); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/providers/ClassicMPPassProvider.java b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/providers/ClassicMPPassProvider.java new file mode 100644 index 0000000..e46b53a --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/providers/ClassicMPPassProvider.java @@ -0,0 +1,12 @@ +package net.raphimc.vialegacy.protocols.classic.protocola1_0_15toc0_28_30.providers; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.platform.providers.Provider; + +public class ClassicMPPassProvider implements Provider { + + public String getMpPass(final UserConnection user) { + return "0"; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/providers/ClassicWorldHeightProvider.java b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/providers/ClassicWorldHeightProvider.java new file mode 100644 index 0000000..588c222 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/providers/ClassicWorldHeightProvider.java @@ -0,0 +1,12 @@ +package net.raphimc.vialegacy.protocols.classic.protocola1_0_15toc0_28_30.providers; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.platform.providers.Provider; + +public class ClassicWorldHeightProvider implements Provider { + + public short getMaxChunkSectionCount(final UserConnection user) { + return 8; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/storage/ClassicBlockRemapper.java b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/storage/ClassicBlockRemapper.java new file mode 100644 index 0000000..b3b01cf --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/storage/ClassicBlockRemapper.java @@ -0,0 +1,28 @@ +package net.raphimc.vialegacy.protocols.classic.protocola1_0_15toc0_28_30.storage; + +import com.viaversion.viaversion.api.connection.StoredObject; +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.libs.fastutil.ints.Int2ObjectFunction; +import com.viaversion.viaversion.libs.fastutil.objects.Object2IntFunction; +import net.raphimc.vialegacy.api.IdAndData; + +public class ClassicBlockRemapper extends StoredObject { + + private final Int2ObjectFunction mapper; + private final Object2IntFunction reverseMapper; + + public ClassicBlockRemapper(UserConnection user, Int2ObjectFunction mapper, Object2IntFunction reverseMapper) { + super(user); + this.mapper = mapper; + this.reverseMapper = reverseMapper; + } + + public Int2ObjectFunction getMapper() { + return this.mapper; + } + + public Object2IntFunction getReverseMapper() { + return this.reverseMapper; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/storage/ClassicLevelStorage.java b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/storage/ClassicLevelStorage.java new file mode 100644 index 0000000..cb00fd9 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/storage/ClassicLevelStorage.java @@ -0,0 +1,166 @@ +package net.raphimc.vialegacy.protocols.classic.protocola1_0_15toc0_28_30.storage; + +import com.viaversion.viaversion.api.Via; +import com.viaversion.viaversion.api.connection.StoredObject; +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.minecraft.Position; +import com.viaversion.viaversion.api.minecraft.chunks.*; +import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; +import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; +import com.viaversion.viaversion.util.MathUtil; +import net.raphimc.vialegacy.ViaLegacy; +import net.raphimc.vialegacy.api.ChunkCoord; +import net.raphimc.vialegacy.protocols.alpha.protocola1_0_16_2toa1_0_15.ClientboundPacketsa1_0_15; +import net.raphimc.vialegacy.protocols.classic.protocola1_0_15toc0_28_30.Protocola1_0_15toc0_30; +import net.raphimc.vialegacy.protocols.classic.protocola1_0_15toc0_28_30.model.ClassicLevel; +import net.raphimc.vialegacy.protocols.classic.protocola1_0_15toc0_28_30.providers.ClassicWorldHeightProvider; +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.chunks.NibbleArray1_1; +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.types.Chunk1_1Type; +import net.raphimc.vialegacy.util.ChunkCoordSpiral; + +import java.io.*; +import java.util.*; +import java.util.zip.GZIPInputStream; + +public class ClassicLevelStorage extends StoredObject { + + private ByteArrayOutputStream netBuffer = new ByteArrayOutputStream(64 * 64 * 64); + + private ClassicLevel classicLevel; + + private int chunkXCount; + private int sectionYCount; + private int chunkZCount; + + private int subChunkXLength; + private int subChunkYLength; + private int subChunkZLength; + + private int sectionBitmask; + + private int chunksPerTick = ViaLegacy.getConfig().getChunksPerTick(); + + private final Set loadedChunks = new HashSet<>(); + private long lastPosPacket; + + public ClassicLevelStorage(final UserConnection user) { + super(user); + } + + public void addDataPart(final byte[] part, final int partSize) { + if (this.netBuffer == null) throw new IllegalStateException("Level is already fully loaded"); + this.netBuffer.write(part, 0, partSize); + } + + public void finish(final int sizeX, final int sizeY, final int sizeZ) { + try { + final DataInputStream dis = new DataInputStream(new GZIPInputStream(new ByteArrayInputStream(this.netBuffer.toByteArray()), 64 * 1024)); + final byte[] blocks = new byte[dis.readInt()]; + dis.readFully(blocks); + dis.close(); + this.netBuffer = null; + this.classicLevel = new ClassicLevel(sizeX, sizeY, sizeZ, blocks); + } catch (Throwable e) { + throw new IllegalStateException("Failed to load level", e); + } + + final short maxChunkSectionCount = Via.getManager().getProviders().get(ClassicWorldHeightProvider.class).getMaxChunkSectionCount(this.getUser()); + + this.chunkXCount = sizeX >> 4; + if (sizeX % 16 != 0) this.chunkXCount++; + this.sectionYCount = sizeY >> 4; + if (sizeY % 16 != 0) this.sectionYCount++; + if (this.sectionYCount > maxChunkSectionCount) this.sectionYCount = maxChunkSectionCount; + this.chunkZCount = sizeZ >> 4; + if (sizeZ % 16 != 0) this.chunkZCount++; + this.subChunkXLength = Math.min(16, sizeX); + this.subChunkYLength = Math.min(16, sizeY); + this.subChunkZLength = Math.min(16, sizeZ); + this.sectionBitmask = 0; + for (int i = 0; i < this.sectionYCount; i++) this.sectionBitmask = (this.sectionBitmask << 1) | 1; + + if (this.chunksPerTick <= 0) { + this.chunksPerTick = MathUtil.clamp(32 / this.sectionYCount, 1, 8); + } + } + + public void tickChunks(final ChunkCoord center) throws Exception { + if (!this.getUser().get(ClassicPositionTracker.class).spawned) return; + if (System.currentTimeMillis() - this.lastPosPacket < 50) { + return; + } + this.lastPosPacket = System.currentTimeMillis(); + this.sendChunks(center, ViaLegacy.getConfig().getClassicChunkRange(), this.chunksPerTick); + } + + public void sendChunks(final ChunkCoord center, final int radius) throws Exception { + this.sendChunks(center, radius, Integer.MAX_VALUE); + } + + public void sendChunks(final ChunkCoord center, final int radius, int limit) throws Exception { + final ChunkCoordSpiral spiral = new ChunkCoordSpiral(center, new ChunkCoord(radius, radius)); + for (ChunkCoord coord : spiral) { + if (!this.shouldSend(coord)) continue; + if (limit-- <= 0) return; + this.sendChunk(coord); + } + } + + public void sendChunk(final ChunkCoord coord) throws Exception { + if (!this.shouldSend(coord)) return; + final ClassicBlockRemapper remapper = this.getUser().get(ClassicBlockRemapper.class); + + this.classicLevel.calculateLight(coord.chunkX * 16, coord.chunkZ * 16, this.subChunkXLength, this.subChunkZLength); + + final ChunkSection[] modernSections = new ChunkSection[Math.max(8, this.sectionYCount)]; + for (int sectionY = 0; sectionY < this.sectionYCount; sectionY++) { + final ChunkSection section = modernSections[sectionY] = new ChunkSectionImpl(true); + section.palette(PaletteType.BLOCKS).addId(0); + final NibbleArray1_1 skyLight = new NibbleArray1_1(16 * 16 * 16, 4); + + for (int y = 0; y < this.subChunkYLength; y++) { + final int totalY = y + (sectionY * 16); + for (int x = 0; x < this.subChunkXLength; x++) { + final int totalX = x + (coord.chunkX * 16); + for (int z = 0; z < this.subChunkZLength; z++) { + final int totalZ = z + (coord.chunkZ * 16); + section.palette(PaletteType.BLOCKS).setIdAt(x, y, z, remapper.getMapper().get(this.classicLevel.getBlock(totalX, totalY, totalZ)).toCompressedData()); + skyLight.set(x, y, z, this.classicLevel.isLit(totalX, totalY, totalZ) ? 15 : 9); + } + } + } + + section.getLight().setSkyLight(skyLight.getHandle()); + } + + this.loadedChunks.add(coord); + + final Chunk viaChunk = new BaseChunk(coord.chunkX, coord.chunkZ, true, false, this.sectionBitmask, modernSections, new int[256], new ArrayList<>()); + final PacketWrapper chunkData = PacketWrapper.create(ClientboundPacketsa1_0_15.CHUNK_DATA, this.getUser()); + chunkData.write(new Chunk1_1Type(this.getUser().get(ClientWorld.class)), viaChunk); + chunkData.send(Protocola1_0_15toc0_30.class); + } + + private boolean shouldSend(final ChunkCoord coord) { + if (!this.hasReceivedLevel()) return false; + boolean isInBounds = (coord.chunkX >= 0 && coord.chunkX < chunkXCount) && coord.chunkZ >= 0 && coord.chunkZ < chunkZCount; + return isInBounds && !this.isChunkLoaded(coord); + } + + public boolean isChunkLoaded(final ChunkCoord coord) { + return this.loadedChunks.contains(coord); + } + + public boolean isChunkLoaded(final Position position) { + return this.isChunkLoaded(new ChunkCoord(position.x() >> 4, position.z() >> 4)); + } + + public boolean hasReceivedLevel() { + return this.classicLevel != null; + } + + public ClassicLevel getClassicLevel() { + return this.classicLevel; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/storage/ClassicOpLevelStorage.java b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/storage/ClassicOpLevelStorage.java new file mode 100644 index 0000000..a0dc8f4 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/storage/ClassicOpLevelStorage.java @@ -0,0 +1,22 @@ +package net.raphimc.vialegacy.protocols.classic.protocola1_0_15toc0_28_30.storage; + +import com.viaversion.viaversion.api.connection.StoredObject; +import com.viaversion.viaversion.api.connection.UserConnection; + +public class ClassicOpLevelStorage extends StoredObject { + + private byte opLevel; + + public ClassicOpLevelStorage(final UserConnection user) { + super(user); + } + + public void setOpLevel(final byte opLevel) { + this.opLevel = opLevel; + } + + public byte getOpLevel() { + return this.opLevel; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/storage/ClassicPositionTracker.java b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/storage/ClassicPositionTracker.java new file mode 100644 index 0000000..053976e --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/storage/ClassicPositionTracker.java @@ -0,0 +1,53 @@ +package net.raphimc.vialegacy.protocols.classic.protocola1_0_15toc0_28_30.storage; + +import com.viaversion.viaversion.api.connection.StoredObject; +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.minecraft.Position; +import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; +import com.viaversion.viaversion.api.type.Type; +import net.raphimc.vialegacy.api.ChunkCoord; + +public class ClassicPositionTracker extends StoredObject { + + public double posX; + public double stance; + public double posZ; + public float yaw; + public float pitch; + + public boolean spawned; + + public ClassicPositionTracker(final UserConnection user) { + super(user); + } + + public void writeToPacket(final PacketWrapper wrapper) { + final int x = (int) (this.posX * 32.0F); + final int y = (int) (this.stance * 32.0F); + final int z = (int) (this.posZ * 32.0F); + final int yaw = (int) (this.yaw * 256.0F / 360.0F) & 255; + final int pitch = (int) (this.pitch * 256.0F / 360.0F) & 255; + + wrapper.write(Type.BYTE, (byte) -1); // entity id + wrapper.write(Type.SHORT, (short) x); // x + wrapper.write(Type.SHORT, (short) y); // y + wrapper.write(Type.SHORT, (short) z); // z + wrapper.write(Type.BYTE, (byte) (yaw - 128)); // yaw + wrapper.write(Type.BYTE, (byte) pitch); // pitch + } + + public Position getBlockPosition() { + return new Position(floor(this.posX), floor(this.stance), floor(this.posZ)); + } + + public ChunkCoord getChunkPosition() { + final Position pos = this.getBlockPosition(); + return new ChunkCoord(pos.x() >> 4, pos.z() >> 4); + } + + private static int floor(double f) { + int i = (int) f; + return f < (double) i ? i - 1 : i; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/storage/ClassicProgressStorage.java b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/storage/ClassicProgressStorage.java new file mode 100644 index 0000000..6afde61 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/storage/ClassicProgressStorage.java @@ -0,0 +1,16 @@ +package net.raphimc.vialegacy.protocols.classic.protocola1_0_15toc0_28_30.storage; + +import com.viaversion.viaversion.api.connection.StoredObject; +import com.viaversion.viaversion.api.connection.UserConnection; + +public class ClassicProgressStorage extends StoredObject { + + public int upperBound = 100; + public int progress; // 0% - upperBound + public String status = "Waiting..."; + + public ClassicProgressStorage(UserConnection user) { + super(user); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/storage/ClassicServerTitleStorage.java b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/storage/ClassicServerTitleStorage.java new file mode 100644 index 0000000..e9b1de3 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/storage/ClassicServerTitleStorage.java @@ -0,0 +1,25 @@ +package net.raphimc.vialegacy.protocols.classic.protocola1_0_15toc0_28_30.storage; + +import com.viaversion.viaversion.api.connection.StoredObject; +import com.viaversion.viaversion.api.connection.UserConnection; + +public class ClassicServerTitleStorage extends StoredObject { + + private final String title; + private final String motd; + + public ClassicServerTitleStorage(UserConnection user, String title, String motd) { + super(user); + this.title = title; + this.motd = motd; + } + + public String getTitle() { + return this.title; + } + + public String getMotd() { + return this.motd; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/types/ByteArrayType.java b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/types/ByteArrayType.java new file mode 100644 index 0000000..fa4b205 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/types/ByteArrayType.java @@ -0,0 +1,24 @@ +package net.raphimc.vialegacy.protocols.classic.protocola1_0_15toc0_28_30.types; + +import com.viaversion.viaversion.api.type.Type; +import io.netty.buffer.ByteBuf; + +public class ByteArrayType extends Type { + + public ByteArrayType() { + super(byte[].class); + } + + public void write(ByteBuf buffer, byte[] array) throws Exception { + if (array.length != 1024) throw new IllegalStateException("Byte array needs to be exactly 1024 bytes long"); + + buffer.writeBytes(array); + } + + public byte[] read(ByteBuf buffer) throws Exception { + final byte[] array = new byte[1024]; + buffer.readBytes(array); + return array; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/types/PositionType.java b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/types/PositionType.java new file mode 100644 index 0000000..5347b33 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/types/PositionType.java @@ -0,0 +1,25 @@ +package net.raphimc.vialegacy.protocols.classic.protocola1_0_15toc0_28_30.types; + +import com.viaversion.viaversion.api.minecraft.Position; +import com.viaversion.viaversion.api.type.Type; +import io.netty.buffer.ByteBuf; + +public class PositionType extends Type { + + public PositionType() { + super(Position.class); + } + + @Override + public Position read(ByteBuf buffer) throws Exception { + return new Position(buffer.readShort(), (int) buffer.readShort(), buffer.readShort()); + } + + @Override + public void write(ByteBuf buffer, Position position) throws Exception { + buffer.writeShort(position.x()); + buffer.writeShort(position.y()); + buffer.writeShort(position.z()); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/types/StringType.java b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/types/StringType.java new file mode 100644 index 0000000..2c9ddf7 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/types/StringType.java @@ -0,0 +1,32 @@ +package net.raphimc.vialegacy.protocols.classic.protocola1_0_15toc0_28_30.types; + +import com.viaversion.viaversion.api.type.Type; +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.protocols.classic.protocola1_0_15toc0_28_30.data.Cp437String; + +import java.io.IOException; +import java.util.Arrays; + +public class StringType extends Type { + + public StringType() { + super(String.class); + } + + public String read(ByteBuf buffer) throws IOException { + final byte[] stringBytes = new byte[64]; + buffer.readBytes(stringBytes); + return Cp437String.fromBytes(stringBytes).trim(); + } + + public void write(ByteBuf buffer, String s) throws IOException { + final byte[] bytes = new byte[64]; + final byte[] stringBytes = Cp437String.toBytes(s); + + Arrays.fill(bytes, (byte) 32); + System.arraycopy(stringBytes, 0, bytes, 0, Math.min(bytes.length, stringBytes.length)); + + buffer.writeBytes(bytes); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/types/Typesc0_30.java b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/types/Typesc0_30.java new file mode 100644 index 0000000..da3561b --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocola1_0_15toc0_28_30/types/Typesc0_30.java @@ -0,0 +1,14 @@ +package net.raphimc.vialegacy.protocols.classic.protocola1_0_15toc0_28_30.types; + +import com.viaversion.viaversion.api.minecraft.Position; +import com.viaversion.viaversion.api.type.Type; + +public class Typesc0_30 { + + public static final Type STRING = new StringType(); + + public static final Type BYTE_ARRAY = new ByteArrayType(); + + public static final Type POSITION = new PositionType(); + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_0_16a_02to0_0_15a_1/ClientboundPacketsc0_15a.java b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_0_16a_02to0_0_15a_1/ClientboundPacketsc0_15a.java new file mode 100644 index 0000000..88522c9 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_0_16a_02to0_0_15a_1/ClientboundPacketsc0_15a.java @@ -0,0 +1,94 @@ +package net.raphimc.vialegacy.protocols.classic.protocolc0_0_16a_02to0_0_15a_1; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType; +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.util.PreNettyPacketType; + +import java.util.function.BiConsumer; + +import static net.raphimc.vialegacy.util.PreNettyTypes.readByteArray1024; +import static net.raphimc.vialegacy.util.PreNettyTypes.readString64; + +public enum ClientboundPacketsc0_15a implements ClientboundPacketType, PreNettyPacketType { + + JOIN_GAME(0, (user, buf) -> { + readString64(buf); + }), + KEEP_ALIVE(1, (user, buf) -> { + }), + LEVEL_INIT(2, (user, buf) -> { + }), + LEVEL_DATA(3, (user, buf) -> { + buf.readShort(); + readByteArray1024(buf); + buf.readByte(); + }), + LEVEL_FINALIZE(4, (user, buf) -> { + buf.readShort(); + buf.readShort(); + buf.readShort(); + }), + BLOCK_CHANGE(6, (user, buf) -> { + buf.readShort(); + buf.readShort(); + buf.readShort(); + buf.readByte(); + }), + SPAWN_PLAYER(7, (user, buf) -> { + buf.readByte(); + readString64(buf); + buf.readShort(); + buf.readShort(); + buf.readShort(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_TELEPORT(8, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readShort(); + buf.readShort(); + buf.readByte(); + buf.readByte(); + }), + DESTROY_ENTITIES(9, (user, buf) -> { + buf.readByte(); + }); + + private static final ClientboundPacketsc0_15a[] REGISTRY = new ClientboundPacketsc0_15a[256]; + + static { + for (ClientboundPacketsc0_15a packet : values()) { + REGISTRY[packet.id] = packet; + } + } + + public static ClientboundPacketsc0_15a getPacket(final int id) { + return REGISTRY[id]; + } + + private final int id; + private final BiConsumer packetReader; + + ClientboundPacketsc0_15a(final int id, final BiConsumer packetReader) { + this.id = id; + this.packetReader = packetReader; + } + + @Override + public int getId() { + return this.id; + } + + @Override + public String getName() { + return name(); + } + + @Override + public BiConsumer getPacketReader() { + return this.packetReader; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_0_16a_02to0_0_15a_1/Protocolc0_0_16a_02to0_0_15a_1.java b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_0_16a_02to0_0_15a_1/Protocolc0_0_16a_02to0_0_15a_1.java new file mode 100644 index 0000000..2eac636 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_0_16a_02to0_0_15a_1/Protocolc0_0_16a_02to0_0_15a_1.java @@ -0,0 +1,77 @@ +package net.raphimc.vialegacy.protocols.classic.protocolc0_0_16a_02to0_0_15a_1; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.AbstractProtocol; +import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; +import com.viaversion.viaversion.api.protocol.packet.State; +import com.viaversion.viaversion.api.protocol.remapper.PacketRemapper; +import com.viaversion.viaversion.api.type.Type; +import net.raphimc.vialegacy.protocols.classic.protocola1_0_15toc0_28_30.types.Typesc0_30; +import net.raphimc.vialegacy.protocols.classic.protocolc0_0_20a_27toc0_0_19a_06.ClientboundPacketsc0_19a; +import net.raphimc.vialegacy.protocols.classic.protocolc0_0_20a_27toc0_0_19a_06.ServerboundPacketsc0_19a; +import net.raphimc.vialegacy.util.PreNettySplitter; + +public class Protocolc0_0_16a_02to0_0_15a_1 extends AbstractProtocol { + + public Protocolc0_0_16a_02to0_0_15a_1() { + super(ClientboundPacketsc0_15a.class, ClientboundPacketsc0_19a.class, ServerboundPacketsc0_15a.class, ServerboundPacketsc0_19a.class); + } + + @Override + protected void registerPackets() { + this.registerClientbound(ClientboundPacketsc0_15a.JOIN_GAME, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + final String username = wrapper.read(Typesc0_30.STRING); // username + + wrapper.write(Type.BYTE, (byte) 0); // protocol id + wrapper.write(Typesc0_30.STRING, "c0.0.15a Server"); // title + wrapper.write(Typesc0_30.STRING, "Logged in as: " + username); // motd + }); + } + }); + this.registerClientbound(ClientboundPacketsc0_15a.ENTITY_TELEPORT, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.BYTE); // entity id + map(Type.SHORT); // x + map(Type.SHORT); // y + map(Type.SHORT); // z + map(Type.BYTE); // yaw + map(Type.BYTE); // pitch + handler(wrapper -> { + final byte entityId = wrapper.get(Type.BYTE, 0); + final byte yaw = wrapper.get(Type.BYTE, 1); + final byte pitch = wrapper.get(Type.BYTE, 2); + + final PacketWrapper entityRotation = PacketWrapper.create(ClientboundPacketsc0_19a.ENTITY_ROTATION, wrapper.user()); + entityRotation.write(Type.BYTE, entityId); // entity id + entityRotation.write(Type.BYTE, yaw); // yaw + entityRotation.write(Type.BYTE, pitch); // pitch + + wrapper.send(Protocolc0_0_16a_02to0_0_15a_1.class); + entityRotation.send(Protocolc0_0_16a_02to0_0_15a_1.class); + wrapper.cancel(); + }); + } + }); + + this.registerServerbound(State.LOGIN, ServerboundPacketsc0_15a.LOGIN.getId(), ServerboundPacketsc0_19a.LOGIN.getId(), new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + wrapper.clearPacket(); + wrapper.write(Typesc0_30.STRING, wrapper.user().getProtocolInfo().getUsername()); // username + }); + } + }); + this.cancelServerbound(ServerboundPacketsc0_19a.CHAT_MESSAGE); + } + + @Override + public void init(UserConnection userConnection) { + userConnection.put(new PreNettySplitter(userConnection, Protocolc0_0_16a_02to0_0_15a_1.class, ClientboundPacketsc0_15a::getPacket)); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_0_16a_02to0_0_15a_1/ServerboundPacketsc0_15a.java b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_0_16a_02to0_0_15a_1/ServerboundPacketsc0_15a.java new file mode 100644 index 0000000..786dbf1 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_0_16a_02to0_0_15a_1/ServerboundPacketsc0_15a.java @@ -0,0 +1,68 @@ +package net.raphimc.vialegacy.protocols.classic.protocolc0_0_16a_02to0_0_15a_1; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.packet.ServerboundPacketType; +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.util.PreNettyPacketType; + +import java.util.function.BiConsumer; + +import static net.raphimc.vialegacy.util.PreNettyTypes.readString64; + +public enum ServerboundPacketsc0_15a implements ServerboundPacketType, PreNettyPacketType { + + LOGIN(0, (user, buf) -> { + readString64(buf); + }), + PLAYER_BLOCK_PLACEMENT(5, (user, buf) -> { + buf.readShort(); + buf.readShort(); + buf.readShort(); + buf.readByte(); + buf.readByte(); + }), + PLAYER_POSITION_AND_ROTATION(8, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readShort(); + buf.readShort(); + buf.readByte(); + buf.readByte(); + }); + + private static final ServerboundPacketsc0_15a[] REGISTRY = new ServerboundPacketsc0_15a[256]; + + static { + for (ServerboundPacketsc0_15a packet : values()) { + REGISTRY[packet.id] = packet; + } + } + + public static ServerboundPacketsc0_15a getPacket(final int id) { + return REGISTRY[id]; + } + + private final int id; + private final BiConsumer packetReader; + + ServerboundPacketsc0_15a(final int id, final BiConsumer packetReader) { + this.id = id; + this.packetReader = packetReader; + } + + @Override + public int getId() { + return this.id; + } + + @Override + public String getName() { + return name(); + } + + @Override + public BiConsumer getPacketReader() { + return this.packetReader; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_0_18a_02toc0_0_16a_02/Protocolc0_0_18a_02toc0_0_16a_02.java b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_0_18a_02toc0_0_16a_02/Protocolc0_0_18a_02toc0_0_16a_02.java new file mode 100644 index 0000000..58071e5 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_0_18a_02toc0_0_16a_02/Protocolc0_0_18a_02toc0_0_16a_02.java @@ -0,0 +1,13 @@ +package net.raphimc.vialegacy.protocols.classic.protocolc0_0_18a_02toc0_0_16a_02; + +import com.viaversion.viaversion.api.protocol.AbstractProtocol; +import net.raphimc.vialegacy.protocols.classic.protocolc0_0_20a_27toc0_0_19a_06.ClientboundPacketsc0_19a; +import net.raphimc.vialegacy.protocols.classic.protocolc0_0_20a_27toc0_0_19a_06.ServerboundPacketsc0_19a; + +public class Protocolc0_0_18a_02toc0_0_16a_02 extends AbstractProtocol { + + public Protocolc0_0_18a_02toc0_0_16a_02() { + super(ClientboundPacketsc0_19a.class, ClientboundPacketsc0_19a.class, ServerboundPacketsc0_19a.class, ServerboundPacketsc0_19a.class); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_0_19a_06toc0_0_18a_02/Protocolc0_0_19a_06toc0_0_18a_02.java b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_0_19a_06toc0_0_18a_02/Protocolc0_0_19a_06toc0_0_18a_02.java new file mode 100644 index 0000000..bc1b31b --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_0_19a_06toc0_0_18a_02/Protocolc0_0_19a_06toc0_0_18a_02.java @@ -0,0 +1,33 @@ +package net.raphimc.vialegacy.protocols.classic.protocolc0_0_19a_06toc0_0_18a_02; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.AbstractProtocol; +import net.raphimc.vialegacy.protocols.classic.protocola1_0_15toc0_28_30.data.ClassicBlocks; +import net.raphimc.vialegacy.protocols.classic.protocola1_0_15toc0_28_30.storage.ClassicBlockRemapper; +import net.raphimc.vialegacy.protocols.classic.protocolc0_0_20a_27toc0_0_19a_06.ClientboundPacketsc0_19a; +import net.raphimc.vialegacy.protocols.classic.protocolc0_0_20a_27toc0_0_19a_06.ServerboundPacketsc0_19a; +import net.raphimc.vialegacy.util.VersionEnum; + +public class Protocolc0_0_19a_06toc0_0_18a_02 extends AbstractProtocol { + + public Protocolc0_0_19a_06toc0_0_18a_02() { + super(ClientboundPacketsc0_19a.class, ClientboundPacketsc0_19a.class, ServerboundPacketsc0_19a.class, ServerboundPacketsc0_19a.class); + } + + @Override + public void init(UserConnection userConnection) { + final ClassicBlockRemapper previousRemapper = userConnection.get(ClassicBlockRemapper.class); + userConnection.put(new ClassicBlockRemapper(userConnection, previousRemapper.getMapper(), o -> { + int block = previousRemapper.getReverseMapper().getInt(o); + + if (VersionEnum.fromUserConnection(userConnection).isOlderThanOrEqualTo(VersionEnum.c0_0_18a_02)) { + if (block != ClassicBlocks.STONE && block != ClassicBlocks.DIRT && block != ClassicBlocks.WOOD && block != ClassicBlocks.SAPLING && block != ClassicBlocks.GRAVEL && block != ClassicBlocks.LOG && block != ClassicBlocks.LEAVES && block != ClassicBlocks.SAND && block != ClassicBlocks.COBBLESTONE) { + block = ClassicBlocks.STONE; + } + } + + return block; + })); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_0_20a_27toc0_0_19a_06/ClientboundPacketsc0_19a.java b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_0_20a_27toc0_0_19a_06/ClientboundPacketsc0_19a.java new file mode 100644 index 0000000..55d87a6 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_0_20a_27toc0_0_19a_06/ClientboundPacketsc0_19a.java @@ -0,0 +1,122 @@ +package net.raphimc.vialegacy.protocols.classic.protocolc0_0_20a_27toc0_0_19a_06; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType; +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.util.PreNettyPacketType; + +import java.util.function.BiConsumer; + +import static net.raphimc.vialegacy.util.PreNettyTypes.readByteArray1024; +import static net.raphimc.vialegacy.util.PreNettyTypes.readString64; + +public enum ClientboundPacketsc0_19a implements ClientboundPacketType, PreNettyPacketType { + + JOIN_GAME(0, (user, buf) -> { + buf.readByte(); + readString64(buf); + readString64(buf); + }), + KEEP_ALIVE(1, (user, buf) -> { + }), + LEVEL_INIT(2, (user, buf) -> { + }), + LEVEL_DATA(3, (user, buf) -> { + buf.readShort(); + readByteArray1024(buf); + buf.readByte(); + }), + LEVEL_FINALIZE(4, (user, buf) -> { + buf.readShort(); + buf.readShort(); + buf.readShort(); + }), + BLOCK_CHANGE(6, (user, buf) -> { + buf.readShort(); + buf.readShort(); + buf.readShort(); + buf.readByte(); + }), + SPAWN_PLAYER(7, (user, buf) -> { + buf.readByte(); + readString64(buf); + buf.readShort(); + buf.readShort(); + buf.readShort(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_TELEPORT(8, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readShort(); + buf.readShort(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_POSITION_AND_ROTATION(9, (user, buf) -> { + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_POSITION(10, (user, buf) -> { + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_ROTATION(11, (user, buf) -> { + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + DESTROY_ENTITIES(12, (user, buf) -> { + buf.readByte(); + }), + CHAT_MESSAGE(13, (user, buf) -> { + buf.readByte(); + readString64(buf); + }), + DISCONNECT(14, (user, buf) -> { + readString64(buf); + }); + + private static final ClientboundPacketsc0_19a[] REGISTRY = new ClientboundPacketsc0_19a[256]; + + static { + for (ClientboundPacketsc0_19a packet : values()) { + REGISTRY[packet.id] = packet; + } + } + + public static ClientboundPacketsc0_19a getPacket(final int id) { + return REGISTRY[id]; + } + + private final int id; + private final BiConsumer packetReader; + + ClientboundPacketsc0_19a(final int id, final BiConsumer packetReader) { + this.id = id; + this.packetReader = packetReader; + } + + @Override + public int getId() { + return this.id; + } + + @Override + public String getName() { + return name(); + } + + @Override + public BiConsumer getPacketReader() { + return this.packetReader; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_0_20a_27toc0_0_19a_06/Protocolc0_27toc0_0_19a_06.java b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_0_20a_27toc0_0_19a_06/Protocolc0_27toc0_0_19a_06.java new file mode 100644 index 0000000..28eb769 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_0_20a_27toc0_0_19a_06/Protocolc0_27toc0_0_19a_06.java @@ -0,0 +1,63 @@ +package net.raphimc.vialegacy.protocols.classic.protocolc0_0_20a_27toc0_0_19a_06; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.AbstractProtocol; +import com.viaversion.viaversion.api.protocol.packet.State; +import com.viaversion.viaversion.api.protocol.remapper.PacketRemapper; +import com.viaversion.viaversion.api.type.Type; +import net.raphimc.vialegacy.protocols.classic.protocola1_0_15toc0_28_30.ServerboundPacketsc0_28; +import net.raphimc.vialegacy.protocols.classic.protocola1_0_15toc0_28_30.data.ClassicBlocks; +import net.raphimc.vialegacy.protocols.classic.protocola1_0_15toc0_28_30.storage.ClassicBlockRemapper; +import net.raphimc.vialegacy.protocols.classic.protocola1_0_15toc0_28_30.types.Typesc0_30; +import net.raphimc.vialegacy.protocols.classic.protocolc0_28_30toc0_0_20a_27.ClientboundPacketsc0_20a; +import net.raphimc.vialegacy.util.PreNettySplitter; +import net.raphimc.vialegacy.util.VersionEnum; + +public class Protocolc0_27toc0_0_19a_06 extends AbstractProtocol { + + public Protocolc0_27toc0_0_19a_06() { + super(ClientboundPacketsc0_19a.class, ClientboundPacketsc0_20a.class, ServerboundPacketsc0_19a.class, ServerboundPacketsc0_28.class); + } + + @Override + protected void registerPackets() { + this.registerClientbound(ClientboundPacketsc0_19a.JOIN_GAME, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.BYTE); // protocol id + map(Typesc0_30.STRING); // title + map(Typesc0_30.STRING); // motd + create(Type.BYTE, (byte) 0); // op level + } + }); + + this.registerServerbound(State.LOGIN, ServerboundPacketsc0_19a.LOGIN.getId(), ServerboundPacketsc0_28.LOGIN.getId(), new PacketRemapper() { + @Override + public void registerMap() { + map(Type.BYTE); // protocol id + map(Typesc0_30.STRING); // username + map(Typesc0_30.STRING); // mp pass + read(Type.BYTE); // op level + } + }); + } + + @Override + public void init(UserConnection userConnection) { + userConnection.put(new PreNettySplitter(userConnection, Protocolc0_27toc0_0_19a_06.class, ClientboundPacketsc0_19a::getPacket)); + + final ClassicBlockRemapper previousRemapper = userConnection.get(ClassicBlockRemapper.class); + userConnection.put(new ClassicBlockRemapper(userConnection, previousRemapper.getMapper(), o -> { + int block = previousRemapper.getReverseMapper().getInt(o); + + if (VersionEnum.fromUserConnection(userConnection).equals(VersionEnum.c0_0_19a_06)) { + if (block != ClassicBlocks.STONE && block != ClassicBlocks.DIRT && block != ClassicBlocks.WOOD && block != ClassicBlocks.SAPLING && block != ClassicBlocks.GRAVEL && block != ClassicBlocks.LOG && block != ClassicBlocks.LEAVES && block != ClassicBlocks.SPONGE && block != ClassicBlocks.GLASS) { + block = ClassicBlocks.STONE; + } + } + + return block; + })); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_0_20a_27toc0_0_19a_06/ServerboundPacketsc0_19a.java b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_0_20a_27toc0_0_19a_06/ServerboundPacketsc0_19a.java new file mode 100644 index 0000000..841d977 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_0_20a_27toc0_0_19a_06/ServerboundPacketsc0_19a.java @@ -0,0 +1,74 @@ +package net.raphimc.vialegacy.protocols.classic.protocolc0_0_20a_27toc0_0_19a_06; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.packet.ServerboundPacketType; +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.util.PreNettyPacketType; + +import java.util.function.BiConsumer; + +import static net.raphimc.vialegacy.util.PreNettyTypes.readString64; + +public enum ServerboundPacketsc0_19a implements ServerboundPacketType, PreNettyPacketType { + + LOGIN(0, (user, buf) -> { + buf.readByte(); + readString64(buf); + readString64(buf); + }), + PLAYER_BLOCK_PLACEMENT(5, (user, buf) -> { + buf.readShort(); + buf.readShort(); + buf.readShort(); + buf.readByte(); + buf.readByte(); + }), + PLAYER_POSITION_AND_ROTATION(8, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readShort(); + buf.readShort(); + buf.readByte(); + buf.readByte(); + }), + CHAT_MESSAGE(13, (user, buf) -> { + buf.readByte(); + readString64(buf); + }); + + private static final ServerboundPacketsc0_19a[] REGISTRY = new ServerboundPacketsc0_19a[256]; + + static { + for (ServerboundPacketsc0_19a packet : values()) { + REGISTRY[packet.id] = packet; + } + } + + public static ServerboundPacketsc0_19a getPacket(final int id) { + return REGISTRY[id]; + } + + private final int id; + private final BiConsumer packetReader; + + ServerboundPacketsc0_19a(final int id, final BiConsumer packetReader) { + this.id = id; + this.packetReader = packetReader; + } + + @Override + public int getId() { + return this.id; + } + + @Override + public String getName() { + return name(); + } + + @Override + public BiConsumer getPacketReader() { + return this.packetReader; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_28_30toc0_0_20a_27/ClientboundPacketsc0_20a.java b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_28_30toc0_0_20a_27/ClientboundPacketsc0_20a.java new file mode 100644 index 0000000..57febf5 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_28_30toc0_0_20a_27/ClientboundPacketsc0_20a.java @@ -0,0 +1,123 @@ +package net.raphimc.vialegacy.protocols.classic.protocolc0_28_30toc0_0_20a_27; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType; +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.util.PreNettyPacketType; + +import java.util.function.BiConsumer; + +import static net.raphimc.vialegacy.util.PreNettyTypes.readByteArray1024; +import static net.raphimc.vialegacy.util.PreNettyTypes.readString64; + +public enum ClientboundPacketsc0_20a implements ClientboundPacketType, PreNettyPacketType { + + JOIN_GAME(0, (user, buf) -> { + buf.readByte(); + readString64(buf); + readString64(buf); + buf.readByte(); + }), + KEEP_ALIVE(1, (user, buf) -> { + }), + LEVEL_INIT(2, (user, buf) -> { + }), + LEVEL_DATA(3, (user, buf) -> { + buf.readShort(); + readByteArray1024(buf); + buf.readByte(); + }), + LEVEL_FINALIZE(4, (user, buf) -> { + buf.readShort(); + buf.readShort(); + buf.readShort(); + }), + BLOCK_CHANGE(6, (user, buf) -> { + buf.readShort(); + buf.readShort(); + buf.readShort(); + buf.readByte(); + }), + SPAWN_PLAYER(7, (user, buf) -> { + buf.readByte(); + readString64(buf); + buf.readShort(); + buf.readShort(); + buf.readShort(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_TELEPORT(8, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readShort(); + buf.readShort(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_POSITION_AND_ROTATION(9, (user, buf) -> { + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_POSITION(10, (user, buf) -> { + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_ROTATION(11, (user, buf) -> { + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + DESTROY_ENTITIES(12, (user, buf) -> { + buf.readByte(); + }), + CHAT_MESSAGE(13, (user, buf) -> { + buf.readByte(); + readString64(buf); + }), + DISCONNECT(14, (user, buf) -> { + readString64(buf); + }); + + private static final ClientboundPacketsc0_20a[] REGISTRY = new ClientboundPacketsc0_20a[256]; + + static { + for (ClientboundPacketsc0_20a packet : values()) { + REGISTRY[packet.id] = packet; + } + } + + public static ClientboundPacketsc0_20a getPacket(final int id) { + return REGISTRY[id]; + } + + private final int id; + private final BiConsumer packetReader; + + ClientboundPacketsc0_20a(final int id, final BiConsumer packetReader) { + this.id = id; + this.packetReader = packetReader; + } + + @Override + public int getId() { + return this.id; + } + + @Override + public String getName() { + return name(); + } + + @Override + public BiConsumer getPacketReader() { + return this.packetReader; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_28_30toc0_0_20a_27/Protocolc0_30toc0_27.java b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_28_30toc0_0_20a_27/Protocolc0_30toc0_27.java new file mode 100644 index 0000000..69157ab --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_28_30toc0_0_20a_27/Protocolc0_30toc0_27.java @@ -0,0 +1,36 @@ +package net.raphimc.vialegacy.protocols.classic.protocolc0_28_30toc0_0_20a_27; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.AbstractProtocol; +import net.raphimc.vialegacy.protocols.classic.protocola1_0_15toc0_28_30.ClientboundPacketsc0_28; +import net.raphimc.vialegacy.protocols.classic.protocola1_0_15toc0_28_30.ServerboundPacketsc0_28; +import net.raphimc.vialegacy.protocols.classic.protocola1_0_15toc0_28_30.data.ClassicBlocks; +import net.raphimc.vialegacy.protocols.classic.protocola1_0_15toc0_28_30.storage.ClassicBlockRemapper; +import net.raphimc.vialegacy.util.PreNettySplitter; +import net.raphimc.vialegacy.util.VersionEnum; + +public class Protocolc0_30toc0_27 extends AbstractProtocol { + + public Protocolc0_30toc0_27() { + super(ClientboundPacketsc0_20a.class, ClientboundPacketsc0_28.class, ServerboundPacketsc0_28.class, ServerboundPacketsc0_28.class); + } + + @Override + public void init(UserConnection userConnection) { + userConnection.put(new PreNettySplitter(userConnection, Protocolc0_30toc0_27.class, ClientboundPacketsc0_20a::getPacket)); + + final ClassicBlockRemapper previousRemapper = userConnection.get(ClassicBlockRemapper.class); + userConnection.put(new ClassicBlockRemapper(userConnection, previousRemapper.getMapper(), o -> { + int block = previousRemapper.getReverseMapper().getInt(o); + + if (VersionEnum.fromUserConnection(userConnection).equals(VersionEnum.c0_0_20ac0_27)) { + if (block == ClassicBlocks.GOLD_ORE || block == ClassicBlocks.IRON_ORE || block == ClassicBlocks.COAL_ORE || block == ClassicBlocks.SLAB || block == ClassicBlocks.BRICK || block == ClassicBlocks.TNT || block == ClassicBlocks.BOOKSHELF || block == ClassicBlocks.MOSSY_COBBLESTONE || block == ClassicBlocks.OBSIDIAN) { + block = ClassicBlocks.STONE; + } + } + + return block; + })); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_28_30toc0_28_30cpe/ClientboundPacketsc0_30cpe.java b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_28_30toc0_28_30cpe/ClientboundPacketsc0_30cpe.java new file mode 100644 index 0000000..5fce722 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_28_30toc0_28_30cpe/ClientboundPacketsc0_30cpe.java @@ -0,0 +1,159 @@ +package net.raphimc.vialegacy.protocols.classic.protocolc0_28_30toc0_28_30cpe; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType; +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.util.PreNettyPacketType; + +import java.util.function.BiConsumer; + +import static net.raphimc.vialegacy.util.PreNettyTypes.readByteArray1024; +import static net.raphimc.vialegacy.util.PreNettyTypes.readString64; + +public enum ClientboundPacketsc0_30cpe implements ClientboundPacketType, PreNettyPacketType { + + JOIN_GAME(0, (user, buf) -> { + buf.readByte(); + readString64(buf); + readString64(buf); + buf.readByte(); + }), + KEEP_ALIVE(1, (user, buf) -> { + }), + LEVEL_INIT(2, (user, buf) -> { + }), + LEVEL_DATA(3, (user, buf) -> { + buf.readShort(); + readByteArray1024(buf); + buf.readByte(); + }), + LEVEL_FINALIZE(4, (user, buf) -> { + buf.readShort(); + buf.readShort(); + buf.readShort(); + }), + BLOCK_CHANGE(6, (user, buf) -> { + buf.readShort(); + buf.readShort(); + buf.readShort(); + buf.readByte(); + }), + SPAWN_PLAYER(7, (user, buf) -> { + buf.readByte(); + readString64(buf); + buf.readShort(); + buf.readShort(); + buf.readShort(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_TELEPORT(8, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readShort(); + buf.readShort(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_POSITION_AND_ROTATION(9, (user, buf) -> { + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_POSITION(10, (user, buf) -> { + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_ROTATION(11, (user, buf) -> { + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + DESTROY_ENTITIES(12, (user, buf) -> { + buf.readByte(); + }), + CHAT_MESSAGE(13, (user, buf) -> { + buf.readByte(); + readString64(buf); + }), + DISCONNECT(14, (user, buf) -> { + readString64(buf); + }), + OP_LEVEL_UPDATE(15, (user, buf) -> { + buf.readByte(); + }), + EXTENSION_PROTOCOL_INFO(16, (user, buf) -> { + readString64(buf); + buf.readShort(); + }), + EXTENSION_PROTOCOL_ENTRY(17, (user, buf) -> { + readString64(buf); + buf.readInt(); + }), + EXT_CUSTOM_BLOCKS_SUPPORT_LEVEL(19, (user, buf) -> { + buf.readByte(); + }), + EXT_SET_BLOCK_PERMISSION(28, (user, buf) -> { + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + EXT_HACK_CONTROL(32, (user, buf) -> { + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + }), + EXT_BULK_BLOCK_UPDATE(38, (user, buf) -> { + buf.readUnsignedByte(); + buf.skipBytes(1024); + buf.skipBytes(256); + }), + EXT_TWO_WAY_PING(43, (user, buf) -> { + buf.readByte(); + buf.readShort(); + }); + + private static final ClientboundPacketsc0_30cpe[] REGISTRY = new ClientboundPacketsc0_30cpe[256]; + + static { + for (ClientboundPacketsc0_30cpe packet : values()) { + REGISTRY[packet.id] = packet; + } + } + + public static ClientboundPacketsc0_30cpe getPacket(final int id) { + return REGISTRY[id]; + } + + private final int id; + private final BiConsumer packetReader; + + ClientboundPacketsc0_30cpe(final int id, final BiConsumer packetReader) { + this.id = id; + this.packetReader = packetReader; + } + + @Override + public int getId() { + return this.id; + } + + @Override + public String getName() { + return name(); + } + + @Override + public BiConsumer getPacketReader() { + return this.packetReader; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_28_30toc0_28_30cpe/Protocolc0_30toc0_30cpe.java b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_28_30toc0_28_30cpe/Protocolc0_30toc0_30cpe.java new file mode 100644 index 0000000..b38244f --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_28_30toc0_28_30cpe/Protocolc0_30toc0_30cpe.java @@ -0,0 +1,354 @@ +package net.raphimc.vialegacy.protocols.classic.protocolc0_28_30toc0_28_30cpe; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.minecraft.*; +import com.viaversion.viaversion.api.protocol.AbstractProtocol; +import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; +import com.viaversion.viaversion.api.protocol.packet.State; +import com.viaversion.viaversion.api.protocol.remapper.PacketRemapper; +import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.types.CustomByteType; +import net.raphimc.vialegacy.ViaLegacy; +import net.raphimc.vialegacy.api.*; +import net.raphimc.vialegacy.protocols.alpha.protocola1_0_16_2toa1_0_15.ClientboundPacketsa1_0_15; +import net.raphimc.vialegacy.protocols.alpha.protocola1_0_16_2toa1_0_15.Protocola1_0_16_2toa1_0_15; +import net.raphimc.vialegacy.protocols.classic.protocola1_0_15toc0_28_30.ClientboundPacketsc0_28; +import net.raphimc.vialegacy.protocols.classic.protocola1_0_15toc0_28_30.ServerboundPacketsc0_28; +import net.raphimc.vialegacy.protocols.classic.protocola1_0_15toc0_28_30.data.ClassicBlocks; +import net.raphimc.vialegacy.protocols.classic.protocola1_0_15toc0_28_30.model.ClassicLevel; +import net.raphimc.vialegacy.protocols.classic.protocola1_0_15toc0_28_30.storage.*; +import net.raphimc.vialegacy.protocols.classic.protocola1_0_15toc0_28_30.types.Typesc0_30; +import net.raphimc.vialegacy.protocols.classic.protocolc0_28_30toc0_28_30cpe.data.ClassicProtocolExtension; +import net.raphimc.vialegacy.protocols.classic.protocolc0_28_30toc0_28_30cpe.data.ExtendedClassicBlocks; +import net.raphimc.vialegacy.protocols.classic.protocolc0_28_30toc0_28_30cpe.storage.*; +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.types.Types1_1; +import net.raphimc.vialegacy.protocols.release.protocol1_6_2to1_6_1.Protocol1_6_2to1_6_1; +import net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.ClientboundPackets1_6_4; +import net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.types.Types1_6_4; +import net.raphimc.vialegacy.util.PreNettySplitter; + +import java.nio.charset.StandardCharsets; +import java.util.*; + +public class Protocolc0_30toc0_30cpe extends AbstractProtocol { + + public Protocolc0_30toc0_30cpe() { + super(ClientboundPacketsc0_30cpe.class, ClientboundPacketsc0_28.class, ServerboundPacketsc0_30cpe.class, ServerboundPacketsc0_28.class); + } + + @Override + protected void registerPackets() { + this.registerClientbound(ClientboundPacketsc0_30cpe.JOIN_GAME, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + if (wrapper.user().getProtocolInfo().getPipeline().contains(Protocol1_6_2to1_6_1.class)) { + final ExtensionProtocolMetadataStorage protocolMetadataStorage = wrapper.user().get(ExtensionProtocolMetadataStorage.class); + final PacketWrapper brand = PacketWrapper.create(ClientboundPackets1_6_4.PLUGIN_MESSAGE, wrapper.user()); + brand.write(Types1_6_4.STRING, "MC|Brand"); + final byte[] brandBytes = protocolMetadataStorage.getServerSoftwareName().getBytes(StandardCharsets.UTF_8); + brand.write(Type.SHORT, (short) brandBytes.length); // data length + brand.write(Type.REMAINING_BYTES, brandBytes); // data + + wrapper.send(Protocolc0_30toc0_30cpe.class); + brand.send(Protocol1_6_2to1_6_1.class); + wrapper.cancel(); + } + }); + } + }); + this.registerClientbound(ClientboundPacketsc0_30cpe.EXTENSION_PROTOCOL_INFO, null, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + wrapper.cancel(); + final ExtensionProtocolMetadataStorage protocolMetadataStorage = wrapper.user().get(ExtensionProtocolMetadataStorage.class); + protocolMetadataStorage.setServerSoftwareName(wrapper.read(Typesc0_30.STRING)); // app name + protocolMetadataStorage.setExtensionCount(wrapper.read(Type.SHORT)); // extension count + + final ClassicProgressStorage classicProgressStorage = wrapper.user().get(ClassicProgressStorage.class); + classicProgressStorage.progress = 0; + classicProgressStorage.upperBound = protocolMetadataStorage.getExtensionCount(); + classicProgressStorage.status = "Receiving extension list..."; + }); + } + }); + this.registerClientbound(ClientboundPacketsc0_30cpe.EXTENSION_PROTOCOL_ENTRY, null, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + wrapper.cancel(); + final ExtensionProtocolMetadataStorage protocolMetadataStorage = wrapper.user().get(ExtensionProtocolMetadataStorage.class); + final String extensionName = wrapper.read(Typesc0_30.STRING); // name + final int extensionVersion = wrapper.read(Type.INT); // version + + final ClassicProtocolExtension extension = ClassicProtocolExtension.byName(extensionName); + if (extension != null) { + protocolMetadataStorage.addServerExtension(extension, extensionVersion); + } else { + ViaLegacy.getPlatform().getLogger().warning("Received unknown classic protocol extension: (" + extensionName + " v" + extensionVersion + ")"); + } + + protocolMetadataStorage.incrementReceivedExtensions(); + + final ClassicProgressStorage classicProgressStorage = wrapper.user().get(ClassicProgressStorage.class); + classicProgressStorage.progress = protocolMetadataStorage.getReceivedExtensions(); + + if (protocolMetadataStorage.getReceivedExtensions() >= protocolMetadataStorage.getExtensionCount()) { + classicProgressStorage.status = "Sending extension list..."; + final List supportedExtensions = new ArrayList<>(); + for (ClassicProtocolExtension protocolExtension : ClassicProtocolExtension.values()) { + if (protocolExtension.isSupported()) { + supportedExtensions.add(protocolExtension); + } + } + + if (supportedExtensions.contains(ClassicProtocolExtension.HACK_CONTROL)) { + wrapper.user().put(new ExtHackControlStorage(wrapper.user())); + } + if (supportedExtensions.contains(ClassicProtocolExtension.BLOCK_PERMISSIONS)) { + wrapper.user().put(new ExtBlockPermissionsStorage(wrapper.user())); + } + + final PacketWrapper extensionProtocolInfo = PacketWrapper.create(ServerboundPacketsc0_30cpe.EXTENSION_PROTOCOL_INFO, wrapper.user()); + extensionProtocolInfo.write(Typesc0_30.STRING, "ClassiCube 1.3.2"); // app name + extensionProtocolInfo.write(Type.SHORT, (short) supportedExtensions.size()); // extension count + extensionProtocolInfo.sendToServer(Protocolc0_30toc0_30cpe.class); + + for (ClassicProtocolExtension protocolExtension : supportedExtensions) { + final PacketWrapper extensionProtocolEntry = PacketWrapper.create(ServerboundPacketsc0_30cpe.EXTENSION_PROTOCOL_ENTRY, wrapper.user()); + extensionProtocolEntry.write(Typesc0_30.STRING, protocolExtension.getName()); // name + extensionProtocolEntry.write(Type.INT, protocolExtension.getHighestSupportedVersion()); // version + extensionProtocolEntry.sendToServer(Protocolc0_30toc0_30cpe.class); + } + } + }); + } + }); + this.registerClientbound(ClientboundPacketsc0_30cpe.EXT_CUSTOM_BLOCKS_SUPPORT_LEVEL, null, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + wrapper.cancel(); + final byte level = wrapper.read(Type.BYTE); // support level + if (level != 1) { + ViaLegacy.getPlatform().getLogger().info("Classic server supports CustomBlocks level " + level); + } + final PacketWrapper response = PacketWrapper.create(ServerboundPacketsc0_30cpe.EXT_CUSTOM_BLOCKS_SUPPORT_LEVEL, wrapper.user()); + response.write(Type.BYTE, (byte) 1); // support level + response.sendToServer(Protocolc0_30toc0_30cpe.class); + }); + } + }); + this.registerClientbound(ClientboundPacketsc0_30cpe.EXT_HACK_CONTROL, ClientboundPacketsc0_28.CHAT_MESSAGE, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + final ExtHackControlStorage hackControlStorage = wrapper.user().get(ExtHackControlStorage.class); + final boolean flying = wrapper.read(Type.BOOLEAN); // flying + final boolean noClip = wrapper.read(Type.BOOLEAN); // no clip + final boolean speed = wrapper.read(Type.BOOLEAN); // speed + final boolean respawn = wrapper.read(Type.BOOLEAN); // respawn key + final boolean thirdPerson = wrapper.read(Type.BOOLEAN); // third person view + final short jumpHeight = wrapper.read(Type.SHORT); // jump height + + if (!hackControlStorage.update(flying, noClip, speed, respawn, thirdPerson, jumpHeight)) { + wrapper.cancel(); + return; + } + + String statusMessage = "&6Hack control: "; + statusMessage += hackControlStorage.flying ? "&aFlying" : "&cFlying"; + statusMessage += " "; + statusMessage += hackControlStorage.noClip ? "&aNoClip" : "&cNoClip"; + statusMessage += " "; + statusMessage += hackControlStorage.speed ? "&aSpeed" : "&cSpeed"; + statusMessage += " "; + statusMessage += hackControlStorage.respawn ? "&aRespawn" : "&cRespawn"; + statusMessage += " "; + statusMessage += hackControlStorage.thirdPerson ? "&aThird-Person" : "&cThird-Person"; + statusMessage += " &aJump-Height: " + hackControlStorage.jumpHeight; + + wrapper.write(Type.BYTE, (byte) 0); // sender id + wrapper.write(Typesc0_30.STRING, statusMessage); // message + }); + } + }); + this.registerClientbound(ClientboundPacketsc0_30cpe.EXT_SET_BLOCK_PERMISSION, null, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + wrapper.cancel(); + final ExtBlockPermissionsStorage blockPermissionsStorage = wrapper.user().get(ExtBlockPermissionsStorage.class); + final byte blockId = wrapper.read(Type.BYTE); // block id + final boolean canPlace = wrapper.read(Type.BOOLEAN); // can place + final boolean canDelete = wrapper.read(Type.BOOLEAN); // can delete + + if (canPlace) { + blockPermissionsStorage.addPlaceable(blockId); + } else { + blockPermissionsStorage.removePlaceable(blockId); + } + if (canDelete) { + blockPermissionsStorage.addBreakable(blockId); + } else { + blockPermissionsStorage.removeBreakable(blockId); + } + }); + } + }); + this.registerClientbound(ClientboundPacketsc0_30cpe.EXT_BULK_BLOCK_UPDATE, null, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + wrapper.cancel(); + final ClassicLevelStorage levelStorage = wrapper.user().get(ClassicLevelStorage.class); + if (levelStorage == null || !levelStorage.hasReceivedLevel()) { + return; + } + final ClassicBlockRemapper remapper = wrapper.user().get(ClassicBlockRemapper.class); + final ClassicLevel level = levelStorage.getClassicLevel(); + + final int count = wrapper.read(Type.UNSIGNED_BYTE) + 1; // count + final byte[] indices = wrapper.read(new CustomByteType(1024)); // indices + final byte[] blocks = wrapper.read(new CustomByteType(256)); // blocks + + if (wrapper.user().getProtocolInfo().getPipeline().contains(Protocola1_0_16_2toa1_0_15.class)) { + final Map> records = new HashMap<>(); + for (int i = 0; i < count; i++) { + final int index = (indices[i * 4] & 255) << 24 | (indices[i * 4 + 1] & 255) << 16 | (indices[i * 4 + 2] & 255) << 8 | (indices[i * 4 + 3] & 255); + final Position pos = new Position(index % level.getSizeX(), (index / level.getSizeX()) / level.getSizeZ(), (index / level.getSizeX()) % level.getSizeZ()); + final byte blockId = blocks[i]; + level.setBlock(pos, blockId); + if (!levelStorage.isChunkLoaded(pos)) continue; + final IdAndData mappedBlock = remapper.getMapper().get(blockId); + records.computeIfAbsent(new ChunkCoord(pos.x() >> 4, pos.z() >> 4), k -> new ArrayList<>()).add(new BlockChangeRecord1_8(pos.x() & 15, pos.y(), pos.z() & 15, mappedBlock.toCompressedData())); + } + + for (Map.Entry> entry : records.entrySet()) { + final PacketWrapper multiBlockChange = PacketWrapper.create(ClientboundPacketsa1_0_15.MULTI_BLOCK_CHANGE, wrapper.user()); + multiBlockChange.write(Type.INT, entry.getKey().chunkX); // chunkX + multiBlockChange.write(Type.INT, entry.getKey().chunkZ); // chunkZ + multiBlockChange.write(Types1_1.BLOCK_CHANGE_RECORD_ARRAY, entry.getValue().toArray(new BlockChangeRecord[0])); // blockChangeRecords + multiBlockChange.send(Protocola1_0_16_2toa1_0_15.class); + } + } + }); + } + }); + this.registerClientbound(ClientboundPacketsc0_30cpe.EXT_TWO_WAY_PING, ClientboundPacketsc0_28.KEEP_ALIVE, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + final byte direction = wrapper.read(Type.BYTE); // direction + final short data = wrapper.read(Type.SHORT); // data + + if (direction == 1) { + final PacketWrapper pingResponse = PacketWrapper.create(ServerboundPacketsc0_30cpe.EXT_TWO_WAY_PING, wrapper.user()); + pingResponse.write(Type.BYTE, direction); // direction + pingResponse.write(Type.SHORT, data); // data + pingResponse.sendToServer(Protocolc0_30toc0_30cpe.class); + } + }); + } + }); + + this.registerServerbound(State.LOGIN, ServerboundPacketsc0_30cpe.LOGIN.getId(), ServerboundPacketsc0_28.LOGIN.getId(), new PacketRemapper() { + @Override + public void registerMap() { + map(Type.BYTE); // protocol id + map(Typesc0_30.STRING); // username + map(Typesc0_30.STRING); // mp pass + map(Type.BYTE); // op level + handler(wrapper -> { + wrapper.set(Type.BYTE, 1, (byte) 0x42); // extension protocol magic number + }); + } + }); + this.registerServerbound(ServerboundPacketsc0_28.CHAT_MESSAGE, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.BYTE); // sender id + map(Typesc0_30.STRING); // message + handler(wrapper -> { + final ExtensionProtocolMetadataStorage protocolMetadata = wrapper.user().get(ExtensionProtocolMetadataStorage.class); + if (!protocolMetadata.hasServerExtension(ClassicProtocolExtension.LONGER_MESSAGES, 1)) return; + wrapper.cancel(); + + String message = wrapper.get(Typesc0_30.STRING, 0); + while (!message.isEmpty()) { + final int pos = Math.min(message.length(), 64); + final String msg = message.substring(0, pos); + message = message.substring(pos); + final PacketWrapper chatMessage = PacketWrapper.create(ServerboundPacketsc0_30cpe.CHAT_MESSAGE, wrapper.user()); + chatMessage.write(Type.BYTE, (byte) (!message.isEmpty() ? 1 : 0)); // 1 = more parts | 0 = last part + chatMessage.write(Typesc0_30.STRING, msg); // message + chatMessage.sendToServer(Protocolc0_30toc0_30cpe.class); + } + }); + } + }); + this.registerServerbound(ServerboundPacketsc0_28.PLAYER_BLOCK_PLACEMENT, new PacketRemapper() { + @Override + public void registerMap() { + map(Typesc0_30.POSITION); // position + map(Type.BOOLEAN); // place block + map(Type.BYTE); // block id + handler(wrapper -> { + if (!wrapper.user().has(ExtBlockPermissionsStorage.class)) return; + + final ExtBlockPermissionsStorage blockPermissions = wrapper.user().get(ExtBlockPermissionsStorage.class); + final ClassicLevel level = wrapper.user().get(ClassicLevelStorage.class).getClassicLevel(); + + final Position position = wrapper.get(Typesc0_30.POSITION, 0); + final boolean placeBlock = wrapper.get(Type.BOOLEAN, 0); + final int blockId = wrapper.get(Type.BYTE, 0); + + int block = level.getBlock(position); + final boolean disallow = (placeBlock && !blockPermissions.isPlacingAllowed(blockId)) || (!placeBlock && !blockPermissions.isBreakingAllowed(block)); + + if (disallow) { + wrapper.cancel(); + final PacketWrapper chatMessage = PacketWrapper.create(ClientboundPacketsc0_30cpe.CHAT_MESSAGE, wrapper.user()); + chatMessage.write(Type.BYTE, (byte) 0); // sender id + chatMessage.write(Typesc0_30.STRING, "&cYou are not allowed to place/break this block"); // message + chatMessage.send(Protocolc0_30toc0_30cpe.class); + } else { + block = placeBlock ? blockId : ClassicBlocks.AIR; + level.setBlock(position, block); + } + + final PacketWrapper blockChange = PacketWrapper.create(ClientboundPacketsc0_30cpe.BLOCK_CHANGE, wrapper.user()); + blockChange.write(Typesc0_30.POSITION, position); // position + blockChange.write(Type.BYTE, (byte) block); // block id + blockChange.send(Protocolc0_30toc0_30cpe.class); + }); + } + }); + } + + @Override + public void init(UserConnection userConnection) { + userConnection.put(new PreNettySplitter(userConnection, Protocolc0_30toc0_30cpe.class, ClientboundPacketsc0_30cpe::getPacket)); + + userConnection.put(new ExtensionProtocolMetadataStorage(userConnection)); + + final ClassicBlockRemapper previousRemapper = userConnection.get(ClassicBlockRemapper.class); + userConnection.put(new ClassicBlockRemapper(userConnection, i -> { + if (ClassicBlocks.MAPPING.containsKey(i)) return previousRemapper.getMapper().get(i); + final ExtensionProtocolMetadataStorage extensionProtocol = userConnection.get(ExtensionProtocolMetadataStorage.class); + if (extensionProtocol.hasServerExtension(ClassicProtocolExtension.CUSTOM_BLOCKS, 1)) { + return ExtendedClassicBlocks.MAPPING.get(i); + } + return new IdAndData(BlockList1_6.stone.blockID, 0); + }, o -> { + if (ClassicBlocks.REVERSE_MAPPING.containsKey(o)) return previousRemapper.getReverseMapper().getInt(o); + final ExtensionProtocolMetadataStorage extensionProtocol = userConnection.get(ExtensionProtocolMetadataStorage.class); + if (extensionProtocol.hasServerExtension(ClassicProtocolExtension.CUSTOM_BLOCKS, 1)) { + return ExtendedClassicBlocks.REVERSE_MAPPING.getInt(o); + } + return ClassicBlocks.STONE; + })); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_28_30toc0_28_30cpe/ServerboundPacketsc0_30cpe.java b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_28_30toc0_28_30cpe/ServerboundPacketsc0_30cpe.java new file mode 100644 index 0000000..f994d47 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_28_30toc0_28_30cpe/ServerboundPacketsc0_30cpe.java @@ -0,0 +1,90 @@ +package net.raphimc.vialegacy.protocols.classic.protocolc0_28_30toc0_28_30cpe; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.packet.ServerboundPacketType; +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.util.PreNettyPacketType; + +import java.util.function.BiConsumer; + +import static net.raphimc.vialegacy.util.PreNettyTypes.readString64; + +public enum ServerboundPacketsc0_30cpe implements ServerboundPacketType, PreNettyPacketType { + + LOGIN(0, (user, buf) -> { + buf.readByte(); + readString64(buf); + readString64(buf); + buf.readByte(); + }), + PLAYER_BLOCK_PLACEMENT(5, (user, buf) -> { + buf.readShort(); + buf.readShort(); + buf.readShort(); + buf.readByte(); + buf.readByte(); + }), + PLAYER_POSITION_AND_ROTATION(8, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readShort(); + buf.readShort(); + buf.readByte(); + buf.readByte(); + }), + CHAT_MESSAGE(13, (user, buf) -> { + buf.readByte(); + readString64(buf); + }), + EXTENSION_PROTOCOL_INFO(16, (user, buf) -> { + readString64(buf); + buf.readShort(); + }), + EXTENSION_PROTOCOL_ENTRY(17, (user, buf) -> { + readString64(buf); + buf.readInt(); + }), + EXT_CUSTOM_BLOCKS_SUPPORT_LEVEL(19, (user, buf) -> { + buf.readByte(); + }), + EXT_TWO_WAY_PING(43, (user, buf) -> { + buf.readByte(); + buf.readShort(); + }); + + private static final ServerboundPacketsc0_30cpe[] REGISTRY = new ServerboundPacketsc0_30cpe[256]; + + static { + for (ServerboundPacketsc0_30cpe packet : values()) { + REGISTRY[packet.id] = packet; + } + } + + public static ServerboundPacketsc0_30cpe getPacket(final int id) { + return REGISTRY[id]; + } + + private final int id; + private final BiConsumer packetReader; + + ServerboundPacketsc0_30cpe(final int id, final BiConsumer packetReader) { + this.id = id; + this.packetReader = packetReader; + } + + @Override + public int getId() { + return this.id; + } + + @Override + public String getName() { + return name(); + } + + @Override + public BiConsumer getPacketReader() { + return this.packetReader; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_28_30toc0_28_30cpe/data/ClassicProtocolExtension.java b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_28_30toc0_28_30cpe/data/ClassicProtocolExtension.java new file mode 100644 index 0000000..a3ac606 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_28_30toc0_28_30cpe/data/ClassicProtocolExtension.java @@ -0,0 +1,99 @@ +package net.raphimc.vialegacy.protocols.classic.protocolc0_28_30toc0_28_30cpe.data; + +import com.viaversion.viaversion.libs.fastutil.ints.IntOpenHashSet; +import com.viaversion.viaversion.libs.fastutil.ints.IntSet; + +import java.util.Arrays; + +// https://wiki.vg/Classic_Protocol_Extension +public enum ClassicProtocolExtension { + + CLICK_DISTANCE("ClickDistance"), + CUSTOM_BLOCKS("CustomBlocks", 1), + HELD_BLOCK("HeldBlock"), + TEXT_HOT_KEY("TextHotKey"), + EXT_PLAYER_LIST("ExtPlayerList"), + ENV_COLORS("EnvColors"), + SELECTION_CUBOID("SelectionCuboid"), + BLOCK_PERMISSIONS("BlockPermissions", 1), + CHANGE_MODEL("ChangeModel"), + ENV_MAP_APPEARANCE("EnvMapAppearance"), + ENV_WEATHER_TYPE("EnvWeatherType"), + HACK_CONTROL("HackControl", 1), + EMOTE_FIX("EmoteFix", 1), + MESSAGE_TYPES("MessageTypes"), + LONGER_MESSAGES("LongerMessages", 1), + FULL_CP437("FullCP437", 1), + BLOCK_DEFINITIONS("BlockDefinitions"), + BLOCK_DEFINITIONS_EXT("BlockDefinitionsExt"), + TEXT_COLORS("TextColors"), + BULK_BLOCK_UPDATE("BulkBlockUpdate", 1), + ENV_MAP_ASPECT("EnvMapAspect"), + PLAYER_CLICK("PlayerClick"), + ENTITY_PROPERTY("EntityProperty"), + EXT_ENTITY_POSITIONS("ExtEntityPositions"), + TWO_WAY_PING("TwoWayPing", 1), + INVENTORY_ORDER("InventoryOrder"), + INSTANT_MOTD("InstantMOTD", 1), + EXTENDED_BLOCKS("ExtendedBlocks"), + FAST_MAP("FastMap"), + EXTENDED_TEXTURES("ExtendedTextures"), + SET_HOTBAR("SetHotbar"), + SET_SPAWNPOINT("SetSpawnpoint"), + VELOCITY_CONTROL("VelocityControl"), + CUSTOM_PARTICLES("CustomParticles"), + CUSTOM_MODELS("CustomModels"); + + private final String name; + private final IntSet supportedVersions; + + ClassicProtocolExtension(String name, int... supportedVersions) { + this.name = name; + this.supportedVersions = new IntOpenHashSet(); + for (int supportedVersion : supportedVersions) { + this.supportedVersions.add(supportedVersion); + } + } + + public static ClassicProtocolExtension byName(String name) { + return Arrays.stream(values()).filter(e -> e.name.equals(name)).findFirst().orElse(null); + } + + public static ClassicProtocolExtension byNameAndVersion(String name, int version) { + final ClassicProtocolExtension extension = byName(name); + if (extension == null || !extension.supportsVersion(version)) { + return null; + } + return extension; + } + + public boolean supportsVersion(int version) { + return this.supportedVersions.contains(version); + } + + public IntSet getSupportedVersions() { + return supportedVersions; + } + + public int getHighestSupportedVersion() { + int highest = 0; + for (int supportedVersion : this.supportedVersions) { + if (supportedVersion > highest) highest = supportedVersion; + } + return highest; + } + + public boolean isSupported() { + return !this.supportedVersions.isEmpty(); + } + + public String getName() { + return name; + } + + @Override + public String toString() { + return name; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_28_30toc0_28_30cpe/data/ExtendedClassicBlocks.java b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_28_30toc0_28_30cpe/data/ExtendedClassicBlocks.java new file mode 100644 index 0000000..d3adc8d --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_28_30toc0_28_30cpe/data/ExtendedClassicBlocks.java @@ -0,0 +1,68 @@ +package net.raphimc.vialegacy.protocols.classic.protocolc0_28_30toc0_28_30cpe.data; + +import com.viaversion.viaversion.libs.fastutil.ints.Int2ObjectMap; +import com.viaversion.viaversion.libs.fastutil.ints.Int2ObjectOpenHashMap; +import com.viaversion.viaversion.libs.fastutil.objects.Object2IntMap; +import com.viaversion.viaversion.libs.fastutil.objects.Object2IntOpenHashMap; +import net.raphimc.vialegacy.api.BlockList1_6; +import net.raphimc.vialegacy.api.IdAndData; +import net.raphimc.vialegacy.protocols.classic.protocola1_0_15toc0_28_30.data.ClassicBlocks; + +public class ExtendedClassicBlocks { + + public static final int COBBLESTONE_SLAB = 50; + public static final int ROPE = 51; + public static final int SANDSTONE = 52; + public static final int SNOW = 53; + public static final int FIRE = 54; + public static final int LIGHT_PINK_WOOL = 55; + public static final int FOREST_GREEN_WOOL = 56; + public static final int BROWN_WOOL = 57; + public static final int DEEP_BLUE_WOOL = 58; + public static final int TURQUOISE_WOOL = 59; + public static final int ICE = 60; + public static final int CERAMIC_TILE = 61; + public static final int MAGMA = 62; + public static final int PILLAR = 63; + public static final int CRATE = 64; + public static final int STONE_BRICK = 65; + + public static Int2ObjectMap MAPPING = new Int2ObjectOpenHashMap<>(15, 0.99F); + public static Object2IntMap REVERSE_MAPPING = new Object2IntOpenHashMap<>(15, 0.99F); + + static { + MAPPING.defaultReturnValue(new IdAndData(BlockList1_6.stone.blockID, 0)); + REVERSE_MAPPING.defaultReturnValue(ClassicBlocks.STONE); + + MAPPING.put(COBBLESTONE_SLAB, new IdAndData(BlockList1_6.stoneSingleSlab.blockID, 3)); + MAPPING.put(ROPE, new IdAndData(BlockList1_6.deadBush.blockID, 0)); + MAPPING.put(SANDSTONE, new IdAndData(BlockList1_6.sandStone.blockID, 0)); + MAPPING.put(SNOW, new IdAndData(BlockList1_6.snow.blockID, 0)); + MAPPING.put(FIRE, new IdAndData(BlockList1_6.torchWood.blockID, 5)); + MAPPING.put(LIGHT_PINK_WOOL, new IdAndData(BlockList1_6.cloth.blockID, 6)); + MAPPING.put(FOREST_GREEN_WOOL, new IdAndData(BlockList1_6.cloth.blockID, 13)); + MAPPING.put(BROWN_WOOL, new IdAndData(BlockList1_6.cloth.blockID, 12)); + MAPPING.put(DEEP_BLUE_WOOL, new IdAndData(BlockList1_6.cloth.blockID, 11)); + MAPPING.put(TURQUOISE_WOOL, new IdAndData(BlockList1_6.cloth.blockID, 9)); + MAPPING.put(ICE, new IdAndData(BlockList1_6.ice.blockID, 0)); + MAPPING.put(CERAMIC_TILE, new IdAndData(BlockList1_6.blockNetherQuartz.blockID, 1)); + MAPPING.put(MAGMA, new IdAndData(BlockList1_6.oreNetherQuartz.blockID, 0)); + MAPPING.put(PILLAR, new IdAndData(BlockList1_6.blockNetherQuartz.blockID, 2)); + MAPPING.put(CRATE, new IdAndData(BlockList1_6.jukebox.blockID, 0)); + MAPPING.put(STONE_BRICK, new IdAndData(BlockList1_6.stoneBrick.blockID, 0)); + + REVERSE_MAPPING.put(new IdAndData(BlockList1_6.stoneSingleSlab.blockID, 3), COBBLESTONE_SLAB); + REVERSE_MAPPING.put(new IdAndData(BlockList1_6.deadBush.blockID, 0), ROPE); + REVERSE_MAPPING.put(new IdAndData(BlockList1_6.sandStone.blockID, 0), SANDSTONE); + REVERSE_MAPPING.put(new IdAndData(BlockList1_6.snow.blockID, 0), SNOW); + REVERSE_MAPPING.put(new IdAndData(BlockList1_6.torchWood.blockID, 0), FIRE); + REVERSE_MAPPING.put(new IdAndData(BlockList1_6.cloth.blockID, 12), BROWN_WOOL); + REVERSE_MAPPING.put(new IdAndData(BlockList1_6.ice.blockID, 0), ICE); + REVERSE_MAPPING.put(new IdAndData(BlockList1_6.blockNetherQuartz.blockID, 1), CERAMIC_TILE); + REVERSE_MAPPING.put(new IdAndData(BlockList1_6.oreNetherQuartz.blockID, 0), MAGMA); + REVERSE_MAPPING.put(new IdAndData(BlockList1_6.blockNetherQuartz.blockID, 2), PILLAR); + REVERSE_MAPPING.put(new IdAndData(BlockList1_6.jukebox.blockID, 0), CRATE); + REVERSE_MAPPING.put(new IdAndData(BlockList1_6.stoneBrick.blockID, 0), STONE_BRICK); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_28_30toc0_28_30cpe/storage/ExtBlockPermissionsStorage.java b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_28_30toc0_28_30cpe/storage/ExtBlockPermissionsStorage.java new file mode 100644 index 0000000..409b8ef --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_28_30toc0_28_30cpe/storage/ExtBlockPermissionsStorage.java @@ -0,0 +1,41 @@ +package net.raphimc.vialegacy.protocols.classic.protocolc0_28_30toc0_28_30cpe.storage; + +import com.viaversion.viaversion.api.connection.StoredObject; +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.libs.fastutil.ints.IntOpenHashSet; +import com.viaversion.viaversion.libs.fastutil.ints.IntSet; + +public class ExtBlockPermissionsStorage extends StoredObject { + + private final IntSet placingAllowed = new IntOpenHashSet(); + private final IntSet breakingAllowed = new IntOpenHashSet(); + + public ExtBlockPermissionsStorage(final UserConnection user) { + super(user); + } + + public void addPlaceable(final int block) { + this.placingAllowed.add(block); + } + + public void addBreakable(final int block) { + this.breakingAllowed.add(block); + } + + public void removePlaceable(final int block) { + this.placingAllowed.remove(block); + } + + public void removeBreakable(final int block) { + this.breakingAllowed.remove(block); + } + + public boolean isPlacingAllowed(final int block) { + return this.placingAllowed.contains(block); + } + + public boolean isBreakingAllowed(final int block) { + return this.breakingAllowed.contains(block); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_28_30toc0_28_30cpe/storage/ExtHackControlStorage.java b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_28_30toc0_28_30cpe/storage/ExtHackControlStorage.java new file mode 100644 index 0000000..3da9840 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_28_30toc0_28_30cpe/storage/ExtHackControlStorage.java @@ -0,0 +1,53 @@ +package net.raphimc.vialegacy.protocols.classic.protocolc0_28_30toc0_28_30cpe.storage; + +import com.viaversion.viaversion.api.connection.StoredObject; +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; +import com.viaversion.viaversion.api.type.Type; +import net.raphimc.vialegacy.protocols.release.protocol1_2_4_5to1_2_1_3.Protocol1_2_4_5to1_2_1_3; +import net.raphimc.vialegacy.protocols.release.protocol1_3_1_2to1_2_4_5.ClientboundPackets1_2_4; + +public class ExtHackControlStorage extends StoredObject { + + public boolean flying = true; + public boolean noClip = true; + public boolean speed = true; + public boolean respawn = true; + public boolean thirdPerson = true; + public float jumpHeight = 1.233F; + + public ExtHackControlStorage(final UserConnection user) { + super(user); + } + + public boolean update(final boolean flying, final boolean noClip, final boolean speed, final boolean respawn, final boolean thirdPerson, final short jumpHeight) throws Exception { + float calculatedJumpHeight = jumpHeight / 32F; + if (calculatedJumpHeight <= 0) calculatedJumpHeight = 1.233F; + + if (this.flying != flying && this.getUser().getProtocolInfo().getPipeline().contains(Protocol1_2_4_5to1_2_1_3.class)) { + final PacketWrapper playerAbilities = PacketWrapper.create(ClientboundPackets1_2_4.PLAYER_ABILITIES, this.getUser()); + playerAbilities.write(Type.BOOLEAN, true); // invulnerable + playerAbilities.write(Type.BOOLEAN, false); // flying + playerAbilities.write(Type.BOOLEAN, flying); // allow flying + playerAbilities.write(Type.BOOLEAN, true); // creative mode + playerAbilities.send(Protocol1_2_4_5to1_2_1_3.class); + } + + boolean changed = this.flying != flying; + changed |= this.noClip != noClip; + changed |= this.speed != speed; + changed |= this.respawn != respawn; + changed |= this.thirdPerson != thirdPerson; + changed |= this.jumpHeight != calculatedJumpHeight; + + this.flying = flying; + this.noClip = noClip; + this.speed = speed; + this.respawn = respawn; + this.thirdPerson = thirdPerson; + this.jumpHeight = calculatedJumpHeight; + + return changed; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_28_30toc0_28_30cpe/storage/ExtensionProtocolMetadataStorage.java b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_28_30toc0_28_30cpe/storage/ExtensionProtocolMetadataStorage.java new file mode 100644 index 0000000..34a79b4 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_28_30toc0_28_30cpe/storage/ExtensionProtocolMetadataStorage.java @@ -0,0 +1,61 @@ +package net.raphimc.vialegacy.protocols.classic.protocolc0_28_30toc0_28_30cpe.storage; + +import com.viaversion.viaversion.api.connection.StoredObject; +import com.viaversion.viaversion.api.connection.UserConnection; +import net.raphimc.vialegacy.protocols.classic.protocolc0_28_30toc0_28_30cpe.data.ClassicProtocolExtension; + +import java.util.EnumMap; + +public class ExtensionProtocolMetadataStorage extends StoredObject { + + private String serverSoftwareName = "classic"; + private short extensionCount = -1; + private short receivedExtensions = 0; + + private final EnumMap serverExtensions = new EnumMap<>(ClassicProtocolExtension.class); + + public ExtensionProtocolMetadataStorage(final UserConnection user) { + super(user); + } + + public void setServerSoftwareName(final String serverSoftwareName) { + if (serverSoftwareName.isEmpty()) return; + this.serverSoftwareName = serverSoftwareName; + } + + public String getServerSoftwareName() { + return this.serverSoftwareName; + } + + public void setExtensionCount(final short extensionCount) { + this.extensionCount = extensionCount; + } + + public short getExtensionCount() { + return this.extensionCount; + } + + public void incrementReceivedExtensions() { + this.receivedExtensions++; + } + + public short getReceivedExtensions() { + return this.receivedExtensions; + } + + public void addServerExtension(final ClassicProtocolExtension extension, final int version) { + this.serverExtensions.put(extension, version); + } + + public boolean hasServerExtension(final ClassicProtocolExtension extension, final int... versions) { + final Integer extensionVersion = this.serverExtensions.get(extension); + if (extensionVersion == null) return false; + if (versions.length == 0) return true; + + for (int version : versions) { + if (version == extensionVersion) return true; + } + return false; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_28_30toc0_28_30cpe/task/ClassicPingTask.java b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_28_30toc0_28_30cpe/task/ClassicPingTask.java new file mode 100644 index 0000000..8b3203e --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/classic/protocolc0_28_30toc0_28_30cpe/task/ClassicPingTask.java @@ -0,0 +1,35 @@ +package net.raphimc.vialegacy.protocols.classic.protocolc0_28_30toc0_28_30cpe.task; + +import com.viaversion.viaversion.api.Via; +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; +import com.viaversion.viaversion.api.type.Type; +import net.raphimc.vialegacy.ViaLegacy; +import net.raphimc.vialegacy.protocols.classic.protocolc0_28_30toc0_28_30cpe.Protocolc0_30toc0_30cpe; +import net.raphimc.vialegacy.protocols.classic.protocolc0_28_30toc0_28_30cpe.ServerboundPacketsc0_30cpe; +import net.raphimc.vialegacy.protocols.classic.protocolc0_28_30toc0_28_30cpe.data.ClassicProtocolExtension; +import net.raphimc.vialegacy.protocols.classic.protocolc0_28_30toc0_28_30cpe.storage.ExtensionProtocolMetadataStorage; + +import java.util.concurrent.ThreadLocalRandom; +import java.util.logging.Level; + +public class ClassicPingTask implements Runnable { + + @Override + public void run() { + for (UserConnection info : Via.getManager().getConnectionManager().getConnections()) { + final ExtensionProtocolMetadataStorage protocolMetadata = info.get(ExtensionProtocolMetadataStorage.class); + if (protocolMetadata == null) continue; + if (!protocolMetadata.hasServerExtension(ClassicProtocolExtension.TWO_WAY_PING, 1)) continue; + try { + final PacketWrapper pingRequest = PacketWrapper.create(ServerboundPacketsc0_30cpe.EXT_TWO_WAY_PING, info); + pingRequest.write(Type.BYTE, (byte) 0); // direction + pingRequest.write(Type.SHORT, (short) (ThreadLocalRandom.current().nextInt() % Short.MAX_VALUE)); // data + pingRequest.sendToServer(Protocolc0_30toc0_30cpe.class); + } catch (Throwable e) { + ViaLegacy.getPlatform().getLogger().log(Level.WARNING, "Error sending TwoWayPing extension ping packet", e); + } + } + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_1to1_0_0_1/ClientboundPackets1_0.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_1to1_0_0_1/ClientboundPackets1_0.java new file mode 100644 index 0000000..6716f52 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_1to1_0_0_1/ClientboundPackets1_0.java @@ -0,0 +1,387 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_1to1_0_0_1; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType; +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.util.PreNettyPacketType; + +import java.util.function.BiConsumer; + +import static net.raphimc.vialegacy.util.PreNettyTypes.*; + +public enum ClientboundPackets1_0 implements ClientboundPacketType, PreNettyPacketType { + + KEEP_ALIVE(0, (user, buf) -> { + buf.readInt(); + }), + JOIN_GAME(1, (user, buf) -> { + buf.readInt(); + readString(buf); + buf.readLong(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + HANDSHAKE(2, (user, buf) -> { + readString(buf); + }), + CHAT_MESSAGE(3, (user, buf) -> { + readString(buf); + }), + TIME_UPDATE(4, (user, buf) -> { + buf.readLong(); + }), + ENTITY_EQUIPMENT(5, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readShort(); + buf.readShort(); + }), + SPAWN_POSITION(6, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + UPDATE_HEALTH(8, (user, buf) -> { + buf.readShort(); + buf.readShort(); + buf.readFloat(); + }), + RESPAWN(9, (user, buf) -> { + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + buf.readLong(); + }), + PLAYER_POSITION_ONLY_ONGROUND(10, (user, buf) -> { + buf.readUnsignedByte(); + }), + PLAYER_POSITION_ONLY_POSITION(11, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION_ONLY_LOOK(12, (user, buf) -> { + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION(13, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + USE_BED(17, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readByte(); + buf.readInt(); + }), + ENTITY_ANIMATION(18, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + SPAWN_PLAYER(20, (user, buf) -> { + buf.readInt(); + readString(buf); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + }), + SPAWN_ITEM(21, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readByte(); + buf.readShort(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + COLLECT_ITEM(22, (user, buf) -> { + buf.readInt(); + buf.readInt(); + }), + SPAWN_ENTITY(23, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + int i = buf.readInt(); + if (i > 0) { + buf.readShort(); + buf.readShort(); + buf.readShort(); + } + }), + SPAWN_MOB(24, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + readEntityMetadatab1_5(buf); + }), + SPAWN_PAINTING(25, (user, buf) -> { + buf.readInt(); + readString(buf); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + SPAWN_EXPERIENCE_ORB(26, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readShort(); + }), + ENTITY_VELOCITY(28, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readShort(); + buf.readShort(); + }), + DESTROY_ENTITIES(29, (user, buf) -> { + buf.readInt(); + }), + ENTITY_MOVEMENT(30, (user, buf) -> { + buf.readInt(); + }), + ENTITY_POSITION(31, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_ROTATION(32, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_POSITION_AND_ROTATION(33, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_TELEPORT(34, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_STATUS(38, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + ATTACH_ENTITY(39, (user, buf) -> { + buf.readInt(); + buf.readInt(); + }), + ENTITY_METADATA(40, (user, buf) -> { + buf.readInt(); + readEntityMetadatab1_5(buf); + }), + ENTITY_EFFECT(41, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + }), + REMOVE_ENTITY_EFFECT(42, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + SET_EXPERIENCE(43, (user, buf) -> { + buf.readFloat(); + buf.readShort(); + buf.readShort(); + }), + PRE_CHUNK(50, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readByte(); + }), + CHUNK_DATA(51, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + int x = buf.readInt(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + MULTI_BLOCK_CHANGE(52, (user, buf) -> { + buf.readInt(); + buf.readInt(); + short x = buf.readShort(); + for (int i = 0; i < x; i++) buf.readShort(); + for (int i = 0; i < x; i++) buf.readByte(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + BLOCK_CHANGE(53, (user, buf) -> { + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + buf.readUnsignedByte(); + }), + BLOCK_ACTION(54, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + buf.readUnsignedByte(); + buf.readUnsignedByte(); + }), + EXPLOSION(60, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + int x = buf.readInt(); + for (int i = 0; i < x; i++) { + buf.readByte(); + buf.readByte(); + buf.readByte(); + } + }), + EFFECT(61, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + }), + GAME_EVENT(70, (user, buf) -> { + buf.readByte(); + buf.readByte(); + }), + SPAWN_GLOBAL_ENTITY(71, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + OPEN_WINDOW(100, (user, buf) -> { + buf.readByte(); + buf.readByte(); + readString(buf); + buf.readByte(); + }), + CLOSE_WINDOW(101, (user, buf) -> { + buf.readByte(); + }), + SET_SLOT(103, (user, buf) -> { + buf.readByte(); + buf.readShort(); + readItemStack1_0(buf); + }), + WINDOW_ITEMS(104, (user, buf) -> { + buf.readByte(); + int x = buf.readShort(); + for (int i = 0; i < x; i++) readItemStack1_0(buf); + }), + WINDOW_PROPERTY(105, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readShort(); + }), + WINDOW_CONFIRMATION(106, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readByte(); + }), + CREATIVE_INVENTORY_ACTION(107, (user, buf) -> { + buf.readShort(); + readItemStack1_0(buf); + }), + UPDATE_SIGN(130, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + readString(buf); + readString(buf); + readString(buf); + readString(buf); + }), + MAP_DATA(131, (user, buf) -> { + buf.readShort(); + buf.readShort(); + short x = buf.readUnsignedByte(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + STATISTICS(200, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + PLAYER_INFO(201, (user, buf) -> { + readString(buf); + buf.readByte(); + buf.readShort(); + }), + DISCONNECT(255, (user, buf) -> { + readString(buf); + }); + + private static final ClientboundPackets1_0[] REGISTRY = new ClientboundPackets1_0[256]; + + static { + for (ClientboundPackets1_0 packet : values()) { + REGISTRY[packet.id] = packet; + } + } + + public static ClientboundPackets1_0 getPacket(final int id) { + return REGISTRY[id]; + } + + private final int id; + private final BiConsumer packetReader; + + ClientboundPackets1_0(final int id, final BiConsumer packetReader) { + this.id = id; + this.packetReader = packetReader; + } + + @Override + public int getId() { + return this.id; + } + + @Override + public String getName() { + return name(); + } + + @Override + public BiConsumer getPacketReader() { + return this.packetReader; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_1to1_0_0_1/Protocol1_1to1_0_0_1.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_1to1_0_0_1/Protocol1_1to1_0_0_1.java new file mode 100644 index 0000000..ed7c547 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_1to1_0_0_1/Protocol1_1to1_0_0_1.java @@ -0,0 +1,112 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_1to1_0_0_1; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.AbstractProtocol; +import com.viaversion.viaversion.api.protocol.packet.State; +import com.viaversion.viaversion.api.protocol.remapper.PacketRemapper; +import com.viaversion.viaversion.api.type.Type; +import net.raphimc.vialegacy.protocols.release.protocol1_1to1_0_0_1.rewriter.ChatFilter; +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.ClientboundPackets1_1; +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.ServerboundPackets1_1; +import net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.types.Types1_6_4; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.Types1_7_6; +import net.raphimc.vialegacy.util.PreNettySplitter; + +public class Protocol1_1to1_0_0_1 extends AbstractProtocol { + + public Protocol1_1to1_0_0_1() { + super(ClientboundPackets1_0.class, ClientboundPackets1_1.class, ServerboundPackets1_0.class, ServerboundPackets1_1.class); + } + + @Override + protected void registerPackets() { + this.registerServerbound(State.LOGIN, ServerboundPackets1_0.LOGIN.getId(), ServerboundPackets1_1.LOGIN.getId(), new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // protocol id + map(Types1_6_4.STRING); // username + map(Type.LONG); // seed + read(Types1_6_4.STRING); // level type + map(Type.INT); // game mode + map(Type.BYTE); // dimension id + map(Type.BYTE); // difficulty + map(Type.BYTE); // world height + map(Type.BYTE); // max players + } + }); + this.registerServerbound(ServerboundPackets1_1.CHAT_MESSAGE, new PacketRemapper() { + @Override + public void registerMap() { + map(Types1_6_4.STRING, Types1_6_4.STRING, ChatFilter::filter); // message + } + }); + this.registerServerbound(ServerboundPackets1_1.RESPAWN, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.BYTE); // dimension id + map(Type.BYTE); // difficulty + map(Type.BYTE); // game mode + map(Type.SHORT); // world height + map(Type.LONG); // seed + read(Types1_6_4.STRING); // level type + } + }); + this.cancelServerbound(ServerboundPackets1_1.PLUGIN_MESSAGE); + + this.registerClientbound(ClientboundPackets1_0.JOIN_GAME, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + map(Types1_6_4.STRING); // username + map(Type.LONG); // seed + create(Types1_6_4.STRING, "default_1_1"); // level type + map(Type.INT); // game mode + map(Type.BYTE); // dimension id + map(Type.BYTE); // difficulty + map(Type.BYTE); // world height + map(Type.BYTE); // max players + } + }); + this.registerClientbound(ClientboundPackets1_0.CHAT_MESSAGE, new PacketRemapper() { + @Override + public void registerMap() { + map(Types1_6_4.STRING, Types1_6_4.STRING, msg -> msg.replace("\u00C2", "")); // message + } + }); + this.registerClientbound(ClientboundPackets1_0.RESPAWN, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.BYTE); // dimension id + map(Type.BYTE); // difficulty + map(Type.BYTE); // game mode + map(Type.SHORT); // world height + map(Type.LONG); // seed + create(Types1_6_4.STRING, "default_1_1"); // level type + } + }); + this.registerClientbound(ClientboundPackets1_0.UPDATE_SIGN, new PacketRemapper() { + @Override + public void registerMap() { + map(Types1_7_6.POSITION_SHORT); // position + map(Types1_6_4.STRING, Types1_6_4.STRING, msg -> msg.replace("\u00C2", "")); // line 1 + map(Types1_6_4.STRING, Types1_6_4.STRING, msg -> msg.replace("\u00C2", "")); // line 2 + map(Types1_6_4.STRING, Types1_6_4.STRING, msg -> msg.replace("\u00C2", "")); // line 3 + map(Types1_6_4.STRING, Types1_6_4.STRING, msg -> msg.replace("\u00C2", "")); // line 4 + } + }); + this.registerClientbound(ClientboundPackets1_0.DISCONNECT, new PacketRemapper() { + @Override + public void registerMap() { + map(Types1_6_4.STRING, Types1_6_4.STRING, reason -> reason.replace("\u00C2", "")); // reason + } + }); + + //C->S Packet27Position is unused (no need to handle or remap) + } + + @Override + public void init(UserConnection userConnection) { + userConnection.put(new PreNettySplitter(userConnection, Protocol1_1to1_0_0_1.class, ClientboundPackets1_0::getPacket)); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_1to1_0_0_1/ServerboundPackets1_0.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_1to1_0_0_1/ServerboundPackets1_0.java new file mode 100644 index 0000000..8e8979a --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_1to1_0_0_1/ServerboundPackets1_0.java @@ -0,0 +1,177 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_1to1_0_0_1; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.packet.ServerboundPacketType; +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.util.PreNettyPacketType; + +import java.util.function.BiConsumer; + +import static net.raphimc.vialegacy.util.PreNettyTypes.readItemStack1_0; +import static net.raphimc.vialegacy.util.PreNettyTypes.readString; + +public enum ServerboundPackets1_0 implements ServerboundPacketType, PreNettyPacketType { + + KEEP_ALIVE(0, (user, buf) -> { + buf.readInt(); + }), + LOGIN(1, (user, buf) -> { + buf.readInt(); + readString(buf); + buf.readLong(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + HANDSHAKE(2, (user, buf) -> { + readString(buf); + }), + CHAT_MESSAGE(3, (user, buf) -> { + readString(buf); + }), + INTERACT_ENTITY(7, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readByte(); + }), + RESPAWN(9, (user, buf) -> { + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + buf.readLong(); + }), + PLAYER_MOVEMENT(10, (user, buf) -> { + buf.readUnsignedByte(); + }), + PLAYER_POSITION(11, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readUnsignedByte(); + }), + PLAYER_ROTATION(12, (user, buf) -> { + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION_AND_ROTATION(13, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_DIGGING(14, (user, buf) -> { + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + }), + PLAYER_BLOCK_PLACEMENT(15, (user, buf) -> { + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + readItemStack1_0(buf); + }), + HELD_ITEM_CHANGE(16, (user, buf) -> { + buf.readShort(); + }), + ANIMATION(18, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + ENTITY_ACTION(19, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + POSITION(27, (user, buf) -> { + buf.readFloat(); + buf.readFloat(); + buf.readFloat(); + buf.readFloat(); + buf.readBoolean(); + buf.readBoolean(); + }), + CLOSE_WINDOW(101, (user, buf) -> { + buf.readByte(); + }), + CLICK_WINDOW(102, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readByte(); + buf.readShort(); + buf.readBoolean(); + readItemStack1_0(buf); + }), + WINDOW_CONFIRMATION(106, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readByte(); + }), + CREATIVE_INVENTORY_ACTION(107, (user, buf) -> { + buf.readShort(); + readItemStack1_0(buf); + }), + CLICK_WINDOW_BUTTON(108, (user, buf) -> { + buf.readByte(); + buf.readByte(); + }), + UPDATE_SIGN(130, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + readString(buf); + readString(buf); + readString(buf); + readString(buf); + }), + SERVER_PING(254, (user, buf) -> { + }), + DISCONNECT(255, (user, buf) -> { + readString(buf); + }); + + private static final ServerboundPackets1_0[] REGISTRY = new ServerboundPackets1_0[256]; + + static { + for (ServerboundPackets1_0 packet : values()) { + REGISTRY[packet.id] = packet; + } + } + + public static ServerboundPackets1_0 getPacket(final int id) { + return REGISTRY[id]; + } + + private final int id; + private final BiConsumer packetReader; + + ServerboundPackets1_0(final int id, final BiConsumer packetReader) { + this.id = id; + this.packetReader = packetReader; + } + + @Override + public int getId() { + return this.id; + } + + @Override + public String getName() { + return name(); + } + + @Override + public BiConsumer getPacketReader() { + return this.packetReader; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_1to1_0_0_1/rewriter/ChatFilter.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_1to1_0_0_1/rewriter/ChatFilter.java new file mode 100644 index 0000000..13ddee5 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_1to1_0_0_1/rewriter/ChatFilter.java @@ -0,0 +1,37 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_1to1_0_0_1.rewriter; + +public class ChatFilter { + + private final static char[] ALLOWED_CHARACTERS = new char[]{ + ' ', '!', '"', '#', '$', '%', '&', '\'', '(', ')', + '*', '+', ',', '-', '.', '/', '0', '1', '2', '3', + '4', '5', '6', '7', '8', '9', ':', ';', '<', '=', + '>', '?', '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', + 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', + 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '[', + '\\', ']', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', + 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', + 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', + '}', '~', '⌂', 'Ç', 'ü', 'é', 'â', 'ä', 'à', 'å', + 'ç', 'ê', 'ë', 'è', 'ï', 'î', 'ì', 'Ä', 'Å', 'É', + 'æ', 'Æ', 'ô', 'ö', 'ò', 'û', 'ù', 'ÿ', 'Ö', 'Ü', + 'ø', '£', 'Ø', '×', 'ƒ', 'á', 'í', 'ó', 'ú', 'ñ', + 'Ñ', 'ª', 'º', '¿', '®', '¬', '½', '¼', '¡', '«', + '»', '_', '^', '\'' + }; + + public static String filter(String message) { + String allowed = new String(ALLOWED_CHARACTERS); + + for (int i = 0; i < message.length(); ++i) { + String toReplace = Character.toString(message.charAt(i)); + + if (!allowed.contains(toReplace)) { + message = message.replaceAll(toReplace, "*"); + } + } + + return message; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/ClientboundPackets1_1.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/ClientboundPackets1_1.java new file mode 100644 index 0000000..20b2715 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/ClientboundPackets1_1.java @@ -0,0 +1,393 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType; +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.util.PreNettyPacketType; +import net.raphimc.vialegacy.util.PreNettyTypes; + +import java.util.function.BiConsumer; + +public enum ClientboundPackets1_1 implements ClientboundPacketType, PreNettyPacketType { + + KEEP_ALIVE(0, (user, buf) -> { + buf.readInt(); + }), + JOIN_GAME(1, (user, buf) -> { + buf.readInt(); + PreNettyTypes.readString(buf); + buf.readLong(); + PreNettyTypes.readString(buf); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + HANDSHAKE(2, (user, buf) -> { + PreNettyTypes.readString(buf); + }), + CHAT_MESSAGE(3, (user, buf) -> { + PreNettyTypes.readString(buf); + }), + TIME_UPDATE(4, (user, buf) -> { + buf.readLong(); + }), + ENTITY_EQUIPMENT(5, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readShort(); + buf.readShort(); + }), + SPAWN_POSITION(6, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + UPDATE_HEALTH(8, (user, buf) -> { + buf.readShort(); + buf.readShort(); + buf.readFloat(); + }), + RESPAWN(9, (user, buf) -> { + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + buf.readLong(); + PreNettyTypes.readString(buf); + }), + PLAYER_POSITION_ONLY_ONGROUND(10, (user, buf) -> { + buf.readUnsignedByte(); + }), + PLAYER_POSITION_ONLY_POSITION(11, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION_ONLY_LOOK(12, (user, buf) -> { + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION(13, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + USE_BED(17, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readByte(); + buf.readInt(); + }), + ENTITY_ANIMATION(18, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + SPAWN_PLAYER(20, (user, buf) -> { + buf.readInt(); + PreNettyTypes.readString(buf); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + }), + SPAWN_ITEM(21, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readByte(); + buf.readShort(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + COLLECT_ITEM(22, (user, buf) -> { + buf.readInt(); + buf.readInt(); + }), + SPAWN_ENTITY(23, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + int i = buf.readInt(); + if (i > 0) { + buf.readShort(); + buf.readShort(); + buf.readShort(); + } + }), + SPAWN_MOB(24, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + PreNettyTypes.readEntityMetadatab1_5(buf); + }), + SPAWN_PAINTING(25, (user, buf) -> { + buf.readInt(); + PreNettyTypes.readString(buf); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + SPAWN_EXPERIENCE_ORB(26, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readShort(); + }), + ENTITY_VELOCITY(28, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readShort(); + buf.readShort(); + }), + DESTROY_ENTITIES(29, (user, buf) -> { + buf.readInt(); + }), + ENTITY_MOVEMENT(30, (user, buf) -> { + buf.readInt(); + }), + ENTITY_POSITION(31, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_ROTATION(32, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_POSITION_AND_ROTATION(33, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_TELEPORT(34, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_STATUS(38, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + ATTACH_ENTITY(39, (user, buf) -> { + buf.readInt(); + buf.readInt(); + }), + ENTITY_METADATA(40, (user, buf) -> { + buf.readInt(); + PreNettyTypes.readEntityMetadatab1_5(buf); + }), + ENTITY_EFFECT(41, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + }), + REMOVE_ENTITY_EFFECT(42, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + SET_EXPERIENCE(43, (user, buf) -> { + buf.readFloat(); + buf.readShort(); + buf.readShort(); + }), + PRE_CHUNK(50, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readByte(); + }), + CHUNK_DATA(51, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + int x = buf.readInt(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + MULTI_BLOCK_CHANGE(52, (user, buf) -> { + buf.readInt(); + buf.readInt(); + short x = buf.readShort(); + for (int i = 0; i < x; i++) buf.readShort(); + for (int i = 0; i < x; i++) buf.readByte(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + BLOCK_CHANGE(53, (user, buf) -> { + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + buf.readUnsignedByte(); + }), + BLOCK_ACTION(54, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + buf.readUnsignedByte(); + buf.readUnsignedByte(); + }), + EXPLOSION(60, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + int x = buf.readInt(); + for (int i = 0; i < x; i++) { + buf.readByte(); + buf.readByte(); + buf.readByte(); + } + }), + EFFECT(61, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + }), + GAME_EVENT(70, (user, buf) -> { + buf.readByte(); + buf.readByte(); + }), + SPAWN_GLOBAL_ENTITY(71, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + OPEN_WINDOW(100, (user, buf) -> { + buf.readByte(); + buf.readByte(); + PreNettyTypes.readString(buf); + buf.readByte(); + }), + CLOSE_WINDOW(101, (user, buf) -> { + buf.readByte(); + }), + SET_SLOT(103, (user, buf) -> { + buf.readByte(); + buf.readShort(); + PreNettyTypes.readItemStack1_0(buf); + }), + WINDOW_ITEMS(104, (user, buf) -> { + buf.readByte(); + int x = buf.readShort(); + for (int i = 0; i < x; i++) PreNettyTypes.readItemStack1_0(buf); + }), + WINDOW_PROPERTY(105, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readShort(); + }), + WINDOW_CONFIRMATION(106, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readByte(); + }), + CREATIVE_INVENTORY_ACTION(107, (user, buf) -> { + buf.readShort(); + PreNettyTypes.readItemStack1_0(buf); + }), + UPDATE_SIGN(130, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + PreNettyTypes.readString(buf); + PreNettyTypes.readString(buf); + PreNettyTypes.readString(buf); + PreNettyTypes.readString(buf); + }), + MAP_DATA(131, (user, buf) -> { + buf.readShort(); + buf.readShort(); + short x = buf.readUnsignedByte(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + STATISTICS(200, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + PLAYER_INFO(201, (user, buf) -> { + PreNettyTypes.readString(buf); + buf.readByte(); + buf.readShort(); + }), + PLUGIN_MESSAGE(250, (user, buf) -> { + PreNettyTypes.readString(buf); + short s = buf.readShort(); + for (int i = 0; i < s; i++) buf.readByte(); + }), + DISCONNECT(255, (user, buf) -> { + PreNettyTypes.readString(buf); + }); + + private static final ClientboundPackets1_1[] REGISTRY = new ClientboundPackets1_1[256]; + + static { + for (ClientboundPackets1_1 packet : values()) { + REGISTRY[packet.id] = packet; + } + } + + public static ClientboundPackets1_1 getPacket(final int id) { + return REGISTRY[id]; + } + + private final int id; + private final BiConsumer packetReader; + + ClientboundPackets1_1(final int id, final BiConsumer packetReader) { + this.id = id; + this.packetReader = packetReader; + } + + @Override + public int getId() { + return this.id; + } + + @Override + public String getName() { + return name(); + } + + @Override + public BiConsumer getPacketReader() { + return this.packetReader; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/Protocol1_2_1_3to1_1.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/Protocol1_2_1_3to1_1.java new file mode 100644 index 0000000..0be7a8b --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/Protocol1_2_1_3to1_1.java @@ -0,0 +1,346 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.minecraft.BlockChangeRecord; +import com.viaversion.viaversion.api.minecraft.Position; +import com.viaversion.viaversion.api.minecraft.chunks.*; +import com.viaversion.viaversion.api.protocol.AbstractProtocol; +import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; +import com.viaversion.viaversion.api.protocol.packet.State; +import com.viaversion.viaversion.api.protocol.remapper.PacketRemapper; +import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; +import net.raphimc.vialegacy.ViaLegacy; +import net.raphimc.vialegacy.api.IdAndData; +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.*; +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.beta.WorldChunkManager_b1_7; +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.WorldChunkManager_r1_1; +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.chunks.NibbleArray1_1; +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.model.NonFullChunk1_1; +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.storage.*; +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.types.Chunk1_1Type; +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.types.Types1_1; +import net.raphimc.vialegacy.protocols.release.protocol1_2_4_5to1_2_1_3.ClientboundPackets1_2_1; +import net.raphimc.vialegacy.protocols.release.protocol1_2_4_5to1_2_1_3.ServerboundPackets1_2_1; +import net.raphimc.vialegacy.protocols.release.protocol1_3_1_2to1_2_4_5.types.Chunk1_2_4Type; +import net.raphimc.vialegacy.protocols.release.protocol1_4_2to1_3_1_2.types.Types1_3_1; +import net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.storage.ChunkTracker; +import net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.types.Types1_6_4; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.Types1_7_6; +import net.raphimc.vialegacy.util.PreNettySplitter; +import net.raphimc.vialegacy.util.VersionEnum; + +import java.util.Arrays; + +public class Protocol1_2_1_3to1_1 extends AbstractProtocol { + + public Protocol1_2_1_3to1_1() { + super(ClientboundPackets1_1.class, ClientboundPackets1_2_1.class, ServerboundPackets1_1.class, ServerboundPackets1_2_1.class); + } + + @Override + protected void registerPackets() { + this.registerClientbound(ClientboundPackets1_1.JOIN_GAME, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + map(Types1_6_4.STRING); // username + handler(wrapper -> wrapper.user().get(SeedStorage.class).seed = wrapper.read(Type.LONG)); // seed + map(Types1_6_4.STRING); // level type + map(Type.INT); // game mode + map(Type.BYTE, Type.INT); // dimension id + map(Type.BYTE); // difficulty + map(Type.BYTE); // world height + map(Type.BYTE); // max players + handler(wrapper -> handleRespawn(wrapper.get(Type.INT, 2), wrapper.user())); + } + }); + this.registerClientbound(ClientboundPackets1_1.RESPAWN, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.BYTE, Type.INT); // dimension id + map(Type.BYTE); // difficulty + map(Type.BYTE); // game mode + map(Type.SHORT); // world height + handler(wrapper -> wrapper.user().get(SeedStorage.class).seed = wrapper.read(Type.LONG)); // seed + map(Types1_6_4.STRING); // level type + handler(wrapper -> handleRespawn(wrapper.get(Type.INT, 0), wrapper.user())); + } + }); + this.registerClientbound(ClientboundPackets1_1.SPAWN_MOB, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + map(Type.UNSIGNED_BYTE); // type id + map(Type.INT); // x + map(Type.INT); // y + map(Type.INT); // z + map(Type.BYTE); // yaw + map(Type.BYTE); // pitch + handler(wrapper -> wrapper.write(Type.BYTE, wrapper.get(Type.BYTE, 0))); // head yaw + map(Types1_3_1.METADATA_LIST); // metadata + } + }); + this.registerClientbound(ClientboundPackets1_1.ENTITY_ROTATION, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + map(Type.BYTE); // yaw + map(Type.BYTE); // pitch + handler(wrapper -> sendEntityHeadLook(wrapper.get(Type.INT, 0), wrapper.get(Type.BYTE, 0), wrapper)); + } + }); + this.registerClientbound(ClientboundPackets1_1.ENTITY_POSITION_AND_ROTATION, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + map(Type.BYTE); // x + map(Type.BYTE); // y + map(Type.BYTE); // z + map(Type.BYTE); // yaw + map(Type.BYTE); // pitch + handler(wrapper -> sendEntityHeadLook(wrapper.get(Type.INT, 0), wrapper.get(Type.BYTE, 3), wrapper)); + } + }); + this.registerClientbound(ClientboundPackets1_1.ENTITY_TELEPORT, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + map(Type.INT); // x + map(Type.INT); // y + map(Type.INT); // z + map(Type.BYTE); // yaw + map(Type.BYTE); // pitch + handler(wrapper -> sendEntityHeadLook(wrapper.get(Type.INT, 0), wrapper.get(Type.BYTE, 0), wrapper)); + } + }); + this.registerClientbound(ClientboundPackets1_1.CHUNK_DATA, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + final ClientWorld clientWorld = wrapper.user().get(ClientWorld.class); + final ChunkTracker chunkTracker = wrapper.user().get(ChunkTracker.class); + final SeedStorage seedStorage = wrapper.user().get(SeedStorage.class); + final PendingBlocksTracker pendingBlocksTracker = wrapper.user().get(PendingBlocksTracker.class); + Chunk chunk = wrapper.read(new Chunk1_1Type(clientWorld)); + + if (chunk instanceof NonFullChunk1_1) { + if (!chunkTracker.isChunkLoaded(chunk.getX(), chunk.getZ())) { // Cancel because update in unloaded area is ignored by mc + wrapper.cancel(); + return; + } + + final NonFullChunk1_1 nfc = (NonFullChunk1_1) chunk; + wrapper.setPacketType(ClientboundPackets1_2_1.MULTI_BLOCK_CHANGE); + wrapper.write(Type.INT, nfc.getX()); + wrapper.write(Type.INT, nfc.getZ()); + wrapper.write(Types1_7_6.BLOCK_CHANGE_RECORD_ARRAY, nfc.asBlockChangeRecords().toArray(new BlockChangeRecord[0])); + + pendingBlocksTracker.markReceived(new Position((nfc.getX() << 4) + nfc.getStartPos().x(), nfc.getStartPos().y(), (nfc.getZ() << 4) + nfc.getStartPos().z()), new Position((nfc.getX() << 4) + nfc.getEndPos().x() - 1, nfc.getEndPos().y() - 1, (nfc.getZ() << 4) + nfc.getEndPos().z() - 1)); + return; + } + pendingBlocksTracker.markReceived(new Position(chunk.getX() << 4, 0, chunk.getZ() << 4), new Position((chunk.getX() << 4) + 15, chunk.getSections().length * 16, (chunk.getZ() << 4) + 15)); + + int[] newBiomeData; + if (seedStorage.worldChunkManager != null) { + final byte[] oldBiomeData = seedStorage.worldChunkManager.getBiomeDataAt(chunk.getX(), chunk.getZ()); + newBiomeData = new int[oldBiomeData.length]; + for (int i = 0; i < oldBiomeData.length; i++) { + newBiomeData[i] = oldBiomeData[i] & 255; + } + } else { + newBiomeData = new int[256]; + Arrays.fill(newBiomeData, 1); // plains + } + chunk.setBiomeData(newBiomeData); + + for (ChunkSection section : chunk.getSections()) { + if (section == null) continue; + final NibbleArray1_1 oldBlockLight = new NibbleArray1_1(section.getLight().getBlockLight(), 4); + final NibbleArray newBlockLight = new NibbleArray(oldBlockLight.size()); + NibbleArray1_1 oldSkyLight = null; + NibbleArray newSkyLight = null; + if (section.getLight().hasSkyLight()) { + oldSkyLight = new NibbleArray1_1(section.getLight().getSkyLight(), 4); + newSkyLight = new NibbleArray(oldSkyLight.size()); + } + + for (int x = 0; x < 16; x++) { + for (int y = 0; y < 16; y++) { + for (int z = 0; z < 16; z++) { + newBlockLight.set(x, y, z, oldBlockLight.get(x, y, z)); + if (oldSkyLight != null) newSkyLight.set(x, y, z, oldSkyLight.get(x, y, z)); + } + } + } + section.getLight().setBlockLight(newBlockLight.getHandle()); + if (newSkyLight != null) section.getLight().setSkyLight(newSkyLight.getHandle()); + } + + if (chunk.getSections().length < 16) { // Increase available sections to match new world height + final ChunkSection[] newArray = new ChunkSection[16]; + System.arraycopy(chunk.getSections(), 0, newArray, 0, chunk.getSections().length); + chunk.setSections(newArray); + } + + wrapper.write(new Chunk1_2_4Type(clientWorld), chunk); + }); + } + }); + this.registerClientbound(ClientboundPackets1_1.MULTI_BLOCK_CHANGE, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // chunkX + map(Type.INT); // chunkZ + map(Types1_1.BLOCK_CHANGE_RECORD_ARRAY, Types1_7_6.BLOCK_CHANGE_RECORD_ARRAY); // blockChangeRecords + handler(wrapper -> { + final PendingBlocksTracker pendingBlocksTracker = wrapper.user().get(PendingBlocksTracker.class); + final int chunkX = wrapper.get(Type.INT, 0); + final int chunkZ = wrapper.get(Type.INT, 1); + final BlockChangeRecord[] blockChangeRecords = wrapper.get(Types1_7_6.BLOCK_CHANGE_RECORD_ARRAY, 0); + for (BlockChangeRecord record : blockChangeRecords) { + final int targetX = record.getSectionX() + (chunkX << 4); + final int targetY = record.getY(-1); + final int targetZ = record.getSectionZ() + (chunkZ << 4); + pendingBlocksTracker.markReceived(new Position(targetX, targetY, targetZ)); + } + }); + } + }); + this.registerClientbound(ClientboundPackets1_1.BLOCK_CHANGE, new PacketRemapper() { + @Override + public void registerMap() { + map(Types1_7_6.POSITION_UBYTE); // position + map(Type.UNSIGNED_BYTE); // block id + map(Type.UNSIGNED_BYTE); // block data + handler(wrapper -> wrapper.user().get(PendingBlocksTracker.class).markReceived(wrapper.get(Types1_7_6.POSITION_UBYTE, 0))); + } + }); + this.registerClientbound(ClientboundPackets1_1.EXPLOSION, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.DOUBLE); // x + map(Type.DOUBLE); // y + map(Type.DOUBLE); // z + map(Type.FLOAT); // radius + map(Type.INT); // record count + handler(wrapper -> { + final PendingBlocksTracker pendingBlocksTracker = wrapper.user().get(PendingBlocksTracker.class); + final ChunkTracker chunkTracker = wrapper.user().get(ChunkTracker.class); + final int x = wrapper.get(Type.DOUBLE, 0).intValue(); + final int y = wrapper.get(Type.DOUBLE, 1).intValue(); + final int z = wrapper.get(Type.DOUBLE, 2).intValue(); + final int recordCount = wrapper.get(Type.INT, 0); + for (int i = 0; i < recordCount; i++) { + final Position pos = new Position(x + wrapper.passthrough(Type.BYTE), y + wrapper.passthrough(Type.BYTE), z + wrapper.passthrough(Type.BYTE)); + final IdAndData block = chunkTracker.getBlockNotNull(pos); + if (block.id != 0) { + pendingBlocksTracker.addPending(pos, block); + } + } + }); + } + }); + this.registerClientbound(ClientboundPackets1_1.EFFECT, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // effect id + map(Types1_7_6.POSITION_UBYTE); // position + map(Type.INT); // data + handler(wrapper -> { + final int sfxId = wrapper.get(Type.INT, 0); + final int sfxData = wrapper.get(Type.INT, 1); + if (sfxId == 2001) { // Block Break effect + final int blockID = sfxData & 255; + final int blockData = sfxData >> 8 & 255; + wrapper.set(Type.INT, 1, blockID + (blockData << 12)); + } else if (sfxId == 1009) { // Ghast fireball effect (volume 1) (sound packet would be a better replacement but changing the id is easier and the difference is minimal) + wrapper.set(Type.INT, 0, 1008); // Ghast fireball effect (volume 10) + } + }); + } + }); + + this.registerServerbound(State.LOGIN, ServerboundPackets1_1.HANDSHAKE.getId(), ServerboundPackets1_2_1.HANDSHAKE.getId(), new PacketRemapper() { + @Override + public void registerMap() { + map(Types1_6_4.STRING, Types1_6_4.STRING, s -> s.split(";")[0]); // info + } + }); + this.registerServerbound(State.LOGIN, ServerboundPackets1_1.LOGIN.getId(), ServerboundPackets1_2_1.LOGIN.getId(), new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // protocol id + map(Types1_6_4.STRING); // username + create(Type.LONG, 0L); // seed + map(Types1_6_4.STRING); // level type + map(Type.INT); // game mode + map(Type.INT, Type.BYTE); // dimension id + map(Type.BYTE); // difficulty + map(Type.BYTE); // world height + map(Type.BYTE); // max players + } + }); + this.registerServerbound(ServerboundPackets1_2_1.RESPAWN, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT, Type.BYTE); // dimension id + map(Type.BYTE); // difficulty + map(Type.BYTE); // game mode + map(Type.SHORT); // world height + create(Type.LONG, 0L); // seed + map(Types1_6_4.STRING); // level type + } + }); + } + + private void handleRespawn(final int dimensionId, final UserConnection user) { + user.get(ClientWorld.class).setEnvironment(dimensionId); + if (user.get(DimensionTracker.class).getDimensionId() != dimensionId) { + user.get(DimensionTracker.class).setDimension(dimensionId); + user.get(PendingBlocksTracker.class).clear(); + } + + if (ViaLegacy.getConfig().isOldBiomes()) { + final SeedStorage seedStorage = user.get(SeedStorage.class); + if (dimensionId == -1) { // Nether + seedStorage.worldChunkManager = new NetherBiomeGenerator(); + } else if (dimensionId == 1) { // End + seedStorage.worldChunkManager = new EndBiomeGenerator(); + } else if (dimensionId == 0) { // Overworld + if (VersionEnum.fromUserConnection(user).isNewerThanOrEqualTo(VersionEnum.b1_8tob1_8_1)) { + seedStorage.worldChunkManager = new WorldChunkManager_r1_1(VersionEnum.fromUserConnection(user), seedStorage.seed); + } else if (VersionEnum.fromUserConnection(user).isNewerThanOrEqualTo(VersionEnum.a1_0_15)) { + seedStorage.worldChunkManager = new WorldChunkManager_b1_7(seedStorage.seed); + } else { + seedStorage.worldChunkManager = new PlainsBiomeGenerator(); + } + } else { + seedStorage.worldChunkManager = null; + } + } + } + + private void sendEntityHeadLook(final int entityId, final byte headYaw, final PacketWrapper wrapper) throws Exception { + final PacketWrapper entityHeadLook = PacketWrapper.create(ClientboundPackets1_2_1.ENTITY_HEAD_LOOK, wrapper.user()); + entityHeadLook.write(Type.INT, entityId); // entity id + entityHeadLook.write(Type.BYTE, headYaw); // head yaw + + wrapper.send(Protocol1_2_1_3to1_1.class); + entityHeadLook.send(Protocol1_2_1_3to1_1.class); + wrapper.cancel(); + } + + @Override + public void init(UserConnection userConnection) { + userConnection.put(new PreNettySplitter(userConnection, Protocol1_2_1_3to1_1.class, ClientboundPackets1_1::getPacket)); + + userConnection.put(new SeedStorage(userConnection)); + userConnection.put(new PendingBlocksTracker(userConnection)); + userConnection.put(new DimensionTracker(userConnection)); + if (!userConnection.has(ClientWorld.class)) { + userConnection.put(new ClientWorld(userConnection)); + } + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/ServerboundPackets1_1.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/ServerboundPackets1_1.java new file mode 100644 index 0000000..4a9a3c2 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/ServerboundPackets1_1.java @@ -0,0 +1,176 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.packet.ServerboundPacketType; +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.util.PreNettyPacketType; + +import java.util.function.BiConsumer; + +import static net.raphimc.vialegacy.util.PreNettyTypes.readItemStack1_0; +import static net.raphimc.vialegacy.util.PreNettyTypes.readString; + +public enum ServerboundPackets1_1 implements ServerboundPacketType, PreNettyPacketType { + + KEEP_ALIVE(0, (user, buf) -> { + buf.readInt(); + }), + LOGIN(1, (user, buf) -> { + buf.readInt(); + readString(buf); + buf.readLong(); + readString(buf); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + HANDSHAKE(2, (user, buf) -> { + readString(buf); + }), + CHAT_MESSAGE(3, (user, buf) -> { + readString(buf); + }), + INTERACT_ENTITY(7, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readByte(); + }), + RESPAWN(9, (user, buf) -> { + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + buf.readLong(); + readString(buf); + }), + PLAYER_MOVEMENT(10, (user, buf) -> { + buf.readUnsignedByte(); + }), + PLAYER_POSITION(11, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readUnsignedByte(); + }), + PLAYER_ROTATION(12, (user, buf) -> { + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION_AND_ROTATION(13, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_DIGGING(14, (user, buf) -> { + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + }), + PLAYER_BLOCK_PLACEMENT(15, (user, buf) -> { + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + readItemStack1_0(buf); + }), + HELD_ITEM_CHANGE(16, (user, buf) -> { + buf.readShort(); + }), + ANIMATION(18, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + ENTITY_ACTION(19, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + CLOSE_WINDOW(101, (user, buf) -> { + buf.readByte(); + }), + CLICK_WINDOW(102, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readByte(); + buf.readShort(); + buf.readBoolean(); + readItemStack1_0(buf); + }), + WINDOW_CONFIRMATION(106, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readByte(); + }), + CREATIVE_INVENTORY_ACTION(107, (user, buf) -> { + buf.readShort(); + readItemStack1_0(buf); + }), + CLICK_WINDOW_BUTTON(108, (user, buf) -> { + buf.readByte(); + buf.readByte(); + }), + UPDATE_SIGN(130, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + readString(buf); + readString(buf); + readString(buf); + readString(buf); + }), + PLUGIN_MESSAGE(250, (user, buf) -> { + readString(buf); + short s = buf.readShort(); + for (int i = 0; i < s; i++) buf.readByte(); + }), + SERVER_PING(254, (user, buf) -> { + }), + DISCONNECT(255, (user, buf) -> { + readString(buf); + }); + + private static final ServerboundPackets1_1[] REGISTRY = new ServerboundPackets1_1[256]; + + static { + for (ServerboundPackets1_1 packet : values()) { + REGISTRY[packet.id] = packet; + } + } + + public static ServerboundPackets1_1 getPacket(final int id) { + return REGISTRY[id]; + } + + private final int id; + private final BiConsumer packetReader; + + ServerboundPackets1_1(final int id, final BiConsumer packetReader) { + this.id = id; + this.packetReader = packetReader; + } + + @Override + public int getId() { + return this.id; + } + + @Override + public String getName() { + return name(); + } + + @Override + public BiConsumer getPacketReader() { + return this.packetReader; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/EndBiomeGenerator.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/EndBiomeGenerator.java new file mode 100644 index 0000000..d205939 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/EndBiomeGenerator.java @@ -0,0 +1,21 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome; + +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.NewBiomeGenBase; + +import java.util.Arrays; + +public class EndBiomeGenerator implements IWorldChunkManager { + + private static final byte[] END_BIOME_DATA; + + static { + END_BIOME_DATA = new byte[256]; + Arrays.fill(END_BIOME_DATA, (byte) NewBiomeGenBase.sky.biomeID); + } + + @Override + public byte[] getBiomeDataAt(int chunkX, int chunkZ) { + return END_BIOME_DATA; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/IWorldChunkManager.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/IWorldChunkManager.java new file mode 100644 index 0000000..bc68332 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/IWorldChunkManager.java @@ -0,0 +1,7 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome; + +public interface IWorldChunkManager { + + byte[] getBiomeDataAt(int chunkX, int chunkZ); + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/NetherBiomeGenerator.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/NetherBiomeGenerator.java new file mode 100644 index 0000000..62b889c --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/NetherBiomeGenerator.java @@ -0,0 +1,21 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome; + +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.NewBiomeGenBase; + +import java.util.Arrays; + +public class NetherBiomeGenerator implements IWorldChunkManager { + + private static final byte[] NETHER_BIOME_DATA; + + static { + NETHER_BIOME_DATA = new byte[256]; + Arrays.fill(NETHER_BIOME_DATA, (byte) NewBiomeGenBase.hell.biomeID); + } + + @Override + public byte[] getBiomeDataAt(int chunkX, int chunkZ) { + return NETHER_BIOME_DATA; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/PlainsBiomeGenerator.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/PlainsBiomeGenerator.java new file mode 100644 index 0000000..bf03636 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/PlainsBiomeGenerator.java @@ -0,0 +1,21 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome; + +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.NewBiomeGenBase; + +import java.util.Arrays; + +public class PlainsBiomeGenerator implements IWorldChunkManager { + + private static final byte[] PLAINS_BIOME_DATA; + + static { + PLAINS_BIOME_DATA = new byte[256]; + Arrays.fill(PLAINS_BIOME_DATA, (byte) NewBiomeGenBase.plains.biomeID); + } + + @Override + public byte[] getBiomeDataAt(int chunkX, int chunkZ) { + return PLAINS_BIOME_DATA; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/beta/NoiseGenerator2.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/beta/NoiseGenerator2.java new file mode 100644 index 0000000..b21dc96 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/beta/NoiseGenerator2.java @@ -0,0 +1,136 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.beta; + +import java.util.Random; + +public class NoiseGenerator2 { + + public NoiseGenerator2() { + this(new Random()); + } + + public NoiseGenerator2(Random random) { + field_4295_e = new int[512]; + field_4292_a = random.nextDouble() * 256D; + field_4291_b = random.nextDouble() * 256D; + field_4297_c = random.nextDouble() * 256D; + for (int i = 0; i < 256; i++) { + field_4295_e[i] = i; + } + + for (int j = 0; j < 256; j++) { + int k = random.nextInt(256 - j) + j; + int l = field_4295_e[j]; + field_4295_e[j] = field_4295_e[k]; + field_4295_e[k] = l; + field_4295_e[j + 256] = field_4295_e[j]; + } + + } + + private static int wrap(double d) { + return d <= 0.0D ? (int) d - 1 : (int) d; + } + + private static double func_4156_a(int ai[], double d, double d1) { + return (double) ai[0] * d + (double) ai[1] * d1; + } + + public void func_4157_a(double ad[], double d, double d1, int i, int j, + double d2, double d3, double d4) { + int k = 0; + for (int l = 0; l < i; l++) { + double d5 = (d + (double) l) * d2 + field_4292_a; + for (int i1 = 0; i1 < j; i1++) { + double d6 = (d1 + (double) i1) * d3 + field_4291_b; + double d10 = (d5 + d6) * field_4294_f; + int j1 = wrap(d5 + d10); + int k1 = wrap(d6 + d10); + double d11 = (double) (j1 + k1) * field_4293_g; + double d12 = (double) j1 - d11; + double d13 = (double) k1 - d11; + double d14 = d5 - d12; + double d15 = d6 - d13; + int l1; + int i2; + if (d14 > d15) { + l1 = 1; + i2 = 0; + } else { + l1 = 0; + i2 = 1; + } + double d16 = (d14 - (double) l1) + field_4293_g; + double d17 = (d15 - (double) i2) + field_4293_g; + double d18 = (d14 - 1.0D) + 2D * field_4293_g; + double d19 = (d15 - 1.0D) + 2D * field_4293_g; + int j2 = j1 & 0xff; + int k2 = k1 & 0xff; + int l2 = field_4295_e[j2 + field_4295_e[k2]] % 12; + int i3 = field_4295_e[j2 + l1 + field_4295_e[k2 + i2]] % 12; + int j3 = field_4295_e[j2 + 1 + field_4295_e[k2 + 1]] % 12; + double d20 = 0.5D - d14 * d14 - d15 * d15; + double d7; + if (d20 < 0.0D) { + d7 = 0.0D; + } else { + d20 *= d20; + d7 = d20 * d20 * func_4156_a(field_4296_d[l2], d14, d15); + } + double d21 = 0.5D - d16 * d16 - d17 * d17; + double d8; + if (d21 < 0.0D) { + d8 = 0.0D; + } else { + d21 *= d21; + d8 = d21 * d21 * func_4156_a(field_4296_d[i3], d16, d17); + } + double d22 = 0.5D - d18 * d18 - d19 * d19; + double d9; + if (d22 < 0.0D) { + d9 = 0.0D; + } else { + d22 *= d22; + d9 = d22 * d22 * func_4156_a(field_4296_d[j3], d18, d19); + } + ad[k++] += 70D * (d7 + d8 + d9) * d4; + } + + } + + } + + private static int field_4296_d[][] = { + { + 1, 1, 0 + }, { + -1, 1, 0 + }, { + 1, -1, 0 + }, { + -1, -1, 0 + }, { + 1, 0, 1 + }, { + -1, 0, 1 + }, { + 1, 0, -1 + }, { + -1, 0, -1 + }, { + 0, 1, 1 + }, { + 0, -1, 1 + }, { + 0, 1, -1 + }, { + 0, -1, -1 + } + }; + private final int[] field_4295_e; + public double field_4292_a; + public double field_4291_b; + public double field_4297_c; + private static final double field_4294_f = 0.5D * (Math.sqrt(3D) - 1.0D); + private static final double field_4293_g = (3D - Math.sqrt(3D)) / 6D; + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/beta/NoiseGeneratorOctaves2.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/beta/NoiseGeneratorOctaves2.java new file mode 100644 index 0000000..4447cc5 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/beta/NoiseGeneratorOctaves2.java @@ -0,0 +1,47 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.beta; + +import java.util.Random; + +public class NoiseGeneratorOctaves2 { + + public NoiseGeneratorOctaves2(Random random, int i) { + field_4233_b = i; + field_4234_a = new NoiseGenerator2[i]; + for (int j = 0; j < i; j++) { + field_4234_a[j] = new NoiseGenerator2(random); + } + + } + + public double[] func_4112_a(double ad[], double d, double d1, int i, int j, + double d2, double d3, double d4) { + return func_4111_a(ad, d, d1, i, j, d2, d3, d4, 0.5D); + } + + public double[] func_4111_a(double ad[], double d, double d1, int i, int j, + double d2, double d3, double d4, double d5) { + d2 /= 1.5D; + d3 /= 1.5D; + if (ad == null || ad.length < i * j) { + ad = new double[i * j]; + } else { + for (int k = 0; k < ad.length; k++) { + ad[k] = 0.0D; + } + + } + double d6 = 1.0D; + double d7 = 1.0D; + for (int l = 0; l < field_4233_b; l++) { + field_4234_a[l].func_4157_a(ad, d, d1, i, j, d2 * d7, d3 * d7, 0.55000000000000004D / d6); + d7 *= d4; + d6 *= d5; + } + + return ad; + } + + private final NoiseGenerator2[] field_4234_a; + private final int field_4233_b; + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/beta/OldBiomeGenBase.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/beta/OldBiomeGenBase.java new file mode 100644 index 0000000..796abd6 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/beta/OldBiomeGenBase.java @@ -0,0 +1,92 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.beta; + +public class OldBiomeGenBase { + + private static final OldBiomeGenBase[] biomeLookupTable = new OldBiomeGenBase[4096]; + + public static final OldBiomeGenBase rainforest = new OldBiomeGenBase(); + public static final OldBiomeGenBase swampland = new OldBiomeGenBase(); + public static final OldBiomeGenBase seasonalForest = new OldBiomeGenBase(); + public static final OldBiomeGenBase forest = new OldBiomeGenBase(); + public static final OldBiomeGenBase savanna = new OldBiomeGenBase(); + public static final OldBiomeGenBase shrubland = new OldBiomeGenBase(); + public static final OldBiomeGenBase taiga = new OldBiomeGenBase(); + public static final OldBiomeGenBase desert = new OldBiomeGenBase(); + public static final OldBiomeGenBase plains = new OldBiomeGenBase(); + public static final OldBiomeGenBase iceDesert = new OldBiomeGenBase(); + public static final OldBiomeGenBase tundra = new OldBiomeGenBase(); + public static final OldBiomeGenBase hell = new OldBiomeGenBase(); + public static final OldBiomeGenBase sky = new OldBiomeGenBase(); + + static { + generateBiomeLookup(); + } + + protected OldBiomeGenBase() { + } + + public static void generateBiomeLookup() { + for (int i = 0; i < 64; i++) { + for (int j = 0; j < 64; j++) { + biomeLookupTable[i + j * 64] = getBiome((float) i / 63F, (float) j / 63F); + } + + } + } + + public static OldBiomeGenBase getBiomeFromLookup(double d, double d1) { + int i = (int) (d * 63D); + int j = (int) (d1 * 63D); + return biomeLookupTable[i + j * 64]; + } + + public static OldBiomeGenBase getBiome(float f, float f1) { + f1 *= f; + if (f < 0.1F) { + return tundra; + } + if (f1 < 0.2F) { + if (f < 0.5F) { + return tundra; + } + if (f < 0.95F) { + return savanna; + } else { + return desert; + } + } + if (f1 > 0.5F && f < 0.7F) { + return swampland; + } + if (f < 0.5F) { + return taiga; + } + if (f < 0.97F) { + if (f1 < 0.35F) { + return shrubland; + } else { + return forest; + } + } + if (f1 < 0.45F) { + return plains; + } + if (f1 < 0.9F) { + return seasonalForest; + } else { + return rainforest; + } + } + + public int getSkyColorByTemp(float f) { + f /= 3F; + if (f < -1F) { + f = -1F; + } + if (f > 1.0F) { + f = 1.0F; + } + return java.awt.Color.getHSBColor(0.6222222F - f * 0.05F, 0.5F + f * 0.1F, 1.0F).getRGB(); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/beta/WorldChunkManager_b1_7.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/beta/WorldChunkManager_b1_7.java new file mode 100644 index 0000000..cba2b94 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/beta/WorldChunkManager_b1_7.java @@ -0,0 +1,160 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.beta; + +import net.raphimc.vialegacy.ViaLegacy; +import net.raphimc.vialegacy.api.ChunkCoord; +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.IWorldChunkManager; +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.NewBiomeGenBase; + +import java.util.Random; + +public class WorldChunkManager_b1_7 implements IWorldChunkManager { + + private NoiseGeneratorOctaves2 field_4194_e; + private NoiseGeneratorOctaves2 field_4193_f; + private NoiseGeneratorOctaves2 field_4192_g; + public double[] temperature; + public double[] humidity; + public double[] field_4196_c; + public OldBiomeGenBase[] field_4195_d; + + private final boolean remapBasedOnColor; + + public WorldChunkManager_b1_7(final long seed) { + field_4194_e = new NoiseGeneratorOctaves2(new Random(seed * 9871L), 4); + field_4193_f = new NoiseGeneratorOctaves2(new Random(seed * 39811L), 4); + field_4192_g = new NoiseGeneratorOctaves2(new Random(seed * 0x84a59L), 2); + this.remapBasedOnColor = ViaLegacy.getConfig().isRemapBasedOnColor(); + } + + @Override + public byte[] getBiomeDataAt(int chunkX, int chunkZ) { + final byte[] biomeData = new byte[256]; + for (int x = 0; x < 16; x++) { + for (int z = 0; z < 16; z++) { + if (this.remapBasedOnColor) { + biomeData[z << 4 | x] = (byte) this.getBiomeGenAt((chunkX * 16) + x, (chunkZ * 16) + z).colorBiomeID; + } else { + biomeData[z << 4 | x] = (byte) this.getBiomeGenAt((chunkX * 16) + x, (chunkZ * 16) + z).biomeID; + } + } + } + return biomeData; + } + + public NewBiomeGenBase getBiomeGenAtChunkCoord(ChunkCoord chunkcoordintpair) { + return getBiomeGenAt(chunkcoordintpair.chunkX << 4, chunkcoordintpair.chunkZ << 4); + } + + public NewBiomeGenBase getBiomeGenAt(int i, int j) { + final OldBiomeGenBase oldBiomeGenBase = func_4069_a(i, j, 1, 1)[0]; + if (oldBiomeGenBase.equals(OldBiomeGenBase.rainforest)) { + return NewBiomeGenBase.jungle; + } else if (oldBiomeGenBase.equals(OldBiomeGenBase.swampland)) { + return NewBiomeGenBase.swampland; + } else if (oldBiomeGenBase.equals(OldBiomeGenBase.seasonalForest)) { + return NewBiomeGenBase.forest; + } else if (oldBiomeGenBase.equals(OldBiomeGenBase.forest)) { + return NewBiomeGenBase.forest; + } else if (oldBiomeGenBase.equals(OldBiomeGenBase.savanna)) { + return NewBiomeGenBase.savanna; + } else if (oldBiomeGenBase.equals(OldBiomeGenBase.shrubland)) { + return NewBiomeGenBase.mutatedJungleEdge; + } else if (oldBiomeGenBase.equals(OldBiomeGenBase.taiga)) { + return NewBiomeGenBase.taiga; + } else if (oldBiomeGenBase.equals(OldBiomeGenBase.desert)) { + return NewBiomeGenBase.desert; + } else if (oldBiomeGenBase.equals(OldBiomeGenBase.plains)) { + return NewBiomeGenBase.plains; + } else if (oldBiomeGenBase.equals(OldBiomeGenBase.iceDesert)) { + return NewBiomeGenBase.icePlains; + } else if (oldBiomeGenBase.equals(OldBiomeGenBase.tundra)) { + return NewBiomeGenBase.icePlains; + } else if (oldBiomeGenBase.equals(OldBiomeGenBase.hell)) { + return NewBiomeGenBase.hell; + } else if (oldBiomeGenBase.equals(OldBiomeGenBase.sky)) { + return NewBiomeGenBase.sky; + } else { + return NewBiomeGenBase.plains; + } + } + + public double getTemperature(int i, int j) { + temperature = field_4194_e.func_4112_a(temperature, i, j, 1, 1, 0.02500000037252903D, 0.02500000037252903D, 0.5D); + return temperature[0]; + } + + public OldBiomeGenBase[] func_4069_a(int i, int j, int k, int l) { + field_4195_d = loadBlockGeneratorData(field_4195_d, i, j, k, l); + return field_4195_d; + } + + public double[] getTemperatures(double[] ad, int i, int j, int k, int l) { + if (ad == null || ad.length < k * l) { + ad = new double[k * l]; + } + ad = field_4194_e.func_4112_a(ad, i, j, k, l, 0.02500000037252903D, 0.02500000037252903D, 0.25D); + field_4196_c = field_4192_g.func_4112_a(field_4196_c, i, j, k, l, 0.25D, 0.25D, 0.58823529411764708D); + int i1 = 0; + for (int j1 = 0; j1 < k; j1++) { + for (int k1 = 0; k1 < l; k1++) { + double d = field_4196_c[i1] * 1.1000000000000001D + 0.5D; + double d1 = 0.01D; + double d2 = 1.0D - d1; + double d3 = (ad[i1] * 0.14999999999999999D + 0.69999999999999996D) * d2 + d * d1; + d3 = 1.0D - (1.0D - d3) * (1.0D - d3); + if (d3 < 0.0D) { + d3 = 0.0D; + } + if (d3 > 1.0D) { + d3 = 1.0D; + } + ad[i1] = d3; + i1++; + } + + } + + return ad; + } + + public OldBiomeGenBase[] loadBlockGeneratorData(OldBiomeGenBase abiomegenbase[], int i, int j, int k, int l) { + if (abiomegenbase == null || abiomegenbase.length < k * l) { + abiomegenbase = new OldBiomeGenBase[k * l]; + } + temperature = field_4194_e.func_4112_a(temperature, i, j, k, k, 0.02500000037252903D, 0.02500000037252903D, 0.25D); + humidity = field_4193_f.func_4112_a(humidity, i, j, k, k, 0.05000000074505806D, 0.05000000074505806D, 0.33333333333333331D); + field_4196_c = field_4192_g.func_4112_a(field_4196_c, i, j, k, k, 0.25D, 0.25D, 0.58823529411764708D); + int i1 = 0; + for (int j1 = 0; j1 < k; j1++) { + for (int k1 = 0; k1 < l; k1++) { + double d = field_4196_c[i1] * 1.1000000000000001D + 0.5D; + double d1 = 0.01D; + double d2 = 1.0D - d1; + double d3 = (temperature[i1] * 0.14999999999999999D + 0.69999999999999996D) * d2 + d * d1; + d1 = 0.002D; + d2 = 1.0D - d1; + double d4 = (humidity[i1] * 0.14999999999999999D + 0.5D) * d2 + d * d1; + d3 = 1.0D - (1.0D - d3) * (1.0D - d3); + if (d3 < 0.0D) { + d3 = 0.0D; + } + if (d4 < 0.0D) { + d4 = 0.0D; + } + if (d3 > 1.0D) { + d3 = 1.0D; + } + if (d4 > 1.0D) { + d4 = 1.0D; + } + temperature[i1] = d3; + humidity[i1] = d4; + abiomegenbase[i1++] = OldBiomeGenBase.getBiomeFromLookup(d3, d4); + } + + } + + return abiomegenbase; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/BiomeCache.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/BiomeCache.java new file mode 100644 index 0000000..8ed7b98 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/BiomeCache.java @@ -0,0 +1,62 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release; + +import java.util.*; + +public class BiomeCache { + + private final WorldChunkManager_r1_1 chunkmanager; + private long lastCleanupTime; + private final Map cacheMap; + private final List cache; + + public BiomeCache(WorldChunkManager_r1_1 worldchunkmanager) { + lastCleanupTime = 0L; + cacheMap = new HashMap<>(); + cache = new ArrayList<>(); + chunkmanager = worldchunkmanager; + } + + public BiomeCacheBlock getBiomeCacheBlock(int i, int j) { + i >>= 4; + j >>= 4; + long l = (long) i & 0xffffffffL | ((long) j & 0xffffffffL) << 32; + BiomeCacheBlock biomecacheblock = cacheMap.get(l); + if (biomecacheblock == null) { + biomecacheblock = new BiomeCacheBlock(this, i, j); + cacheMap.put(l, biomecacheblock); + cache.add(biomecacheblock); + } + biomecacheblock.lastAccessTime = System.currentTimeMillis(); + return biomecacheblock; + } + + public NewBiomeGenBase getBiomeGenAt(int i, int j) { + return getBiomeCacheBlock(i, j).getBiomeGenAt(i, j); + } + + public void cleanupCache() { + long l = System.currentTimeMillis(); + long l1 = l - lastCleanupTime; + if (l1 > 7500L || l1 < 0L) { + lastCleanupTime = l; + for (int i = 0; i < cache.size(); i++) { + BiomeCacheBlock biomecacheblock = cache.get(i); + long l2 = l - biomecacheblock.lastAccessTime; + if (l2 > 30000L || l2 < 0L) { + cache.remove(i--); + long l3 = (long) biomecacheblock.xPosition & 0xffffffffL | ((long) biomecacheblock.zPosition & 0xffffffffL) << 32; + cacheMap.remove(l3); + } + } + } + } + + public NewBiomeGenBase[] getCachedBiomes(int i, int j) { + return getBiomeCacheBlock(i, j).biomes; + } + + static WorldChunkManager_r1_1 getWorldChunkManager(BiomeCache biomecache) { + return biomecache.chunkmanager; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/BiomeCacheBlock.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/BiomeCacheBlock.java new file mode 100644 index 0000000..8b806fd --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/BiomeCacheBlock.java @@ -0,0 +1,24 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release; + +public class BiomeCacheBlock { + + public NewBiomeGenBase[] biomes; + public int xPosition; + public int zPosition; + public long lastAccessTime; + final BiomeCache biomeCache; + + public BiomeCacheBlock(BiomeCache biomecache, int i, int j) { + biomeCache = biomecache; + + biomes = new NewBiomeGenBase[256]; + xPosition = i; + zPosition = j; + BiomeCache.getWorldChunkManager(biomecache).getBiomeGenAt(biomes, i << 4, j << 4, 16, 16, false); + } + + public NewBiomeGenBase getBiomeGenAt(int i, int j) { + return biomes[i & 0xf | (j & 0xf) << 4]; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/IntCache.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/IntCache.java new file mode 100644 index 0000000..6ca52b2 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/IntCache.java @@ -0,0 +1,19 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release; + +public class IntCache { + + private static final ThreadLocal INT_CACHE = ThreadLocal.withInitial(IntCacheInstance::new); + + public static int[] getIntCache(int i) { + return INT_CACHE.get().getIntCache(i); + } + + public static void resetIntCache() { + INT_CACHE.get().resetIntCache(); + } + + public static void resetEverything() { + INT_CACHE.get().resetEverything(); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/IntCacheInstance.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/IntCacheInstance.java new file mode 100644 index 0000000..0cc5989 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/IntCacheInstance.java @@ -0,0 +1,66 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release; + +import java.util.ArrayList; +import java.util.List; + +public class IntCacheInstance { + + private int intCacheSize = 256; + private List freeSmallArrays = new ArrayList<>(); + private List inUseSmallArrays = new ArrayList<>(); + private List freeLargeArrays = new ArrayList<>(); + private List inUseLargeArrays = new ArrayList<>(); + + public int[] getIntCache(int i) { + if (i <= 256) { + if (freeSmallArrays.size() == 0) { + int[] ai = new int[256]; + inUseSmallArrays.add(ai); + return ai; + } else { + int[] ai1 = freeSmallArrays.remove(freeSmallArrays.size() - 1); + inUseSmallArrays.add(ai1); + return ai1; + } + } + if (i > intCacheSize) { + intCacheSize = i; + freeLargeArrays.clear(); + inUseLargeArrays.clear(); + int[] ai2 = new int[intCacheSize]; + inUseLargeArrays.add(ai2); + return ai2; + } + if (freeLargeArrays.size() == 0) { + int[] ai3 = new int[intCacheSize]; + inUseLargeArrays.add(ai3); + return ai3; + } else { + int[] ai4 = freeLargeArrays.remove(freeLargeArrays.size() - 1); + inUseLargeArrays.add(ai4); + return ai4; + } + } + + public void resetIntCache() { + if (freeLargeArrays.size() > 0) { + freeLargeArrays.remove(freeLargeArrays.size() - 1); + } + if (freeSmallArrays.size() > 0) { + freeSmallArrays.remove(freeSmallArrays.size() - 1); + } + freeLargeArrays.addAll(inUseLargeArrays); + freeSmallArrays.addAll(inUseSmallArrays); + inUseLargeArrays.clear(); + inUseSmallArrays.clear(); + } + + public void resetEverything() { + intCacheSize = 256; + freeSmallArrays = new ArrayList<>(); + inUseSmallArrays = new ArrayList<>(); + freeLargeArrays = new ArrayList<>(); + inUseLargeArrays = new ArrayList<>(); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/NewBiomeGenBase.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/NewBiomeGenBase.java new file mode 100644 index 0000000..60a3431 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/NewBiomeGenBase.java @@ -0,0 +1,70 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release; + +public class NewBiomeGenBase { + + public static final NewBiomeGenBase[] BIOME_LIST = new NewBiomeGenBase[256]; + + public static final NewBiomeGenBase ocean = new NewBiomeGenBase(0); + public static final NewBiomeGenBase plains = new NewBiomeGenBase(1).setTemperatureRainfall(0.8F, 0.4F); + public static final NewBiomeGenBase desert = new NewBiomeGenBase(2).setTemperatureRainfall(2.0F, 0.0F); + public static final NewBiomeGenBase extremeHills = new NewBiomeGenBase(3).setTemperatureRainfall(0.2F, 0.3F); + public static final NewBiomeGenBase forest = new NewBiomeGenBase(4).setTemperatureRainfall(0.7F, 0.8F); + public static final NewBiomeGenBase taiga = new NewBiomeGenBase(5, 30).setTemperatureRainfall(0.05F, 0.8F); + public static final NewBiomeGenBase swampland = new NewBiomeGenBase(6, 1).setTemperatureRainfall(0.8F, 0.9F); + public static final NewBiomeGenBase river = new NewBiomeGenBase(7); + public static final NewBiomeGenBase hell = new NewBiomeGenBase(8).setTemperatureRainfall(2.0F, 0.0F); + public static final NewBiomeGenBase sky = new NewBiomeGenBase(9); + public static final NewBiomeGenBase frozenOcean = new NewBiomeGenBase(10).setTemperatureRainfall(0.0F, 0.5F); + public static final NewBiomeGenBase frozenRiver = new NewBiomeGenBase(11).setTemperatureRainfall(0.0F, 0.5F); + public static final NewBiomeGenBase icePlains = new NewBiomeGenBase(12); + public static final NewBiomeGenBase iceMountains = new NewBiomeGenBase(13).setTemperatureRainfall(0.0F, 0.5F); + public static final NewBiomeGenBase mushroomIsland = new NewBiomeGenBase(14).setTemperatureRainfall(0.9F, 1.0F); + public static final NewBiomeGenBase mushroomIslandShore = new NewBiomeGenBase(15).setTemperatureRainfall(0.9F, 1.0F); + public static final NewBiomeGenBase beach = new NewBiomeGenBase(16).setTemperatureRainfall(0.8F, 0.4F); + public static final NewBiomeGenBase desertHills = new NewBiomeGenBase(17).setTemperatureRainfall(2.0F, 0.0F); + public static final NewBiomeGenBase forestHills = new NewBiomeGenBase(18).setTemperatureRainfall(0.7F, 0.8F); + public static final NewBiomeGenBase taigaHills = new NewBiomeGenBase(19).setTemperatureRainfall(0.05F, 0.8F); + public static final NewBiomeGenBase extremeHillsEdge = new NewBiomeGenBase(20).setTemperatureRainfall(0.2F, 0.3F); + + public static final NewBiomeGenBase jungle = new NewBiomeGenBase(21); //This is here for the OldWorldChunkManager + public static final NewBiomeGenBase cold_taiga = new NewBiomeGenBase(30); //This is here for the OldWorldChunkManager + public static final NewBiomeGenBase savanna = new NewBiomeGenBase(35); //This is here for the OldWorldChunkManager + public static final NewBiomeGenBase mutatedJungleEdge = new NewBiomeGenBase(151); //This is here for the OldWorldChunkManager + + public final int biomeID; + public int colorBiomeID; + public float temperature; + public float rainfall; + + protected NewBiomeGenBase(int i) { + biomeID = i; + colorBiomeID = i; + if (i <= 20) { + BIOME_LIST[i] = this; + } + } + + public NewBiomeGenBase(int i, int colorBiomeID) { + this(i); + this.colorBiomeID = colorBiomeID; + } + + private NewBiomeGenBase setTemperatureRainfall(float f, float f1) { + if (f > 0.1F && f < 0.2F) { + throw new IllegalArgumentException("Please avoid temperatures in the range 0.1 - 0.2 because of snow"); + } else { + temperature = f; + rainfall = f1; + return this; + } + } + + public final int getIntRainfall() { + return (int) (rainfall * 65536F); + } + + public final int getIntTemperature() { + return (int) (temperature * 65536F); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/WorldChunkManager_r1_1.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/WorldChunkManager_r1_1.java new file mode 100644 index 0000000..5c56418 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/WorldChunkManager_r1_1.java @@ -0,0 +1,106 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release; + +import net.raphimc.vialegacy.ViaLegacy; +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.IWorldChunkManager; +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.genlayer.GenLayer; +import net.raphimc.vialegacy.util.VersionEnum; + +public class WorldChunkManager_r1_1 implements IWorldChunkManager { + + private GenLayer biomeIndexLayer; + private GenLayer temperatureLayer; + private GenLayer rainfallLayer; + private final BiomeCache biomeCache; + + private final boolean remapBasedOnColor; + + protected WorldChunkManager_r1_1() { + IntCache.resetEverything(); + biomeCache = new BiomeCache(this); + this.remapBasedOnColor = ViaLegacy.getConfig().isRemapBasedOnColor(); + } + + public WorldChunkManager_r1_1(final VersionEnum version, final long seed) { + this(); + GenLayer[] agenlayer = GenLayer.func_35497_a(version, seed); + biomeIndexLayer = agenlayer[1]; + temperatureLayer = agenlayer[2]; + rainfallLayer = agenlayer[3]; + } + + @Override + public byte[] getBiomeDataAt(int chunkX, int chunkZ) { + final byte[] biomeData = new byte[256]; + for (int x = 0; x < 16; x++) { + for (int z = 0; z < 16; z++) { + if (this.remapBasedOnColor) { + biomeData[z << 4 | x] = (byte) this.getBiomeGenAt((chunkX * 16) + x, (chunkZ * 16) + z).colorBiomeID; + } else { + biomeData[z << 4 | x] = (byte) this.getBiomeGenAt((chunkX * 16) + x, (chunkZ * 16) + z).biomeID; + } + } + } + return biomeData; + } + + public NewBiomeGenBase getBiomeGenAt(int i, int j) { + return biomeCache.getBiomeGenAt(i, j); + } + + public NewBiomeGenBase[] getBiomeGenAt(NewBiomeGenBase[] abiomegenbase, int i, int j, int k, int l, boolean flag) { + IntCache.resetIntCache(); + if (abiomegenbase == null || abiomegenbase.length < k * l) { + abiomegenbase = new NewBiomeGenBase[k * l]; + } + if (flag && k == 16 && l == 16 && (i & 0xf) == 0 && (j & 0xf) == 0) { + NewBiomeGenBase[] abiomegenbase1 = biomeCache.getCachedBiomes(i, j); + System.arraycopy(abiomegenbase1, 0, abiomegenbase, 0, k * l); + return abiomegenbase; + } + int[] ai = biomeIndexLayer.getInts(i, j, k, l); + for (int i1 = 0; i1 < k * l; i1++) { + abiomegenbase[i1] = NewBiomeGenBase.BIOME_LIST[ai[i1]]; + } + + return abiomegenbase; + } + + public float[] getRainfall(float[] af, int i, int j, int k, int l) { + IntCache.resetIntCache(); + if (af == null || af.length < k * l) { + af = new float[k * l]; + } + int[] ai = rainfallLayer.getInts(i, j, k, l); + for (int i1 = 0; i1 < k * l; i1++) { + float f = (float) ai[i1] / 65536F; + if (f > 1.0F) { + f = 1.0F; + } + af[i1] = f; + } + + return af; + } + + public float[] getTemperatures(float[] af, int i, int j, int k, int l) { + IntCache.resetIntCache(); + if (af == null || af.length < k * l) { + af = new float[k * l]; + } + int[] ai = temperatureLayer.getInts(i, j, k, l); + for (int i1 = 0; i1 < k * l; i1++) { + float f = (float) ai[i1] / 65536F; + if (f > 1.0F) { + f = 1.0F; + } + af[i1] = f; + } + + return af; + } + + public void cleanupCache() { + biomeCache.cleanupCache(); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayer.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayer.java new file mode 100644 index 0000000..6df340c --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayer.java @@ -0,0 +1,158 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.genlayer; + +import net.raphimc.vialegacy.util.VersionEnum; + +public abstract class GenLayer { + private long worldGenSeed; + protected GenLayer parent; + private long chunkSeed; + private long baseSeed; + + public static GenLayer[] func_35497_a(final VersionEnum version, final long seed) { + GenLayer obj = new LayerIsland(1L); + obj = new GenLayerZoomFuzzy(2000L, obj); + if (version.isNewerThanOrEqualTo(VersionEnum.r1_0_0tor1_0_1)) { + obj = new GenLayerIsland_r1_0(1L, obj); + } else { + obj = new GenLayerIsland_b1_8(1L, obj); + } + obj = new GenLayerZoom(2001L, obj); + if (version.isNewerThanOrEqualTo(VersionEnum.r1_0_0tor1_0_1)) { + obj = new GenLayerIsland_r1_0(2L, obj); + } else { + obj = new GenLayerIsland_b1_8(2L, obj); + } + if (version.isNewerThanOrEqualTo(VersionEnum.r1_0_0tor1_0_1)) { + obj = new GenLayerSnow(2L, obj); + } + obj = new GenLayerZoom(2002L, obj); + if (version.isNewerThanOrEqualTo(VersionEnum.r1_0_0tor1_0_1)) { + obj = new GenLayerIsland_r1_0(3L, obj); + } else { + obj = new GenLayerIsland_b1_8(3L, obj); + } + obj = new GenLayerZoom(2003L, obj); + if (version.isNewerThanOrEqualTo(VersionEnum.r1_0_0tor1_0_1)) { + obj = new GenLayerIsland_r1_0(4L, obj); + obj = new GenLayerMushroomIsland(5L, obj); + } else { + obj = new GenLayerIsland_b1_8(3L, obj); + obj = new GenLayerZoom(2004L, obj); + obj = new GenLayerIsland_b1_8(3L, obj); + } + byte byte0 = 4; + GenLayer obj1 = obj; + obj1 = GenLayerZoom.func_35515_a(1000L, obj1, 0); + obj1 = new GenLayerRiverInit(100L, obj1); + obj1 = GenLayerZoom.func_35515_a(1000L, obj1, byte0 + 2); + obj1 = new GenLayerRiver(1L, obj1); + obj1 = new GenLayerSmooth(1000L, obj1); + GenLayer obj2 = obj; + obj2 = GenLayerZoom.func_35515_a(1000L, obj2, 0); + if (version.isNewerThanOrEqualTo(VersionEnum.r1_0_0tor1_0_1)) { + obj2 = new GenLayerVillageLandscape_r1_0(200L, obj2); + } else { + obj2 = new GenLayerVillageLandscape_b1_8(200L, obj2); + } + obj2 = GenLayerZoom.func_35515_a(1000L, obj2, 2); + if (version.isNewerThanOrEqualTo(VersionEnum.r1_1)) { + obj2 = new GenLayerHills(1000L, obj2); + } + GenLayer obj3 = new GenLayerTemperature(obj2); + GenLayer obj4 = new GenLayerDownfall(obj2); + for (int i = 0; i < byte0; i++) { + obj2 = new GenLayerZoom(1000 + i, obj2); + if (version.isNewerThanOrEqualTo(VersionEnum.r1_1)) { + if (i == 0) { + obj2 = new GenLayerIsland_r1_0(3L, obj2); + } + if (i == 1) { + obj2 = new GenLayerShore_r1_1(1000L, obj2); + } + if (i == 1) { + obj2 = new GenLayerSwampRivers(1000L, obj2); + } + } else { + if (i == 0) { + if (version.isNewerThanOrEqualTo(VersionEnum.r1_0_0tor1_0_1)) { + obj2 = new GenLayerIsland_r1_0(3L, obj2); + } else { + obj2 = new GenLayerIsland_b1_8(3L, obj2); + } + } + if (version.isNewerThanOrEqualTo(VersionEnum.r1_0_0tor1_0_1)) { + if (i == 0) { + obj2 = new GenLayerShore_r1_0(1000L, obj2); + } + } + } + obj3 = new GenLayerSmoothZoom(1000 + i, obj3); + obj3 = new GenLayerTemperatureMix(obj3, obj2, i); + obj4 = new GenLayerSmoothZoom(1000 + i, obj4); + obj4 = new GenLayerDownfallMix(obj4, obj2, i); + } + + obj2 = new GenLayerSmooth(1000L, obj2); + obj2 = new GenLayerRiverMix(100L, obj2, obj1); + GenLayerRiverMix genlayerrivermix = ((GenLayerRiverMix) (obj2)); + obj3 = GenLayerSmoothZoom.func_35517_a(1000L, obj3, 2); + obj4 = GenLayerSmoothZoom.func_35517_a(1000L, obj4, 2); + GenLayerZoomVoronoi genlayerzoomvoronoi = new GenLayerZoomVoronoi(10L, obj2); + obj2.initWorldGenSeed(seed); + obj3.initWorldGenSeed(seed); + obj4.initWorldGenSeed(seed); + genlayerzoomvoronoi.initWorldGenSeed(seed); + return (new GenLayer[] + { + obj2, genlayerzoomvoronoi, obj3, obj4, genlayerrivermix + }); + } + + public GenLayer(long l) { + baseSeed = l; + baseSeed *= baseSeed * 0x5851f42d4c957f2dL + 0x14057b7ef767814fL; + baseSeed += l; + baseSeed *= baseSeed * 0x5851f42d4c957f2dL + 0x14057b7ef767814fL; + baseSeed += l; + baseSeed *= baseSeed * 0x5851f42d4c957f2dL + 0x14057b7ef767814fL; + baseSeed += l; + } + + public void initWorldGenSeed(long l) { + worldGenSeed = l; + if (parent != null) { + parent.initWorldGenSeed(l); + } + worldGenSeed *= worldGenSeed * 0x5851f42d4c957f2dL + 0x14057b7ef767814fL; + worldGenSeed += baseSeed; + worldGenSeed *= worldGenSeed * 0x5851f42d4c957f2dL + 0x14057b7ef767814fL; + worldGenSeed += baseSeed; + worldGenSeed *= worldGenSeed * 0x5851f42d4c957f2dL + 0x14057b7ef767814fL; + worldGenSeed += baseSeed; + } + + public void initChunkSeed(long l, long l1) { + chunkSeed = worldGenSeed; + chunkSeed *= chunkSeed * 0x5851f42d4c957f2dL + 0x14057b7ef767814fL; + chunkSeed += l; + chunkSeed *= chunkSeed * 0x5851f42d4c957f2dL + 0x14057b7ef767814fL; + chunkSeed += l1; + chunkSeed *= chunkSeed * 0x5851f42d4c957f2dL + 0x14057b7ef767814fL; + chunkSeed += l; + chunkSeed *= chunkSeed * 0x5851f42d4c957f2dL + 0x14057b7ef767814fL; + chunkSeed += l1; + } + + protected int nextInt(int i) { + int j = (int) ((chunkSeed >> 24) % (long) i); + if (j < 0) { + j += i; + } + chunkSeed *= chunkSeed * 0x5851f42d4c957f2dL + 0x14057b7ef767814fL; + chunkSeed += worldGenSeed; + return j; + } + + public abstract int[] getInts(int i, int j, int k, int l); + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerDownfall.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerDownfall.java new file mode 100644 index 0000000..6242d93 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerDownfall.java @@ -0,0 +1,21 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.genlayer; + +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.IntCache; +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.NewBiomeGenBase; + +public class GenLayerDownfall extends GenLayer { + public GenLayerDownfall(GenLayer genlayer) { + super(0L); + parent = genlayer; + } + + public int[] getInts(int i, int j, int k, int l) { + int[] ai = parent.getInts(i, j, k, l); + int[] ai1 = IntCache.getIntCache(k * l); + for (int i1 = 0; i1 < k * l; i1++) { + ai1[i1] = NewBiomeGenBase.BIOME_LIST[ai[i1]].getIntRainfall(); + } + + return ai1; + } +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerDownfallMix.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerDownfallMix.java new file mode 100644 index 0000000..d20588e --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerDownfallMix.java @@ -0,0 +1,27 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.genlayer; + +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.IntCache; +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.NewBiomeGenBase; + +public class GenLayerDownfallMix extends GenLayer { + private final GenLayer field_35507_b; + private final int field_35508_c; + + public GenLayerDownfallMix(GenLayer genlayer, GenLayer genlayer1, int i) { + super(0L); + parent = genlayer1; + field_35507_b = genlayer; + field_35508_c = i; + } + + public int[] getInts(int i, int j, int k, int l) { + int[] ai = parent.getInts(i, j, k, l); + int[] ai1 = field_35507_b.getInts(i, j, k, l); + int[] ai2 = IntCache.getIntCache(k * l); + for (int i1 = 0; i1 < k * l; i1++) { + ai2[i1] = ai1[i1] + (NewBiomeGenBase.BIOME_LIST[ai[i1]].getIntRainfall() - ai1[i1]) / (field_35508_c + 1); + } + + return ai2; + } +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerHills.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerHills.java new file mode 100644 index 0000000..aca528b --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerHills.java @@ -0,0 +1,53 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.genlayer; + +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.IntCache; +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.NewBiomeGenBase; + +public class GenLayerHills extends GenLayer { + public GenLayerHills(long l, GenLayer genlayer) { + super(l); + parent = genlayer; + } + + public int[] getInts(int i, int j, int k, int l) { + int[] ai = parent.getInts(i - 1, j - 1, k + 2, l + 2); + int[] ai1 = IntCache.getIntCache(k * l); + for (int i1 = 0; i1 < l; i1++) { + for (int j1 = 0; j1 < k; j1++) { + initChunkSeed(j1 + i, i1 + j); + int k1 = ai[j1 + 1 + (i1 + 1) * (k + 2)]; + if (nextInt(3) == 0) { + int l1 = k1; + if (k1 == NewBiomeGenBase.desert.biomeID) { + l1 = NewBiomeGenBase.desertHills.biomeID; + } else if (k1 == NewBiomeGenBase.forest.biomeID) { + l1 = NewBiomeGenBase.forestHills.biomeID; + } else if (k1 == NewBiomeGenBase.taiga.biomeID) { + l1 = NewBiomeGenBase.taigaHills.biomeID; + } else if (k1 == NewBiomeGenBase.plains.biomeID) { + l1 = NewBiomeGenBase.forest.biomeID; + } else if (k1 == NewBiomeGenBase.icePlains.biomeID) { + l1 = NewBiomeGenBase.iceMountains.biomeID; + } + if (l1 != k1) { + int i2 = ai[j1 + 1 + ((i1 + 1) - 1) * (k + 2)]; + int j2 = ai[j1 + 1 + 1 + (i1 + 1) * (k + 2)]; + int k2 = ai[((j1 + 1) - 1) + (i1 + 1) * (k + 2)]; + int l2 = ai[j1 + 1 + (i1 + 1 + 1) * (k + 2)]; + if (i2 == k1 && j2 == k1 && k2 == k1 && l2 == k1) { + ai1[j1 + i1 * k] = l1; + } else { + ai1[j1 + i1 * k] = k1; + } + } else { + ai1[j1 + i1 * k] = k1; + } + } else { + ai1[j1 + i1 * k] = k1; + } + } + } + + return ai1; + } +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerIsland_b1_8.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerIsland_b1_8.java new file mode 100644 index 0000000..dec305e --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerIsland_b1_8.java @@ -0,0 +1,40 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.genlayer; + +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.IntCache; + +public class GenLayerIsland_b1_8 extends GenLayer { + public GenLayerIsland_b1_8(long l, GenLayer genlayer) { + super(l); + parent = genlayer; + } + + public int[] getInts(int i, int j, int k, int l) { + int i1 = i - 1; + int j1 = j - 1; + int k1 = k + 2; + int l1 = l + 2; + int[] ai = parent.getInts(i1, j1, k1, l1); + int[] ai1 = IntCache.getIntCache(k * l); + for (int i2 = 0; i2 < l; i2++) { + for (int j2 = 0; j2 < k; j2++) { + int k2 = ai[j2 + 0 + (i2 + 0) * k1]; + int l2 = ai[j2 + 2 + (i2 + 0) * k1]; + int i3 = ai[j2 + 0 + (i2 + 2) * k1]; + int j3 = ai[j2 + 2 + (i2 + 2) * k1]; + int k3 = ai[j2 + 1 + (i2 + 1) * k1]; + initChunkSeed(j2 + i, i2 + j); + if (k3 == 0 && (k2 != 0 || l2 != 0 || i3 != 0 || j3 != 0)) { + ai1[j2 + i2 * k] = 0 + nextInt(3) / 2; + continue; + } + if (k3 == 1 && (k2 != 1 || l2 != 1 || i3 != 1 || j3 != 1)) { + ai1[j2 + i2 * k] = 1 - nextInt(5) / 4; + } else { + ai1[j2 + i2 * k] = k3; + } + } + } + + return ai1; + } +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerIsland_r1_0.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerIsland_r1_0.java new file mode 100644 index 0000000..1d2b370 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerIsland_r1_0.java @@ -0,0 +1,71 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.genlayer; + +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.IntCache; +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.NewBiomeGenBase; + +public class GenLayerIsland_r1_0 extends GenLayer { + public GenLayerIsland_r1_0(long l, GenLayer genlayer) { + super(l); + parent = genlayer; + } + + public int[] getInts(int i, int j, int k, int l) { + int i1 = i - 1; + int j1 = j - 1; + int k1 = k + 2; + int l1 = l + 2; + int[] ai = parent.getInts(i1, j1, k1, l1); + int[] ai1 = IntCache.getIntCache(k * l); + for (int i2 = 0; i2 < l; i2++) { + for (int j2 = 0; j2 < k; j2++) { + int k2 = ai[j2 + 0 + (i2 + 0) * k1]; + int l2 = ai[j2 + 2 + (i2 + 0) * k1]; + int i3 = ai[j2 + 0 + (i2 + 2) * k1]; + int j3 = ai[j2 + 2 + (i2 + 2) * k1]; + int k3 = ai[j2 + 1 + (i2 + 1) * k1]; + initChunkSeed(j2 + i, i2 + j); + if (k3 == 0 && (k2 != 0 || l2 != 0 || i3 != 0 || j3 != 0)) { + int l3 = 1; + int i4 = 1; + if (k2 != 0 && nextInt(l3++) == 0) { + i4 = k2; + } + if (l2 != 0 && nextInt(l3++) == 0) { + i4 = l2; + } + if (i3 != 0 && nextInt(l3++) == 0) { + i4 = i3; + } + if (j3 != 0 && nextInt(l3++) == 0) { + i4 = j3; + } + if (nextInt(3) == 0) { + ai1[j2 + i2 * k] = i4; + continue; + } + if (i4 == NewBiomeGenBase.icePlains.biomeID) { + ai1[j2 + i2 * k] = NewBiomeGenBase.frozenOcean.biomeID; + } else { + ai1[j2 + i2 * k] = 0; + } + continue; + } + if (k3 > 0 && (k2 == 0 || l2 == 0 || i3 == 0 || j3 == 0)) { + if (nextInt(5) == 0) { + if (k3 == NewBiomeGenBase.icePlains.biomeID) { + ai1[j2 + i2 * k] = NewBiomeGenBase.frozenOcean.biomeID; + } else { + ai1[j2 + i2 * k] = 0; + } + } else { + ai1[j2 + i2 * k] = k3; + } + } else { + ai1[j2 + i2 * k] = k3; + } + } + } + + return ai1; + } +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerMushroomIsland.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerMushroomIsland.java new file mode 100644 index 0000000..3213ee5 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerMushroomIsland.java @@ -0,0 +1,37 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.genlayer; + +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.IntCache; +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.NewBiomeGenBase; + +public class GenLayerMushroomIsland extends GenLayer { + public GenLayerMushroomIsland(long l, GenLayer genlayer) { + super(l); + parent = genlayer; + } + + public int[] getInts(int i, int j, int k, int l) { + int i1 = i - 1; + int j1 = j - 1; + int k1 = k + 2; + int l1 = l + 2; + int[] ai = parent.getInts(i1, j1, k1, l1); + int[] ai1 = IntCache.getIntCache(k * l); + for (int i2 = 0; i2 < l; i2++) { + for (int j2 = 0; j2 < k; j2++) { + int k2 = ai[j2 + 0 + (i2 + 0) * k1]; + int l2 = ai[j2 + 2 + (i2 + 0) * k1]; + int i3 = ai[j2 + 0 + (i2 + 2) * k1]; + int j3 = ai[j2 + 2 + (i2 + 2) * k1]; + int k3 = ai[j2 + 1 + (i2 + 1) * k1]; + initChunkSeed(j2 + i, i2 + j); + if (k3 == 0 && k2 == 0 && l2 == 0 && i3 == 0 && j3 == 0 && nextInt(100) == 0) { + ai1[j2 + i2 * k] = NewBiomeGenBase.mushroomIsland.biomeID; + } else { + ai1[j2 + i2 * k] = k3; + } + } + } + + return ai1; + } +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerRiver.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerRiver.java new file mode 100644 index 0000000..5afc1f9 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerRiver.java @@ -0,0 +1,40 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.genlayer; + +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.IntCache; +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.NewBiomeGenBase; + +public class GenLayerRiver extends GenLayer { + public GenLayerRiver(long l, GenLayer genlayer) { + super(l); + super.parent = genlayer; + } + + public int[] getInts(int i, int j, int k, int l) { + int i1 = i - 1; + int j1 = j - 1; + int k1 = k + 2; + int l1 = l + 2; + int[] ai = parent.getInts(i1, j1, k1, l1); + int[] ai1 = IntCache.getIntCache(k * l); + for (int i2 = 0; i2 < l; i2++) { + for (int j2 = 0; j2 < k; j2++) { + int k2 = ai[j2 + 0 + (i2 + 1) * k1]; + int l2 = ai[j2 + 2 + (i2 + 1) * k1]; + int i3 = ai[j2 + 1 + (i2 + 0) * k1]; + int j3 = ai[j2 + 1 + (i2 + 2) * k1]; + int k3 = ai[j2 + 1 + (i2 + 1) * k1]; + if (k3 == 0 || k2 == 0 || l2 == 0 || i3 == 0 || j3 == 0) { + ai1[j2 + i2 * k] = NewBiomeGenBase.river.biomeID; + continue; + } + if (k3 != k2 || k3 != i3 || k3 != l2 || k3 != j3) { + ai1[j2 + i2 * k] = NewBiomeGenBase.river.biomeID; + } else { + ai1[j2 + i2 * k] = -1; + } + } + } + + return ai1; + } +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerRiverInit.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerRiverInit.java new file mode 100644 index 0000000..2ffb125 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerRiverInit.java @@ -0,0 +1,23 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.genlayer; + +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.IntCache; + +public class GenLayerRiverInit extends GenLayer { + public GenLayerRiverInit(long l, GenLayer genlayer) { + super(l); + parent = genlayer; + } + + public int[] getInts(int i, int j, int k, int l) { + int[] ai = parent.getInts(i, j, k, l); + int[] ai1 = IntCache.getIntCache(k * l); + for (int i1 = 0; i1 < l; i1++) { + for (int j1 = 0; j1 < k; j1++) { + initChunkSeed(j1 + i, i1 + j); + ai1[j1 + i1 * k] = ai[j1 + i1 * k] <= 0 ? 0 : nextInt(2) + 2; + } + } + + return ai1; + } +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerRiverMix.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerRiverMix.java new file mode 100644 index 0000000..ca0c5ec --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerRiverMix.java @@ -0,0 +1,48 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.genlayer; + +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.IntCache; +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.NewBiomeGenBase; + +public class GenLayerRiverMix extends GenLayer { + private final GenLayer field_35512_b; + private final GenLayer field_35513_c; + + public GenLayerRiverMix(long l, GenLayer genlayer, GenLayer genlayer1) { + super(l); + field_35512_b = genlayer; + field_35513_c = genlayer1; + } + + public void initWorldGenSeed(long l) { + field_35512_b.initWorldGenSeed(l); + field_35513_c.initWorldGenSeed(l); + super.initWorldGenSeed(l); + } + + public int[] getInts(int i, int j, int k, int l) { + int[] ai = field_35512_b.getInts(i, j, k, l); + int[] ai1 = field_35513_c.getInts(i, j, k, l); + int[] ai2 = IntCache.getIntCache(k * l); + for (int i1 = 0; i1 < k * l; i1++) { + if (ai[i1] == NewBiomeGenBase.ocean.biomeID) { + ai2[i1] = ai[i1]; + continue; + } + if (ai1[i1] >= 0) { + if (ai[i1] == NewBiomeGenBase.icePlains.biomeID) { + ai2[i1] = NewBiomeGenBase.frozenRiver.biomeID; + continue; + } + if (ai[i1] == NewBiomeGenBase.mushroomIsland.biomeID || ai[i1] == NewBiomeGenBase.mushroomIslandShore.biomeID) { + ai2[i1] = NewBiomeGenBase.mushroomIslandShore.biomeID; + } else { + ai2[i1] = ai1[i1]; + } + } else { + ai2[i1] = ai[i1]; + } + } + + return ai2; + } +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerShore_r1_0.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerShore_r1_0.java new file mode 100644 index 0000000..a15f690 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerShore_r1_0.java @@ -0,0 +1,39 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.genlayer; + +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.IntCache; +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.NewBiomeGenBase; + +public class GenLayerShore_r1_0 extends GenLayer { + public GenLayerShore_r1_0(long l, GenLayer genlayer) { + super(l); + parent = genlayer; + } + + public int[] getInts(int i, int j, int k, int l) { + int ai[] = parent.getInts(i - 1, j - 1, k + 2, l + 2); + int ai1[] = IntCache.getIntCache(k * l); + for (int i1 = 0; i1 < l; i1++) { + for (int j1 = 0; j1 < k; j1++) { + initChunkSeed(j1 + i, i1 + j); + int k1 = ai[j1 + 1 + (i1 + 1) * (k + 2)]; + if (k1 == NewBiomeGenBase.mushroomIsland.biomeID) { + int l1 = ai[j1 + 1 + ((i1 + 1) - 1) * (k + 2)]; + int i2 = ai[j1 + 1 + 1 + (i1 + 1) * (k + 2)]; + int j2 = ai[((j1 + 1) - 1) + (i1 + 1) * (k + 2)]; + int k2 = ai[j1 + 1 + (i1 + 1 + 1) * (k + 2)]; + if (l1 == NewBiomeGenBase.ocean.biomeID || i2 == NewBiomeGenBase.ocean.biomeID || j2 == NewBiomeGenBase.ocean.biomeID || k2 == NewBiomeGenBase.ocean.biomeID) { + ai1[j1 + i1 * k] = NewBiomeGenBase.mushroomIslandShore.biomeID; + } else { + ai1[j1 + i1 * k] = k1; + } + } else { + ai1[j1 + i1 * k] = k1; + } + } + + } + + return ai1; + + } +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerShore_r1_1.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerShore_r1_1.java new file mode 100644 index 0000000..700caf3 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerShore_r1_1.java @@ -0,0 +1,61 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.genlayer; + +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.IntCache; +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.NewBiomeGenBase; + +public class GenLayerShore_r1_1 extends GenLayer { + public GenLayerShore_r1_1(long l, GenLayer genlayer) { + super(l); + parent = genlayer; + } + + public int[] getInts(int i, int j, int k, int l) { + int[] ai = parent.getInts(i - 1, j - 1, k + 2, l + 2); + int[] ai1 = IntCache.getIntCache(k * l); + for (int i1 = 0; i1 < l; i1++) { + for (int j1 = 0; j1 < k; j1++) { + initChunkSeed(j1 + i, i1 + j); + int k1 = ai[j1 + 1 + (i1 + 1) * (k + 2)]; + if (k1 == NewBiomeGenBase.mushroomIsland.biomeID) { + int l1 = ai[j1 + 1 + ((i1 + 1) - 1) * (k + 2)]; + int k2 = ai[j1 + 1 + 1 + (i1 + 1) * (k + 2)]; + int j3 = ai[((j1 + 1) - 1) + (i1 + 1) * (k + 2)]; + int i4 = ai[j1 + 1 + (i1 + 1 + 1) * (k + 2)]; + if (l1 == NewBiomeGenBase.ocean.biomeID || k2 == NewBiomeGenBase.ocean.biomeID || j3 == NewBiomeGenBase.ocean.biomeID || i4 == NewBiomeGenBase.ocean.biomeID) { + ai1[j1 + i1 * k] = NewBiomeGenBase.mushroomIslandShore.biomeID; + } else { + ai1[j1 + i1 * k] = k1; + } + continue; + } + if (k1 != NewBiomeGenBase.ocean.biomeID && k1 != NewBiomeGenBase.river.biomeID && k1 != NewBiomeGenBase.swampland.biomeID && k1 != NewBiomeGenBase.extremeHills.biomeID) { + int i2 = ai[j1 + 1 + ((i1 + 1) - 1) * (k + 2)]; + int l2 = ai[j1 + 1 + 1 + (i1 + 1) * (k + 2)]; + int k3 = ai[((j1 + 1) - 1) + (i1 + 1) * (k + 2)]; + int j4 = ai[j1 + 1 + (i1 + 1 + 1) * (k + 2)]; + if (i2 == NewBiomeGenBase.ocean.biomeID || l2 == NewBiomeGenBase.ocean.biomeID || k3 == NewBiomeGenBase.ocean.biomeID || j4 == NewBiomeGenBase.ocean.biomeID) { + ai1[j1 + i1 * k] = NewBiomeGenBase.beach.biomeID; + } else { + ai1[j1 + i1 * k] = k1; + } + continue; + } + if (k1 == NewBiomeGenBase.extremeHills.biomeID) { + int j2 = ai[j1 + 1 + ((i1 + 1) - 1) * (k + 2)]; + int i3 = ai[j1 + 1 + 1 + (i1 + 1) * (k + 2)]; + int l3 = ai[((j1 + 1) - 1) + (i1 + 1) * (k + 2)]; + int k4 = ai[j1 + 1 + (i1 + 1 + 1) * (k + 2)]; + if (j2 != NewBiomeGenBase.extremeHills.biomeID || i3 != NewBiomeGenBase.extremeHills.biomeID || l3 != NewBiomeGenBase.extremeHills.biomeID || k4 != NewBiomeGenBase.extremeHills.biomeID) { + ai1[j1 + i1 * k] = NewBiomeGenBase.extremeHillsEdge.biomeID; + } else { + ai1[j1 + i1 * k] = k1; + } + } else { + ai1[j1 + i1 * k] = k1; + } + } + } + + return ai1; + } +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerSmooth.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerSmooth.java new file mode 100644 index 0000000..fa42843 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerSmooth.java @@ -0,0 +1,46 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.genlayer; + +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.IntCache; + +public class GenLayerSmooth extends GenLayer { + public GenLayerSmooth(long l, GenLayer genlayer) { + super(l); + super.parent = genlayer; + } + + public int[] getInts(int i, int j, int k, int l) { + int i1 = i - 1; + int j1 = j - 1; + int k1 = k + 2; + int l1 = l + 2; + int[] ai = parent.getInts(i1, j1, k1, l1); + int[] ai1 = IntCache.getIntCache(k * l); + for (int i2 = 0; i2 < l; i2++) { + for (int j2 = 0; j2 < k; j2++) { + int k2 = ai[j2 + 0 + (i2 + 1) * k1]; + int l2 = ai[j2 + 2 + (i2 + 1) * k1]; + int i3 = ai[j2 + 1 + (i2 + 0) * k1]; + int j3 = ai[j2 + 1 + (i2 + 2) * k1]; + int k3 = ai[j2 + 1 + (i2 + 1) * k1]; + if (k2 == l2 && i3 == j3) { + initChunkSeed(j2 + i, i2 + j); + if (nextInt(2) == 0) { + k3 = k2; + } else { + k3 = i3; + } + } else { + if (k2 == l2) { + k3 = k2; + } + if (i3 == j3) { + k3 = i3; + } + } + ai1[j2 + i2 * k] = k3; + } + } + + return ai1; + } +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerSmoothZoom.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerSmoothZoom.java new file mode 100644 index 0000000..5d0d9ce --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerSmoothZoom.java @@ -0,0 +1,55 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.genlayer; + +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.IntCache; + +public class GenLayerSmoothZoom extends GenLayer { + public GenLayerSmoothZoom(long l, GenLayer genlayer) { + super(l); + parent = genlayer; + } + + public int[] getInts(int i, int j, int k, int l) { + int i1 = i >> 1; + int j1 = j >> 1; + int k1 = (k >> 1) + 3; + int l1 = (l >> 1) + 3; + int[] ai = parent.getInts(i1, j1, k1, l1); + int[] ai1 = IntCache.getIntCache(k1 * 2 * (l1 * 2)); + int i2 = k1 << 1; + for (int j2 = 0; j2 < l1 - 1; j2++) { + int k2 = j2 << 1; + int i3 = k2 * i2; + int j3 = ai[0 + (j2 + 0) * k1]; + int k3 = ai[0 + (j2 + 1) * k1]; + for (int l3 = 0; l3 < k1 - 1; l3++) { + initChunkSeed(l3 + i1 << 1, j2 + j1 << 1); + int i4 = ai[l3 + 1 + (j2 + 0) * k1]; + int j4 = ai[l3 + 1 + (j2 + 1) * k1]; + ai1[i3] = j3; + ai1[i3++ + i2] = j3 + ((k3 - j3) * nextInt(256)) / 256; + ai1[i3] = j3 + ((i4 - j3) * nextInt(256)) / 256; + int k4 = j3 + ((i4 - j3) * nextInt(256)) / 256; + int l4 = k3 + ((j4 - k3) * nextInt(256)) / 256; + ai1[i3++ + i2] = k4 + ((l4 - k4) * nextInt(256)) / 256; + j3 = i4; + k3 = j4; + } + } + + int[] ai2 = IntCache.getIntCache(k * l); + for (int l2 = 0; l2 < l; l2++) { + System.arraycopy(ai1, (l2 + (j & 1)) * (k1 << 1) + (i & 1), ai2, l2 * k, k); + } + + return ai2; + } + + public static GenLayer func_35517_a(long l, GenLayer genlayer, int i) { + Object obj = genlayer; + for (int j = 0; j < i; j++) { + obj = new GenLayerSmoothZoom(l + (long) j, ((GenLayer) (obj))); + } + + return ((GenLayer) (obj)); + } +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerSnow.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerSnow.java new file mode 100644 index 0000000..1e7f961 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerSnow.java @@ -0,0 +1,39 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.genlayer; + +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.IntCache; +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.NewBiomeGenBase; + +public class GenLayerSnow extends GenLayer { + public GenLayerSnow(long l, GenLayer genlayer) { + super(l); + parent = genlayer; + } + + public int[] getInts(int i, int j, int k, int l) { + int i1 = i - 1; + int j1 = j - 1; + int k1 = k + 2; + int l1 = l + 2; + int[] ai = parent.getInts(i1, j1, k1, l1); + int[] ai1 = IntCache.getIntCache(k * l); + for (int i2 = 0; i2 < l; i2++) { + for (int j2 = 0; j2 < k; j2++) { + int k2 = ai[j2 + 1 + (i2 + 1) * k1]; + initChunkSeed(j2 + i, i2 + j); + if (k2 == 0) { + ai1[j2 + i2 * k] = 0; + continue; + } + int l2 = nextInt(5); + if (l2 == 0) { + l2 = NewBiomeGenBase.icePlains.biomeID; + } else { + l2 = 1; + } + ai1[j2 + i2 * k] = l2; + } + } + + return ai1; + } +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerSwampRivers.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerSwampRivers.java new file mode 100644 index 0000000..01b66f3 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerSwampRivers.java @@ -0,0 +1,29 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.genlayer; + +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.IntCache; +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.NewBiomeGenBase; + +public class GenLayerSwampRivers extends GenLayer { + public GenLayerSwampRivers(long l, GenLayer genlayer) { + super(l); + parent = genlayer; + } + + public int[] getInts(int i, int j, int k, int l) { + int[] ai = parent.getInts(i - 1, j - 1, k + 2, l + 2); + int[] ai1 = IntCache.getIntCache(k * l); + for (int i1 = 0; i1 < l; i1++) { + for (int j1 = 0; j1 < k; j1++) { + initChunkSeed(j1 + i, i1 + j); + int k1 = ai[j1 + 1 + (i1 + 1) * (k + 2)]; + if (k1 == NewBiomeGenBase.swampland.biomeID && nextInt(6) == 0) { + ai1[j1 + i1 * k] = NewBiomeGenBase.river.biomeID; + } else { + ai1[j1 + i1 * k] = k1; + } + } + } + + return ai1; + } +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerTemperature.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerTemperature.java new file mode 100644 index 0000000..24fb84b --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerTemperature.java @@ -0,0 +1,21 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.genlayer; + +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.IntCache; +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.NewBiomeGenBase; + +public class GenLayerTemperature extends GenLayer { + public GenLayerTemperature(GenLayer genlayer) { + super(0L); + parent = genlayer; + } + + public int[] getInts(int i, int j, int k, int l) { + int[] ai = parent.getInts(i, j, k, l); + int[] ai1 = IntCache.getIntCache(k * l); + for (int i1 = 0; i1 < k * l; i1++) { + ai1[i1] = NewBiomeGenBase.BIOME_LIST[ai[i1]].getIntTemperature(); + } + + return ai1; + } +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerTemperatureMix.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerTemperatureMix.java new file mode 100644 index 0000000..1cad0fd --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerTemperatureMix.java @@ -0,0 +1,27 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.genlayer; + +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.IntCache; +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.NewBiomeGenBase; + +public class GenLayerTemperatureMix extends GenLayer { + private final GenLayer field_35505_b; + private final int field_35506_c; + + public GenLayerTemperatureMix(GenLayer genlayer, GenLayer genlayer1, int i) { + super(0L); + parent = genlayer1; + field_35505_b = genlayer; + field_35506_c = i; + } + + public int[] getInts(int i, int j, int k, int l) { + int[] ai = parent.getInts(i, j, k, l); + int[] ai1 = field_35505_b.getInts(i, j, k, l); + int[] ai2 = IntCache.getIntCache(k * l); + for (int i1 = 0; i1 < k * l; i1++) { + ai2[i1] = ai1[i1] + (NewBiomeGenBase.BIOME_LIST[ai[i1]].getIntTemperature() - ai1[i1]) / (field_35506_c * 2 + 1); + } + + return ai2; + } +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerVillageLandscape_b1_8.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerVillageLandscape_b1_8.java new file mode 100644 index 0000000..e0791ac --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerVillageLandscape_b1_8.java @@ -0,0 +1,30 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.genlayer; + +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.IntCache; +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.NewBiomeGenBase; + +public class GenLayerVillageLandscape_b1_8 extends GenLayer { + private final NewBiomeGenBase[] allowedBiomes; + + public GenLayerVillageLandscape_b1_8(long l, GenLayer genlayer) { + super(l); + allowedBiomes = (new NewBiomeGenBase[] + { + NewBiomeGenBase.desert, NewBiomeGenBase.forest, NewBiomeGenBase.extremeHills, NewBiomeGenBase.swampland, NewBiomeGenBase.plains, NewBiomeGenBase.taiga + }); + parent = genlayer; + } + + public int[] getInts(int i, int j, int k, int l) { + int[] ai = parent.getInts(i, j, k, l); + int[] ai1 = IntCache.getIntCache(k * l); + for (int i1 = 0; i1 < l; i1++) { + for (int j1 = 0; j1 < k; j1++) { + initChunkSeed(j1 + i, i1 + j); + ai1[j1 + i1 * k] = ai[j1 + i1 * k] <= 0 ? 0 : allowedBiomes[nextInt(allowedBiomes.length)].biomeID; + } + } + + return ai1; + } +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerVillageLandscape_r1_0.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerVillageLandscape_r1_0.java new file mode 100644 index 0000000..7cdbeb8 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerVillageLandscape_r1_0.java @@ -0,0 +1,43 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.genlayer; + +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.IntCache; +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.NewBiomeGenBase; + +public class GenLayerVillageLandscape_r1_0 extends GenLayer { + private final NewBiomeGenBase[] allowedBiomes; + + public GenLayerVillageLandscape_r1_0(long l, GenLayer genlayer) { + super(l); + allowedBiomes = (new NewBiomeGenBase[] + { + NewBiomeGenBase.desert, NewBiomeGenBase.forest, NewBiomeGenBase.extremeHills, NewBiomeGenBase.swampland, NewBiomeGenBase.plains, NewBiomeGenBase.taiga + }); + parent = genlayer; + } + + public int[] getInts(int i, int j, int k, int l) { + int[] ai = parent.getInts(i, j, k, l); + int[] ai1 = IntCache.getIntCache(k * l); + for (int i1 = 0; i1 < l; i1++) { + for (int j1 = 0; j1 < k; j1++) { + initChunkSeed(j1 + i, i1 + j); + int k1 = ai[j1 + i1 * k]; + if (k1 == 0) { + ai1[j1 + i1 * k] = 0; + continue; + } + if (k1 == NewBiomeGenBase.mushroomIsland.biomeID) { + ai1[j1 + i1 * k] = k1; + continue; + } + if (k1 == 1) { + ai1[j1 + i1 * k] = allowedBiomes[nextInt(allowedBiomes.length)].biomeID; + } else { + ai1[j1 + i1 * k] = NewBiomeGenBase.icePlains.biomeID; + } + } + } + + return ai1; + } +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerZoom.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerZoom.java new file mode 100644 index 0000000..d2ce21a --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerZoom.java @@ -0,0 +1,120 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.genlayer; + +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.IntCache; + +public class GenLayerZoom extends GenLayer { + public GenLayerZoom(long l, GenLayer genlayer) { + super(l); + super.parent = genlayer; + } + + public int[] getInts(int i, int j, int k, int l) { + int i1 = i >> 1; + int j1 = j >> 1; + int k1 = (k >> 1) + 3; + int l1 = (l >> 1) + 3; + int[] ai = parent.getInts(i1, j1, k1, l1); + int[] ai1 = IntCache.getIntCache(k1 * 2 * (l1 * 2)); + int i2 = k1 << 1; + for (int j2 = 0; j2 < l1 - 1; j2++) { + int k2 = j2 << 1; + int i3 = k2 * i2; + int j3 = ai[0 + (j2 + 0) * k1]; + int k3 = ai[0 + (j2 + 1) * k1]; + for (int l3 = 0; l3 < k1 - 1; l3++) { + initChunkSeed(l3 + i1 << 1, j2 + j1 << 1); + int i4 = ai[l3 + 1 + (j2 + 0) * k1]; + int j4 = ai[l3 + 1 + (j2 + 1) * k1]; + ai1[i3] = j3; + ai1[i3++ + i2] = func_35516_a(j3, k3); + ai1[i3] = func_35516_a(j3, i4); + ai1[i3++ + i2] = func_35514_b(j3, i4, k3, j4); + j3 = i4; + k3 = j4; + } + } + + int[] ai2 = IntCache.getIntCache(k * l); + for (int l2 = 0; l2 < l; l2++) { + System.arraycopy(ai1, (l2 + (j & 1)) * (k1 << 1) + (i & 1), ai2, l2 * k, k); + } + + return ai2; + } + + protected int func_35516_a(int i, int j) { + return nextInt(2) != 0 ? j : i; + } + + protected int func_35514_b(int i, int j, int k, int l) { + if (j == k && k == l) { + return j; + } + if (i == j && i == k) { + return i; + } + if (i == j && i == l) { + return i; + } + if (i == k && i == l) { + return i; + } + if (i == j && k != l) { + return i; + } + if (i == k && j != l) { + return i; + } + if (i == l && j != k) { + return i; + } + if (j == i && k != l) { + return j; + } + if (j == k && i != l) { + return j; + } + if (j == l && i != k) { + return j; + } + if (k == i && j != l) { + return k; + } + if (k == j && i != l) { + return k; + } + if (k == l && i != j) { + return k; + } + if (l == i && j != k) { + return k; + } + if (l == j && i != k) { + return k; + } + if (l == k && i != j) { + return k; + } + int i1 = nextInt(4); + if (i1 == 0) { + return i; + } + if (i1 == 1) { + return j; + } + if (i1 == 2) { + return k; + } else { + return l; + } + } + + public static GenLayer func_35515_a(long l, GenLayer genlayer, int i) { + Object obj = genlayer; + for (int j = 0; j < i; j++) { + obj = new GenLayerZoom(l + (long) j, ((GenLayer) (obj))); + } + + return ((GenLayer) (obj)); + } +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerZoomFuzzy.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerZoomFuzzy.java new file mode 100644 index 0000000..1ac7517 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerZoomFuzzy.java @@ -0,0 +1,63 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.genlayer; + +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.IntCache; + +public class GenLayerZoomFuzzy extends GenLayer { + public GenLayerZoomFuzzy(long l, GenLayer genlayer) { + super(l); + super.parent = genlayer; + } + + public int[] getInts(int i, int j, int k, int l) { + int i1 = i >> 1; + int j1 = j >> 1; + int k1 = (k >> 1) + 3; + int l1 = (l >> 1) + 3; + int[] ai = parent.getInts(i1, j1, k1, l1); + int[] ai1 = IntCache.getIntCache(k1 * 2 * (l1 * 2)); + int i2 = k1 << 1; + for (int j2 = 0; j2 < l1 - 1; j2++) { + int k2 = j2 << 1; + int i3 = k2 * i2; + int j3 = ai[0 + (j2 + 0) * k1]; + int k3 = ai[0 + (j2 + 1) * k1]; + for (int l3 = 0; l3 < k1 - 1; l3++) { + initChunkSeed(l3 + i1 << 1, j2 + j1 << 1); + int i4 = ai[l3 + 1 + (j2 + 0) * k1]; + int j4 = ai[l3 + 1 + (j2 + 1) * k1]; + ai1[i3] = j3; + ai1[i3++ + i2] = choose(j3, k3); + ai1[i3] = choose(j3, i4); + ai1[i3++ + i2] = choose(j3, i4, k3, j4); + j3 = i4; + k3 = j4; + } + } + + int[] ai2 = IntCache.getIntCache(k * l); + for (int l2 = 0; l2 < l; l2++) { + System.arraycopy(ai1, (l2 + (j & 1)) * (k1 << 1) + (i & 1), ai2, l2 * k, k); + } + + return ai2; + } + + protected int choose(int i, int j) { + return nextInt(2) != 0 ? j : i; + } + + protected int choose(int i, int j, int k, int l) { + int i1 = nextInt(4); + if (i1 == 0) { + return i; + } + if (i1 == 1) { + return j; + } + if (i1 == 2) { + return k; + } else { + return l; + } + } +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerZoomVoronoi.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerZoomVoronoi.java new file mode 100644 index 0000000..9664113 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/GenLayerZoomVoronoi.java @@ -0,0 +1,78 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.genlayer; + +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.IntCache; + +public class GenLayerZoomVoronoi extends GenLayer { + public GenLayerZoomVoronoi(long l, GenLayer genlayer) { + super(l); + super.parent = genlayer; + } + + public int[] getInts(int i, int j, int k, int l) { + i -= 2; + j -= 2; + byte byte0 = 2; + int i1 = 1 << byte0; + int j1 = i >> byte0; + int k1 = j >> byte0; + int l1 = (k >> byte0) + 3; + int i2 = (l >> byte0) + 3; + int[] ai = parent.getInts(j1, k1, l1, i2); + int j2 = l1 << byte0; + int k2 = i2 << byte0; + int[] ai1 = IntCache.getIntCache(j2 * k2); + for (int l2 = 0; l2 < i2 - 1; l2++) { + int i3 = ai[0 + (l2 + 0) * l1]; + int k3 = ai[0 + (l2 + 1) * l1]; + for (int l3 = 0; l3 < l1 - 1; l3++) { + double d = (double) i1 * 0.90000000000000002D; + initChunkSeed(l3 + j1 << byte0, l2 + k1 << byte0); + double d1 = ((double) nextInt(1024) / 1024D - 0.5D) * d; + double d2 = ((double) nextInt(1024) / 1024D - 0.5D) * d; + initChunkSeed(l3 + j1 + 1 << byte0, l2 + k1 << byte0); + double d3 = ((double) nextInt(1024) / 1024D - 0.5D) * d + (double) i1; + double d4 = ((double) nextInt(1024) / 1024D - 0.5D) * d; + initChunkSeed(l3 + j1 << byte0, l2 + k1 + 1 << byte0); + double d5 = ((double) nextInt(1024) / 1024D - 0.5D) * d; + double d6 = ((double) nextInt(1024) / 1024D - 0.5D) * d + (double) i1; + initChunkSeed(l3 + j1 + 1 << byte0, l2 + k1 + 1 << byte0); + double d7 = ((double) nextInt(1024) / 1024D - 0.5D) * d + (double) i1; + double d8 = ((double) nextInt(1024) / 1024D - 0.5D) * d + (double) i1; + int i4 = ai[l3 + 1 + (l2 + 0) * l1]; + int j4 = ai[l3 + 1 + (l2 + 1) * l1]; + for (int k4 = 0; k4 < i1; k4++) { + int l4 = ((l2 << byte0) + k4) * j2 + (l3 << byte0); + for (int i5 = 0; i5 < i1; i5++) { + double d9 = ((double) k4 - d2) * ((double) k4 - d2) + ((double) i5 - d1) * ((double) i5 - d1); + double d10 = ((double) k4 - d4) * ((double) k4 - d4) + ((double) i5 - d3) * ((double) i5 - d3); + double d11 = ((double) k4 - d6) * ((double) k4 - d6) + ((double) i5 - d5) * ((double) i5 - d5); + double d12 = ((double) k4 - d8) * ((double) k4 - d8) + ((double) i5 - d7) * ((double) i5 - d7); + if (d9 < d10 && d9 < d11 && d9 < d12) { + ai1[l4++] = i3; + continue; + } + if (d10 < d9 && d10 < d11 && d10 < d12) { + ai1[l4++] = i4; + continue; + } + if (d11 < d9 && d11 < d10 && d11 < d12) { + ai1[l4++] = k3; + } else { + ai1[l4++] = j4; + } + } + } + + i3 = i4; + k3 = j4; + } + } + + int[] ai2 = IntCache.getIntCache(k * l); + for (int j3 = 0; j3 < l; j3++) { + System.arraycopy(ai1, (j3 + (j & i1 - 1)) * (l1 << byte0) + (i & i1 - 1), ai2, j3 * k, k); + } + + return ai2; + } +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/LayerIsland.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/LayerIsland.java new file mode 100644 index 0000000..8094322 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/biome/release/genlayer/LayerIsland.java @@ -0,0 +1,24 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.genlayer; + +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.release.IntCache; + +public class LayerIsland extends GenLayer { + public LayerIsland(long l) { + super(l); + } + + public int[] getInts(int i, int j, int k, int l) { + int[] ai = IntCache.getIntCache(k * l); + for (int i1 = 0; i1 < l; i1++) { + for (int j1 = 0; j1 < k; j1++) { + initChunkSeed(i + j1, j + i1); + ai[j1 + i1 * k] = nextInt(10) != 0 ? 0 : 1; + } + } + + if (i > -k && i <= 0 && j > -l && j <= 0) { + ai[-i + -j * k] = 1; + } + return ai; + } +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/chunks/NibbleArray1_1.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/chunks/NibbleArray1_1.java new file mode 100644 index 0000000..f415ccc --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/chunks/NibbleArray1_1.java @@ -0,0 +1,44 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.chunks; + +import com.viaversion.viaversion.api.minecraft.chunks.NibbleArray; + +public class NibbleArray1_1 extends NibbleArray { + + private final int depthBits; + private final int depthBitsPlusFour; + + public NibbleArray1_1(final int length) { + this(length, 7); + } + + public NibbleArray1_1(final byte[] handle) { + this(handle, 7); + } + + public NibbleArray1_1(final int length, final int depthBits) { + super(length); + this.depthBits = depthBits; + this.depthBitsPlusFour = depthBits + 4; + } + + public NibbleArray1_1(final byte[] handle, final int depthBits) { + super(handle); + this.depthBits = depthBits; + this.depthBitsPlusFour = depthBits + 4; + } + + @Override + public byte get(int x, int y, int z) { + return this.get(this.index(x, y, z)); + } + + @Override + public void set(int x, int y, int z, int value) { + this.set(this.index(x, y, z), value); + } + + public int index(final int x, final int y, final int z) { + return x << this.depthBitsPlusFour | z << this.depthBits | y; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/model/NonFullChunk1_1.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/model/NonFullChunk1_1.java new file mode 100644 index 0000000..8970ee1 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/model/NonFullChunk1_1.java @@ -0,0 +1,45 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.model; + +import com.viaversion.viaversion.api.minecraft.*; +import com.viaversion.viaversion.api.minecraft.chunks.*; +import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag; + +import java.util.ArrayList; +import java.util.List; + +public class NonFullChunk1_1 extends BaseChunk { + + private final Position startPos; + private final Position endPos; + + public NonFullChunk1_1(int x, int z, int bitmask, ChunkSection[] sections, Position startPos, Position endPos) { + super(x, z, false, false, bitmask, sections, null, new CompoundTag(), new ArrayList<>()); + + this.startPos = startPos; + this.endPos = endPos; + } + + public Position getStartPos() { + return this.startPos; + } + + public Position getEndPos() { + return this.endPos; + } + + public List asBlockChangeRecords() { + final List blockChangeRecords = new ArrayList<>(); + + for (int y = this.startPos.y(); y < this.endPos.y(); y++) { + final ChunkSection section = this.getSections()[y >> 4]; + for (int x = this.startPos.x(); x < this.endPos.x(); x++) { + for (int z = this.startPos.z(); z < this.endPos.z(); z++) { + blockChangeRecords.add(new BlockChangeRecord1_8(x, y, z, section.palette(PaletteType.BLOCKS).idAt(x, y & 15, z))); + } + } + } + + return blockChangeRecords; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/model/PendingBlockEntry.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/model/PendingBlockEntry.java new file mode 100644 index 0000000..815e62b --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/model/PendingBlockEntry.java @@ -0,0 +1,29 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.model; + +import com.viaversion.viaversion.api.minecraft.Position; +import net.raphimc.vialegacy.api.IdAndData; + +public class PendingBlockEntry { + + private final Position position; + private final IdAndData block; + private int countdown = 80; + + public PendingBlockEntry(final Position position, final IdAndData block) { + this.position = position; + this.block = block; + } + + public Position getPosition() { + return this.position; + } + + public IdAndData getBlock() { + return this.block; + } + + public boolean decrementAndCheckIsExpired() { + return --this.countdown <= 0; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/storage/DimensionTracker.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/storage/DimensionTracker.java new file mode 100644 index 0000000..b0859c1 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/storage/DimensionTracker.java @@ -0,0 +1,22 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.storage; + +import com.viaversion.viaversion.api.connection.StoredObject; +import com.viaversion.viaversion.api.connection.UserConnection; + +public class DimensionTracker extends StoredObject { + + private int dimensionId = 0; + + public DimensionTracker(UserConnection user) { + super(user); + } + + public void setDimension(final int dimensionId) { + this.dimensionId = dimensionId; + } + + public int getDimensionId() { + return this.dimensionId; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/storage/PendingBlocksTracker.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/storage/PendingBlocksTracker.java new file mode 100644 index 0000000..7c33ce5 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/storage/PendingBlocksTracker.java @@ -0,0 +1,67 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.storage; + +import com.viaversion.viaversion.api.connection.StoredObject; +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.minecraft.Position; +import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; +import com.viaversion.viaversion.api.type.Type; +import net.raphimc.vialegacy.ViaLegacy; +import net.raphimc.vialegacy.api.IdAndData; +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.Protocol1_2_1_3to1_1; +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.model.PendingBlockEntry; +import net.raphimc.vialegacy.protocols.release.protocol1_2_4_5to1_2_1_3.ClientboundPackets1_2_1; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.Types1_7_6; + +import java.util.*; +import java.util.logging.Level; + +public class PendingBlocksTracker extends StoredObject { + + private final List pendingBlockEntries = new LinkedList<>(); + + public PendingBlocksTracker(UserConnection user) { + super(user); + } + + public void clear() { + this.pendingBlockEntries.clear(); + } + + public void addPending(final Position position, final IdAndData block) { + this.pendingBlockEntries.add(new PendingBlockEntry(position, block)); + } + + public void markReceived(final Position position) { + this.markReceived(position, position); + } + + public void markReceived(final Position startPos, final Position endPos) { + final Iterator it = this.pendingBlockEntries.iterator(); + while (it.hasNext()) { + final Position pendingBlockPos = it.next().getPosition(); + if (pendingBlockPos.x() >= startPos.x() && pendingBlockPos.y() >= startPos.y() && pendingBlockPos.z() >= startPos.z() && pendingBlockPos.x() <= endPos.x() && pendingBlockPos.y() <= endPos.y() && pendingBlockPos.z() <= endPos.z()) { + it.remove(); + } + } + } + + public void tick() { + final Iterator it = this.pendingBlockEntries.iterator(); + while (it.hasNext()) { + final PendingBlockEntry pendingBlockEntry = it.next(); + if (pendingBlockEntry.decrementAndCheckIsExpired()) { + it.remove(); + try { + final PacketWrapper blockChange = PacketWrapper.create(ClientboundPackets1_2_1.BLOCK_CHANGE, this.getUser()); + blockChange.write(Types1_7_6.POSITION_UBYTE, pendingBlockEntry.getPosition()); // position + blockChange.write(Type.UNSIGNED_BYTE, (short) pendingBlockEntry.getBlock().id); // block id + blockChange.write(Type.UNSIGNED_BYTE, (short) pendingBlockEntry.getBlock().data); // block data + blockChange.send(Protocol1_2_1_3to1_1.class); + } catch (Throwable e) { + ViaLegacy.getPlatform().getLogger().log(Level.WARNING, "Could not send block update for expired pending block", e); + } + } + } + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/storage/SeedStorage.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/storage/SeedStorage.java new file mode 100644 index 0000000..fcf9423 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/storage/SeedStorage.java @@ -0,0 +1,16 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.storage; + +import com.viaversion.viaversion.api.connection.StoredObject; +import com.viaversion.viaversion.api.connection.UserConnection; +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.biome.IWorldChunkManager; + +public class SeedStorage extends StoredObject { + + public long seed; + public IWorldChunkManager worldChunkManager; + + public SeedStorage(UserConnection user) { + super(user); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/tasks/BlockReceiveInvalidatorTask.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/tasks/BlockReceiveInvalidatorTask.java new file mode 100644 index 0000000..a233a48 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/tasks/BlockReceiveInvalidatorTask.java @@ -0,0 +1,19 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.tasks; + +import com.viaversion.viaversion.api.Via; +import com.viaversion.viaversion.api.connection.UserConnection; +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.storage.PendingBlocksTracker; + +public class BlockReceiveInvalidatorTask implements Runnable { + + @Override + public void run() { + for (UserConnection info : Via.getManager().getConnectionManager().getConnections()) { + final PendingBlocksTracker pendingBlocksTracker = info.get(PendingBlocksTracker.class); + if (pendingBlocksTracker != null) { + info.getChannel().eventLoop().submit(pendingBlocksTracker::tick); + } + } + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/types/BlockChangeRecordArrayType.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/types/BlockChangeRecordArrayType.java new file mode 100644 index 0000000..2b4a96e --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/types/BlockChangeRecordArrayType.java @@ -0,0 +1,52 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.types; + +import com.viaversion.viaversion.api.minecraft.BlockChangeRecord; +import com.viaversion.viaversion.api.minecraft.BlockChangeRecord1_8; +import com.viaversion.viaversion.api.type.Type; +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.api.IdAndData; + +public class BlockChangeRecordArrayType extends Type { + + public BlockChangeRecordArrayType() { + super(BlockChangeRecord[].class); + } + + @Override + public BlockChangeRecord[] read(ByteBuf buffer) throws Exception { + final int length = buffer.readUnsignedShort(); + final short[] positions = new short[length]; + final short[] blocks = new short[length]; + final byte[] metas = new byte[length]; + for (int i = 0; i < length; i++) { + positions[i] = buffer.readShort(); + } + for (int i = 0; i < length; i++) { + blocks[i] = buffer.readUnsignedByte(); + } + for (int i = 0; i < length; i++) { + metas[i] = buffer.readByte(); + } + + final BlockChangeRecord[] blockChangeRecords = new BlockChangeRecord[length]; + for (int i = 0; i < length; i++) { + blockChangeRecords[i] = new BlockChangeRecord1_8(positions[i] >> 12 & 15, positions[i] & 255, positions[i] >> 8 & 15, IdAndData.toCompressedData(blocks[i], metas[i])); + } + return blockChangeRecords; + } + + @Override + public void write(ByteBuf buffer, BlockChangeRecord[] records) throws Exception { + buffer.writeShort(records.length); + for (BlockChangeRecord record : records) { + buffer.writeShort(record.getSectionX() << 12 | record.getSectionZ() << 8 | record.getY(-1)); + } + for (BlockChangeRecord record : records) { + buffer.writeByte(record.getBlockId() >> 4); + } + for (BlockChangeRecord record : records) { + buffer.writeByte(record.getBlockId() & 15); + } + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/types/Chunk1_1Type.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/types/Chunk1_1Type.java new file mode 100644 index 0000000..0fa7dc5 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/types/Chunk1_1Type.java @@ -0,0 +1,163 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.types; + +import com.viaversion.viaversion.api.minecraft.Environment; +import com.viaversion.viaversion.api.minecraft.Position; +import com.viaversion.viaversion.api.minecraft.chunks.*; +import com.viaversion.viaversion.api.type.PartialType; +import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.types.CustomByteType; +import com.viaversion.viaversion.api.type.types.minecraft.BaseChunkType; +import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.api.IdAndData; +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.chunks.NibbleArray1_1; +import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.model.NonFullChunk1_1; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.zip.DataFormatException; +import java.util.zip.Inflater; + +public class Chunk1_1Type extends PartialType { + + public Chunk1_1Type(ClientWorld clientWorld) { + super(clientWorld, Chunk.class); + } + + @Override + public Class getBaseClass() { + return BaseChunkType.class; + } + + @Override + public Chunk read(ByteBuf byteBuf, ClientWorld clientWorld) throws Exception { + final int xPosition = byteBuf.readInt(); + final int yPosition = byteBuf.readShort(); + final int zPosition = byteBuf.readInt(); + final int xSize = byteBuf.readUnsignedByte() + 1; + final int ySize = byteBuf.readUnsignedByte() + 1; + final int zSize = byteBuf.readUnsignedByte() + 1; + final int chunkSize = byteBuf.readInt(); + final byte[] compressedData = new CustomByteType(chunkSize).read(byteBuf); + final byte[] uncompressedData = new byte[(xSize * ySize * zSize * 5) / 2]; + final Inflater inflater = new Inflater(); + inflater.setInput(compressedData); + try { + inflater.inflate(uncompressedData); + } catch (DataFormatException dataformatexception) { + throw new IOException("Bad compressed data format"); + } finally { + inflater.end(); + } + + return deserialize(xPosition, yPosition, zPosition, xSize, ySize, zSize, clientWorld.getEnvironment() == Environment.NORMAL, uncompressedData); + } + + @Override + public void write(ByteBuf byteBuf, ClientWorld clientWorld, Chunk chunk) throws Exception { + throw new UnsupportedOperationException(); + } + + public static Chunk deserialize(final int xPosition, final int yPosition, final int zPosition, final int xSize, final int ySize, final int zSize, final boolean skyLight, final byte[] chunkData) { + final int chunkX = xPosition >> 4; + final int chunkZ = zPosition >> 4; + final int endChunkX = xPosition + xSize - 1 >> 4; + final int endChunkZ = zPosition + zSize - 1 >> 4; + final int startX = Math.max(xPosition - chunkX * 16, 0); + final int endX = Math.min(xPosition + xSize - chunkX * 16, 16); + final int startY = Math.max(yPosition, 0); + final int endY = Math.min(yPosition + ySize, 128); + final int startZ = Math.max(zPosition - chunkZ * 16, 0); + final int endZ = Math.min(zPosition + zSize - chunkZ * 16, 16); + final boolean fullChunk = (xPosition & 15) == 0 && yPosition == 0 && (zPosition & 15) == 0 && xSize == 16 && ySize == 128 && zSize == 16; + + final byte[] blockArray = new byte[16 * 128 * 16]; + final NibbleArray1_1 blockDataArray = new NibbleArray1_1(blockArray.length); + final NibbleArray1_1 blockLightArray = new NibbleArray1_1(blockArray.length); + final NibbleArray1_1 skyLightArray = new NibbleArray1_1(blockArray.length); + + if (fullChunk) { // fast path for most common chunk size + final int blockDataOffset = blockArray.length; + final int blockLightOffset = blockArray.length + blockDataArray.getHandle().length; + final int skyLightOffset = chunkData.length - blockLightArray.getHandle().length; + + System.arraycopy(chunkData, 0, blockArray, 0, blockArray.length); + System.arraycopy(chunkData, blockDataOffset, blockDataArray.getHandle(), 0, blockDataArray.getHandle().length); + System.arraycopy(chunkData, blockLightOffset, blockLightArray.getHandle(), 0, blockLightArray.getHandle().length); + System.arraycopy(chunkData, skyLightOffset, skyLightArray.getHandle(), 0, skyLightArray.getHandle().length); + } else { + if (chunkX != endChunkX || chunkZ != endChunkZ) throw new IllegalStateException("Can't decode 1.1 non full-chunk which spans over multiple chunks"); + + int offset = 0; + for (int x = startX; x < endX; x++) { + for (int z = startZ; z < endZ; z++) { + final int index = x << 11 | z << 7 | startY; + final int size = endY - startY; + System.arraycopy(chunkData, offset, blockArray, index, size); + offset += size; + } + } + for (int x = startX; x < endX; x++) { + for (int z = startZ; z < endZ; z++) { + final int index = (x << 11 | z << 7 | startY) >> 1; + final int size = (endY - startY) / 2; + System.arraycopy(chunkData, offset, blockDataArray.getHandle(), index, size); + offset += size; + } + } + for (int x = startX; x < endX; x++) { + for (int z = startZ; z < endZ; z++) { + final int index = (x << 11 | z << 7 | startY) >> 1; + final int size = (endY - startY) / 2; + System.arraycopy(chunkData, offset, blockLightArray.getHandle(), index, size); + offset += size; + } + } + for (int x = startX; x < endX; x++) { + for (int z = startZ; z < endZ; z++) { + final int index = (x << 11 | z << 7 | startY) >> 1; + final int size = (endY - startY) / 2; + System.arraycopy(chunkData, offset, skyLightArray.getHandle(), index, size); + offset += size; + } + } + } + + final ChunkSection[] modernSections = new ChunkSection[8]; + + int bitmask = 0; + ChunkSection section = null; + NibbleArray1_1 sectionSkyLight = null; + NibbleArray1_1 sectionBlockLight = null; + for (int y = startY; y < endY; y++) { + if (section == null || y % 16 == 0) { + final int sectionY = y >> 4; + bitmask |= (1 << sectionY); + section = modernSections[sectionY] = new ChunkSectionImpl(true); + section.palette(PaletteType.BLOCKS).addId(0); + sectionSkyLight = new NibbleArray1_1(16 * 16 * 16, 4); + sectionBlockLight = new NibbleArray1_1(16 * 16 * 16, 4); + } + + for (int x = startX; x < endX; x++) { + for (int z = startZ; z < endZ; z++) { + section.palette(PaletteType.BLOCKS).setIdAt(x, y & 15, z, IdAndData.toCompressedData(blockArray[x << 11 | z << 7 | y] & 255, blockDataArray.get(x, y, z))); + sectionSkyLight.set(x, y & 15, z, skyLightArray.get(x, y, z)); + sectionBlockLight.set(x, y & 15, z, blockLightArray.get(x, y, z)); + } + } + + section.getLight().setBlockLight(sectionBlockLight.getHandle()); + if (skyLight) { + section.getLight().setSkyLight(sectionSkyLight.getHandle()); + } + } + + if (fullChunk) { + return new BaseChunk(chunkX, chunkZ, true, false, 255, modernSections, new int[256], new ArrayList<>()); + } else { + return new NonFullChunk1_1(chunkX, chunkZ, bitmask, modernSections, new Position(startX, startY, startZ), new Position(endX, endY, endZ)); + } + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/types/Types1_1.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/types/Types1_1.java new file mode 100644 index 0000000..32345bd --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_1_3to1_1/types/Types1_1.java @@ -0,0 +1,10 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.types; + +import com.viaversion.viaversion.api.minecraft.BlockChangeRecord; +import com.viaversion.viaversion.api.type.Type; + +public class Types1_1 { + + public static Type BLOCK_CHANGE_RECORD_ARRAY = new BlockChangeRecordArrayType(); + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_4_5to1_2_1_3/ClientboundPackets1_2_1.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_4_5to1_2_1_3/ClientboundPackets1_2_1.java new file mode 100644 index 0000000..c021ce6 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_4_5to1_2_1_3/ClientboundPackets1_2_1.java @@ -0,0 +1,405 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_2_4_5to1_2_1_3; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType; +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.util.PreNettyPacketType; + +import java.util.function.BiConsumer; + +import static net.raphimc.vialegacy.util.PreNettyTypes.*; + +public enum ClientboundPackets1_2_1 implements ClientboundPacketType, PreNettyPacketType { + + KEEP_ALIVE(0, (user, buf) -> { + buf.readInt(); + }), + JOIN_GAME(1, (user, buf) -> { + buf.readInt(); + readString(buf); + readString(buf); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + HANDSHAKE(2, (user, buf) -> { + readString(buf); + }), + CHAT_MESSAGE(3, (user, buf) -> { + readString(buf); + }), + TIME_UPDATE(4, (user, buf) -> { + buf.readLong(); + }), + ENTITY_EQUIPMENT(5, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readShort(); + buf.readShort(); + }), + SPAWN_POSITION(6, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + UPDATE_HEALTH(8, (user, buf) -> { + buf.readShort(); + buf.readShort(); + buf.readFloat(); + }), + RESPAWN(9, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + readString(buf); + }), + PLAYER_POSITION_ONLY_ONGROUND(10, (user, buf) -> { + buf.readUnsignedByte(); + }), + PLAYER_POSITION_ONLY_POSITION(11, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION_ONLY_LOOK(12, (user, buf) -> { + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION(13, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + USE_BED(17, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readByte(); + buf.readInt(); + }), + ENTITY_ANIMATION(18, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + SPAWN_PLAYER(20, (user, buf) -> { + buf.readInt(); + readString(buf); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + }), + SPAWN_ITEM(21, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readByte(); + buf.readShort(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + COLLECT_ITEM(22, (user, buf) -> { + buf.readInt(); + buf.readInt(); + }), + SPAWN_ENTITY(23, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + int i = buf.readInt(); + if (i > 0) { + buf.readShort(); + buf.readShort(); + buf.readShort(); + } + }), + SPAWN_MOB(24, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + readEntityMetadatab1_5(buf); + }), + SPAWN_PAINTING(25, (user, buf) -> { + buf.readInt(); + readString(buf); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + SPAWN_EXPERIENCE_ORB(26, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readShort(); + }), + ENTITY_VELOCITY(28, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readShort(); + buf.readShort(); + }), + DESTROY_ENTITIES(29, (user, buf) -> { + buf.readInt(); + }), + ENTITY_MOVEMENT(30, (user, buf) -> { + buf.readInt(); + }), + ENTITY_POSITION(31, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_ROTATION(32, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_POSITION_AND_ROTATION(33, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_TELEPORT(34, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_HEAD_LOOK(35, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + ENTITY_STATUS(38, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + ATTACH_ENTITY(39, (user, buf) -> { + buf.readInt(); + buf.readInt(); + }), + ENTITY_METADATA(40, (user, buf) -> { + buf.readInt(); + readEntityMetadatab1_5(buf); + }), + ENTITY_EFFECT(41, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + }), + REMOVE_ENTITY_EFFECT(42, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + SET_EXPERIENCE(43, (user, buf) -> { + buf.readFloat(); + buf.readShort(); + buf.readShort(); + }), + PRE_CHUNK(50, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readByte(); + }), + CHUNK_DATA(51, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readBoolean(); + buf.readShort(); + buf.readShort(); + int x = buf.readInt(); + buf.readInt(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + MULTI_BLOCK_CHANGE(52, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readShort(); + int x = buf.readInt(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + BLOCK_CHANGE(53, (user, buf) -> { + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + buf.readUnsignedByte(); + }), + BLOCK_ACTION(54, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + buf.readUnsignedByte(); + buf.readUnsignedByte(); + }), + EXPLOSION(60, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + int x = buf.readInt(); + for (int i = 0; i < x; i++) { + buf.readByte(); + buf.readByte(); + buf.readByte(); + } + }), + EFFECT(61, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + }), + GAME_EVENT(70, (user, buf) -> { + buf.readByte(); + buf.readByte(); + }), + SPAWN_GLOBAL_ENTITY(71, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + OPEN_WINDOW(100, (user, buf) -> { + buf.readByte(); + buf.readByte(); + readString(buf); + buf.readByte(); + }), + CLOSE_WINDOW(101, (user, buf) -> { + buf.readByte(); + }), + SET_SLOT(103, (user, buf) -> { + buf.readByte(); + buf.readShort(); + readItemStack1_0(buf); + }), + WINDOW_ITEMS(104, (user, buf) -> { + buf.readByte(); + int x = buf.readShort(); + for (int i = 0; i < x; i++) readItemStack1_0(buf); + }), + WINDOW_PROPERTY(105, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readShort(); + }), + WINDOW_CONFIRMATION(106, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readByte(); + }), + CREATIVE_INVENTORY_ACTION(107, (user, buf) -> { + buf.readShort(); + readItemStack1_0(buf); + }), + UPDATE_SIGN(130, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + readString(buf); + readString(buf); + readString(buf); + readString(buf); + }), + MAP_DATA(131, (user, buf) -> { + buf.readShort(); + buf.readShort(); + short x = buf.readUnsignedByte(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + BLOCK_ENTITY_DATA(132, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + STATISTICS(200, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + PLAYER_INFO(201, (user, buf) -> { + readString(buf); + buf.readByte(); + buf.readShort(); + }), + PLUGIN_MESSAGE(250, (user, buf) -> { + readString(buf); + short s = buf.readShort(); + for (int i = 0; i < s; i++) buf.readByte(); + }), + DISCONNECT(255, (user, buf) -> { + readString(buf); + }); + + private static final ClientboundPackets1_2_1[] REGISTRY = new ClientboundPackets1_2_1[256]; + + static { + for (ClientboundPackets1_2_1 packet : values()) { + REGISTRY[packet.id] = packet; + } + } + + public static ClientboundPackets1_2_1 getPacket(final int id) { + return REGISTRY[id]; + } + + private final int id; + private final BiConsumer packetReader; + + ClientboundPackets1_2_1(final int id, final BiConsumer packetReader) { + this.id = id; + this.packetReader = packetReader; + } + + @Override + public int getId() { + return this.id; + } + + @Override + public String getName() { + return name(); + } + + @Override + public BiConsumer getPacketReader() { + return this.packetReader; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_4_5to1_2_1_3/Protocol1_2_4_5to1_2_1_3.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_4_5to1_2_1_3/Protocol1_2_4_5to1_2_1_3.java new file mode 100644 index 0000000..aa940b5 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_4_5to1_2_1_3/Protocol1_2_4_5to1_2_1_3.java @@ -0,0 +1,25 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_2_4_5to1_2_1_3; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.AbstractProtocol; +import net.raphimc.vialegacy.protocols.release.protocol1_3_1_2to1_2_4_5.ClientboundPackets1_2_4; +import net.raphimc.vialegacy.protocols.release.protocol1_3_1_2to1_2_4_5.ServerboundPackets1_2_4; +import net.raphimc.vialegacy.util.PreNettySplitter; + +public class Protocol1_2_4_5to1_2_1_3 extends AbstractProtocol { + + public Protocol1_2_4_5to1_2_1_3() { + super(ClientboundPackets1_2_1.class, ClientboundPackets1_2_4.class, ServerboundPackets1_2_1.class, ServerboundPackets1_2_4.class); + } + + @Override + protected void registerPackets() { + this.cancelServerbound(ServerboundPackets1_2_4.PLAYER_ABILITIES); + } + + @Override + public void init(UserConnection userConnection) { + userConnection.put(new PreNettySplitter(userConnection, Protocol1_2_4_5to1_2_1_3.class, ClientboundPackets1_2_1::getPacket)); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_4_5to1_2_1_3/ServerboundPackets1_2_1.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_4_5to1_2_1_3/ServerboundPackets1_2_1.java new file mode 100644 index 0000000..6f736f6 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_2_4_5to1_2_1_3/ServerboundPackets1_2_1.java @@ -0,0 +1,174 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_2_4_5to1_2_1_3; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.packet.ServerboundPacketType; +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.util.PreNettyPacketType; + +import java.util.function.BiConsumer; + +import static net.raphimc.vialegacy.util.PreNettyTypes.readItemStack1_0; +import static net.raphimc.vialegacy.util.PreNettyTypes.readString; + +public enum ServerboundPackets1_2_1 implements ServerboundPacketType, PreNettyPacketType { + + KEEP_ALIVE(0, (user, buf) -> { + buf.readInt(); + }), + LOGIN(1, (user, buf) -> { + buf.readInt(); + readString(buf); + readString(buf); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + HANDSHAKE(2, (user, buf) -> { + readString(buf); + }), + CHAT_MESSAGE(3, (user, buf) -> { + readString(buf); + }), + INTERACT_ENTITY(7, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readByte(); + }), + RESPAWN(9, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + readString(buf); + }), + PLAYER_MOVEMENT(10, (user, buf) -> { + buf.readUnsignedByte(); + }), + PLAYER_POSITION(11, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readUnsignedByte(); + }), + PLAYER_ROTATION(12, (user, buf) -> { + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION_AND_ROTATION(13, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_DIGGING(14, (user, buf) -> { + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + }), + PLAYER_BLOCK_PLACEMENT(15, (user, buf) -> { + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + readItemStack1_0(buf); + }), + HELD_ITEM_CHANGE(16, (user, buf) -> { + buf.readShort(); + }), + ANIMATION(18, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + ENTITY_ACTION(19, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + CLOSE_WINDOW(101, (user, buf) -> { + buf.readByte(); + }), + CLICK_WINDOW(102, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readByte(); + buf.readShort(); + buf.readBoolean(); + readItemStack1_0(buf); + }), + WINDOW_CONFIRMATION(106, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readByte(); + }), + CREATIVE_INVENTORY_ACTION(107, (user, buf) -> { + buf.readShort(); + readItemStack1_0(buf); + }), + CLICK_WINDOW_BUTTON(108, (user, buf) -> { + buf.readByte(); + buf.readByte(); + }), + UPDATE_SIGN(130, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + readString(buf); + readString(buf); + readString(buf); + readString(buf); + }), + PLUGIN_MESSAGE(250, (user, buf) -> { + readString(buf); + short s = buf.readShort(); + for (int i = 0; i < s; i++) buf.readByte(); + }), + SERVER_PING(254, (user, buf) -> { + }), + DISCONNECT(255, (user, buf) -> { + readString(buf); + }); + + private static final ServerboundPackets1_2_1[] REGISTRY = new ServerboundPackets1_2_1[256]; + + static { + for (ServerboundPackets1_2_1 packet : values()) { + REGISTRY[packet.id] = packet; + } + } + + public static ServerboundPackets1_2_1 getPacket(final int id) { + return REGISTRY[id]; + } + + private final int id; + private final BiConsumer packetReader; + + ServerboundPackets1_2_1(final int id, final BiConsumer packetReader) { + this.id = id; + this.packetReader = packetReader; + } + + @Override + public int getId() { + return this.id; + } + + @Override + public String getName() { + return name(); + } + + @Override + public BiConsumer getPacketReader() { + return this.packetReader; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/ClientboundPackets1_2_4.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/ClientboundPackets1_2_4.java new file mode 100644 index 0000000..dd6337a --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/ClientboundPackets1_2_4.java @@ -0,0 +1,411 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_3_1_2to1_2_4_5; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType; +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.util.PreNettyPacketType; + +import java.util.function.BiConsumer; + +import static net.raphimc.vialegacy.util.PreNettyTypes.*; + +public enum ClientboundPackets1_2_4 implements ClientboundPacketType, PreNettyPacketType { + + KEEP_ALIVE(0, (user, buf) -> { + buf.readInt(); + }), + JOIN_GAME(1, (user, buf) -> { + buf.readInt(); + readString(buf); + readString(buf); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + HANDSHAKE(2, (user, buf) -> { + readString(buf); + }), + CHAT_MESSAGE(3, (user, buf) -> { + readString(buf); + }), + TIME_UPDATE(4, (user, buf) -> { + buf.readLong(); + }), + ENTITY_EQUIPMENT(5, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readShort(); + buf.readShort(); + }), + SPAWN_POSITION(6, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + UPDATE_HEALTH(8, (user, buf) -> { + buf.readShort(); + buf.readShort(); + buf.readFloat(); + }), + RESPAWN(9, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + readString(buf); + }), + PLAYER_POSITION_ONLY_ONGROUND(10, (user, buf) -> { + buf.readUnsignedByte(); + }), + PLAYER_POSITION_ONLY_POSITION(11, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION_ONLY_LOOK(12, (user, buf) -> { + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION(13, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + USE_BED(17, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readByte(); + buf.readInt(); + }), + ENTITY_ANIMATION(18, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + SPAWN_PLAYER(20, (user, buf) -> { + buf.readInt(); + readString(buf); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + }), + SPAWN_ITEM(21, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readByte(); + buf.readShort(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + COLLECT_ITEM(22, (user, buf) -> { + buf.readInt(); + buf.readInt(); + }), + SPAWN_ENTITY(23, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + int i = buf.readInt(); + if (i > 0) { + buf.readShort(); + buf.readShort(); + buf.readShort(); + } + }), + SPAWN_MOB(24, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + readEntityMetadatab1_5(buf); + }), + SPAWN_PAINTING(25, (user, buf) -> { + buf.readInt(); + readString(buf); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + SPAWN_EXPERIENCE_ORB(26, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readShort(); + }), + ENTITY_VELOCITY(28, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readShort(); + buf.readShort(); + }), + DESTROY_ENTITIES(29, (user, buf) -> { + buf.readInt(); + }), + ENTITY_MOVEMENT(30, (user, buf) -> { + buf.readInt(); + }), + ENTITY_POSITION(31, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_ROTATION(32, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_POSITION_AND_ROTATION(33, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_TELEPORT(34, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_HEAD_LOOK(35, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + ENTITY_STATUS(38, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + ATTACH_ENTITY(39, (user, buf) -> { + buf.readInt(); + buf.readInt(); + }), + ENTITY_METADATA(40, (user, buf) -> { + buf.readInt(); + readEntityMetadatab1_5(buf); + }), + ENTITY_EFFECT(41, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + }), + REMOVE_ENTITY_EFFECT(42, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + SET_EXPERIENCE(43, (user, buf) -> { + buf.readFloat(); + buf.readShort(); + buf.readShort(); + }), + PRE_CHUNK(50, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readByte(); + }), + CHUNK_DATA(51, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readBoolean(); + buf.readShort(); + buf.readShort(); + int x = buf.readInt(); + buf.readInt(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + MULTI_BLOCK_CHANGE(52, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readShort(); + int x = buf.readInt(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + BLOCK_CHANGE(53, (user, buf) -> { + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + buf.readUnsignedByte(); + }), + BLOCK_ACTION(54, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + buf.readUnsignedByte(); + buf.readUnsignedByte(); + }), + EXPLOSION(60, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + int x = buf.readInt(); + for (int i = 0; i < x; i++) { + buf.readByte(); + buf.readByte(); + buf.readByte(); + } + }), + EFFECT(61, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + }), + GAME_EVENT(70, (user, buf) -> { + buf.readByte(); + buf.readByte(); + }), + SPAWN_GLOBAL_ENTITY(71, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + OPEN_WINDOW(100, (user, buf) -> { + buf.readByte(); + buf.readByte(); + readString(buf); + buf.readByte(); + }), + CLOSE_WINDOW(101, (user, buf) -> { + buf.readByte(); + }), + SET_SLOT(103, (user, buf) -> { + buf.readByte(); + buf.readShort(); + readItemStack1_0(buf); + }), + WINDOW_ITEMS(104, (user, buf) -> { + buf.readByte(); + int x = buf.readShort(); + for (int i = 0; i < x; i++) readItemStack1_0(buf); + }), + WINDOW_PROPERTY(105, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readShort(); + }), + WINDOW_CONFIRMATION(106, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readByte(); + }), + CREATIVE_INVENTORY_ACTION(107, (user, buf) -> { + buf.readShort(); + readItemStack1_0(buf); + }), + UPDATE_SIGN(130, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + readString(buf); + readString(buf); + readString(buf); + readString(buf); + }), + MAP_DATA(131, (user, buf) -> { + buf.readShort(); + buf.readShort(); + short x = buf.readUnsignedByte(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + BLOCK_ENTITY_DATA(132, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + STATISTICS(200, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + PLAYER_INFO(201, (user, buf) -> { + readString(buf); + buf.readByte(); + buf.readShort(); + }), + PLAYER_ABILITIES(202, (user, buf) -> { + buf.readBoolean(); + buf.readBoolean(); + buf.readBoolean(); + buf.readBoolean(); + }), + PLUGIN_MESSAGE(250, (user, buf) -> { + readString(buf); + short s = buf.readShort(); + for (int i = 0; i < s; i++) buf.readByte(); + }), + DISCONNECT(255, (user, buf) -> { + readString(buf); + }); + + private static final ClientboundPackets1_2_4[] REGISTRY = new ClientboundPackets1_2_4[256]; + + static { + for (ClientboundPackets1_2_4 packet : values()) { + REGISTRY[packet.id] = packet; + } + } + + public static ClientboundPackets1_2_4 getPacket(final int id) { + return REGISTRY[id]; + } + + private final int id; + private final BiConsumer packetReader; + + ClientboundPackets1_2_4(final int id, final BiConsumer packetReader) { + this.id = id; + this.packetReader = packetReader; + } + + @Override + public int getId() { + return this.id; + } + + @Override + public String getName() { + return name(); + } + + @Override + public BiConsumer getPacketReader() { + return this.packetReader; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/Protocol1_3_1_2to1_2_4_5.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/Protocol1_3_1_2to1_2_4_5.java new file mode 100644 index 0000000..a291138 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/Protocol1_3_1_2to1_2_4_5.java @@ -0,0 +1,828 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_3_1_2to1_2_4_5; + +import com.viaversion.viaversion.api.Via; +import com.viaversion.viaversion.api.connection.ProtocolInfo; +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.minecraft.Environment; +import com.viaversion.viaversion.api.minecraft.Position; +import com.viaversion.viaversion.api.minecraft.chunks.*; +import com.viaversion.viaversion.api.minecraft.entities.Entity1_10Types; +import com.viaversion.viaversion.api.minecraft.item.DataItem; +import com.viaversion.viaversion.api.minecraft.metadata.Metadata; +import com.viaversion.viaversion.api.platform.providers.ViaProviders; +import com.viaversion.viaversion.api.protocol.AbstractProtocol; +import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; +import com.viaversion.viaversion.api.protocol.packet.State; +import com.viaversion.viaversion.api.protocol.remapper.PacketRemapper; +import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.libs.opennbt.tag.builtin.*; +import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; +import net.raphimc.vialegacy.ViaLegacy; +import net.raphimc.vialegacy.api.*; +import net.raphimc.vialegacy.protocols.release.protocol1_3_1_2to1_2_4_5.data.EntityList; +import net.raphimc.vialegacy.protocols.release.protocol1_3_1_2to1_2_4_5.model.*; +import net.raphimc.vialegacy.protocols.release.protocol1_3_1_2to1_2_4_5.providers.OldAuthProvider; +import net.raphimc.vialegacy.protocols.release.protocol1_3_1_2to1_2_4_5.sound.Sound; +import net.raphimc.vialegacy.protocols.release.protocol1_3_1_2to1_2_4_5.sound.SoundType; +import net.raphimc.vialegacy.protocols.release.protocol1_3_1_2to1_2_4_5.storage.*; +import net.raphimc.vialegacy.protocols.release.protocol1_3_1_2to1_2_4_5.types.Chunk1_2_4Type; +import net.raphimc.vialegacy.protocols.release.protocol1_3_1_2to1_2_4_5.types.Types1_2_4; +import net.raphimc.vialegacy.protocols.release.protocol1_4_2to1_3_1_2.ClientboundPackets1_3_1; +import net.raphimc.vialegacy.protocols.release.protocol1_4_2to1_3_1_2.ServerboundPackets1_3_1; +import net.raphimc.vialegacy.protocols.release.protocol1_4_2to1_3_1_2.types.Types1_3_1; +import net.raphimc.vialegacy.protocols.release.protocol1_6_1to1_5_2.metadata.MetaIndex1_6_1to1_5_2; +import net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.storage.ChunkTracker; +import net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.storage.ProtocolMetadataStorage; +import net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.types.Types1_6_4; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.metadata.MetaIndex1_8to1_7_6; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.Chunk1_7_6Type; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.Types1_7_6; +import net.raphimc.vialegacy.util.PreNettySplitter; + +import java.util.*; +import java.util.logging.Level; + +public class Protocol1_3_1_2to1_2_4_5 extends AbstractProtocol { + + public Protocol1_3_1_2to1_2_4_5() { + super(ClientboundPackets1_2_4.class, ClientboundPackets1_3_1.class, ServerboundPackets1_2_4.class, ServerboundPackets1_3_1.class); + } + + @Override + protected void registerPackets() { + this.registerClientbound(State.LOGIN, ClientboundPackets1_2_4.HANDSHAKE.getId(), ClientboundPackets1_3_1.SHARED_KEY.getId(), new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + handleHandshake(wrapper); + wrapper.write(Type.SHORT_BYTE_ARRAY, new byte[0]); + wrapper.write(Type.SHORT_BYTE_ARRAY, new byte[0]); + wrapper.user().get(ProtocolMetadataStorage.class).skipEncryption = true; + }); + } + }); + this.registerClientbound(ClientboundPackets1_2_4.HANDSHAKE, null, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + handleHandshake(wrapper); // Very hacky but some servers expect the client to send back a Packet1Login + wrapper.cancel(); + }); + } + }); + this.registerClientbound(ClientboundPackets1_2_4.JOIN_GAME, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + read(Types1_6_4.STRING); // username + map(Types1_6_4.STRING); // level type + map(Type.INT, Type.BYTE); // game mode + map(Type.INT, Type.BYTE); // dimension id + map(Type.BYTE); // difficulty + map(Type.BYTE); // world height + map(Type.BYTE); // max players + handler(wrapper -> { + wrapper.user().get(ClientWorld.class).setEnvironment(wrapper.get(Type.BYTE, 1)); + wrapper.user().get(DimensionTracker.class).setDimension(wrapper.get(Type.BYTE, 1)); + final EntityTracker entityTracker = wrapper.user().get(EntityTracker.class); + entityTracker.setPlayerID(wrapper.get(Type.INT, 0)); + entityTracker.getTrackedEntities().put(entityTracker.getPlayerID(), new TrackedLivingEntity(entityTracker.getPlayerID(), new Location(8, 64, 8), Entity1_10Types.EntityType.PLAYER)); + }); + } + }); + this.registerClientbound(ClientboundPackets1_2_4.ENTITY_EQUIPMENT, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + map(Type.SHORT); // slot + handler(wrapper -> { + final int itemId = wrapper.read(Type.SHORT); // item id + final short itemDamage = wrapper.read(Type.SHORT); // item damage + wrapper.write(Types1_7_6.COMPRESSED_ITEM, itemId < 0 ? null : new DataItem(itemId, (byte) 1, itemDamage, null)); + }); + } + }); + this.registerClientbound(ClientboundPackets1_2_4.RESPAWN, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // dimension id + map(Type.BYTE); // difficulty + map(Type.BYTE); // game mode + map(Type.SHORT); // world height + map(Types1_6_4.STRING); // level type + handler(wrapper -> { + final int oldDim = wrapper.user().get(DimensionTracker.class).getDimensionId(); + final int newDim = wrapper.get(Type.INT, 0); + wrapper.user().get(ClientWorld.class).setEnvironment(newDim); + wrapper.user().get(DimensionTracker.class).setDimension(newDim); + if (oldDim != newDim) { + wrapper.user().get(ChestStateTracker.class).clear(); + final EntityTracker entityTracker = wrapper.user().get(EntityTracker.class); + entityTracker.getTrackedEntities().clear(); + entityTracker.getTrackedEntities().put(entityTracker.getPlayerID(), new TrackedLivingEntity(entityTracker.getPlayerID(), new Location(8, 64, 8), Entity1_10Types.EntityType.PLAYER)); + } + }); + } + }); + this.registerClientbound(ClientboundPackets1_2_4.SPAWN_PLAYER, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + map(Types1_6_4.STRING); // name + map(Type.INT); // x + map(Type.INT); // y + map(Type.INT); // z + map(Type.BYTE); // yaw + map(Type.BYTE); // pitch + map(Type.UNSIGNED_SHORT); // item + create(Types1_3_1.METADATA_LIST, new ArrayList<>()); // metadata + handler(wrapper -> { + final int entityId = wrapper.get(Type.INT, 0); + final double x = wrapper.get(Type.INT, 1) / 32.0D; + final double y = wrapper.get(Type.INT, 2) / 32.0D; + final double z = wrapper.get(Type.INT, 3) / 32.0D; + final EntityTracker tracker = wrapper.user().get(EntityTracker.class); + tracker.getTrackedEntities().put(entityId, new TrackedLivingEntity(entityId, new Location(x, y, z), Entity1_10Types.EntityType.PLAYER)); + }); + } + }); + this.registerClientbound(ClientboundPackets1_2_4.SPAWN_ITEM, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + map(Types1_3_1.NBTLESS_ITEM); // item + map(Type.INT); // x + map(Type.INT); // y + map(Type.INT); // z + map(Type.BYTE); // velocity x + map(Type.BYTE); // velocity y + map(Type.BYTE); // velocity z + handler(wrapper -> { + final EntityTracker tracker = wrapper.user().get(EntityTracker.class); + final int entityId = wrapper.get(Type.INT, 0); + final double x = wrapper.get(Type.INT, 1) / 32.0D; + final double y = wrapper.get(Type.INT, 2) / 32.0D; + final double z = wrapper.get(Type.INT, 3) / 32.0D; + tracker.getTrackedEntities().put(entityId, new TrackedEntity(entityId, new Location(x, y, z), Entity1_10Types.ObjectType.ITEM.getType())); + }); + } + }); + this.registerClientbound(ClientboundPackets1_2_4.COLLECT_ITEM, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // collected entity id + map(Type.INT); // collector entity id + handler(wrapper -> { + wrapper.user().get(EntityTracker.class).getTrackedEntities().remove(wrapper.get(Type.INT, 0)); + }); + } + }); + this.registerClientbound(ClientboundPackets1_2_4.SPAWN_ENTITY, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + map(Type.BYTE); // type id + map(Type.INT); // x + map(Type.INT); // y + map(Type.INT); // z + map(Type.INT); // data + handler(wrapper -> { + final EntityTracker entityTracker = wrapper.user().get(EntityTracker.class); + final int entityId = wrapper.get(Type.INT, 0); + final byte typeId = wrapper.get(Type.BYTE, 0); + final Entity1_10Types.EntityType type; + if (typeId == 70 || typeId == 71 || typeId == 74) { + type = Entity1_10Types.ObjectType.FALLING_BLOCK.getType(); + wrapper.set(Type.BYTE, 0, (byte) Entity1_10Types.ObjectType.FALLING_BLOCK.getId()); + } else if (typeId == 10 || typeId == 11 || typeId == 12) { + type = Entity1_10Types.ObjectType.MINECART.getType(); + } else { + type = Entity1_10Types.getTypeFromId(typeId, true); + } + final double x = wrapper.get(Type.INT, 1) / 32.0D; + final double y = wrapper.get(Type.INT, 2) / 32.0D; + final double z = wrapper.get(Type.INT, 3) / 32.0D; + final Location location = new Location(x, y, z); + int throwerEntityId = wrapper.get(Type.INT, 4); + short speedX = 0; + short speedY = 0; + short speedZ = 0; + if (throwerEntityId > 0) { + speedX = wrapper.read(Type.SHORT); // velocity x + speedY = wrapper.read(Type.SHORT); // velocity y + speedZ = wrapper.read(Type.SHORT); // velocity z + } + if (typeId == 70) throwerEntityId = 12; // sand + if (typeId == 71) throwerEntityId = 13; // gravel + if (typeId == 74) throwerEntityId = 122; // dragon egg + if (typeId == Entity1_10Types.ObjectType.FISHIHNG_HOOK.getId()) { + final Optional nearestEntity = entityTracker.getNearestEntity(location, 2.0D, e -> e.getEntityType().isOrHasParent(Entity1_10Types.EntityType.PLAYER)); + throwerEntityId = nearestEntity.map(AbstractTrackedEntity::getEntityId).orElseGet(entityTracker::getPlayerID); + } + wrapper.set(Type.INT, 4, throwerEntityId); + if (throwerEntityId > 0) { + wrapper.write(Type.SHORT, speedX); + wrapper.write(Type.SHORT, speedY); + wrapper.write(Type.SHORT, speedZ); + } + + entityTracker.getTrackedEntities().put(entityId, new TrackedEntity(entityId, location, type)); + final Entity1_10Types.ObjectType objectType = Entity1_10Types.ObjectType.findById(typeId).orElse(null); + if (objectType == null) return; + + float pitch; + switch (objectType) { + case TNT_PRIMED: + entityTracker.playSoundAt(location, Sound.RANDOM_FUSE, 1.0F, 1.0F); + break; + case TIPPED_ARROW: + pitch = 1.0F / (entityTracker.RND.nextFloat() * 0.4F + 1.2F) + 0.5F; + entityTracker.playSoundAt(location, Sound.RANDOM_BOW, 1.0F, pitch); + break; + case SNOWBALL: + case EGG: + case ENDER_PEARL: + case ENDER_SIGNAL: + case POTION: + case THROWN_EXP_BOTTLE: + case FISHIHNG_HOOK: + pitch = 0.4F / (entityTracker.RND.nextFloat() * 0.4F + 0.8F); + entityTracker.playSoundAt(location, Sound.RANDOM_BOW, 0.5F, pitch); + break; + } + }); + } + }); + this.registerClientbound(ClientboundPackets1_2_4.SPAWN_MOB, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + map(Type.UNSIGNED_BYTE); // type id + map(Type.INT); // x + map(Type.INT); // y + map(Type.INT); // z + map(Type.BYTE); // yaw + map(Type.BYTE); // pitch + map(Type.BYTE); // head yaw + create(Type.SHORT, (short) 0); // velocity x + create(Type.SHORT, (short) 0); // velocity y + create(Type.SHORT, (short) 0); // velocity z + map(Types1_3_1.METADATA_LIST); // metadata + handler(wrapper -> { + final int entityId = wrapper.get(Type.INT, 0); + final short type = wrapper.get(Type.UNSIGNED_BYTE, 0); + final double x = wrapper.get(Type.INT, 1) / 32.0D; + final double y = wrapper.get(Type.INT, 2) / 32.0D; + final double z = wrapper.get(Type.INT, 3) / 32.0D; + final List metadataList = wrapper.get(Types1_3_1.METADATA_LIST, 0); + final Entity1_10Types.EntityType entityType = Entity1_10Types.getTypeFromId(type, false); + final EntityTracker tracker = wrapper.user().get(EntityTracker.class); + tracker.getTrackedEntities().put(entityId, new TrackedLivingEntity(entityId, new Location(x, y, z), entityType)); + tracker.updateEntityMetadata(entityId, metadataList); + handleEntityMetadata(entityId, metadataList, wrapper); + }); + } + }); + this.registerClientbound(ClientboundPackets1_2_4.DESTROY_ENTITIES, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT, Types1_7_6.INT_ARRAY, i -> new int[]{i}); + handler(wrapper -> { + final EntityTracker tracker = wrapper.user().get(EntityTracker.class); + for (int entityId : wrapper.get(Types1_7_6.INT_ARRAY, 0)) { + tracker.getTrackedEntities().remove(entityId); + } + }); + } + }); + this.registerClientbound(ClientboundPackets1_2_4.ENTITY_POSITION, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + map(Type.BYTE); // x + map(Type.BYTE); // y + map(Type.BYTE); // z + handler(wrapper -> { + final EntityTracker tracker = wrapper.user().get(EntityTracker.class); + final int entityId = wrapper.get(Type.INT, 0); + final byte x = wrapper.get(Type.BYTE, 0); + final byte y = wrapper.get(Type.BYTE, 1); + final byte z = wrapper.get(Type.BYTE, 2); + tracker.updateEntityLocation(entityId, x, y, z, true); + }); + } + }); + this.registerClientbound(ClientboundPackets1_2_4.ENTITY_POSITION_AND_ROTATION, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + map(Type.BYTE); // x + map(Type.BYTE); // y + map(Type.BYTE); // z + map(Type.BYTE); // yaw + map(Type.BYTE); // pitch + handler(wrapper -> { + final EntityTracker tracker = wrapper.user().get(EntityTracker.class); + final int entityId = wrapper.get(Type.INT, 0); + final byte x = wrapper.get(Type.BYTE, 0); + final byte y = wrapper.get(Type.BYTE, 1); + final byte z = wrapper.get(Type.BYTE, 2); + tracker.updateEntityLocation(entityId, x, y, z, true); + }); + } + }); + this.registerClientbound(ClientboundPackets1_2_4.ENTITY_TELEPORT, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + map(Type.INT); // x + map(Type.INT); // y + map(Type.INT); // z + map(Type.BYTE); // yaw + map(Type.BYTE); // pitch + handler(wrapper -> { + final EntityTracker tracker = wrapper.user().get(EntityTracker.class); + final int entityId = wrapper.get(Type.INT, 0); + final int x = wrapper.get(Type.INT, 1); + final int y = wrapper.get(Type.INT, 2); + final int z = wrapper.get(Type.INT, 3); + tracker.updateEntityLocation(entityId, x, y, z, false); + }); + } + }); + this.registerClientbound(ClientboundPackets1_2_4.ENTITY_STATUS, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + map(Type.BYTE); // status + handler(wrapper -> { + final EntityTracker entityTracker = wrapper.user().get(EntityTracker.class); + final int entityId = wrapper.get(Type.INT, 0); + final byte status = wrapper.get(Type.BYTE, 0); + + if (status == 2) { // hurt + entityTracker.playSound(entityId, SoundType.HURT); + } else if (status == 3) { // death + entityTracker.playSound(entityId, SoundType.DEATH); + } + }); + } + }); + this.registerClientbound(ClientboundPackets1_2_4.ENTITY_METADATA, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + map(Types1_3_1.METADATA_LIST); // metadata + handler(wrapper -> { + final int entityId = wrapper.get(Type.INT, 0); + final List metadataList = wrapper.get(Types1_3_1.METADATA_LIST, 0); + + final EntityTracker entityTracker = wrapper.user().get(EntityTracker.class); + if (entityTracker.getTrackedEntities().containsKey(entityId)) { + entityTracker.updateEntityMetadata(entityId, metadataList); + handleEntityMetadata(entityId, metadataList, wrapper); + } else { + wrapper.cancel(); + } + }); + } + }); + this.registerClientbound(ClientboundPackets1_2_4.PRE_CHUNK, ClientboundPackets1_3_1.CHUNK_DATA, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + final int chunkX = wrapper.read(Type.INT); // x + final int chunkZ = wrapper.read(Type.INT); // z + final short mode = wrapper.read(Type.UNSIGNED_BYTE); // mode + final boolean load = mode != 0; + + wrapper.user().get(ChestStateTracker.class).unload(chunkX, chunkZ); + + if (!load) { + final Chunk chunk = new BaseChunk(chunkX, chunkZ, true, false, 0, new ChunkSection[16], null, new ArrayList<>()); + wrapper.write(new Chunk1_7_6Type(wrapper.user().get(ClientWorld.class)), chunk); + } else { + wrapper.cancel(); + } + }); + } + }); + this.registerClientbound(ClientboundPackets1_2_4.CHUNK_DATA, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + final ClientWorld clientWorld = wrapper.user().get(ClientWorld.class); + Chunk chunk = wrapper.read(new Chunk1_2_4Type(clientWorld)); + + wrapper.user().get(ChestStateTracker.class).unload(chunk.getX(), chunk.getZ()); + + if (chunk.isFullChunk() && chunk.getBitmask() == 0) { // Remap to empty chunk + ViaLegacy.getPlatform().getLogger().warning("Received empty 1.2.5 chunk packet"); + chunk = new BaseChunk(chunk.getX(), chunk.getZ(), true, false, 65535, new ChunkSection[16], new int[256], new ArrayList<>()); + for (int i = 0; i < chunk.getSections().length; i++) { + final ChunkSection chunkSection = chunk.getSections()[i] = new ChunkSectionImpl(true); + chunkSection.palette(PaletteType.BLOCKS).addId(0); + if (clientWorld.getEnvironment() == Environment.NORMAL) { + final byte[] skyLight = new byte[2048]; + Arrays.fill(skyLight, (byte) 255); + chunkSection.getLight().setSkyLight(skyLight); + } + } + } + + wrapper.write(new Chunk1_7_6Type(clientWorld), chunk); + }); + } + }); + this.registerClientbound(ClientboundPackets1_2_4.BLOCK_CHANGE, new PacketRemapper() { + @Override + public void registerMap() { + map(Types1_7_6.POSITION_UBYTE); // position + map(Type.UNSIGNED_BYTE, Type.UNSIGNED_SHORT); // block id + map(Type.UNSIGNED_BYTE); // block data + } + }); + this.registerClientbound(ClientboundPackets1_2_4.BLOCK_ACTION, new PacketRemapper() { + @Override + public void registerMap() { + map(Types1_7_6.POSITION_SHORT); // position + map(Type.BYTE); // type + map(Type.BYTE); // data + handler(wrapper -> { + final IdAndData block = wrapper.user().get(ChunkTracker.class).getBlockNotNull(wrapper.get(Types1_7_6.POSITION_SHORT, 0)); + wrapper.write(Type.SHORT, (short) block.id); // block id + }); + handler(wrapper -> { + final EntityTracker entityTracker = wrapper.user().get(EntityTracker.class); + final Position pos = wrapper.get(Types1_7_6.POSITION_SHORT, 0); + final byte type = wrapper.get(Type.BYTE, 0); + final short data = wrapper.get(Type.BYTE, 1); + final short blockId = wrapper.get(Type.SHORT, 0); + if (blockId <= 0) return; + + float volume = 1F; + float pitch = 1F; + Sound sound = null; + + if (blockId == BlockList1_6.music.blockID) { + switch (type) { + default: + case 0: + sound = Sound.NOTE_HARP; + break; + case 1: + sound = Sound.NOTE_CLICK; + break; + case 2: + sound = Sound.NOTE_SNARE; + break; + case 3: + sound = Sound.NOTE_HAT; + break; + case 4: + sound = Sound.NOTE_BASS_ATTACK; + break; + } + volume = 3F; + pitch = (float) Math.pow(2D, (double) (data - 12) / 12D); + } else if (blockId == BlockList1_6.chest.blockID) { + if (type == 1) { + final ChestStateTracker chestStateTracker = wrapper.user().get(ChestStateTracker.class); + if (chestStateTracker.isChestOpen(pos) && data <= 0) { + sound = Sound.CHEST_CLOSE; + chestStateTracker.closeChest(pos); + } else if (!chestStateTracker.isChestOpen(pos) && data > 0) { + sound = Sound.CHEST_OPEN; + chestStateTracker.openChest(pos); + } + volume = 0.5F; + pitch = entityTracker.RND.nextFloat() * 0.1F + 0.9F; + } + } else if (blockId == BlockList1_6.pistonBase.blockID || blockId == BlockList1_6.pistonStickyBase.blockID) { + if (type == 0) { + sound = Sound.PISTON_OUT; + volume = 0.5F; + pitch = entityTracker.RND.nextFloat() * 0.25F + 0.6F; + } else if (type == 1) { + sound = Sound.PISTON_IN; + volume = 0.5F; + pitch = entityTracker.RND.nextFloat() * 0.15F + 0.6F; + } + } + + if (sound != null) { + entityTracker.playSoundAt(new Location(pos), sound, volume, pitch); + } + }); + } + }); + this.registerClientbound(ClientboundPackets1_2_4.EXPLOSION, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.DOUBLE); // x + map(Type.DOUBLE); // y + map(Type.DOUBLE); // z + map(Type.FLOAT); // radius + map(Type.INT); // record count + handler(wrapper -> { + final int count = wrapper.get(Type.INT, 0); + for (int i = 0; i < count * 3; i++) wrapper.passthrough(Type.BYTE); + }); + create(Type.FLOAT, 0F); // velocity x + create(Type.FLOAT, 0F); // velocity y + create(Type.FLOAT, 0F); // velocity z + handler(wrapper -> { + final EntityTracker entityTracker = wrapper.user().get(EntityTracker.class); + final Location loc = new Location(wrapper.get(Type.DOUBLE, 0), wrapper.get(Type.DOUBLE, 1), wrapper.get(Type.DOUBLE, 2)); + entityTracker.playSoundAt(loc, Sound.RANDOM_EXPLODE, 4F, (1.0F + (entityTracker.RND.nextFloat() - entityTracker.RND.nextFloat()) * 0.2F) * 0.7F); + }); + } + }); + this.registerClientbound(ClientboundPackets1_2_4.SET_SLOT, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.BYTE); // window id + map(Type.SHORT); // slot + map(Types1_2_4.COMPRESSED_NBT_ITEM, Types1_7_6.COMPRESSED_ITEM); // item + } + }); + this.registerClientbound(ClientboundPackets1_2_4.WINDOW_ITEMS, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.BYTE); // window id + map(Types1_2_4.COMPRESSED_NBT_ITEM_ARRAY, Types1_7_6.COMPRESSED_ITEM_ARRAY); // items + } + }); + this.registerClientbound(ClientboundPackets1_2_4.BLOCK_ENTITY_DATA, new PacketRemapper() { + @Override + public void registerMap() { + map(Types1_7_6.POSITION_SHORT); // position + map(Type.BYTE); // type + handler(wrapper -> { + final int entityId = wrapper.read(Type.INT); // entity id + wrapper.read(Type.INT); // unused + wrapper.read(Type.INT); // unused + if (wrapper.get(Type.BYTE, 0) != 1) { // spawner + wrapper.cancel(); + return; + } + final Position pos = wrapper.get(Types1_7_6.POSITION_SHORT, 0); + + final CompoundTag tag = new CompoundTag(); + tag.put("EntityId", new StringTag(EntityList.getEntityName(entityId))); + tag.put("Delay", new ShortTag((short) 20)); + tag.put("x", new IntTag(pos.x())); + tag.put("y", new IntTag(pos.y())); + tag.put("z", new IntTag(pos.z())); + wrapper.write(Types1_7_6.COMPRESSED_NBT, tag); + }); + } + }); + this.registerClientbound(ClientboundPackets1_2_4.PLAYER_ABILITIES, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + final boolean disableDamage = wrapper.read(Type.BOOLEAN); // invulnerable + final boolean flying = wrapper.read(Type.BOOLEAN); // flying + final boolean allowFlying = wrapper.read(Type.BOOLEAN); // allow flying + final boolean creativeMode = wrapper.read(Type.BOOLEAN); // creative mode + + byte mask = 0; + if (disableDamage) mask |= 1; + if (flying) mask |= 2; + if (allowFlying) mask |= 4; + if (creativeMode) mask |= 8; + + wrapper.write(Type.BYTE, mask); // flags + wrapper.write(Type.BYTE, (byte) (0.05f * 255)); // fly speed + wrapper.write(Type.BYTE, (byte) (0.1f * 255)); // walk speed + }); + } + }); + + this.registerServerbound(State.LOGIN, ServerboundPackets1_2_4.HANDSHAKE.getId(), ServerboundPackets1_3_1.CLIENT_PROTOCOL.getId(), new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + wrapper.read(Type.UNSIGNED_BYTE); // protocol id + final String userName = wrapper.read(Types1_6_4.STRING); // user name + final String hostname = wrapper.read(Types1_6_4.STRING); // hostname + final int port = wrapper.read(Type.INT); // port + wrapper.write(Types1_6_4.STRING, userName + ";" + hostname + ":" + port); // info + }); + } + }); + this.cancelServerbound(ServerboundPackets1_3_1.CLIENT_PROTOCOL); + this.cancelServerbound(ServerboundPackets1_3_1.SHARED_KEY); + this.registerServerbound(ServerboundPackets1_3_1.PLAYER_POSITION, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.DOUBLE); // x + map(Type.DOUBLE); // y + map(Type.DOUBLE); // stance + map(Type.DOUBLE); // z + map(Type.BOOLEAN); // onGround + handler(wrapper -> { + final EntityTracker entityTracker = wrapper.user().get(EntityTracker.class); + final AbstractTrackedEntity player = entityTracker.getTrackedEntities().get(entityTracker.getPlayerID()); + if (wrapper.get(Type.DOUBLE, 1) == -999D && wrapper.get(Type.DOUBLE, 2) == -999D) { + player.setRiding(true); + } else { + player.setRiding(false); + player.getLocation().setX(wrapper.get(Type.DOUBLE, 0)); + player.getLocation().setY(wrapper.get(Type.DOUBLE, 1)); + player.getLocation().setZ(wrapper.get(Type.DOUBLE, 3)); + } + }); + } + }); + this.registerServerbound(ServerboundPackets1_3_1.PLAYER_POSITION_AND_ROTATION, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.DOUBLE); // x + map(Type.DOUBLE); // y + map(Type.DOUBLE); // stance + map(Type.DOUBLE); // z + map(Type.FLOAT); // yaw + map(Type.FLOAT); // pitch + map(Type.BOOLEAN); // onGround + handler(wrapper -> { + final EntityTracker entityTracker = wrapper.user().get(EntityTracker.class); + final AbstractTrackedEntity player = entityTracker.getTrackedEntities().get(entityTracker.getPlayerID()); + if (wrapper.get(Type.DOUBLE, 1) == -999D && wrapper.get(Type.DOUBLE, 2) == -999D) { + player.setRiding(true); + } else { + player.setRiding(false); + player.getLocation().setX(wrapper.get(Type.DOUBLE, 0)); + player.getLocation().setY(wrapper.get(Type.DOUBLE, 1)); + player.getLocation().setZ(wrapper.get(Type.DOUBLE, 3)); + } + }); + } + }); + this.registerServerbound(ServerboundPackets1_3_1.PLAYER_BLOCK_PLACEMENT, new PacketRemapper() { + @Override + public void registerMap() { + map(Types1_7_6.POSITION_UBYTE); // position + map(Type.UNSIGNED_BYTE); // direction + map(Types1_7_6.COMPRESSED_ITEM, Types1_2_4.COMPRESSED_NBT_ITEM); // item + read(Type.UNSIGNED_BYTE); // offset x + read(Type.UNSIGNED_BYTE); // offset y + read(Type.UNSIGNED_BYTE); // offset z + } + }); + this.registerServerbound(ServerboundPackets1_3_1.CLICK_WINDOW, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.BYTE); // window id + map(Type.SHORT); // slot + map(Type.BYTE); // button + map(Type.SHORT); // action + map(Type.BYTE); // mode + map(Types1_7_6.COMPRESSED_ITEM, Types1_2_4.COMPRESSED_NBT_ITEM); // item + } + }); + this.registerServerbound(ServerboundPackets1_3_1.CREATIVE_INVENTORY_ACTION, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.SHORT); // slot + map(Types1_7_6.COMPRESSED_ITEM, Types1_2_4.COMPRESSED_NBT_ITEM); // item + } + }); + this.registerServerbound(ServerboundPackets1_3_1.PLAYER_ABILITIES, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + final byte mask = wrapper.read(Type.BYTE); // flags + wrapper.read(Type.BYTE); // fly speed + wrapper.read(Type.BYTE); // walk speed + + final boolean disableDamage = ((mask & 1) > 0); + final boolean flying = ((mask & 2) > 0); + final boolean allowFlying = ((mask & 4) > 0); + final boolean creativeMode = ((mask & 8) > 0); + + wrapper.write(Type.BOOLEAN, disableDamage); // invulnerable + wrapper.write(Type.BOOLEAN, flying); // flying + wrapper.write(Type.BOOLEAN, allowFlying); // allow flying + wrapper.write(Type.BOOLEAN, creativeMode); // creative mode + }); + } + }); + this.registerServerbound(ServerboundPackets1_3_1.CLIENT_STATUS, ServerboundPackets1_2_4.RESPAWN, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + final byte action = wrapper.read(Type.BYTE); // force respawn + if (action != 1) { + wrapper.cancel(); + } + wrapper.write(Type.INT, 0); // dimension id + wrapper.write(Type.BYTE, (byte) 0); // difficulty + wrapper.write(Type.BYTE, (byte) 0); // game mode + wrapper.write(Type.SHORT, (short) 0); // world height + wrapper.write(Types1_6_4.STRING, ""); // level type + }); + } + }); + this.cancelServerbound(ServerboundPackets1_3_1.TAB_COMPLETE); + this.cancelServerbound(ServerboundPackets1_3_1.CLIENT_SETTINGS); + } + + private void handleEntityMetadata(final int entityId, final List metadataList, final PacketWrapper wrapper) throws Exception { + final EntityTracker tracker = wrapper.user().get(EntityTracker.class); + if (entityId == tracker.getPlayerID()) return; + + final AbstractTrackedEntity entity = tracker.getTrackedEntities().get(entityId); + for (Metadata metadata : metadataList) { + if (MetaIndex1_6_1to1_5_2.searchIndex(entity.getEntityType(), metadata.id()) != null) continue; + final MetaIndex1_8to1_7_6 index = MetaIndex1_8to1_7_6.searchIndex(entity.getEntityType(), metadata.id()); + + if (index == MetaIndex1_8to1_7_6.ENTITY_FLAGS) { + if ((metadata.value() & 4) != 0) { // entity mount + final Optional oNearbyEntity = tracker.getNearestEntity(entity.getLocation(), 1.0D, e -> { + return e.getEntityType().isOrHasParent(Entity1_10Types.EntityType.MINECART_RIDEABLE) || e.getEntityType().isOrHasParent(Entity1_10Types.EntityType.PIG) || e.getEntityType().isOrHasParent(Entity1_10Types.EntityType.BOAT); + }); + + if (oNearbyEntity.isPresent()) { + entity.setRiding(true); + final AbstractTrackedEntity nearbyEntity = oNearbyEntity.get(); + + final PacketWrapper attachEntity = PacketWrapper.create(ClientboundPackets1_3_1.ATTACH_ENTITY, wrapper.user()); + attachEntity.write(Type.INT, entityId); // riding entity id + attachEntity.write(Type.INT, nearbyEntity.getEntityId()); // vehicle entity id + + wrapper.send(Protocol1_3_1_2to1_2_4_5.class); + attachEntity.send(Protocol1_3_1_2to1_2_4_5.class); + wrapper.cancel(); + } + } else if ((metadata.value() & 4) == 0 && entity.isRiding()) { // entity unmount + entity.setRiding(false); + + final PacketWrapper detachEntity = PacketWrapper.create(ClientboundPackets1_3_1.ATTACH_ENTITY, wrapper.user()); + detachEntity.write(Type.INT, entityId); // riding entity id + detachEntity.write(Type.INT, -1); // vehicle entity id + + detachEntity.send(Protocol1_3_1_2to1_2_4_5.class); + wrapper.send(Protocol1_3_1_2to1_2_4_5.class); + wrapper.cancel(); + } + break; + } else if (index == MetaIndex1_8to1_7_6.CREEPER_STATE) { + if(metadata.value() > 0) { + tracker.playSoundAt(entity.getLocation(), Sound.RANDOM_FUSE, 1.0F, 0.5F); + } + } + } + } + + private void handleHandshake(final PacketWrapper wrapper) throws Exception { + final ProtocolInfo info = wrapper.user().getProtocolInfo(); + final String serverHash = wrapper.read(Types1_6_4.STRING); // server hash + if (!serverHash.trim().isEmpty() && !serverHash.equalsIgnoreCase("-")) { + try { + Via.getManager().getProviders().get(OldAuthProvider.class).sendAuthRequest(wrapper.user(), serverHash); + } catch (Throwable e) { + ViaLegacy.getPlatform().getLogger().log(Level.WARNING, "Could not authenticate with mojang for joinserver request!", e); + wrapper.cancel(); + final PacketWrapper kick = PacketWrapper.create(ClientboundPackets1_3_1.DISCONNECT, wrapper.user()); + kick.write(Types1_6_4.STRING, "Failed to log in: Invalid session (Try restarting your game and the launcher)"); // reason + kick.send(Protocol1_3_1_2to1_2_4_5.class); + return; + } + } + + final PacketWrapper login = PacketWrapper.create(ServerboundPackets1_2_4.LOGIN, wrapper.user()); + login.write(Type.INT, -(info.getServerProtocolVersion() >> 2)); // protocol id + login.write(Types1_6_4.STRING, info.getUsername()); // username + login.write(Types1_6_4.STRING, ""); // level type + login.write(Type.INT, 0); // game mode + login.write(Type.INT, 0); // dimension id + login.write(Type.BYTE, (byte) 0); // difficulty + login.write(Type.BYTE, (byte) 0); // world height + login.write(Type.BYTE, (byte) 0); // max players + + final State oldState = info.getState(); + info.setState(State.LOGIN); + login.sendToServer(Protocol1_3_1_2to1_2_4_5.class); + info.setState(oldState); + } + + @Override + public void register(ViaProviders providers) { + providers.register(OldAuthProvider.class, new OldAuthProvider()); + } + + @Override + public void init(UserConnection userConnection) { + userConnection.put(new PreNettySplitter(userConnection, Protocol1_3_1_2to1_2_4_5.class, ClientboundPackets1_2_4::getPacket)); + + userConnection.put(new ChestStateTracker(userConnection)); + userConnection.put(new EntityTracker(userConnection)); + userConnection.put(new DimensionTracker(userConnection)); + if (!userConnection.has(ClientWorld.class)) { + userConnection.put(new ClientWorld(userConnection)); + } + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/ServerboundPackets1_2_4.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/ServerboundPackets1_2_4.java new file mode 100644 index 0000000..1b2ed9d --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/ServerboundPackets1_2_4.java @@ -0,0 +1,180 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_3_1_2to1_2_4_5; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.packet.ServerboundPacketType; +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.util.PreNettyPacketType; + +import java.util.function.BiConsumer; + +import static net.raphimc.vialegacy.util.PreNettyTypes.readItemStack1_0; +import static net.raphimc.vialegacy.util.PreNettyTypes.readString; + +public enum ServerboundPackets1_2_4 implements ServerboundPacketType, PreNettyPacketType { + + KEEP_ALIVE(0, (user, buf) -> { + buf.readInt(); + }), + LOGIN(1, (user, buf) -> { + buf.readInt(); + readString(buf); + readString(buf); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + HANDSHAKE(2, (user, buf) -> { + readString(buf); + }), + CHAT_MESSAGE(3, (user, buf) -> { + readString(buf); + }), + INTERACT_ENTITY(7, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readByte(); + }), + RESPAWN(9, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + readString(buf); + }), + PLAYER_MOVEMENT(10, (user, buf) -> { + buf.readUnsignedByte(); + }), + PLAYER_POSITION(11, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readUnsignedByte(); + }), + PLAYER_ROTATION(12, (user, buf) -> { + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION_AND_ROTATION(13, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_DIGGING(14, (user, buf) -> { + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + }), + PLAYER_BLOCK_PLACEMENT(15, (user, buf) -> { + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + readItemStack1_0(buf); + }), + HELD_ITEM_CHANGE(16, (user, buf) -> { + buf.readShort(); + }), + ANIMATION(18, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + ENTITY_ACTION(19, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + CLOSE_WINDOW(101, (user, buf) -> { + buf.readByte(); + }), + CLICK_WINDOW(102, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readByte(); + buf.readShort(); + buf.readBoolean(); + readItemStack1_0(buf); + }), + WINDOW_CONFIRMATION(106, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readByte(); + }), + CREATIVE_INVENTORY_ACTION(107, (user, buf) -> { + buf.readShort(); + readItemStack1_0(buf); + }), + CLICK_WINDOW_BUTTON(108, (user, buf) -> { + buf.readByte(); + buf.readByte(); + }), + UPDATE_SIGN(130, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + readString(buf); + readString(buf); + readString(buf); + readString(buf); + }), + PLAYER_ABILITIES(202, (user, buf) -> { + buf.readBoolean(); + buf.readBoolean(); + buf.readBoolean(); + buf.readBoolean(); + }), + PLUGIN_MESSAGE(250, (user, buf) -> { + readString(buf); + short s = buf.readShort(); + for (int i = 0; i < s; i++) buf.readByte(); + }), + SERVER_PING(254, (user, buf) -> { + }), + DISCONNECT(255, (user, buf) -> { + readString(buf); + }); + + private static final ServerboundPackets1_2_4[] REGISTRY = new ServerboundPackets1_2_4[256]; + + static { + for (ServerboundPackets1_2_4 packet : values()) { + REGISTRY[packet.id] = packet; + } + } + + public static ServerboundPackets1_2_4 getPacket(final int id) { + return REGISTRY[id]; + } + + private final int id; + private final BiConsumer packetReader; + + ServerboundPackets1_2_4(final int id, final BiConsumer packetReader) { + this.id = id; + this.packetReader = packetReader; + } + + @Override + public int getId() { + return this.id; + } + + @Override + public String getName() { + return name(); + } + + @Override + public BiConsumer getPacketReader() { + return this.packetReader; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/data/EntityList.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/data/EntityList.java new file mode 100644 index 0000000..185a1ef --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/data/EntityList.java @@ -0,0 +1,64 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_3_1_2to1_2_4_5.data; + +import com.google.common.collect.BiMap; +import com.google.common.collect.HashBiMap; + +public class EntityList { + + private static final BiMap ENTITY_IDS = HashBiMap.create(); + + static { + ENTITY_IDS.put("Item", 1); + ENTITY_IDS.put("XPOrb", 2); + ENTITY_IDS.put("Painting", 9); + ENTITY_IDS.put("Arrow", 10); + ENTITY_IDS.put("Snowball", 11); + ENTITY_IDS.put("Fireball", 12); + ENTITY_IDS.put("SmallFireball", 13); + ENTITY_IDS.put("ThrownEnderpearl", 14); + ENTITY_IDS.put("EyeOfEnderSignal", 15); + ENTITY_IDS.put("ThrownPotion", 16); + ENTITY_IDS.put("ThrownExpBottle", 17); + ENTITY_IDS.put("PrimedTnt", 20); + ENTITY_IDS.put("FallingSand", 21); + ENTITY_IDS.put("Minecart", 40); + ENTITY_IDS.put("Boat", 41); + ENTITY_IDS.put("Mob", 48); + ENTITY_IDS.put("Monster", 49); + ENTITY_IDS.put("Creeper", 50); + ENTITY_IDS.put("Skeleton", 51); + ENTITY_IDS.put("Spider", 52); + ENTITY_IDS.put("Giant", 53); + ENTITY_IDS.put("Zombie", 54); + ENTITY_IDS.put("Slime", 55); + ENTITY_IDS.put("Ghast", 56); + ENTITY_IDS.put("PigZombie", 57); + ENTITY_IDS.put("Enderman", 58); + ENTITY_IDS.put("CaveSpider", 59); + ENTITY_IDS.put("Silverfish", 60); + ENTITY_IDS.put("Blaze", 61); + ENTITY_IDS.put("LavaSlime", 62); + ENTITY_IDS.put("EnderDragon", 63); + ENTITY_IDS.put("Pig", 90); + ENTITY_IDS.put("Sheep", 91); + ENTITY_IDS.put("Cow", 92); + ENTITY_IDS.put("Chicken", 93); + ENTITY_IDS.put("Squid", 94); + ENTITY_IDS.put("Wolf", 95); + ENTITY_IDS.put("MushroomCow", 96); + ENTITY_IDS.put("SnowMan", 97); + ENTITY_IDS.put("Ozelot", 98); + ENTITY_IDS.put("VillagerGolem", 99); + ENTITY_IDS.put("Villager", 120); + ENTITY_IDS.put("EnderCrystal", 200); + } + + public static int getEntityId(final String entityName) { + return ENTITY_IDS.get(entityName); + } + + public static String getEntityName(final int entityId) { + return ENTITY_IDS.inverse().get(entityId); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/data/NbtItemList.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/data/NbtItemList.java new file mode 100644 index 0000000..8c715dd --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/data/NbtItemList.java @@ -0,0 +1,282 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_3_1_2to1_2_4_5.data; + +import java.util.HashMap; +import java.util.Map; + +public class NbtItemList { + + private static final Map ITEMS = new HashMap<>(265, 0.99F); + + static { + ITEMS.put(1, false); + ITEMS.put(2, false); + ITEMS.put(3, false); + ITEMS.put(4, false); + ITEMS.put(5, false); + ITEMS.put(6, false); + ITEMS.put(7, false); + ITEMS.put(8, false); + ITEMS.put(9, false); + ITEMS.put(10, false); + ITEMS.put(11, false); + ITEMS.put(12, false); + ITEMS.put(13, false); + ITEMS.put(14, false); + ITEMS.put(15, false); + ITEMS.put(16, false); + ITEMS.put(17, false); + ITEMS.put(18, false); + ITEMS.put(19, false); + ITEMS.put(20, false); + ITEMS.put(21, false); + ITEMS.put(22, false); + ITEMS.put(23, false); + ITEMS.put(24, false); + ITEMS.put(25, false); + ITEMS.put(26, false); + ITEMS.put(27, false); + ITEMS.put(28, false); + ITEMS.put(29, false); + ITEMS.put(30, false); + ITEMS.put(31, false); + ITEMS.put(32, false); + ITEMS.put(33, false); + ITEMS.put(34, false); + ITEMS.put(35, false); + ITEMS.put(36, false); + ITEMS.put(37, false); + ITEMS.put(38, false); + ITEMS.put(39, false); + ITEMS.put(40, false); + ITEMS.put(41, false); + ITEMS.put(42, false); + ITEMS.put(43, false); + ITEMS.put(44, false); + ITEMS.put(45, false); + ITEMS.put(46, false); + ITEMS.put(47, false); + ITEMS.put(48, false); + ITEMS.put(49, false); + ITEMS.put(50, false); + ITEMS.put(51, false); + ITEMS.put(52, false); + ITEMS.put(53, false); + ITEMS.put(54, false); + ITEMS.put(55, false); + ITEMS.put(56, false); + ITEMS.put(57, false); + ITEMS.put(58, false); + ITEMS.put(59, false); + ITEMS.put(60, false); + ITEMS.put(61, false); + ITEMS.put(62, false); + ITEMS.put(63, false); + ITEMS.put(64, false); + ITEMS.put(65, false); + ITEMS.put(66, false); + ITEMS.put(67, false); + ITEMS.put(68, false); + ITEMS.put(69, false); + ITEMS.put(70, false); + ITEMS.put(71, false); + ITEMS.put(72, false); + ITEMS.put(73, false); + ITEMS.put(74, false); + ITEMS.put(75, false); + ITEMS.put(76, false); + ITEMS.put(77, false); + ITEMS.put(78, false); + ITEMS.put(79, false); + ITEMS.put(80, false); + ITEMS.put(81, false); + ITEMS.put(82, false); + ITEMS.put(83, false); + ITEMS.put(84, false); + ITEMS.put(85, false); + ITEMS.put(86, false); + ITEMS.put(87, false); + ITEMS.put(88, false); + ITEMS.put(89, false); + ITEMS.put(90, false); + ITEMS.put(91, false); + ITEMS.put(92, false); + ITEMS.put(93, false); + ITEMS.put(94, false); + ITEMS.put(95, false); + ITEMS.put(96, false); + ITEMS.put(97, false); + ITEMS.put(98, false); + ITEMS.put(99, false); + ITEMS.put(100, false); + ITEMS.put(101, false); + ITEMS.put(102, false); + ITEMS.put(103, false); + ITEMS.put(104, false); + ITEMS.put(105, false); + ITEMS.put(106, false); + ITEMS.put(107, false); + ITEMS.put(108, false); + ITEMS.put(109, false); + ITEMS.put(110, false); + ITEMS.put(111, false); + ITEMS.put(112, false); + ITEMS.put(113, false); + ITEMS.put(114, false); + ITEMS.put(115, false); + ITEMS.put(116, false); + ITEMS.put(117, false); + ITEMS.put(118, false); + ITEMS.put(119, false); + ITEMS.put(120, false); + ITEMS.put(121, false); + ITEMS.put(122, false); + ITEMS.put(123, false); + ITEMS.put(124, false); + ITEMS.put(256, true); + ITEMS.put(257, true); + ITEMS.put(258, true); + ITEMS.put(259, true); + ITEMS.put(260, false); + ITEMS.put(261, true); + ITEMS.put(262, false); + ITEMS.put(263, false); + ITEMS.put(264, false); + ITEMS.put(265, false); + ITEMS.put(266, false); + ITEMS.put(267, true); + ITEMS.put(268, true); + ITEMS.put(269, true); + ITEMS.put(270, true); + ITEMS.put(271, true); + ITEMS.put(272, true); + ITEMS.put(273, true); + ITEMS.put(274, true); + ITEMS.put(275, true); + ITEMS.put(276, true); + ITEMS.put(277, true); + ITEMS.put(278, true); + ITEMS.put(279, true); + ITEMS.put(280, false); + ITEMS.put(281, false); + ITEMS.put(282, false); + ITEMS.put(283, true); + ITEMS.put(284, true); + ITEMS.put(285, true); + ITEMS.put(286, true); + ITEMS.put(287, false); + ITEMS.put(288, false); + ITEMS.put(289, false); + ITEMS.put(290, true); + ITEMS.put(291, true); + ITEMS.put(292, true); + ITEMS.put(293, true); + ITEMS.put(294, true); + ITEMS.put(295, false); + ITEMS.put(296, false); + ITEMS.put(297, false); + ITEMS.put(298, true); + ITEMS.put(299, true); + ITEMS.put(300, true); + ITEMS.put(301, true); + ITEMS.put(302, true); + ITEMS.put(303, true); + ITEMS.put(304, true); + ITEMS.put(305, true); + ITEMS.put(306, true); + ITEMS.put(307, true); + ITEMS.put(308, true); + ITEMS.put(309, true); + ITEMS.put(310, true); + ITEMS.put(311, true); + ITEMS.put(312, true); + ITEMS.put(313, true); + ITEMS.put(314, true); + ITEMS.put(315, true); + ITEMS.put(316, true); + ITEMS.put(317, true); + ITEMS.put(318, false); + ITEMS.put(319, false); + ITEMS.put(320, false); + ITEMS.put(321, false); + ITEMS.put(322, false); + ITEMS.put(323, false); + ITEMS.put(324, false); + ITEMS.put(325, false); + ITEMS.put(326, false); + ITEMS.put(327, false); + ITEMS.put(328, false); + ITEMS.put(329, false); + ITEMS.put(330, false); + ITEMS.put(331, false); + ITEMS.put(332, false); + ITEMS.put(333, false); + ITEMS.put(334, false); + ITEMS.put(335, false); + ITEMS.put(336, false); + ITEMS.put(337, false); + ITEMS.put(338, false); + ITEMS.put(339, false); + ITEMS.put(340, false); + ITEMS.put(341, false); + ITEMS.put(342, false); + ITEMS.put(343, false); + ITEMS.put(344, false); + ITEMS.put(345, false); + ITEMS.put(346, true); + ITEMS.put(347, false); + ITEMS.put(348, false); + ITEMS.put(349, false); + ITEMS.put(350, false); + ITEMS.put(351, false); + ITEMS.put(352, false); + ITEMS.put(353, false); + ITEMS.put(354, false); + ITEMS.put(355, false); + ITEMS.put(356, false); + ITEMS.put(357, false); + ITEMS.put(358, false); + ITEMS.put(359, true); + ITEMS.put(360, false); + ITEMS.put(361, false); + ITEMS.put(362, false); + ITEMS.put(363, false); + ITEMS.put(364, false); + ITEMS.put(365, false); + ITEMS.put(366, false); + ITEMS.put(367, false); + ITEMS.put(368, false); + ITEMS.put(369, false); + ITEMS.put(370, false); + ITEMS.put(371, false); + ITEMS.put(372, false); + ITEMS.put(373, false); + ITEMS.put(374, false); + ITEMS.put(375, false); + ITEMS.put(376, false); + ITEMS.put(377, false); + ITEMS.put(378, false); + ITEMS.put(379, false); + ITEMS.put(380, false); + ITEMS.put(381, false); + ITEMS.put(382, false); + ITEMS.put(383, false); + ITEMS.put(384, false); + ITEMS.put(385, false); + ITEMS.put(2256, false); + ITEMS.put(2257, false); + ITEMS.put(2258, false); + ITEMS.put(2259, false); + ITEMS.put(2260, false); + ITEMS.put(2261, false); + ITEMS.put(2262, false); + ITEMS.put(2263, false); + ITEMS.put(2264, false); + ITEMS.put(2265, false); + ITEMS.put(2266, false); + } + + public static boolean hasNbt(final int id) { + return ITEMS.getOrDefault(id, false); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/model/AbstractTrackedEntity.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/model/AbstractTrackedEntity.java new file mode 100644 index 0000000..4b08129 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/model/AbstractTrackedEntity.java @@ -0,0 +1,52 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_3_1_2to1_2_4_5.model; + +import com.viaversion.viaversion.api.minecraft.entities.Entity1_10Types; +import net.raphimc.vialegacy.api.Location; + +public abstract class AbstractTrackedEntity { + + private int entityId; + private Location location; + private Entity1_10Types.EntityType entityType; + + private boolean isRiding; + + public AbstractTrackedEntity(final int entityId, final Location location, final Entity1_10Types.EntityType entityType) { + this.entityId = entityId; + this.location = location; + this.entityType = entityType; + } + + public int getEntityId() { + return this.entityId; + } + + public void setEntityId(int entityId) { + this.entityId = entityId; + } + + public Location getLocation() { + return this.location; + } + + public void setLocation(Location location) { + this.location = location; + } + + public Entity1_10Types.EntityType getEntityType() { + return this.entityType; + } + + public void setEntityType(Entity1_10Types.EntityType entityType) { + this.entityType = entityType; + } + + public boolean isRiding() { + return this.isRiding; + } + + public void setRiding(boolean riding) { + this.isRiding = riding; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/model/ConfiguredSound.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/model/ConfiguredSound.java new file mode 100644 index 0000000..230c421 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/model/ConfiguredSound.java @@ -0,0 +1,41 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_3_1_2to1_2_4_5.model; + +import net.raphimc.vialegacy.protocols.release.protocol1_3_1_2to1_2_4_5.sound.Sound; + +public class ConfiguredSound { + + private Sound sound; + private float volume; + private float pitch; + + public ConfiguredSound(Sound sound, float volume, float pitch) { + this.sound = sound; + this.volume = volume; + this.pitch = pitch; + } + + public Sound getSound() { + return sound; + } + + public void setSound(Sound sound) { + this.sound = sound; + } + + public float getVolume() { + return volume; + } + + public void setVolume(float volume) { + this.volume = volume; + } + + public float getPitch() { + return pitch; + } + + public void setPitch(float pitch) { + this.pitch = pitch; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/model/TrackedEntity.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/model/TrackedEntity.java new file mode 100644 index 0000000..5ade63b --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/model/TrackedEntity.java @@ -0,0 +1,12 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_3_1_2to1_2_4_5.model; + +import com.viaversion.viaversion.api.minecraft.entities.Entity1_10Types; +import net.raphimc.vialegacy.api.Location; + +public class TrackedEntity extends AbstractTrackedEntity { + + public TrackedEntity(int entityId, Location location, Entity1_10Types.EntityType entityType) { + super(entityId, location, entityType); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/model/TrackedLivingEntity.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/model/TrackedLivingEntity.java new file mode 100644 index 0000000..d4a21e7 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/model/TrackedLivingEntity.java @@ -0,0 +1,79 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_3_1_2to1_2_4_5.model; + +import com.viaversion.viaversion.api.minecraft.entities.Entity1_10Types; +import com.viaversion.viaversion.api.minecraft.metadata.Metadata; +import net.raphimc.vialegacy.api.Location; +import net.raphimc.vialegacy.protocols.release.protocol1_3_1_2to1_2_4_5.sound.SoundEmulation; +import net.raphimc.vialegacy.protocols.release.protocol1_3_1_2to1_2_4_5.sound.SoundType; +import net.raphimc.vialegacy.protocols.release.protocol1_3_1_2to1_2_4_5.storage.EntityTracker; +import net.raphimc.vialegacy.protocols.release.protocol1_6_1to1_5_2.metadata.MetaIndex1_6_1to1_5_2; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.metadata.MetaIndex1_8to1_7_6; + +import java.util.List; + +public class TrackedLivingEntity extends AbstractTrackedEntity { + + private int soundTime; + + // ENTITY_AGEABLE + public int growingAge; + + // ENTITY_TAMEABLE_ANIMAL + public boolean isTamed; + + // WOLF + public int wolfHealth; + public boolean wolfIsAngry; + + public TrackedLivingEntity(int entityId, Location location, Entity1_10Types.EntityType entityType) { + super(entityId, location, entityType); + } + + public void tick(EntityTracker tracker) { + if (tracker.RND.nextInt(1000) < this.soundTime++) { + this.soundTime = SoundEmulation.getSoundDelayTime(this.getEntityType()); + + tracker.playSound(this.getEntityId(), SoundType.IDLE); + } + + if (this.getEntityType().isOrHasParent(Entity1_10Types.EntityType.ENTITY_AGEABLE)) { + if (this.growingAge < 0) { + this.growingAge++; + } else if (this.growingAge > 0) { + this.growingAge--; + } + } + } + + public void updateMetadata(List metadataList) { + for (Metadata metadata : metadataList) { + final MetaIndex1_6_1to1_5_2 index = MetaIndex1_6_1to1_5_2.searchIndex(this.getEntityType(), metadata.id()); + final MetaIndex1_8to1_7_6 index2 = MetaIndex1_8to1_7_6.searchIndex(this.getEntityType(), metadata.id()); + + if (index == MetaIndex1_6_1to1_5_2.WOLF_HEALTH) { + this.wolfHealth = metadata.value(); + } else if (index != null) { + continue; + } + if (index2 == MetaIndex1_8to1_7_6.ENTITY_AGEABLE_AGE) { + this.growingAge = metadata.value(); + } else if (index2 == MetaIndex1_8to1_7_6.TAMEABLE_FLAGS) { + this.isTamed = (metadata.value() & 4) != 0; + this.wolfIsAngry = (metadata.value() & 2) != 0; + } + } + } + + public void applyPitch(EntityTracker tracker, ConfiguredSound sound) { + float pitch; + + if (this.getEntityType().isOrHasParent(Entity1_10Types.EntityType.ENTITY_AGEABLE) && this.growingAge < 0) { + pitch = (tracker.RND.nextFloat() - tracker.RND.nextFloat()) * 0.2F + 1.5F; + } else { + pitch = (tracker.RND.nextFloat() - tracker.RND.nextFloat()) * 0.2F + 1.0F; + } + + sound.setPitch(pitch); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/providers/OldAuthProvider.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/providers/OldAuthProvider.java new file mode 100644 index 0000000..645b13a --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/providers/OldAuthProvider.java @@ -0,0 +1,12 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_3_1_2to1_2_4_5.providers; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.platform.providers.Provider; + +public class OldAuthProvider implements Provider { + + public void sendAuthRequest(final UserConnection user, final String serverId) throws Throwable { + throw new IllegalStateException("Online mode auth is not implemented!"); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/sound/Sound.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/sound/Sound.java new file mode 100644 index 0000000..20e1e40 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/sound/Sound.java @@ -0,0 +1,79 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_3_1_2to1_2_4_5.sound; + +public enum Sound { + + NOTE_SNARE("note.snare"), + NOTE_HAT("note.hat"), + NOTE_CLICK("note.bd"), + NOTE_HARP("note.harp"), + NOTE_BASS_ATTACK("note.bassattack"), + PISTON_OUT("tile.piston.out"), + PISTON_IN("tile.piston.in"), + CHEST_OPEN("random.chestopen"), + CHEST_CLOSE("random.chestclosed"), + RANDOM_FUSE("random.fuse"), + RANDOM_EXPLODE("random.explode"), + RANDOM_BOW("random.bow"), + MOB_ZOMBIE("mob.zombie"), + MOB_HUMAN_HURT("damage.hurtflesh"), + MOB_ZOMBIE_HURT("mob.zombiehurt"), + MOB_ZOMBIE_DEATH("mob.zombiedeath"), + MOB_PIG_ZOMBIE("mob.zombiepig.zpig"), + MOB_PIG_ZOMBIE_HURT("mob.zombiepig.zpighurt"), + MOB_PIG_ZOMBIE_DEATH("mob.zombiepig.zpigdeath"), + MOB_SPIDER("mob.spider"), + MOB_SPIDER_DEATH("mob.spiderdeath"), + MOB_CREEPER("mob.creeper"), + MOB_CREEPER_DEATH("mob.creeperdeath"), + MOB_SKELETON("mob.skeleton"), + MOB_SKELETON_HURT("mob.skeletonhurt"), + MOB_SKELETON_DEATH("mob.skeletondeath"), + MOB_ENDERMEN("mob.endermen.idle"), + MOB_ENDERMEN_HURT("mob.endermen.hit"), + MOB_ENDERMEN_DEATH("mob.endermen.death"), + MOB_BLAZE("mob.blaze.breathe"), + MOB_BLAZE_HURT("mob.blaze.hit"), + MOB_BLAZE_DEATH("mob.blaze.death"), + MOB_GHAST("mob.ghast.moan"), + MOB_GHAST_HURT("mob.ghast.scream"), + MOB_GHAST_DEATH("mob.ghast.death"), + MOB_SILVERFISH("mob.silverfish.say"), + MOB_SILVERFISH_HURT("mob.silverfish.hit"), + MOB_SILVERFISH_DEATH("mob.silverfish.kill"), + MOB_CAT("mob.cat.meow"), + MOB_CAT_HURT("mob.cat.hitt"), + MOB_CAT_PURREOW("mob.cat.purreow"), + MOB_CAT_MEOW("mob.cat.meow"), + MOB_IRON_GOLEM_HURT("mob.irongolem.hit"), + MOB_IRON_GOLEM_DEATH("mob.irongolem.death"), + MOB_WOLF("mob.wolf.bark"), + MOB_WOLF_HURT("mob.wolf.hurt"), + MOB_WOLF_DEATH("mob.wolf.death"), + MOB_WOLF_GROWL("mob.wolf.growl"), + MOB_WOLF_WHINE("mob.wolf.whine"), + MOB_WOLF_PANTING("mob.wolf.panting"), + MOB_SHEEP("mob.sheep"), + MOB_PIG("mob.pig"), + MOB_PIG_DEATH("mob.pigdeath"), + MOB_COW("mob.cow"), + MOB_COW_HURT("mob.cowhurt"), + MOB_CHICKEN("mob.chicken"), + MOB_CHICKEN_HURT("mob.chickenhurt"), + MOB_SLIME("mob.slime"), + MOB_MAGMACUBE_SMALL("mob.magmacube.small"), + MOB_VILLAGER("mob.villager.default"), + MOB_VILLAGER_HURT("mob.villager.defaulthurt"), + MOB_VILLAGER_DEATH("mob.villager.defaultdeath"), + NO_SOUND(""); + + private final String soundName; + + Sound(final String soundName) { + this.soundName = soundName; + } + + public String getSoundName() { + return this.soundName; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/sound/SoundEmulation.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/sound/SoundEmulation.java new file mode 100644 index 0000000..a89487d --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/sound/SoundEmulation.java @@ -0,0 +1,206 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_3_1_2to1_2_4_5.sound; + +import com.viaversion.viaversion.api.minecraft.entities.Entity1_10Types; +import net.raphimc.vialegacy.protocols.release.protocol1_3_1_2to1_2_4_5.model.ConfiguredSound; + +public class SoundEmulation { + + private final static Sound[][] ENTITY_SOUNDS = new Sound[256][]; + private final static float[] VOL_ADJUST = new float[256]; + private final static int[] INTERVAL_ADJUST = new int[256]; + + static { + ENTITY_SOUNDS[48/*HUMAN*/] = new Sound[]{ + Sound.NO_SOUND, + Sound.MOB_HUMAN_HURT, + Sound.MOB_HUMAN_HURT + }; + ENTITY_SOUNDS[Entity1_10Types.EntityType.CREEPER.getId()] = new Sound[]{ + Sound.NO_SOUND, + Sound.MOB_CREEPER, + Sound.MOB_CREEPER_DEATH + }; + ENTITY_SOUNDS[Entity1_10Types.EntityType.SKELETON.getId()] = new Sound[]{ + Sound.MOB_SKELETON, + Sound.MOB_SKELETON_HURT, + Sound.MOB_SKELETON_DEATH + }; + ENTITY_SOUNDS[Entity1_10Types.EntityType.SPIDER.getId()] = new Sound[]{ + Sound.MOB_SPIDER, + Sound.MOB_SPIDER, + Sound.MOB_SPIDER_DEATH + }; + ENTITY_SOUNDS[Entity1_10Types.EntityType.GIANT.getId()] = new Sound[]{ + Sound.NO_SOUND, + Sound.MOB_HUMAN_HURT, + Sound.MOB_HUMAN_HURT + }; + ENTITY_SOUNDS[Entity1_10Types.EntityType.ZOMBIE.getId()] = new Sound[]{ + Sound.MOB_ZOMBIE, + Sound.MOB_ZOMBIE_HURT, + Sound.MOB_ZOMBIE_DEATH + }; + ENTITY_SOUNDS[Entity1_10Types.EntityType.SLIME.getId()] = new Sound[]{ + Sound.MOB_SLIME, + Sound.MOB_SLIME, + Sound.MOB_SLIME + }; + ENTITY_SOUNDS[Entity1_10Types.EntityType.GHAST.getId()] = new Sound[]{ + Sound.MOB_GHAST, + Sound.MOB_GHAST_HURT, + Sound.MOB_GHAST_DEATH + }; + ENTITY_SOUNDS[Entity1_10Types.EntityType.PIG_ZOMBIE.getId()] = new Sound[]{ + Sound.MOB_PIG_ZOMBIE, + Sound.MOB_PIG_ZOMBIE_HURT, + Sound.MOB_PIG_ZOMBIE_DEATH + }; + ENTITY_SOUNDS[Entity1_10Types.EntityType.ENDERMAN.getId()] = new Sound[]{ + Sound.MOB_ENDERMEN, + Sound.MOB_ENDERMEN_HURT, + Sound.MOB_ENDERMEN_DEATH + }; + ENTITY_SOUNDS[Entity1_10Types.EntityType.CAVE_SPIDER.getId()] = new Sound[]{ + Sound.MOB_SPIDER, + Sound.MOB_SPIDER, + Sound.MOB_SPIDER_DEATH + }; + ENTITY_SOUNDS[Entity1_10Types.EntityType.SILVERFISH.getId()] = new Sound[]{ + Sound.MOB_SILVERFISH, + Sound.MOB_SILVERFISH_HURT, + Sound.MOB_SILVERFISH_DEATH + }; + ENTITY_SOUNDS[Entity1_10Types.EntityType.BLAZE.getId()] = new Sound[]{ + Sound.MOB_BLAZE, + Sound.MOB_BLAZE_HURT, + Sound.MOB_BLAZE_DEATH + }; + ENTITY_SOUNDS[Entity1_10Types.EntityType.MAGMA_CUBE.getId()] = new Sound[]{ + Sound.MOB_MAGMACUBE_SMALL, + Sound.MOB_SLIME, + Sound.MOB_SLIME + }; + ENTITY_SOUNDS[Entity1_10Types.EntityType.ENDER_DRAGON.getId()] = new Sound[]{ + Sound.NO_SOUND, + Sound.MOB_HUMAN_HURT, + Sound.MOB_HUMAN_HURT + }; + ENTITY_SOUNDS[Entity1_10Types.EntityType.PIG.getId()] = new Sound[]{ + Sound.MOB_PIG, + Sound.MOB_PIG, + Sound.MOB_PIG_DEATH + }; + ENTITY_SOUNDS[Entity1_10Types.EntityType.SHEEP.getId()] = new Sound[]{ + Sound.MOB_SHEEP, + Sound.MOB_SHEEP, + Sound.MOB_SHEEP + }; + ENTITY_SOUNDS[Entity1_10Types.EntityType.COW.getId()] = new Sound[]{ + Sound.MOB_COW, + Sound.MOB_COW_HURT, + Sound.MOB_COW_HURT + }; + ENTITY_SOUNDS[Entity1_10Types.EntityType.CHICKEN.getId()] = new Sound[]{ + Sound.MOB_CHICKEN, + Sound.MOB_CHICKEN_HURT, + Sound.MOB_CHICKEN_HURT + }; + ENTITY_SOUNDS[Entity1_10Types.EntityType.SQUID.getId()] = new Sound[]{ + Sound.NO_SOUND, + Sound.NO_SOUND, + Sound.NO_SOUND + }; + ENTITY_SOUNDS[Entity1_10Types.EntityType.WOLF.getId()] = new Sound[]{ + Sound.MOB_WOLF, + Sound.MOB_WOLF_HURT, + Sound.MOB_WOLF_DEATH + }; + ENTITY_SOUNDS[Entity1_10Types.EntityType.MUSHROOM_COW.getId()] = new Sound[]{ + Sound.MOB_COW, + Sound.MOB_COW_HURT, + Sound.MOB_COW_HURT + }; + ENTITY_SOUNDS[Entity1_10Types.EntityType.SNOWMAN.getId()] = new Sound[]{ + Sound.NO_SOUND, + Sound.NO_SOUND, + Sound.NO_SOUND + }; + ENTITY_SOUNDS[Entity1_10Types.EntityType.OCELOT.getId()] = new Sound[]{ + Sound.NO_SOUND, + Sound.MOB_CAT_HURT, + Sound.MOB_CAT_HURT + }; + ENTITY_SOUNDS[Entity1_10Types.EntityType.IRON_GOLEM.getId()] = new Sound[]{ + Sound.NO_SOUND, + Sound.MOB_IRON_GOLEM_HURT, + Sound.MOB_IRON_GOLEM_DEATH + }; + ENTITY_SOUNDS[Entity1_10Types.EntityType.VILLAGER.getId()] = new Sound[]{ + Sound.MOB_VILLAGER, + Sound.MOB_VILLAGER_HURT, + Sound.MOB_VILLAGER_DEATH + }; + + VOL_ADJUST[Entity1_10Types.EntityType.SLIME.getId()] = 1.6F; + VOL_ADJUST[Entity1_10Types.EntityType.MAGMA_CUBE.getId()] = 1.6F; + VOL_ADJUST[Entity1_10Types.EntityType.GHAST.getId()] = 10.0F; + VOL_ADJUST[Entity1_10Types.EntityType.COW.getId()] = 0.4F; + VOL_ADJUST[Entity1_10Types.EntityType.WOLF.getId()] = 0.4F; + VOL_ADJUST[Entity1_10Types.EntityType.SQUID.getId()] = 0.4F; + VOL_ADJUST[Entity1_10Types.EntityType.MUSHROOM_COW.getId()] = 0.4F; + VOL_ADJUST[Entity1_10Types.EntityType.OCELOT.getId()] = 0.4F; + + INTERVAL_ADJUST[Entity1_10Types.EntityType.PIG.getId()] = 120; + INTERVAL_ADJUST[Entity1_10Types.EntityType.SHEEP.getId()] = 120; + INTERVAL_ADJUST[Entity1_10Types.EntityType.WOLF.getId()] = 120; + INTERVAL_ADJUST[Entity1_10Types.EntityType.SNOWMAN.getId()] = 120; + INTERVAL_ADJUST[Entity1_10Types.EntityType.IRON_GOLEM.getId()] = 120; + INTERVAL_ADJUST[Entity1_10Types.EntityType.MUSHROOM_COW.getId()] = 120; + INTERVAL_ADJUST[Entity1_10Types.EntityType.COW.getId()] = 120; + INTERVAL_ADJUST[Entity1_10Types.EntityType.CHICKEN.getId()] = 120; + INTERVAL_ADJUST[Entity1_10Types.EntityType.SQUID.getId()] = 120; + INTERVAL_ADJUST[Entity1_10Types.EntityType.OCELOT.getId()] = 120; + } + + public static ConfiguredSound getEntitySound(Entity1_10Types.EntityType entityType, SoundType soundType) { + ConfiguredSound sound = new ConfiguredSound(Sound.NO_SOUND, 0.0F, 1.0F); + int entityTypeID = entityType.getId(); + if (entityType.isOrHasParent(Entity1_10Types.EntityType.PLAYER)) entityTypeID = 48; + + final Sound[] entitySounds = ENTITY_SOUNDS[entityTypeID]; + if (entitySounds == null) { + return sound; + } + + switch (soundType) { + case IDLE: + sound = new ConfiguredSound(entitySounds[0], 1.0F, 1.0F); + break; + case HURT: + sound = new ConfiguredSound(entitySounds[1], 1.0F, 1.0F); + break; + case DEATH: + sound = new ConfiguredSound(entitySounds[2], 1.0F, 1.0F); + break; + } + + final float correctedVolume = VOL_ADJUST[entityTypeID]; + if (correctedVolume != 0F) { + sound.setVolume(correctedVolume); + } + + return sound; + } + + public static int getSoundDelayTime(Entity1_10Types.EntityType entityType) { + int entityTypeID = entityType.getId(); + if (entityType.isOrHasParent(Entity1_10Types.EntityType.PLAYER)) entityTypeID = 48; + + int soundTime = -80; + final int ajustedSoundTime = SoundEmulation.INTERVAL_ADJUST[entityTypeID]; + if (ajustedSoundTime != 0) soundTime = -ajustedSoundTime; + + return soundTime; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/sound/SoundType.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/sound/SoundType.java new file mode 100644 index 0000000..36d6ee0 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/sound/SoundType.java @@ -0,0 +1,7 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_3_1_2to1_2_4_5.sound; + +public enum SoundType { + + IDLE, HURT, DEATH + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/storage/ChestStateTracker.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/storage/ChestStateTracker.java new file mode 100644 index 0000000..490133b --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/storage/ChestStateTracker.java @@ -0,0 +1,46 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_3_1_2to1_2_4_5.storage; + +import com.viaversion.viaversion.api.connection.StoredObject; +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.minecraft.Position; + +import java.util.*; + +public class ChestStateTracker extends StoredObject { + + private final Set openChests = new HashSet<>(); + + public ChestStateTracker(final UserConnection userConnection) { + super(userConnection); + } + + public void openChest(final Position position) { + this.openChests.add(position); + } + + public void closeChest(final Position position) { + this.openChests.remove(position); + } + + public boolean isChestOpen(final Position position) { + return this.openChests.contains(position); + } + + public void clear() { + this.openChests.clear(); + } + + public void unload(final int chunkX, final int chunkZ) { + final Iterator it = this.openChests.iterator(); + while (it.hasNext()) { + final Position entry = it.next(); + final int x = entry.x() >> 4; + final int z = entry.z() >> 4; + + if (chunkX == x && chunkZ == z) { + it.remove(); + } + } + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/storage/DimensionTracker.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/storage/DimensionTracker.java new file mode 100644 index 0000000..6ba1185 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/storage/DimensionTracker.java @@ -0,0 +1,22 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_3_1_2to1_2_4_5.storage; + +import com.viaversion.viaversion.api.connection.StoredObject; +import com.viaversion.viaversion.api.connection.UserConnection; + +public class DimensionTracker extends StoredObject { + + private int dimensionId = 0; + + public DimensionTracker(UserConnection user) { + super(user); + } + + public void setDimension(final int dimensionId) { + this.dimensionId = dimensionId; + } + + public int getDimensionId() { + return this.dimensionId; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/storage/EntityTracker.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/storage/EntityTracker.java new file mode 100644 index 0000000..8bcd0d2 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/storage/EntityTracker.java @@ -0,0 +1,156 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_3_1_2to1_2_4_5.storage; + +import com.viaversion.viaversion.api.connection.StoredObject; +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.minecraft.entities.Entity1_10Types; +import com.viaversion.viaversion.api.minecraft.metadata.Metadata; +import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; +import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.util.MathUtil; +import net.raphimc.vialegacy.ViaLegacy; +import net.raphimc.vialegacy.api.Location; +import net.raphimc.vialegacy.protocols.release.protocol1_3_1_2to1_2_4_5.Protocol1_3_1_2to1_2_4_5; +import net.raphimc.vialegacy.protocols.release.protocol1_3_1_2to1_2_4_5.model.*; +import net.raphimc.vialegacy.protocols.release.protocol1_3_1_2to1_2_4_5.sound.*; +import net.raphimc.vialegacy.protocols.release.protocol1_4_2to1_3_1_2.ClientboundPackets1_3_1; +import net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.types.Types1_6_4; + +import java.util.*; +import java.util.concurrent.ConcurrentHashMap; +import java.util.function.Predicate; + +public class EntityTracker extends StoredObject { + + public final Random RND = new Random(); + private final Map entityMap = new ConcurrentHashMap<>(); + + private int playerID; + + public EntityTracker(UserConnection user) { + super(user); + } + + public int getPlayerID() { + return this.playerID; + } + + public void setPlayerID(int playerID) { + this.playerID = playerID; + } + + public Map getTrackedEntities() { + return this.entityMap; + } + + public void updateEntityLocation(int entityId, int x, int y, int z, boolean relative) { + final AbstractTrackedEntity entity = this.entityMap.get(entityId); + if (entity != null) { + final Location oldLoc = entity.getLocation(); + + final double xPos = x / 32.0D; + final double yPos = y / 32.0D; + final double zPos = z / 32.0D; + + Location newLoc; + if (relative) { + newLoc = new Location(oldLoc.getX() + xPos, oldLoc.getY() + yPos, oldLoc.getZ() + zPos); + } else { + newLoc = new Location(xPos, yPos, zPos); + } + + entity.setLocation(newLoc); + } + } + + public void updateEntityMetadata(int entityId, List metadataList) { + final AbstractTrackedEntity entity = this.entityMap.get(entityId); + if (entity instanceof TrackedLivingEntity) { + final TrackedLivingEntity livingEntity = (TrackedLivingEntity) entity; + livingEntity.updateMetadata(metadataList); + } + } + + public Optional getNearestEntity(Location location, double range, Predicate entityPredicate) { + return this.entityMap.values().stream() + .filter(entityPredicate) + .filter(e -> !e.getLocation().equals(location)) + .filter(e -> e.getLocation().distanceTo(location) <= range) + .min(Comparator.comparingDouble(o -> o.getLocation().distanceTo(location))); + } + + public void tick() { + for (AbstractTrackedEntity entity : this.entityMap.values()) { + if (entity instanceof TrackedLivingEntity) { + final TrackedLivingEntity livingEntity = (TrackedLivingEntity) entity; + livingEntity.tick(this); + } + } + } + + public void playSound(int entityId, SoundType type) { + if (this.playerID == entityId && type == SoundType.HURT) return; // Don't play HURT sound for the player + + if (this.entityMap.get(entityId) != null) { + final AbstractTrackedEntity entity = this.entityMap.get(entityId); + final ConfiguredSound sound = SoundEmulation.getEntitySound(entity.getEntityType(), type); + final Location entityLocation = entity.getLocation(); + final Location playerLocation = this.entityMap.get(this.playerID).getLocation(); + + if (entity instanceof TrackedLivingEntity && type == SoundType.IDLE) { + final TrackedLivingEntity livingEntity = (TrackedLivingEntity) entity; + livingEntity.applyPitch(this, sound); + + if (entity.getEntityType().isOrHasParent(Entity1_10Types.EntityType.WOLF)) { + if (livingEntity.wolfIsAngry) { + sound.setSound(Sound.MOB_WOLF_GROWL); + } else if (RND.nextInt(3) == 0) { + sound.setSound(livingEntity.isTamed && livingEntity.wolfHealth < 10 ? Sound.MOB_WOLF_WHINE : Sound.MOB_WOLF_PANTING); + } + } else if (entity.getEntityType().isOrHasParent(Entity1_10Types.EntityType.OCELOT)) { + if (livingEntity.isTamed) { + sound.setSound(RND.nextInt(4) == 0 ? Sound.MOB_CAT_PURREOW : Sound.MOB_CAT_MEOW); + } + } + } + + if (Sound.NO_SOUND.equals(sound.getSound())) return; + this.playSoundAt(entityLocation, playerLocation, sound); + } + } + + public void playSoundAt(Location entityLocation, Sound sound, float volume, float pitch) { + final Location playerLocation = this.entityMap.get(this.playerID).getLocation(); + + this.playSoundAt(entityLocation, playerLocation, new ConfiguredSound(sound, volume, pitch)); + } + + public static short constrainToRange(short value, short min, short max) { + return value < min ? min : value < max ? value : max; + } + + private void playSoundAt(Location sourceLocation, Location targetLocation, ConfiguredSound sound) { + if (!ViaLegacy.getConfig().isSoundEmulation()) return; + final short correctedPitch = (short) MathUtil.clamp((int) (sound.getPitch() * 63.0F), 0, 255); + final float vol = sound.getVolume(); + float range = 16F; + if (vol > 1.0F) range *= vol; + + if (targetLocation.distanceTo(sourceLocation) > range) { // cancel if outside of allowed range + return; + } + + try { + final PacketWrapper entitySound = PacketWrapper.create(ClientboundPackets1_3_1.NAMED_SOUND, this.getUser()); + entitySound.write(Types1_6_4.STRING, sound.getSound().getSoundName()); // sound + entitySound.write(Type.INT, ((int) sourceLocation.getX()) * 8); // x + entitySound.write(Type.INT, ((int) sourceLocation.getY()) * 8); // y + entitySound.write(Type.INT, ((int) sourceLocation.getZ()) * 8); // z + entitySound.write(Type.FLOAT, vol); // volume + entitySound.write(Type.UNSIGNED_BYTE, correctedPitch); // pitch + entitySound.send(Protocol1_3_1_2to1_2_4_5.class); + } catch (Throwable e) { + throw new RuntimeException(e); + } + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/task/EntityTrackerTickTask.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/task/EntityTrackerTickTask.java new file mode 100644 index 0000000..19483b4 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/task/EntityTrackerTickTask.java @@ -0,0 +1,17 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_3_1_2to1_2_4_5.task; + +import com.viaversion.viaversion.api.Via; +import com.viaversion.viaversion.api.connection.UserConnection; +import net.raphimc.vialegacy.protocols.release.protocol1_3_1_2to1_2_4_5.storage.EntityTracker; + +public class EntityTrackerTickTask implements Runnable { + + @Override + public void run() { + for (UserConnection info : Via.getManager().getConnectionManager().getConnections()) { + final EntityTracker entityTracker = info.get(EntityTracker.class); + if (entityTracker != null) entityTracker.tick(); + } + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/types/Chunk1_2_4Type.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/types/Chunk1_2_4Type.java new file mode 100644 index 0000000..4123b3d --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/types/Chunk1_2_4Type.java @@ -0,0 +1,24 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_3_1_2to1_2_4_5.types; + +import com.viaversion.viaversion.api.minecraft.chunks.Chunk; +import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.Chunk1_7_6Type; + +public class Chunk1_2_4Type extends Chunk1_7_6Type { + + public Chunk1_2_4Type(ClientWorld clientWorld) { + super(clientWorld); + } + + @Override + protected void readUnusedInt(ByteBuf byteBuf, ClientWorld clientWorld) { + byteBuf.readInt(); + } + + @Override + protected void writeUnusedInt(ByteBuf byteBuf, ClientWorld clientWorld, Chunk chunk) { + byteBuf.writeInt(0); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/types/ItemType.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/types/ItemType.java new file mode 100644 index 0000000..6148ae1 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/types/ItemType.java @@ -0,0 +1,48 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_3_1_2to1_2_4_5.types; + +import com.viaversion.viaversion.api.minecraft.item.DataItem; +import com.viaversion.viaversion.api.minecraft.item.Item; +import com.viaversion.viaversion.api.type.Type; +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.protocols.release.protocol1_3_1_2to1_2_4_5.data.NbtItemList; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.Types1_7_6; + +public class ItemType extends Type { + + private final boolean compressed; + + public ItemType(boolean compressed) { + super(Item.class); + this.compressed = compressed; + } + + public Item read(ByteBuf buffer) throws Exception { + final short id = buffer.readShort(); + if (id < 0) { + return null; + } else { + final Item item = new DataItem(); + item.setIdentifier(id); + item.setAmount(buffer.readByte()); + item.setData(buffer.readShort()); + if (NbtItemList.hasNbt(id)) { + item.setTag((this.compressed ? Types1_7_6.COMPRESSED_NBT : Types1_7_6.NBT).read(buffer)); + } + return item; + } + } + + public void write(ByteBuf buffer, Item item) throws Exception { + if (item == null) { + buffer.writeShort(-1); + } else { + buffer.writeShort(item.identifier()); + buffer.writeByte(item.amount()); + buffer.writeShort(item.data()); + if (NbtItemList.hasNbt(item.identifier())) { + (this.compressed ? Types1_7_6.COMPRESSED_NBT : Types1_7_6.NBT).write(buffer, item.tag()); + } + } + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/types/Types1_2_4.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/types/Types1_2_4.java new file mode 100644 index 0000000..0729be5 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_3_1_2to1_2_4_5/types/Types1_2_4.java @@ -0,0 +1,15 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_3_1_2to1_2_4_5.types; + +import com.viaversion.viaversion.api.minecraft.item.Item; +import com.viaversion.viaversion.api.type.Type; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.ItemArrayType; + +public class Types1_2_4 { + + public static final Type ITEM = new ItemType(false); + public static final Type COMPRESSED_NBT_ITEM = new ItemType(true); + + public static final Type ITEM_ARRAY = new ItemArrayType<>(ITEM); + public static final Type COMPRESSED_NBT_ITEM_ARRAY = new ItemArrayType<>(COMPRESSED_NBT_ITEM); + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_4_2to1_3_1_2/ClientboundPackets1_3_1.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_4_2to1_3_1_2/ClientboundPackets1_3_1.java new file mode 100644 index 0000000..88d42fc --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_4_2to1_3_1_2/ClientboundPackets1_3_1.java @@ -0,0 +1,444 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_4_2to1_3_1_2; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType; +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.util.PreNettyPacketType; + +import java.util.function.BiConsumer; + +import static net.raphimc.vialegacy.util.PreNettyTypes.*; + +public enum ClientboundPackets1_3_1 implements ClientboundPacketType, PreNettyPacketType { + + KEEP_ALIVE(0, (user, buf) -> { + buf.readInt(); + }), + JOIN_GAME(1, (user, buf) -> { + buf.readInt(); + readString(buf); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + CHAT_MESSAGE(3, (user, buf) -> { + readString(buf); + }), + TIME_UPDATE(4, (user, buf) -> { + buf.readLong(); + }), + ENTITY_EQUIPMENT(5, (user, buf) -> { + buf.readInt(); + buf.readShort(); + readItemStack1_3_1(buf); + }), + SPAWN_POSITION(6, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + UPDATE_HEALTH(8, (user, buf) -> { + buf.readShort(); + buf.readShort(); + buf.readFloat(); + }), + RESPAWN(9, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + readString(buf); + }), + PLAYER_POSITION_ONLY_ONGROUND(10, (user, buf) -> { + buf.readUnsignedByte(); + }), + PLAYER_POSITION_ONLY_POSITION(11, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION_ONLY_LOOK(12, (user, buf) -> { + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION(13, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + USE_BED(17, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readByte(); + buf.readInt(); + }), + ENTITY_ANIMATION(18, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + SPAWN_PLAYER(20, (user, buf) -> { + buf.readInt(); + readString(buf); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + readEntityMetadatab1_5(buf); + }), + SPAWN_ITEM(21, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readByte(); + buf.readShort(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + COLLECT_ITEM(22, (user, buf) -> { + buf.readInt(); + buf.readInt(); + }), + SPAWN_ENTITY(23, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + int i = buf.readInt(); + if (i > 0) { + buf.readShort(); + buf.readShort(); + buf.readShort(); + } + }), + SPAWN_MOB(24, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + buf.readShort(); + buf.readShort(); + readEntityMetadatab1_5(buf); + }), + SPAWN_PAINTING(25, (user, buf) -> { + buf.readInt(); + readString(buf); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + SPAWN_EXPERIENCE_ORB(26, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readShort(); + }), + ENTITY_VELOCITY(28, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readShort(); + buf.readShort(); + }), + DESTROY_ENTITIES(29, (user, buf) -> { + int x = buf.readUnsignedByte(); + for (int i = 0; i < x; i++) buf.readInt(); + }), + ENTITY_MOVEMENT(30, (user, buf) -> { + buf.readInt(); + }), + ENTITY_POSITION(31, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_ROTATION(32, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_POSITION_AND_ROTATION(33, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_TELEPORT(34, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_HEAD_LOOK(35, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + ENTITY_STATUS(38, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + ATTACH_ENTITY(39, (user, buf) -> { + buf.readInt(); + buf.readInt(); + }), + ENTITY_METADATA(40, (user, buf) -> { + buf.readInt(); + readEntityMetadatab1_5(buf); + }), + ENTITY_EFFECT(41, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + }), + REMOVE_ENTITY_EFFECT(42, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + SET_EXPERIENCE(43, (user, buf) -> { + buf.readFloat(); + buf.readShort(); + buf.readShort(); + }), + CHUNK_DATA(51, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readBoolean(); + buf.readShort(); + buf.readShort(); + int x = buf.readInt(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + MULTI_BLOCK_CHANGE(52, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readShort(); + int x = buf.readInt(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + BLOCK_CHANGE(53, (user, buf) -> { + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readShort(); + buf.readUnsignedByte(); + }), + BLOCK_ACTION(54, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + buf.readUnsignedByte(); + buf.readUnsignedByte(); + buf.readShort(); + }), + BLOCK_BREAK_ANIMATION(55, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readUnsignedByte(); + }), + MAP_BULK_CHUNK(56, (user, buf) -> { + int x = buf.readShort(); + int y = buf.readInt(); + for (int i = 0; i < y; i++) buf.readByte(); + for (int i = 0; i < x; i++) { + buf.readInt(); + buf.readInt(); + buf.readShort(); + buf.readShort(); + } + }), + EXPLOSION(60, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + int x = buf.readInt(); + for (int i = 0; i < x; i++) { + buf.readByte(); + buf.readByte(); + buf.readByte(); + } + buf.readFloat(); + buf.readFloat(); + buf.readFloat(); + }), + EFFECT(61, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + }), + NAMED_SOUND(62, (user, buf) -> { + readString(buf); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + GAME_EVENT(70, (user, buf) -> { + buf.readByte(); + buf.readByte(); + }), + SPAWN_GLOBAL_ENTITY(71, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + OPEN_WINDOW(100, (user, buf) -> { + buf.readByte(); + buf.readByte(); + readString(buf); + buf.readByte(); + }), + CLOSE_WINDOW(101, (user, buf) -> { + buf.readByte(); + }), + SET_SLOT(103, (user, buf) -> { + buf.readByte(); + buf.readShort(); + readItemStack1_3_1(buf); + }), + WINDOW_ITEMS(104, (user, buf) -> { + buf.readByte(); + int x = buf.readShort(); + for (int i = 0; i < x; i++) readItemStack1_3_1(buf); + }), + WINDOW_PROPERTY(105, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readShort(); + }), + WINDOW_CONFIRMATION(106, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readByte(); + }), + CREATIVE_INVENTORY_ACTION(107, (user, buf) -> { + buf.readShort(); + readItemStack1_3_1(buf); + }), + UPDATE_SIGN(130, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + readString(buf); + readString(buf); + readString(buf); + readString(buf); + }), + MAP_DATA(131, (user, buf) -> { + buf.readShort(); + buf.readShort(); + short x = buf.readUnsignedByte(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + BLOCK_ENTITY_DATA(132, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + buf.readByte(); + readTag(buf); + }), + STATISTICS(200, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + PLAYER_INFO(201, (user, buf) -> { + readString(buf); + buf.readByte(); + buf.readShort(); + }), + PLAYER_ABILITIES(202, (user, buf) -> { + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + TAB_COMPLETE(203, (user, buf) -> { + readString(buf); + }), + PLUGIN_MESSAGE(250, (user, buf) -> { + readString(buf); + short s = buf.readShort(); + for (int i = 0; i < s; i++) buf.readByte(); + }), + SHARED_KEY(252, (user, buf) -> { + readByteArray(buf); + readByteArray(buf); + }), + SERVER_AUTH_DATA(253, (user, buf) -> { + readString(buf); + readByteArray(buf); + readByteArray(buf); + }), + DISCONNECT(255, (user, buf) -> { + readString(buf); + }); + + private static final ClientboundPackets1_3_1[] REGISTRY = new ClientboundPackets1_3_1[256]; + + static { + for (ClientboundPackets1_3_1 packet : values()) { + REGISTRY[packet.id] = packet; + } + } + + public static ClientboundPackets1_3_1 getPacket(final int id) { + return REGISTRY[id]; + } + + private final int id; + private final BiConsumer packetReader; + + ClientboundPackets1_3_1(final int id, final BiConsumer packetReader) { + this.id = id; + this.packetReader = packetReader; + } + + @Override + public int getId() { + return this.id; + } + + @Override + public String getName() { + return name(); + } + + @Override + public BiConsumer getPacketReader() { + return this.packetReader; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_4_2to1_3_1_2/Protocol1_4_2to1_3_1_2.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_4_2to1_3_1_2/Protocol1_4_2to1_3_1_2.java new file mode 100644 index 0000000..083ea59 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_4_2to1_3_1_2/Protocol1_4_2to1_3_1_2.java @@ -0,0 +1,300 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_4_2to1_3_1_2; + +import com.viaversion.viaversion.api.connection.ProtocolInfo; +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.minecraft.entities.Entity1_10Types; +import com.viaversion.viaversion.api.minecraft.item.DataItem; +import com.viaversion.viaversion.api.minecraft.item.Item; +import com.viaversion.viaversion.api.minecraft.metadata.Metadata; +import com.viaversion.viaversion.api.protocol.AbstractProtocol; +import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; +import com.viaversion.viaversion.api.protocol.packet.State; +import com.viaversion.viaversion.api.protocol.remapper.PacketRemapper; +import com.viaversion.viaversion.api.protocol.version.ProtocolVersion; +import com.viaversion.viaversion.api.type.Type; +import net.raphimc.vialegacy.ViaLegacy; +import net.raphimc.vialegacy.api.ItemList1_6; +import net.raphimc.vialegacy.protocols.release.protocol1_4_2to1_3_1_2.rewriter.SoundRewriter; +import net.raphimc.vialegacy.protocols.release.protocol1_4_2to1_3_1_2.types.Types1_3_1; +import net.raphimc.vialegacy.protocols.release.protocol1_4_4_5to1_4_2.ClientboundPackets1_4_2; +import net.raphimc.vialegacy.protocols.release.protocol1_4_4_5to1_4_2.types.MetaType1_4_2; +import net.raphimc.vialegacy.protocols.release.protocol1_4_4_5to1_4_2.types.Types1_4_2; +import net.raphimc.vialegacy.protocols.release.protocol1_6_1to1_5_2.ServerboundPackets1_5_2; +import net.raphimc.vialegacy.protocols.release.protocol1_6_1to1_5_2.storage.EntityTracker; +import net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.types.Types1_6_4; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.Types1_7_6; +import net.raphimc.vialegacy.util.PreNettySplitter; + +import java.util.List; +import java.util.logging.Level; + +public class Protocol1_4_2to1_3_1_2 extends AbstractProtocol { + + public Protocol1_4_2to1_3_1_2() { + super(ClientboundPackets1_3_1.class, ClientboundPackets1_4_2.class, ServerboundPackets1_3_1.class, ServerboundPackets1_5_2.class); + } + + @Override + protected void registerPackets() { + this.registerClientbound(State.STATUS, ClientboundPackets1_3_1.DISCONNECT.getId(), ClientboundPackets1_4_2.DISCONNECT.getId(), new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + final String reason = wrapper.read(Types1_6_4.STRING); // reason + try { + final ProtocolInfo info = wrapper.user().getProtocolInfo(); + final String[] pingParts = reason.split("§"); + final String out = "§1\0" + (-info.getServerProtocolVersion() >> 2) + "\0" + ProtocolVersion.getProtocol(info.getServerProtocolVersion()).getName() + "\0" + pingParts[0] + "\0" + pingParts[1] + "\0" + pingParts[2]; + wrapper.write(Types1_6_4.STRING, out); + } catch (Throwable e) { + ViaLegacy.getPlatform().getLogger().log(Level.WARNING, "Could not parse 1.3.1 ping: " + reason, e); + wrapper.cancel(); + } + }); + } + }); + this.registerClientbound(ClientboundPackets1_3_1.TIME_UPDATE, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + final long time = wrapper.passthrough(Type.LONG); // time + wrapper.write(Type.LONG, time % 24_000); // time of day + }); + } + }); + this.registerClientbound(ClientboundPackets1_3_1.RESPAWN, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // dimension id + map(Type.BYTE); // difficulty + map(Type.BYTE); // game mode + map(Type.SHORT); // world height + map(Types1_6_4.STRING); // worldType + handler(wrapper -> { + final EntityTracker entityTracker = wrapper.user().get(EntityTracker.class); + final Integer[] entityIds = entityTracker.getTrackedEntities().keySet().stream().filter(i -> i != entityTracker.getPlayerID()).toArray(Integer[]::new); + final int[] primitiveInts = new int[entityIds.length]; + for (int i = 0; i < entityIds.length; i++) primitiveInts[i] = entityIds[i]; + + final PacketWrapper destroyEntities = PacketWrapper.create(ClientboundPackets1_4_2.DESTROY_ENTITIES, wrapper.user()); + destroyEntities.write(Types1_7_6.INT_ARRAY, primitiveInts); + destroyEntities.send(Protocol1_4_2to1_3_1_2.class); + }); + } + }); + this.registerClientbound(ClientboundPackets1_3_1.SPAWN_PLAYER, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + map(Types1_6_4.STRING); // name + map(Type.INT); // x + map(Type.INT); // y + map(Type.INT); // z + map(Type.BYTE); // yaw + map(Type.BYTE); // pitch + map(Type.UNSIGNED_SHORT); // item + map(Types1_3_1.METADATA_LIST, Types1_4_2.METADATA_LIST); // metadata + handler(wrapper -> rewriteMetadata(wrapper.get(Types1_4_2.METADATA_LIST, 0))); + } + }); + this.registerClientbound(ClientboundPackets1_3_1.SPAWN_ITEM, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + map(Types1_3_1.NBTLESS_ITEM, Types1_7_6.COMPRESSED_ITEM); + map(Type.INT); // x + map(Type.INT); // y + map(Type.INT); // z + map(Type.BYTE); // velocity x + map(Type.BYTE); // velocity y + map(Type.BYTE); // velocity z + } + }); + this.registerClientbound(ClientboundPackets1_3_1.SPAWN_MOB, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + map(Type.UNSIGNED_BYTE); // type id + map(Type.INT); // x + map(Type.INT); // y + map(Type.INT); // z + map(Type.BYTE); // yaw + map(Type.BYTE); // pitch + map(Type.BYTE); // head yaw + map(Type.SHORT); // velocity x + map(Type.SHORT); // velocity y + map(Type.SHORT); // velocity z + map(Types1_3_1.METADATA_LIST, Types1_4_2.METADATA_LIST); // metadata + handler(wrapper -> rewriteMetadata(wrapper.get(Types1_4_2.METADATA_LIST, 0))); + handler(wrapper -> { + final int entityId = wrapper.get(Type.INT, 0); + final short typeId = wrapper.get(Type.UNSIGNED_BYTE, 0); + if (typeId == Entity1_10Types.EntityType.SKELETON.getId()) { + setMobHandItem(entityId, new DataItem(ItemList1_6.bow.itemID, (byte) 1, (short) 0, null), wrapper); + } else if (typeId == Entity1_10Types.EntityType.PIG_ZOMBIE.getId()) { + setMobHandItem(entityId, new DataItem(ItemList1_6.swordGold.itemID, (byte) 1, (short) 0, null), wrapper); + } + }); + } + }); + this.registerClientbound(ClientboundPackets1_3_1.SPAWN_PAINTING, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + map(Types1_6_4.STRING); // motive + map(Types1_7_6.POSITION_INT); // position + map(Type.INT); // rotation + handler(wrapper -> { + int direction = wrapper.get(Type.INT, 1); + switch (direction) { + case 0: + direction = 2; + break; + case 2: + direction = 0; + break; + } + wrapper.set(Type.INT, 1, direction); + }); + } + }); + this.registerClientbound(ClientboundPackets1_3_1.ENTITY_METADATA, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + map(Types1_3_1.METADATA_LIST, Types1_4_2.METADATA_LIST); // metadata + handler(wrapper -> rewriteMetadata(wrapper.get(Types1_4_2.METADATA_LIST, 0))); + } + }); + this.registerClientbound(ClientboundPackets1_3_1.EFFECT, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // effect id + map(Types1_7_6.POSITION_UBYTE); // position + map(Type.INT); // data + create(Type.BOOLEAN, false); // server wide + } + }); + this.registerClientbound(ClientboundPackets1_3_1.NAMED_SOUND, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + final String oldSound = wrapper.read(Types1_6_4.STRING); // sound + String newSound = SoundRewriter.map(oldSound); + if (oldSound.isEmpty()) newSound = ""; + if (newSound == null) { + ViaLegacy.getPlatform().getLogger().warning("Unable to map 1.3.2 sound '" + oldSound + "'"); + newSound = ""; + } + if (newSound.isEmpty()) { + wrapper.cancel(); + return; + } + wrapper.write(Types1_6_4.STRING, newSound); + }); + map(Type.INT); // x + map(Type.INT); // y + map(Type.INT); // z + map(Type.FLOAT); // volume + map(Type.UNSIGNED_BYTE); // pitch + } + }); + this.registerClientbound(ClientboundPackets1_3_1.MAP_DATA, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.SHORT); // item id + map(Type.SHORT); // map id + map(Types1_4_2.UNSIGNED_BYTE_BYTE_ARRAY); // data + handler(wrapper -> { + final byte[] data = wrapper.get(Types1_4_2.UNSIGNED_BYTE_BYTE_ARRAY, 0); + if (data[0] == 1) { + for (int i = 0; i < (data.length - 1) / 3; i++) { + final byte icon = (byte) (data[i * 3 + 1] % 16); + final byte centerX = data[i * 3 + 2]; + final byte centerZ = data[i * 3 + 3]; + final byte iconRotation = (byte) (data[i * 3 + 1] / 16); + data[i * 3 + 1] = (byte) (icon << 4 | iconRotation & 15); + data[i * 3 + 2] = centerX; + data[i * 3 + 3] = centerZ; + } + } + }); + } + }); + this.registerClientbound(ClientboundPackets1_3_1.PLUGIN_MESSAGE, new PacketRemapper() { + @Override + public void registerMap() { + map(Types1_6_4.STRING); // channel + handler(wrapper -> { + final String channel = wrapper.get(Types1_6_4.STRING, 0); + wrapper.passthrough(Type.SHORT); // length + if (channel.equalsIgnoreCase("MC|TrList")) { + wrapper.passthrough(Type.INT); // window Id + final int count = wrapper.passthrough(Type.UNSIGNED_BYTE); // count + for (int i = 0; i < count; i++) { + wrapper.passthrough(Types1_7_6.COMPRESSED_ITEM); // item 1 + wrapper.passthrough(Types1_7_6.COMPRESSED_ITEM); // item 3 + if (wrapper.passthrough(Type.BOOLEAN)) { // has 3 items + wrapper.passthrough(Types1_7_6.COMPRESSED_ITEM); // item 2 + } + wrapper.write(Type.BOOLEAN, false); // unavailable + } + } + }); + } + }); + + this.registerServerbound(State.STATUS, ServerboundPackets1_3_1.SERVER_PING.getId(), ServerboundPackets1_5_2.SERVER_PING.getId(), new PacketRemapper() { + @Override + public void registerMap() { + handler(PacketWrapper::clearPacket); + } + }); + this.registerServerbound(ServerboundPackets1_5_2.CREATIVE_INVENTORY_ACTION, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.SHORT); // slot + map(Types1_7_6.COMPRESSED_ITEM); // item + handler(wrapper -> { + final Item itm = wrapper.get(Types1_7_6.COMPRESSED_ITEM, 0); + if (itm != null && itm.identifier() == ItemList1_6.emptyMap.itemID) { + itm.setIdentifier(ItemList1_6.map.itemID); + } + }); + } + }); + this.registerServerbound(ServerboundPackets1_5_2.CLIENT_SETTINGS, new PacketRemapper() { + @Override + public void registerMap() { + map(Types1_6_4.STRING); // language + map(Type.BYTE); // view distance + map(Type.BYTE); // mask + map(Type.BYTE); // difficulty + read(Type.BOOLEAN); // show cape + } + }); + } + + private void rewriteMetadata(final List metadataList) { + for (Metadata metadata : metadataList) { + metadata.setMetaType(MetaType1_4_2.byId(metadata.metaType().typeId())); + } + } + + private void setMobHandItem(final int entityId, final Item item, final PacketWrapper wrapper) throws Exception { + final PacketWrapper handItem = PacketWrapper.create(ClientboundPackets1_4_2.ENTITY_EQUIPMENT, wrapper.user()); + handItem.write(Type.INT, entityId); // entity id + handItem.write(Type.SHORT, (short) 0); // slot + handItem.write(Types1_7_6.COMPRESSED_ITEM, item); // item + + wrapper.send(Protocol1_4_2to1_3_1_2.class); + handItem.send(Protocol1_4_2to1_3_1_2.class); + wrapper.cancel(); + } + + @Override + public void init(UserConnection userConnection) { + userConnection.put(new PreNettySplitter(userConnection, Protocol1_4_2to1_3_1_2.class, ClientboundPackets1_3_1::getPacket)); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_4_2to1_3_1_2/ServerboundPackets1_3_1.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_4_2to1_3_1_2/ServerboundPackets1_3_1.java new file mode 100644 index 0000000..45476da --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_4_2to1_3_1_2/ServerboundPackets1_3_1.java @@ -0,0 +1,199 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_4_2to1_3_1_2; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.packet.ServerboundPacketType; +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.util.PreNettyPacketType; + +import java.util.function.BiConsumer; + +import static net.raphimc.vialegacy.util.PreNettyTypes.*; + +public enum ServerboundPackets1_3_1 implements ServerboundPacketType, PreNettyPacketType { + + KEEP_ALIVE(0, (user, buf) -> { + buf.readInt(); + }), + LOGIN(1, (user, buf) -> { + buf.readInt(); + readString(buf); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + CLIENT_PROTOCOL(2, (user, buf) -> { + buf.readByte(); + readString(buf); + readString(buf); + buf.readInt(); + }), + CHAT_MESSAGE(3, (user, buf) -> { + readString(buf); + }), + INTERACT_ENTITY(7, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readByte(); + }), + RESPAWN(9, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + readString(buf); + }), + PLAYER_MOVEMENT(10, (user, buf) -> { + buf.readUnsignedByte(); + }), + PLAYER_POSITION(11, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readUnsignedByte(); + }), + PLAYER_ROTATION(12, (user, buf) -> { + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION_AND_ROTATION(13, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_DIGGING(14, (user, buf) -> { + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + }), + PLAYER_BLOCK_PLACEMENT(15, (user, buf) -> { + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + readItemStack1_3_1(buf); + buf.readUnsignedByte(); + buf.readUnsignedByte(); + buf.readUnsignedByte(); + }), + HELD_ITEM_CHANGE(16, (user, buf) -> { + buf.readShort(); + }), + ANIMATION(18, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + ENTITY_ACTION(19, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + CLOSE_WINDOW(101, (user, buf) -> { + buf.readByte(); + }), + CLICK_WINDOW(102, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readByte(); + buf.readShort(); + buf.readBoolean(); + readItemStack1_3_1(buf); + }), + WINDOW_CONFIRMATION(106, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readByte(); + }), + CREATIVE_INVENTORY_ACTION(107, (user, buf) -> { + buf.readShort(); + readItemStack1_3_1(buf); + }), + CLICK_WINDOW_BUTTON(108, (user, buf) -> { + buf.readByte(); + buf.readByte(); + }), + UPDATE_SIGN(130, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + readString(buf); + readString(buf); + readString(buf); + readString(buf); + }), + PLAYER_ABILITIES(202, (user, buf) -> { + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + TAB_COMPLETE(203, (user, buf) -> { + readString(buf); + }), + CLIENT_SETTINGS(204, (user, buf) -> { + readString(buf); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + CLIENT_STATUS(205, (user, buf) -> { + buf.readByte(); + }), + PLUGIN_MESSAGE(250, (user, buf) -> { + readString(buf); + short s = buf.readShort(); + for (int i = 0; i < s; i++) buf.readByte(); + }), + SHARED_KEY(252, (user, buf) -> { + readByteArray(buf); + readByteArray(buf); + }), + SERVER_PING(254, (user, buf) -> { + }), + DISCONNECT(255, (user, buf) -> { + readString(buf); + }); + + private static final ServerboundPackets1_3_1[] REGISTRY = new ServerboundPackets1_3_1[256]; + + static { + for (ServerboundPackets1_3_1 packet : values()) { + REGISTRY[packet.id] = packet; + } + } + + public static ServerboundPackets1_3_1 getPacket(final int id) { + return REGISTRY[id]; + } + + private final int id; + private final BiConsumer packetReader; + + ServerboundPackets1_3_1(final int id, final BiConsumer packetReader) { + this.id = id; + this.packetReader = packetReader; + } + + @Override + public int getId() { + return this.id; + } + + @Override + public String getName() { + return name(); + } + + @Override + public BiConsumer getPacketReader() { + return this.packetReader; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_4_2to1_3_1_2/rewriter/SoundRewriter.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_4_2to1_3_1_2/rewriter/SoundRewriter.java new file mode 100644 index 0000000..60eada5 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_4_2to1_3_1_2/rewriter/SoundRewriter.java @@ -0,0 +1,141 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_4_2to1_3_1_2.rewriter; + +import com.viaversion.viaversion.libs.fastutil.objects.Object2ObjectMap; +import com.viaversion.viaversion.libs.fastutil.objects.Object2ObjectOpenHashMap; + +public class SoundRewriter { + + private static final Object2ObjectMap SOUNDS = new Object2ObjectOpenHashMap<>(121, 0.99F); + + static { + SOUNDS.put("ambient.cave.cave", "ambient.cave.cave"); + SOUNDS.put("ambient.weather.rain", "ambient.weather.rain"); + SOUNDS.put("ambient.weather.thunder", "ambient.weather.thunder"); + SOUNDS.put("damage.fallbig", "damage.fallbig"); + SOUNDS.put("damage.fallsmall", "damage.fallsmall"); + SOUNDS.put("damage.hurtflesh", "damage.hit"); + SOUNDS.put("fire.fire", "fire.fire"); + SOUNDS.put("fire.ignite", "fire.ignite"); + SOUNDS.put("liquid.lava", "liquid.lava"); + SOUNDS.put("liquid.lavapop", "liquid.lavapop"); + SOUNDS.put("liquid.splash", "liquid.splash"); + SOUNDS.put("liquid.water", "liquid.water"); + SOUNDS.put("mob.blaze.breathe", "mob.blaze.breathe"); + SOUNDS.put("mob.blaze.death", "mob.blaze.death"); + SOUNDS.put("mob.blaze.hit", "mob.blaze.hit"); + SOUNDS.put("mob.cat.hiss", "mob.cat.hiss"); + SOUNDS.put("mob.cat.hitt", "mob.cat.hitt"); + SOUNDS.put("mob.cat.meow", "mob.cat.meow"); + SOUNDS.put("mob.cat.purr", "mob.cat.purr"); + SOUNDS.put("mob.cat.purreow", "mob.cat.purreow"); + SOUNDS.put("mob.chicken", "mob.chicken.say"); + SOUNDS.put("mob.chickenhurt", "mob.chicken.hurt"); + SOUNDS.put("mob.chickenplop", "mob.chicken.plop"); + SOUNDS.put("mob.cow", "mob.cow.say"); + SOUNDS.put("mob.cowhurt", "mob.cow.hurt"); + SOUNDS.put("mob.creeper", "mob.creeper.say"); + SOUNDS.put("mob.creeperdeath", "mob.creeper.death"); + SOUNDS.put("mob.endermen.death", "mob.endermen.death"); + SOUNDS.put("mob.endermen.hit", "mob.endermen.hit"); + SOUNDS.put("mob.endermen.idle", "mob.endermen.idle"); + SOUNDS.put("mob.endermen.portal", "mob.endermen.portal"); + SOUNDS.put("mob.endermen.scream", "mob.endermen.scream"); + SOUNDS.put("mob.endermen.stare", "mob.endermen.stare"); + SOUNDS.put("mob.ghast.affectionate scream", "mob.ghast.affectionate_scream"); + SOUNDS.put("mob.ghast.charge", "mob.ghast.charge"); + SOUNDS.put("mob.ghast.death", "mob.ghast.death"); + SOUNDS.put("mob.ghast.fireball", "mob.ghast.fireball"); + SOUNDS.put("mob.ghast.moan", "mob.ghast.moan"); + SOUNDS.put("mob.ghast.scream", "mob.ghast.scream"); + SOUNDS.put("mob.irongolem.death", "mob.irongolem.death"); + SOUNDS.put("mob.irongolem.hit", "mob.irongolem.hit"); + SOUNDS.put("mob.irongolem.throw", "mob.irongolem.throw"); + SOUNDS.put("mob.irongolem.walk", "mob.irongolem.walk"); + SOUNDS.put("mob.magmacube.big", "mob.magmacube.big"); + SOUNDS.put("mob.magmacube.jump", "mob.magmacube.jump"); + SOUNDS.put("mob.magmacube.small", "mob.magmacube.small"); + SOUNDS.put("mob.pig", "mob.pig.say"); + SOUNDS.put("mob.pigdeath", "mob.pig.death"); + SOUNDS.put("mob.sheep", "mob.sheep.say"); + SOUNDS.put("mob.silverfish.hit", "mob.silverfish.hit"); + SOUNDS.put("mob.silverfish.kill", "mob.silverfish.kill"); + SOUNDS.put("mob.silverfish.say", "mob.silverfish.say"); + SOUNDS.put("mob.silverfish.step", "mob.silverfish.step"); + SOUNDS.put("mob.skeleton", "mob.skeleton.say"); + SOUNDS.put("mob.skeletondeath", "mob.skeleton.death"); + SOUNDS.put("mob.skeletonhurt", "mob.skeleton.hurt"); + SOUNDS.put("mob.slime", "mob.slime.small"); + SOUNDS.put("mob.slimeattack", "mob.slime.attack"); + SOUNDS.put("mob.spider", "mob.spider.say"); + SOUNDS.put("mob.spiderdeath", "mob.spider.death"); + SOUNDS.put("mob.wolf.bark", "mob.wolf.bark"); + SOUNDS.put("mob.wolf.death", "mob.wolf.death"); + SOUNDS.put("mob.wolf.growl", "mob.wolf.growl"); + SOUNDS.put("mob.wolf.howl", "mob.wolf.howl"); + SOUNDS.put("mob.wolf.hurt", "mob.wolf.hurt"); + SOUNDS.put("mob.wolf.panting", "mob.wolf.panting"); + SOUNDS.put("mob.wolf.shake", "mob.wolf.shake"); + SOUNDS.put("mob.wolf.whine", "mob.wolf.whine"); + SOUNDS.put("mob.zombie.metal", "mob.zombie.metal"); + SOUNDS.put("mob.zombie", "mob.zombie.say"); + SOUNDS.put("mob.zombie.wood", "mob.zombie.wood"); + SOUNDS.put("mob.zombie.woodbreak", "mob.zombie.woodbreak"); + SOUNDS.put("mob.zombiedeath", "mob.zombie.death"); + SOUNDS.put("mob.zombiehurt", "mob.zombie.hurt"); + SOUNDS.put("mob.zombiepig.zpig", "mob.zombiepig.zpig"); + SOUNDS.put("mob.zombiepig.zpigangry", "mob.zombiepig.zpigangry"); + SOUNDS.put("mob.zombiepig.zpigdeath", "mob.zombiepig.zpigdeath"); + SOUNDS.put("mob.zombiepig.zpighurt", "mob.zombiepig.zpighurt"); + SOUNDS.put("mob.villager.default", "mob.villager.default"); + SOUNDS.put("mob.villager.defaulthurt", "mob.villager.defaulthurt"); + SOUNDS.put("mob.villager.defaultdeath", "mob.villager.defaultdeath"); + SOUNDS.put("note.bass", "note.bass"); + SOUNDS.put("note.bassattack", "note.bassattack"); + SOUNDS.put("note.bd", "note.bd"); + SOUNDS.put("note.harp", "note.harp"); + SOUNDS.put("note.hat", "note.hat"); + SOUNDS.put("note.pling", "note.pling"); + SOUNDS.put("note.snare", "note.snare"); + SOUNDS.put("portal.portal", "portal.portal"); + SOUNDS.put("portal.travel", "portal.travel"); + SOUNDS.put("portal.trigger", "portal.trigger"); + SOUNDS.put("random.bow", "random.bow"); + SOUNDS.put("random.bowhit", "random.bowhit"); + SOUNDS.put("random.break", "random.break"); + SOUNDS.put("random.breath", "random.breath"); + SOUNDS.put("random.burp", "random.burp"); + SOUNDS.put("random.chestclosed", "random.chestclosed"); + SOUNDS.put("random.chestopen", "random.chestopen"); + SOUNDS.put("random.click", "random.click"); + SOUNDS.put("random.door_close", "random.door_close"); + SOUNDS.put("random.door_open", "random.door_open"); + SOUNDS.put("random.drink", "random.drink"); + SOUNDS.put("random.drr", ""); + SOUNDS.put("random.eat", "random.eat"); + SOUNDS.put("random.explode", "random.explode"); + SOUNDS.put("random.fizz", "random.fizz"); + SOUNDS.put("random.fuse", "random.fuse"); + SOUNDS.put("random.glass", "random.glass"); + SOUNDS.put("random.hurt", "damage.hit"); + SOUNDS.put("random.levelup", "random.levelup"); + SOUNDS.put("random.old_explode", "random.explode"); + SOUNDS.put("random.orb", "random.orb"); + SOUNDS.put("random.pop", "random.pop"); + SOUNDS.put("random.splash", "random.splash"); + SOUNDS.put("random.wood click", "random.wood_click"); + SOUNDS.put("step.cloth", "step.cloth"); + SOUNDS.put("step.grass", "step.grass"); + SOUNDS.put("step.gravel", "step.gravel"); + SOUNDS.put("step.sand", "step.sand"); + SOUNDS.put("step.snow", "step.snow"); + SOUNDS.put("step.stone", "step.stone"); + SOUNDS.put("step.wood", "step.wood"); + SOUNDS.put("tile.piston.in", "tile.piston.in"); + SOUNDS.put("tile.piston.out", "tile.piston.out"); + } + + public static String map(final String sound) { + return SOUNDS.get(sound); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_4_2to1_3_1_2/types/MetaType1_3_1.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_4_2to1_3_1_2/types/MetaType1_3_1.java new file mode 100644 index 0000000..9702b96 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_4_2to1_3_1_2/types/MetaType1_3_1.java @@ -0,0 +1,37 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_4_2to1_3_1_2.types; + +import com.viaversion.viaversion.api.minecraft.metadata.MetaType; +import com.viaversion.viaversion.api.type.Type; +import net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.types.Types1_6_4; + +public enum MetaType1_3_1 implements MetaType { + + Byte(0, Type.BYTE), + Short(1, Type.SHORT), + Int(2, Type.INT), + Float(3, Type.FLOAT), + String(4, Types1_6_4.STRING), + Slot(5, Types1_3_1.NBTLESS_ITEM), + Position(6, Type.VECTOR); + + private final int typeID; + private final Type type; + + MetaType1_3_1(int typeID, Type type) { + this.typeID = typeID; + this.type = type; + } + + public static MetaType1_3_1 byId(int id) { + return values()[id]; + } + + public int typeId() { + return this.typeID; + } + + public Type type() { + return this.type; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_4_2to1_3_1_2/types/MetadataType.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_4_2to1_3_1_2/types/MetadataType.java new file mode 100644 index 0000000..962e2c8 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_4_2to1_3_1_2/types/MetadataType.java @@ -0,0 +1,13 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_4_2to1_3_1_2.types; + +import com.viaversion.viaversion.api.minecraft.metadata.MetaType; +import com.viaversion.viaversion.api.type.types.minecraft.OldMetaType; + +public class MetadataType extends OldMetaType { + + @Override + protected MetaType getType(int index) { + return MetaType1_3_1.byId(index); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_4_2to1_3_1_2/types/NbtLessItemType.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_4_2to1_3_1_2/types/NbtLessItemType.java new file mode 100644 index 0000000..5f96947 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_4_2to1_3_1_2/types/NbtLessItemType.java @@ -0,0 +1,41 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_4_2to1_3_1_2.types; + +import com.viaversion.viaversion.api.minecraft.item.DataItem; +import com.viaversion.viaversion.api.minecraft.item.Item; +import com.viaversion.viaversion.api.type.Type; +import io.netty.buffer.ByteBuf; + +public class NbtLessItemType extends Type { + + public NbtLessItemType() { + super(Item.class); + } + + public Item read(ByteBuf buffer) throws Exception { + final short id = buffer.readShort(); + final byte amount = buffer.readByte(); + final short data = buffer.readShort(); + if (id < 0) { + return null; + } + + final Item item = new DataItem(); + item.setIdentifier(id); + item.setAmount(amount); + item.setData(data); + return item; + } + + public void write(ByteBuf buffer, Item item) throws Exception { + if (item == null) { + buffer.writeShort(-1); + buffer.writeByte(0); + buffer.writeShort(0); + } else { + buffer.writeShort(item.identifier()); + buffer.writeByte(item.amount()); + buffer.writeShort(item.data()); + } + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_4_2to1_3_1_2/types/Types1_3_1.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_4_2to1_3_1_2/types/Types1_3_1.java new file mode 100644 index 0000000..c9176cd --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_4_2to1_3_1_2/types/Types1_3_1.java @@ -0,0 +1,19 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_4_2to1_3_1_2.types; + +import com.viaversion.viaversion.api.minecraft.item.Item; +import com.viaversion.viaversion.api.minecraft.metadata.Metadata; +import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.types.minecraft.MetaListType; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.ItemArrayType; + +import java.util.List; + +public class Types1_3_1 { + + public static final Type NBTLESS_ITEM = new NbtLessItemType(); + public static final Type NBTLESS_ITEM_ARRAY = new ItemArrayType<>(NBTLESS_ITEM); + + public static final Type METADATA = new MetadataType(); + public static final Type> METADATA_LIST = new MetaListType(METADATA); + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_4_4_5to1_4_2/ClientboundPackets1_4_2.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_4_4_5to1_4_2/ClientboundPackets1_4_2.java new file mode 100644 index 0000000..1054377 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_4_4_5to1_4_2/ClientboundPackets1_4_2.java @@ -0,0 +1,444 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_4_4_5to1_4_2; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType; +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.util.PreNettyPacketType; + +import java.util.function.BiConsumer; + +import static net.raphimc.vialegacy.util.PreNettyTypes.*; + +public enum ClientboundPackets1_4_2 implements ClientboundPacketType, PreNettyPacketType { + + KEEP_ALIVE(0, (user, buf) -> { + buf.readInt(); + }), + JOIN_GAME(1, (user, buf) -> { + buf.readInt(); + readString(buf); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + CHAT_MESSAGE(3, (user, buf) -> { + readString(buf); + }), + TIME_UPDATE(4, (user, buf) -> { + buf.readLong(); + buf.readLong(); + }), + ENTITY_EQUIPMENT(5, (user, buf) -> { + buf.readInt(); + buf.readShort(); + readItemStack1_3_1(buf); + }), + SPAWN_POSITION(6, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + UPDATE_HEALTH(8, (user, buf) -> { + buf.readShort(); + buf.readShort(); + buf.readFloat(); + }), + RESPAWN(9, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + readString(buf); + }), + PLAYER_POSITION_ONLY_ONGROUND(10, (user, buf) -> { + buf.readUnsignedByte(); + }), + PLAYER_POSITION_ONLY_POSITION(11, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION_ONLY_LOOK(12, (user, buf) -> { + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION(13, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + USE_BED(17, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readByte(); + buf.readInt(); + }), + ENTITY_ANIMATION(18, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + SPAWN_PLAYER(20, (user, buf) -> { + buf.readInt(); + readString(buf); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + readEntityMetadata1_4_2(buf); + }), + SPAWN_ITEM(21, (user, buf) -> { + buf.readInt(); + readItemStack1_3_1(buf); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + COLLECT_ITEM(22, (user, buf) -> { + buf.readInt(); + buf.readInt(); + }), + SPAWN_ENTITY(23, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + int i = buf.readInt(); + if (i > 0) { + buf.readShort(); + buf.readShort(); + buf.readShort(); + } + }), + SPAWN_MOB(24, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + buf.readShort(); + buf.readShort(); + readEntityMetadata1_4_2(buf); + }), + SPAWN_PAINTING(25, (user, buf) -> { + buf.readInt(); + readString(buf); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + SPAWN_EXPERIENCE_ORB(26, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readShort(); + }), + ENTITY_VELOCITY(28, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readShort(); + buf.readShort(); + }), + DESTROY_ENTITIES(29, (user, buf) -> { + int x = buf.readUnsignedByte(); + for (int i = 0; i < x; i++) buf.readInt(); + }), + ENTITY_MOVEMENT(30, (user, buf) -> { + buf.readInt(); + }), + ENTITY_POSITION(31, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_ROTATION(32, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_POSITION_AND_ROTATION(33, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_TELEPORT(34, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_HEAD_LOOK(35, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + ENTITY_STATUS(38, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + ATTACH_ENTITY(39, (user, buf) -> { + buf.readInt(); + buf.readInt(); + }), + ENTITY_METADATA(40, (user, buf) -> { + buf.readInt(); + readEntityMetadata1_4_2(buf); + }), + ENTITY_EFFECT(41, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + }), + REMOVE_ENTITY_EFFECT(42, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + SET_EXPERIENCE(43, (user, buf) -> { + buf.readFloat(); + buf.readShort(); + buf.readShort(); + }), + CHUNK_DATA(51, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readBoolean(); + buf.readShort(); + buf.readShort(); + int x = buf.readInt(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + MULTI_BLOCK_CHANGE(52, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readShort(); + int x = buf.readInt(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + BLOCK_CHANGE(53, (user, buf) -> { + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readShort(); + buf.readUnsignedByte(); + }), + BLOCK_ACTION(54, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + buf.readUnsignedByte(); + buf.readUnsignedByte(); + buf.readShort(); + }), + BLOCK_BREAK_ANIMATION(55, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readUnsignedByte(); + }), + MAP_BULK_CHUNK(56, (user, buf) -> { + int x = buf.readShort(); + int y = buf.readInt(); + for (int i = 0; i < y; i++) buf.readByte(); + for (int i = 0; i < x; i++) { + buf.readInt(); + buf.readInt(); + buf.readShort(); + buf.readShort(); + } + }), + EXPLOSION(60, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + int x = buf.readInt(); + for (int i = 0; i < x; i++) { + buf.readByte(); + buf.readByte(); + buf.readByte(); + } + buf.readFloat(); + buf.readFloat(); + buf.readFloat(); + }), + EFFECT(61, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readBoolean(); + }), + NAMED_SOUND(62, (user, buf) -> { + readString(buf); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + GAME_EVENT(70, (user, buf) -> { + buf.readByte(); + buf.readByte(); + }), + SPAWN_GLOBAL_ENTITY(71, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + OPEN_WINDOW(100, (user, buf) -> { + buf.readByte(); + buf.readByte(); + readString(buf); + buf.readByte(); + }), + CLOSE_WINDOW(101, (user, buf) -> { + buf.readByte(); + }), + SET_SLOT(103, (user, buf) -> { + buf.readByte(); + buf.readShort(); + readItemStack1_3_1(buf); + }), + WINDOW_ITEMS(104, (user, buf) -> { + buf.readByte(); + int x = buf.readShort(); + for (int i = 0; i < x; i++) readItemStack1_3_1(buf); + }), + WINDOW_PROPERTY(105, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readShort(); + }), + WINDOW_CONFIRMATION(106, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readByte(); + }), + CREATIVE_INVENTORY_ACTION(107, (user, buf) -> { + buf.readShort(); + readItemStack1_3_1(buf); + }), + UPDATE_SIGN(130, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + readString(buf); + readString(buf); + readString(buf); + readString(buf); + }), + MAP_DATA(131, (user, buf) -> { + buf.readShort(); + buf.readShort(); + short x = buf.readUnsignedByte(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + BLOCK_ENTITY_DATA(132, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + buf.readByte(); + readTag(buf); + }), + STATISTICS(200, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + PLAYER_INFO(201, (user, buf) -> { + readString(buf); + buf.readByte(); + buf.readShort(); + }), + PLAYER_ABILITIES(202, (user, buf) -> { + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + TAB_COMPLETE(203, (user, buf) -> { + readString(buf); + }), + PLUGIN_MESSAGE(250, (user, buf) -> { + readString(buf); + short s = buf.readShort(); + for (int i = 0; i < s; i++) buf.readByte(); + }), + SHARED_KEY(252, (user, buf) -> { + readByteArray(buf); + readByteArray(buf); + }), + SERVER_AUTH_DATA(253, (user, buf) -> { + readString(buf); + readByteArray(buf); + readByteArray(buf); + }), + DISCONNECT(255, (user, buf) -> { + readString(buf); + }); + + private static final ClientboundPackets1_4_2[] REGISTRY = new ClientboundPackets1_4_2[256]; + + static { + for (ClientboundPackets1_4_2 packet : values()) { + REGISTRY[packet.id] = packet; + } + } + + public static ClientboundPackets1_4_2 getPacket(final int id) { + return REGISTRY[id]; + } + + private final int id; + private final BiConsumer packetReader; + + ClientboundPackets1_4_2(final int id, final BiConsumer packetReader) { + this.id = id; + this.packetReader = packetReader; + } + + @Override + public int getId() { + return this.id; + } + + @Override + public String getName() { + return name(); + } + + @Override + public BiConsumer getPacketReader() { + return this.packetReader; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_4_4_5to1_4_2/Protocol1_4_4_5to1_4_2.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_4_4_5to1_4_2/Protocol1_4_4_5to1_4_2.java new file mode 100644 index 0000000..9f34a32 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_4_4_5to1_4_2/Protocol1_4_4_5to1_4_2.java @@ -0,0 +1,87 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_4_4_5to1_4_2; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.minecraft.metadata.Metadata; +import com.viaversion.viaversion.api.protocol.AbstractProtocol; +import com.viaversion.viaversion.api.protocol.remapper.PacketRemapper; +import com.viaversion.viaversion.api.type.Type; +import net.raphimc.vialegacy.protocols.release.protocol1_4_4_5to1_4_2.types.Types1_4_2; +import net.raphimc.vialegacy.protocols.release.protocol1_4_6_7to1_4_4_5.ClientboundPackets1_4_4; +import net.raphimc.vialegacy.protocols.release.protocol1_6_1to1_5_2.ServerboundPackets1_5_2; +import net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.types.MetaType1_6_4; +import net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.types.Types1_6_4; +import net.raphimc.vialegacy.util.PreNettySplitter; + +import java.util.List; + +public class Protocol1_4_4_5to1_4_2 extends AbstractProtocol { + + public Protocol1_4_4_5to1_4_2() { + super(ClientboundPackets1_4_2.class, ClientboundPackets1_4_4.class, ServerboundPackets1_5_2.class, ServerboundPackets1_5_2.class); + } + + @Override + protected void registerPackets() { + this.registerClientbound(ClientboundPackets1_4_2.MAP_DATA, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.SHORT); // item id + map(Type.SHORT); // map id + map(Types1_4_2.UNSIGNED_BYTE_BYTE_ARRAY, Type.SHORT_BYTE_ARRAY); // data + } + }); + this.registerClientbound(ClientboundPackets1_4_2.SPAWN_PLAYER, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + map(Types1_6_4.STRING); // name + map(Type.INT); // x + map(Type.INT); // y + map(Type.INT); // z + map(Type.BYTE); // yaw + map(Type.BYTE); // pitch + map(Type.UNSIGNED_SHORT); // item + map(Types1_4_2.METADATA_LIST, Types1_6_4.METADATA_LIST); // metadata + handler(wrapper -> rewriteMetadata(wrapper.get(Types1_6_4.METADATA_LIST, 0))); + } + }); + this.registerClientbound(ClientboundPackets1_4_2.SPAWN_MOB, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + map(Type.UNSIGNED_BYTE); // type id + map(Type.INT); // x + map(Type.INT); // y + map(Type.INT); // z + map(Type.BYTE); // yaw + map(Type.BYTE); // pitch + map(Type.BYTE); // head yaw + map(Type.SHORT); // velocity x + map(Type.SHORT); // velocity y + map(Type.SHORT); // velocity z + map(Types1_4_2.METADATA_LIST, Types1_6_4.METADATA_LIST); // metadata + handler(wrapper -> rewriteMetadata(wrapper.get(Types1_6_4.METADATA_LIST, 0))); + } + }); + this.registerClientbound(ClientboundPackets1_4_2.ENTITY_METADATA, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + map(Types1_4_2.METADATA_LIST, Types1_6_4.METADATA_LIST); // metadata + handler(wrapper -> rewriteMetadata(wrapper.get(Types1_6_4.METADATA_LIST, 0))); + } + }); + } + + private void rewriteMetadata(final List metadataList) { + for (Metadata metadata : metadataList) { + metadata.setMetaType(MetaType1_6_4.byId(metadata.metaType().typeId())); + } + } + + @Override + public void init(UserConnection userConnection) { + userConnection.put(new PreNettySplitter(userConnection, Protocol1_4_4_5to1_4_2.class, ClientboundPackets1_4_2::getPacket)); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_4_4_5to1_4_2/types/MetaType1_4_2.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_4_4_5to1_4_2/types/MetaType1_4_2.java new file mode 100644 index 0000000..941d087 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_4_4_5to1_4_2/types/MetaType1_4_2.java @@ -0,0 +1,37 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_4_4_5to1_4_2.types; + +import com.viaversion.viaversion.api.minecraft.metadata.MetaType; +import com.viaversion.viaversion.api.type.Type; +import net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.types.Types1_6_4; + +public enum MetaType1_4_2 implements MetaType { + + Byte(0, Type.BYTE), + Short(1, Type.SHORT), + Int(2, Type.INT), + Float(3, Type.FLOAT), + String(4, Types1_6_4.STRING), + Slot(5, Types1_4_2.NBTLESS_ITEM), + Position(6, Type.VECTOR); + + private final int typeID; + private final Type type; + + MetaType1_4_2(int typeID, Type type) { + this.typeID = typeID; + this.type = type; + } + + public static MetaType1_4_2 byId(int id) { + return values()[id]; + } + + public int typeId() { + return this.typeID; + } + + public Type type() { + return this.type; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_4_4_5to1_4_2/types/MetadataType.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_4_4_5to1_4_2/types/MetadataType.java new file mode 100644 index 0000000..ca7b21d --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_4_4_5to1_4_2/types/MetadataType.java @@ -0,0 +1,13 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_4_4_5to1_4_2.types; + +import com.viaversion.viaversion.api.minecraft.metadata.MetaType; +import com.viaversion.viaversion.api.type.types.minecraft.OldMetaType; + +public class MetadataType extends OldMetaType { + + @Override + protected MetaType getType(int index) { + return MetaType1_4_2.byId(index); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_4_4_5to1_4_2/types/NbtLessItemType.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_4_4_5to1_4_2/types/NbtLessItemType.java new file mode 100644 index 0000000..6fffd3f --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_4_4_5to1_4_2/types/NbtLessItemType.java @@ -0,0 +1,37 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_4_4_5to1_4_2.types; + +import com.viaversion.viaversion.api.minecraft.item.DataItem; +import com.viaversion.viaversion.api.minecraft.item.Item; +import com.viaversion.viaversion.api.type.Type; +import io.netty.buffer.ByteBuf; + +public class NbtLessItemType extends Type { + + public NbtLessItemType() { + super(Item.class); + } + + public Item read(ByteBuf buffer) throws Exception { + final short id = buffer.readShort(); + if (id < 0) { + return null; + } + + final Item item = new DataItem(); + item.setIdentifier(id); + item.setAmount(buffer.readByte()); + item.setData(buffer.readShort()); + return item; + } + + public void write(ByteBuf buffer, Item item) throws Exception { + if (item == null) { + buffer.writeShort(-1); + } else { + buffer.writeShort(item.identifier()); + buffer.writeByte(item.amount()); + buffer.writeShort(item.data()); + } + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_4_4_5to1_4_2/types/Types1_4_2.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_4_4_5to1_4_2/types/Types1_4_2.java new file mode 100644 index 0000000..2c6f03b --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_4_4_5to1_4_2/types/Types1_4_2.java @@ -0,0 +1,21 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_4_4_5to1_4_2.types; + +import com.viaversion.viaversion.api.minecraft.item.Item; +import com.viaversion.viaversion.api.minecraft.metadata.Metadata; +import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.types.minecraft.MetaListType; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.ItemArrayType; + +import java.util.List; + +public class Types1_4_2 { + + public static final Type UNSIGNED_BYTE_BYTE_ARRAY = new UnsignedByteByteArrayType(); + + public static final Type NBTLESS_ITEM = new NbtLessItemType(); + public static final Type NBTLESS_ITEM_ARRAY = new ItemArrayType<>(NBTLESS_ITEM); + + public static final Type METADATA = new MetadataType(); + public static final Type> METADATA_LIST = new MetaListType(METADATA); + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_4_4_5to1_4_2/types/UnsignedByteByteArrayType.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_4_4_5to1_4_2/types/UnsignedByteByteArrayType.java new file mode 100644 index 0000000..3c8a214 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_4_4_5to1_4_2/types/UnsignedByteByteArrayType.java @@ -0,0 +1,23 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_4_4_5to1_4_2.types; + +import com.viaversion.viaversion.api.type.Type; +import io.netty.buffer.ByteBuf; + +public class UnsignedByteByteArrayType extends Type { + + public UnsignedByteByteArrayType() { + super(byte[].class); + } + + public void write(ByteBuf buffer, byte[] array) throws Exception { + buffer.writeByte(array.length & 255); + buffer.writeBytes(array); + } + + public byte[] read(ByteBuf buffer) throws Exception { + final byte[] array = new byte[buffer.readUnsignedByte()]; + buffer.readBytes(array); + return array; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_4_6_7to1_4_4_5/ClientboundPackets1_4_4.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_4_6_7to1_4_4_5/ClientboundPackets1_4_4.java new file mode 100644 index 0000000..3ae94b7 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_4_6_7to1_4_4_5/ClientboundPackets1_4_4.java @@ -0,0 +1,443 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_4_6_7to1_4_4_5; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType; +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.util.PreNettyPacketType; +import net.raphimc.vialegacy.util.PreNettyTypes; + +import java.util.function.BiConsumer; + +public enum ClientboundPackets1_4_4 implements ClientboundPacketType, PreNettyPacketType { + + KEEP_ALIVE(0, (user, buf) -> { + buf.readInt(); + }), + JOIN_GAME(1, (user, buf) -> { + buf.readInt(); + PreNettyTypes.readString(buf); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + CHAT_MESSAGE(3, (user, buf) -> { + PreNettyTypes.readString(buf); + }), + TIME_UPDATE(4, (user, buf) -> { + buf.readLong(); + buf.readLong(); + }), + ENTITY_EQUIPMENT(5, (user, buf) -> { + buf.readInt(); + buf.readShort(); + PreNettyTypes.readItemStack1_3_1(buf); + }), + SPAWN_POSITION(6, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + UPDATE_HEALTH(8, (user, buf) -> { + buf.readShort(); + buf.readShort(); + buf.readFloat(); + }), + RESPAWN(9, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + PreNettyTypes.readString(buf); + }), + PLAYER_POSITION_ONLY_ONGROUND(10, (user, buf) -> { + buf.readUnsignedByte(); + }), + PLAYER_POSITION_ONLY_POSITION(11, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION_ONLY_LOOK(12, (user, buf) -> { + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION(13, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + USE_BED(17, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readByte(); + buf.readInt(); + }), + ENTITY_ANIMATION(18, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + SPAWN_PLAYER(20, (user, buf) -> { + buf.readInt(); + PreNettyTypes.readString(buf); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + PreNettyTypes.readEntityMetadata1_4_4(buf); + }), + SPAWN_ITEM(21, (user, buf) -> { + buf.readInt(); + PreNettyTypes.readItemStack1_3_1(buf); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + COLLECT_ITEM(22, (user, buf) -> { + buf.readInt(); + buf.readInt(); + }), + SPAWN_ENTITY(23, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + int i = buf.readInt(); + if (i > 0) { + buf.readShort(); + buf.readShort(); + buf.readShort(); + } + }), + SPAWN_MOB(24, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + buf.readShort(); + buf.readShort(); + PreNettyTypes.readEntityMetadata1_4_4(buf); + }), + SPAWN_PAINTING(25, (user, buf) -> { + buf.readInt(); + PreNettyTypes.readString(buf); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + SPAWN_EXPERIENCE_ORB(26, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readShort(); + }), + ENTITY_VELOCITY(28, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readShort(); + buf.readShort(); + }), + DESTROY_ENTITIES(29, (user, buf) -> { + int x = buf.readUnsignedByte(); + for (int i = 0; i < x; i++) buf.readInt(); + }), + ENTITY_MOVEMENT(30, (user, buf) -> { + buf.readInt(); + }), + ENTITY_POSITION(31, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_ROTATION(32, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_POSITION_AND_ROTATION(33, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_TELEPORT(34, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_HEAD_LOOK(35, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + ENTITY_STATUS(38, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + ATTACH_ENTITY(39, (user, buf) -> { + buf.readInt(); + buf.readInt(); + }), + ENTITY_METADATA(40, (user, buf) -> { + buf.readInt(); + PreNettyTypes.readEntityMetadata1_4_4(buf); + }), + ENTITY_EFFECT(41, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + }), + REMOVE_ENTITY_EFFECT(42, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + SET_EXPERIENCE(43, (user, buf) -> { + buf.readFloat(); + buf.readShort(); + buf.readShort(); + }), + CHUNK_DATA(51, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readBoolean(); + buf.readShort(); + buf.readShort(); + int x = buf.readInt(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + MULTI_BLOCK_CHANGE(52, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readShort(); + int x = buf.readInt(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + BLOCK_CHANGE(53, (user, buf) -> { + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readShort(); + buf.readUnsignedByte(); + }), + BLOCK_ACTION(54, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + buf.readUnsignedByte(); + buf.readUnsignedByte(); + buf.readShort(); + }), + BLOCK_BREAK_ANIMATION(55, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readUnsignedByte(); + }), + MAP_BULK_CHUNK(56, (user, buf) -> { + int x = buf.readShort(); + int y = buf.readInt(); + for (int i = 0; i < y; i++) buf.readByte(); + for (int i = 0; i < x; i++) { + buf.readInt(); + buf.readInt(); + buf.readShort(); + buf.readShort(); + } + }), + EXPLOSION(60, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + int x = buf.readInt(); + for (int i = 0; i < x; i++) { + buf.readByte(); + buf.readByte(); + buf.readByte(); + } + buf.readFloat(); + buf.readFloat(); + buf.readFloat(); + }), + EFFECT(61, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readBoolean(); + }), + NAMED_SOUND(62, (user, buf) -> { + PreNettyTypes.readString(buf); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + GAME_EVENT(70, (user, buf) -> { + buf.readByte(); + buf.readByte(); + }), + SPAWN_GLOBAL_ENTITY(71, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + OPEN_WINDOW(100, (user, buf) -> { + buf.readByte(); + buf.readByte(); + PreNettyTypes.readString(buf); + buf.readByte(); + }), + CLOSE_WINDOW(101, (user, buf) -> { + buf.readByte(); + }), + SET_SLOT(103, (user, buf) -> { + buf.readByte(); + buf.readShort(); + PreNettyTypes.readItemStack1_3_1(buf); + }), + WINDOW_ITEMS(104, (user, buf) -> { + buf.readByte(); + int x = buf.readShort(); + for (int i = 0; i < x; i++) PreNettyTypes.readItemStack1_3_1(buf); + }), + WINDOW_PROPERTY(105, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readShort(); + }), + WINDOW_CONFIRMATION(106, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readByte(); + }), + CREATIVE_INVENTORY_ACTION(107, (user, buf) -> { + buf.readShort(); + PreNettyTypes.readItemStack1_3_1(buf); + }), + UPDATE_SIGN(130, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + PreNettyTypes.readString(buf); + PreNettyTypes.readString(buf); + PreNettyTypes.readString(buf); + PreNettyTypes.readString(buf); + }), + MAP_DATA(131, (user, buf) -> { + buf.readShort(); + buf.readShort(); + int x = buf.readUnsignedShort(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + BLOCK_ENTITY_DATA(132, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + buf.readByte(); + PreNettyTypes.readTag(buf); + }), + STATISTICS(200, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + PLAYER_INFO(201, (user, buf) -> { + PreNettyTypes.readString(buf); + buf.readByte(); + buf.readShort(); + }), + PLAYER_ABILITIES(202, (user, buf) -> { + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + TAB_COMPLETE(203, (user, buf) -> { + PreNettyTypes.readString(buf); + }), + PLUGIN_MESSAGE(250, (user, buf) -> { + PreNettyTypes.readString(buf); + short s = buf.readShort(); + for (int i = 0; i < s; i++) buf.readByte(); + }), + SHARED_KEY(252, (user, buf) -> { + PreNettyTypes.readByteArray(buf); + PreNettyTypes.readByteArray(buf); + }), + SERVER_AUTH_DATA(253, (user, buf) -> { + PreNettyTypes.readString(buf); + PreNettyTypes.readByteArray(buf); + PreNettyTypes.readByteArray(buf); + }), + DISCONNECT(255, (user, buf) -> { + PreNettyTypes.readString(buf); + }); + + private static final ClientboundPackets1_4_4[] REGISTRY = new ClientboundPackets1_4_4[256]; + + static { + for (ClientboundPackets1_4_4 packet : values()) { + REGISTRY[packet.id] = packet; + } + } + + public static ClientboundPackets1_4_4 getPacket(final int id) { + return REGISTRY[id]; + } + + private final int id; + private final BiConsumer packetReader; + + ClientboundPackets1_4_4(final int id, final BiConsumer packetReader) { + this.id = id; + this.packetReader = packetReader; + } + + @Override + public int getId() { + return this.id; + } + + @Override + public String getName() { + return name(); + } + + @Override + public BiConsumer getPacketReader() { + return this.packetReader; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_4_6_7to1_4_4_5/Protocol1_4_6_7to1_4_4_5.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_4_6_7to1_4_4_5/Protocol1_4_6_7to1_4_4_5.java new file mode 100644 index 0000000..67340f1 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_4_6_7to1_4_4_5/Protocol1_4_6_7to1_4_4_5.java @@ -0,0 +1,139 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_4_6_7to1_4_4_5; + +import com.google.common.collect.Lists; +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.minecraft.entities.Entity1_10Types; +import com.viaversion.viaversion.api.minecraft.item.Item; +import com.viaversion.viaversion.api.minecraft.metadata.Metadata; +import com.viaversion.viaversion.api.protocol.AbstractProtocol; +import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; +import com.viaversion.viaversion.api.protocol.remapper.PacketRemapper; +import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; +import net.raphimc.vialegacy.protocols.release.protocol1_4_6_7to1_4_4_5.types.ChunkBulk1_4_4Type; +import net.raphimc.vialegacy.protocols.release.protocol1_5_0_1to1_4_6_7.ClientboundPackets1_4_6; +import net.raphimc.vialegacy.protocols.release.protocol1_6_1to1_5_2.ServerboundPackets1_5_2; +import net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.types.MetaType1_6_4; +import net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.types.Types1_6_4; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.metadata.MetaIndex1_8to1_7_6; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.ChunkBulk1_7_6Type; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.Types1_7_6; +import net.raphimc.vialegacy.util.PreNettySplitter; + +public class Protocol1_4_6_7to1_4_4_5 extends AbstractProtocol { + + public Protocol1_4_6_7to1_4_4_5() { + super(ClientboundPackets1_4_4.class, ClientboundPackets1_4_6.class, ServerboundPackets1_5_2.class, ServerboundPackets1_5_2.class); + } + + @Override + protected void registerPackets() { + this.registerClientbound(ClientboundPackets1_4_4.JOIN_GAME, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + map(Types1_6_4.STRING); // level type + map(Type.BYTE); // game mode + map(Type.BYTE); // dimension id + map(Type.BYTE); // difficulty + map(Type.BYTE); // world height + map(Type.BYTE); // max players + handler(wrapper -> wrapper.user().get(ClientWorld.class).setEnvironment(wrapper.get(Type.BYTE, 1))); + } + }); + this.registerClientbound(ClientboundPackets1_4_4.RESPAWN, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // dimension id + map(Type.BYTE); // difficulty + map(Type.BYTE); // game mode + map(Type.SHORT); // world height + map(Types1_6_4.STRING); // worldType + handler(wrapper -> wrapper.user().get(ClientWorld.class).setEnvironment(wrapper.get(Type.INT, 0))); + } + }); + this.registerClientbound(ClientboundPackets1_4_4.SPAWN_ITEM, ClientboundPackets1_4_6.SPAWN_ENTITY, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + final int entityId = wrapper.read(Type.INT); // entity id + final Item item = wrapper.read(Types1_7_6.COMPRESSED_ITEM); // item + final int x = wrapper.read(Type.INT); // x + final int y = wrapper.read(Type.INT); // y + final int z = wrapper.read(Type.INT); // z + final int motionX = wrapper.read(Type.BYTE); // velocity x + final int motionY = wrapper.read(Type.BYTE); // velocity y + final int motionZ = wrapper.read(Type.BYTE); // velocity z + + wrapper.write(Type.INT, entityId); // entity id + wrapper.write(Type.BYTE, (byte) Entity1_10Types.ObjectType.ITEM.getId()); // type id + wrapper.write(Type.INT, x); // x + wrapper.write(Type.INT, y); // y + wrapper.write(Type.INT, z); // z + wrapper.write(Type.BYTE, (byte) 0); // yaw + wrapper.write(Type.BYTE, (byte) 0); // pitch + wrapper.write(Type.INT, 1); // data (any value above 0) + wrapper.write(Type.SHORT, (short) (motionX / 128F * 8000F)); // velocity x + wrapper.write(Type.SHORT, (short) (motionY / 128F * 8000F)); // velocity y + wrapper.write(Type.SHORT, (short) (motionZ / 128F * 8000F)); // velocity z + + final PacketWrapper metadata = PacketWrapper.create(ClientboundPackets1_4_6.ENTITY_METADATA, wrapper.user()); + metadata.write(Type.INT, entityId); // entity id + metadata.write(Types1_6_4.METADATA_LIST, Lists.newArrayList(new Metadata(MetaIndex1_8to1_7_6.ITEM_ITEM.getOldIndex(), MetaType1_6_4.Slot, item))); // metadata + + wrapper.send(Protocol1_4_6_7to1_4_4_5.class); + metadata.send(Protocol1_4_6_7to1_4_4_5.class); + wrapper.cancel(); + }); + } + }); + this.registerClientbound(ClientboundPackets1_4_4.SPAWN_ENTITY, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + map(Type.BYTE); // type id + map(Type.INT); // x + map(Type.INT); // y + map(Type.INT); // z + create(Type.BYTE, (byte) 0); // pitch + create(Type.BYTE, (byte) 0); // yaw + map(Type.INT); // data + // more conditional data + } + }); + this.registerClientbound(ClientboundPackets1_4_4.MAP_BULK_CHUNK, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + final ClientWorld clientWorld = wrapper.user().get(ClientWorld.class); + wrapper.write(new ChunkBulk1_7_6Type(clientWorld), wrapper.read(new ChunkBulk1_4_4Type(clientWorld))); + }); + } + }); + + this.registerServerbound(ServerboundPackets1_5_2.PLAYER_DIGGING, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.UNSIGNED_BYTE); // status + handler(wrapper -> { + final short status = wrapper.get(Type.UNSIGNED_BYTE, 0); + if (status == 3) { + wrapper.set(Type.UNSIGNED_BYTE, 0, (short) 4); + } + }); + map(Types1_7_6.POSITION_UBYTE); // position + map(Type.UNSIGNED_BYTE); // direction + } + }); + } + + @Override + public void init(UserConnection userConnection) { + userConnection.put(new PreNettySplitter(userConnection, Protocol1_4_6_7to1_4_4_5.class, ClientboundPackets1_4_4::getPacket)); + + if (!userConnection.has(ClientWorld.class)) { + userConnection.put(new ClientWorld(userConnection)); + } + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_4_6_7to1_4_4_5/types/ChunkBulk1_4_4Type.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_4_6_7to1_4_4_5/types/ChunkBulk1_4_4Type.java new file mode 100644 index 0000000..c61a475 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_4_6_7to1_4_4_5/types/ChunkBulk1_4_4Type.java @@ -0,0 +1,22 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_4_6_7to1_4_4_5.types; + +import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.ChunkBulk1_7_6Type; + +public class ChunkBulk1_4_4Type extends ChunkBulk1_7_6Type { + + public ChunkBulk1_4_4Type(ClientWorld clientWorld) { + super(clientWorld); + } + + @Override + protected boolean readHasSkyLight(ByteBuf byteBuf, ClientWorld clientWorld) { + return true; + } + + @Override + protected void writeHasSkyLight(ByteBuf byteBuf, ClientWorld clientWorld, boolean hasSkyLight) { + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_5_0_1to1_4_6_7/ClientboundPackets1_4_6.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_5_0_1to1_4_6_7/ClientboundPackets1_4_6.java new file mode 100644 index 0000000..51db212 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_5_0_1to1_4_6_7/ClientboundPackets1_4_6.java @@ -0,0 +1,439 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_5_0_1to1_4_6_7; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType; +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.util.PreNettyPacketType; +import net.raphimc.vialegacy.util.PreNettyTypes; + +import java.util.function.BiConsumer; + +public enum ClientboundPackets1_4_6 implements ClientboundPacketType, PreNettyPacketType { + + KEEP_ALIVE(0, (user, buf) -> { + buf.readInt(); + }), + JOIN_GAME(1, (user, buf) -> { + buf.readInt(); + PreNettyTypes.readString(buf); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + CHAT_MESSAGE(3, (user, buf) -> { + PreNettyTypes.readString(buf); + }), + TIME_UPDATE(4, (user, buf) -> { + buf.readLong(); + buf.readLong(); + }), + ENTITY_EQUIPMENT(5, (user, buf) -> { + buf.readInt(); + buf.readShort(); + PreNettyTypes.readItemStack1_3_1(buf); + }), + SPAWN_POSITION(6, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + UPDATE_HEALTH(8, (user, buf) -> { + buf.readShort(); + buf.readShort(); + buf.readFloat(); + }), + RESPAWN(9, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + PreNettyTypes.readString(buf); + }), + PLAYER_POSITION_ONLY_ONGROUND(10, (user, buf) -> { + buf.readUnsignedByte(); + }), + PLAYER_POSITION_ONLY_POSITION(11, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION_ONLY_LOOK(12, (user, buf) -> { + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION(13, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + HELD_ITEM_CHANGE(16, (user, buf) -> { + buf.readShort(); + }), + USE_BED(17, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readByte(); + buf.readInt(); + }), + ENTITY_ANIMATION(18, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + SPAWN_PLAYER(20, (user, buf) -> { + buf.readInt(); + PreNettyTypes.readString(buf); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + PreNettyTypes.readEntityMetadata1_4_4(buf); + }), + COLLECT_ITEM(22, (user, buf) -> { + buf.readInt(); + buf.readInt(); + }), + SPAWN_ENTITY(23, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + int i = buf.readInt(); + if (i > 0) { + buf.readShort(); + buf.readShort(); + buf.readShort(); + } + }), + SPAWN_MOB(24, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + buf.readShort(); + buf.readShort(); + PreNettyTypes.readEntityMetadata1_4_4(buf); + }), + SPAWN_PAINTING(25, (user, buf) -> { + buf.readInt(); + PreNettyTypes.readString(buf); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + SPAWN_EXPERIENCE_ORB(26, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readShort(); + }), + ENTITY_VELOCITY(28, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readShort(); + buf.readShort(); + }), + DESTROY_ENTITIES(29, (user, buf) -> { + int x = buf.readUnsignedByte(); + for (int i = 0; i < x; i++) buf.readInt(); + }), + ENTITY_MOVEMENT(30, (user, buf) -> { + buf.readInt(); + }), + ENTITY_POSITION(31, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_ROTATION(32, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_POSITION_AND_ROTATION(33, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_TELEPORT(34, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_HEAD_LOOK(35, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + ENTITY_STATUS(38, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + ATTACH_ENTITY(39, (user, buf) -> { + buf.readInt(); + buf.readInt(); + }), + ENTITY_METADATA(40, (user, buf) -> { + buf.readInt(); + PreNettyTypes.readEntityMetadata1_4_4(buf); + }), + ENTITY_EFFECT(41, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + }), + REMOVE_ENTITY_EFFECT(42, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + SET_EXPERIENCE(43, (user, buf) -> { + buf.readFloat(); + buf.readShort(); + buf.readShort(); + }), + CHUNK_DATA(51, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readBoolean(); + buf.readShort(); + buf.readShort(); + int x = buf.readInt(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + MULTI_BLOCK_CHANGE(52, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readShort(); + int x = buf.readInt(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + BLOCK_CHANGE(53, (user, buf) -> { + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readShort(); + buf.readUnsignedByte(); + }), + BLOCK_ACTION(54, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + buf.readUnsignedByte(); + buf.readUnsignedByte(); + buf.readShort(); + }), + BLOCK_BREAK_ANIMATION(55, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readUnsignedByte(); + }), + MAP_BULK_CHUNK(56, (user, buf) -> { + int x = buf.readShort(); + int y = buf.readInt(); + buf.readBoolean(); + for (int i = 0; i < y; i++) buf.readByte(); + for (int i = 0; i < x; i++) { + buf.readInt(); + buf.readInt(); + buf.readShort(); + buf.readShort(); + } + }), + EXPLOSION(60, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + int x = buf.readInt(); + for (int i = 0; i < x; i++) { + buf.readByte(); + buf.readByte(); + buf.readByte(); + } + buf.readFloat(); + buf.readFloat(); + buf.readFloat(); + }), + EFFECT(61, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readBoolean(); + }), + NAMED_SOUND(62, (user, buf) -> { + PreNettyTypes.readString(buf); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + GAME_EVENT(70, (user, buf) -> { + buf.readByte(); + buf.readByte(); + }), + SPAWN_GLOBAL_ENTITY(71, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + OPEN_WINDOW(100, (user, buf) -> { + buf.readByte(); + buf.readByte(); + PreNettyTypes.readString(buf); + buf.readByte(); + }), + CLOSE_WINDOW(101, (user, buf) -> { + buf.readByte(); + }), + SET_SLOT(103, (user, buf) -> { + buf.readByte(); + buf.readShort(); + PreNettyTypes.readItemStack1_3_1(buf); + }), + WINDOW_ITEMS(104, (user, buf) -> { + buf.readByte(); + int x = buf.readShort(); + for (int i = 0; i < x; i++) PreNettyTypes.readItemStack1_3_1(buf); + }), + WINDOW_PROPERTY(105, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readShort(); + }), + WINDOW_CONFIRMATION(106, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readByte(); + }), + CREATIVE_INVENTORY_ACTION(107, (user, buf) -> { + buf.readShort(); + PreNettyTypes.readItemStack1_3_1(buf); + }), + UPDATE_SIGN(130, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + PreNettyTypes.readString(buf); + PreNettyTypes.readString(buf); + PreNettyTypes.readString(buf); + PreNettyTypes.readString(buf); + }), + MAP_DATA(131, (user, buf) -> { + buf.readShort(); + buf.readShort(); + int x = buf.readUnsignedShort(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + BLOCK_ENTITY_DATA(132, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + buf.readByte(); + PreNettyTypes.readTag(buf); + }), + STATISTICS(200, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + PLAYER_INFO(201, (user, buf) -> { + PreNettyTypes.readString(buf); + buf.readByte(); + buf.readShort(); + }), + PLAYER_ABILITIES(202, (user, buf) -> { + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + TAB_COMPLETE(203, (user, buf) -> { + PreNettyTypes.readString(buf); + }), + PLUGIN_MESSAGE(250, (user, buf) -> { + PreNettyTypes.readString(buf); + short s = buf.readShort(); + for (int i = 0; i < s; i++) buf.readByte(); + }), + SHARED_KEY(252, (user, buf) -> { + PreNettyTypes.readByteArray(buf); + PreNettyTypes.readByteArray(buf); + }), + SERVER_AUTH_DATA(253, (user, buf) -> { + PreNettyTypes.readString(buf); + PreNettyTypes.readByteArray(buf); + PreNettyTypes.readByteArray(buf); + }), + DISCONNECT(255, (user, buf) -> { + PreNettyTypes.readString(buf); + }); + + private static final ClientboundPackets1_4_6[] REGISTRY = new ClientboundPackets1_4_6[256]; + + static { + for (ClientboundPackets1_4_6 packet : values()) { + REGISTRY[packet.id] = packet; + } + } + + public static ClientboundPackets1_4_6 getPacket(final int id) { + return REGISTRY[id]; + } + + private final int id; + private final BiConsumer packetReader; + + ClientboundPackets1_4_6(final int id, final BiConsumer packetReader) { + this.id = id; + this.packetReader = packetReader; + } + + @Override + public int getId() { + return this.id; + } + + @Override + public String getName() { + return name(); + } + + @Override + public BiConsumer getPacketReader() { + return this.packetReader; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_5_0_1to1_4_6_7/Protocol1_5_0_1to1_4_6_7.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_5_0_1to1_4_6_7/Protocol1_5_0_1to1_4_6_7.java new file mode 100644 index 0000000..9ffb7de --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_5_0_1to1_4_6_7/Protocol1_5_0_1to1_4_6_7.java @@ -0,0 +1,138 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_5_0_1to1_4_6_7; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.minecraft.entities.Entity1_10Types; +import com.viaversion.viaversion.api.minecraft.item.DataItem; +import com.viaversion.viaversion.api.protocol.AbstractProtocol; +import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; +import com.viaversion.viaversion.api.protocol.remapper.PacketRemapper; +import com.viaversion.viaversion.api.type.Type; +import net.raphimc.vialegacy.protocols.release.protocol1_6_1to1_5_2.ClientboundPackets1_5_2; +import net.raphimc.vialegacy.protocols.release.protocol1_6_1to1_5_2.ServerboundPackets1_5_2; +import net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.types.Types1_6_4; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.Types1_7_6; +import net.raphimc.vialegacy.util.PreNettySplitter; + +public class Protocol1_5_0_1to1_4_6_7 extends AbstractProtocol { + + public Protocol1_5_0_1to1_4_6_7() { + super(ClientboundPackets1_4_6.class, ClientboundPackets1_5_2.class, ServerboundPackets1_5_2.class, ServerboundPackets1_5_2.class); + } + + @Override + protected void registerPackets() { + this.registerClientbound(ClientboundPackets1_4_6.SPAWN_ENTITY, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + map(Type.BYTE); // type id + map(Type.INT); // x + map(Type.INT); // y + map(Type.INT); // z + map(Type.BYTE); // yaw + map(Type.BYTE); // pitch + map(Type.INT); // data + handler(wrapper -> { + final byte typeId = wrapper.get(Type.BYTE, 0); + if (typeId == 10 || typeId == 11 || typeId == 12) { + wrapper.set(Type.BYTE, 0, (byte) Entity1_10Types.ObjectType.MINECART.getId()); + } + int throwerEntityId = wrapper.get(Type.INT, 4); + short speedX = 0; + short speedY = 0; + short speedZ = 0; + if (throwerEntityId > 0) { + speedX = wrapper.read(Type.SHORT); // velocity x + speedY = wrapper.read(Type.SHORT); // velocity y + speedZ = wrapper.read(Type.SHORT); // velocity z + } + if (typeId == 10) throwerEntityId = 0; // normal minecart + if (typeId == 11) throwerEntityId = 1; // chest minecart + if (typeId == 12) throwerEntityId = 2; // oven minecart + wrapper.set(Type.INT, 4, throwerEntityId); + if (throwerEntityId > 0) { + wrapper.write(Type.SHORT, speedX); + wrapper.write(Type.SHORT, speedY); + wrapper.write(Type.SHORT, speedZ); + } + }); + } + }); + this.registerClientbound(ClientboundPackets1_4_6.OPEN_WINDOW, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.UNSIGNED_BYTE); // window id + map(Type.UNSIGNED_BYTE); // window type + map(Types1_6_4.STRING); // title + map(Type.UNSIGNED_BYTE); // slots + create(Type.BOOLEAN, false); // use provided title + } + }); + + this.registerServerbound(ServerboundPackets1_5_2.CLICK_WINDOW, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.BYTE); // window id + map(Type.SHORT); // slot + map(Type.BYTE); // button + map(Type.SHORT); // action + map(Type.BYTE); // mode + map(Types1_7_6.COMPRESSED_ITEM); // item + handler(wrapper -> { + final short slot = wrapper.get(Type.SHORT, 0); + final byte button = wrapper.get(Type.BYTE, 1); + final byte mode = wrapper.get(Type.BYTE, 2); + + if (mode > 3) { + boolean leftClickFlag = false; + boolean startDragging = false; + boolean endDragging = false; + boolean droppingUsingQ = false; + boolean addSlot = false; + + switch (mode) { + case 0: + leftClickFlag = button == 0; + break; + case 4: + droppingUsingQ = button + (slot != -999 ? 2 : 0) == 2; + break; + case 5: + startDragging = button == 0; + endDragging = button == 2; + addSlot = button == 1; + break; + } + + final boolean leftClick = leftClickFlag || startDragging || addSlot || endDragging; + final boolean clickingOutside = slot == -999 && mode != 5; + final boolean usingShift = mode == 1; + final int mouseClick = leftClick ? 0 : 1; + + if (droppingUsingQ) { + final PacketWrapper closeWindow = PacketWrapper.create(ClientboundPackets1_5_2.CLOSE_WINDOW, wrapper.user()); + closeWindow.write(Type.BYTE, (byte) 0); // window id + closeWindow.send(Protocol1_5_0_1to1_4_6_7.class); + wrapper.cancel(); + return; + } + if (slot < 0 && !clickingOutside) { + wrapper.cancel(); + return; + } + + wrapper.set(Type.BYTE, 1, (byte) mouseClick); + wrapper.set(Type.BYTE, 2, (byte) (usingShift ? 1 : 0)); + wrapper.set(Types1_7_6.COMPRESSED_ITEM, 0, new DataItem(34, (byte) 0, (short) 0, null)); + } + }); + } + }); + } + + @Override + public void init(UserConnection userConnection) { + userConnection.put(new PreNettySplitter(userConnection, Protocol1_5_0_1to1_4_6_7.class, ClientboundPackets1_4_6::getPacket)); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_5_2to1_5_0_1/Protocol1_5_2to1_5_0_1.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_5_2to1_5_0_1/Protocol1_5_2to1_5_0_1.java new file mode 100644 index 0000000..24067de --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_5_2to1_5_0_1/Protocol1_5_2to1_5_0_1.java @@ -0,0 +1,13 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_5_2to1_5_0_1; + +import com.viaversion.viaversion.api.protocol.AbstractProtocol; +import net.raphimc.vialegacy.protocols.release.protocol1_6_1to1_5_2.ClientboundPackets1_5_2; +import net.raphimc.vialegacy.protocols.release.protocol1_6_1to1_5_2.ServerboundPackets1_5_2; + +public class Protocol1_5_2to1_5_0_1 extends AbstractProtocol { + + public Protocol1_5_2to1_5_0_1() { + super(ClientboundPackets1_5_2.class, ClientboundPackets1_5_2.class, ServerboundPackets1_5_2.class, ServerboundPackets1_5_2.class); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_6_1to1_5_2/ClientboundPackets1_5_2.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_6_1to1_5_2/ClientboundPackets1_5_2.java new file mode 100644 index 0000000..efd99ad --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_6_1to1_5_2/ClientboundPackets1_5_2.java @@ -0,0 +1,483 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_6_1to1_5_2; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType; +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.util.PreNettyPacketType; + +import java.util.function.BiConsumer; + +import static net.raphimc.vialegacy.util.PreNettyTypes.*; + +public enum ClientboundPackets1_5_2 implements ClientboundPacketType, PreNettyPacketType { + + KEEP_ALIVE(0, (user, buf) -> { + buf.readInt(); + }), + JOIN_GAME(1, (user, buf) -> { + buf.readInt(); + readString(buf); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + CHAT_MESSAGE(3, (user, buf) -> { + readString(buf); + }), + TIME_UPDATE(4, (user, buf) -> { + buf.readLong(); + buf.readLong(); + }), + ENTITY_EQUIPMENT(5, (user, buf) -> { + buf.readInt(); + buf.readShort(); + readItemStack1_3_1(buf); + }), + SPAWN_POSITION(6, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + UPDATE_HEALTH(8, (user, buf) -> { + buf.readShort(); + buf.readShort(); + buf.readFloat(); + }), + RESPAWN(9, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + readString(buf); + }), + PLAYER_POSITION_ONLY_ONGROUND(10, (user, buf) -> { + buf.readUnsignedByte(); + }), + PLAYER_POSITION_ONLY_POSITION(11, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION_ONLY_LOOK(12, (user, buf) -> { + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION(13, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + HELD_ITEM_CHANGE(16, (user, buf) -> { + buf.readShort(); + }), + USE_BED(17, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readByte(); + buf.readInt(); + }), + ENTITY_ANIMATION(18, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + SPAWN_PLAYER(20, (user, buf) -> { + buf.readInt(); + readString(buf); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + readEntityMetadata1_4_4(buf); + }), + COLLECT_ITEM(22, (user, buf) -> { + buf.readInt(); + buf.readInt(); + }), + SPAWN_ENTITY(23, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + int i = buf.readInt(); + if (i > 0) { + buf.readShort(); + buf.readShort(); + buf.readShort(); + } + }), + SPAWN_MOB(24, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + buf.readShort(); + buf.readShort(); + readEntityMetadata1_4_4(buf); + }), + SPAWN_PAINTING(25, (user, buf) -> { + buf.readInt(); + readString(buf); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + SPAWN_EXPERIENCE_ORB(26, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readShort(); + }), + ENTITY_VELOCITY(28, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readShort(); + buf.readShort(); + }), + DESTROY_ENTITIES(29, (user, buf) -> { + int x = buf.readUnsignedByte(); + for (int i = 0; i < x; i++) buf.readInt(); + }), + ENTITY_MOVEMENT(30, (user, buf) -> { + buf.readInt(); + }), + ENTITY_POSITION(31, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_ROTATION(32, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_POSITION_AND_ROTATION(33, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_TELEPORT(34, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_HEAD_LOOK(35, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + ENTITY_STATUS(38, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + ATTACH_ENTITY(39, (user, buf) -> { + buf.readInt(); + buf.readInt(); + }), + ENTITY_METADATA(40, (user, buf) -> { + buf.readInt(); + readEntityMetadata1_4_4(buf); + }), + ENTITY_EFFECT(41, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + }), + REMOVE_ENTITY_EFFECT(42, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + SET_EXPERIENCE(43, (user, buf) -> { + buf.readFloat(); + buf.readShort(); + buf.readShort(); + }), + CHUNK_DATA(51, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readBoolean(); + buf.readShort(); + buf.readShort(); + int x = buf.readInt(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + MULTI_BLOCK_CHANGE(52, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readShort(); + int x = buf.readInt(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + BLOCK_CHANGE(53, (user, buf) -> { + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readShort(); + buf.readUnsignedByte(); + }), + BLOCK_ACTION(54, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + buf.readUnsignedByte(); + buf.readUnsignedByte(); + buf.readShort(); + }), + BLOCK_BREAK_ANIMATION(55, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readUnsignedByte(); + }), + MAP_BULK_CHUNK(56, (user, buf) -> { + int x = buf.readShort(); + int y = buf.readInt(); + buf.readBoolean(); + for (int i = 0; i < y; i++) buf.readByte(); + for (int i = 0; i < x; i++) { + buf.readInt(); + buf.readInt(); + buf.readShort(); + buf.readShort(); + } + }), + EXPLOSION(60, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + int x = buf.readInt(); + for (int i = 0; i < x; i++) { + buf.readByte(); + buf.readByte(); + buf.readByte(); + } + buf.readFloat(); + buf.readFloat(); + buf.readFloat(); + }), + EFFECT(61, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readBoolean(); + }), + NAMED_SOUND(62, (user, buf) -> { + readString(buf); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + SPAWN_PARTICLE(63, (user, buf) -> { + readString(buf); + buf.readFloat(); + buf.readFloat(); + buf.readFloat(); + buf.readFloat(); + buf.readFloat(); + buf.readFloat(); + buf.readFloat(); + buf.readInt(); + }), + GAME_EVENT(70, (user, buf) -> { + buf.readByte(); + buf.readByte(); + }), + SPAWN_GLOBAL_ENTITY(71, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + OPEN_WINDOW(100, (user, buf) -> { + buf.readByte(); + buf.readByte(); + readString(buf); + buf.readByte(); + buf.readBoolean(); + }), + CLOSE_WINDOW(101, (user, buf) -> { + buf.readByte(); + }), + SET_SLOT(103, (user, buf) -> { + buf.readByte(); + buf.readShort(); + readItemStack1_3_1(buf); + }), + WINDOW_ITEMS(104, (user, buf) -> { + buf.readByte(); + int x = buf.readShort(); + for (int i = 0; i < x; i++) readItemStack1_3_1(buf); + }), + WINDOW_PROPERTY(105, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readShort(); + }), + WINDOW_CONFIRMATION(106, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readByte(); + }), + CREATIVE_INVENTORY_ACTION(107, (user, buf) -> { + buf.readShort(); + readItemStack1_3_1(buf); + }), + UPDATE_SIGN(130, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + readString(buf); + readString(buf); + readString(buf); + readString(buf); + }), + MAP_DATA(131, (user, buf) -> { + buf.readShort(); + buf.readShort(); + int x = buf.readUnsignedShort(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + BLOCK_ENTITY_DATA(132, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + buf.readByte(); + readTag(buf); + }), + STATISTICS(200, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + PLAYER_INFO(201, (user, buf) -> { + readString(buf); + buf.readByte(); + buf.readShort(); + }), + PLAYER_ABILITIES(202, (user, buf) -> { + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + TAB_COMPLETE(203, (user, buf) -> { + readString(buf); + }), + SCOREBOARD_OBJECTIVE(206, (user, buf) -> { + readString(buf); + readString(buf); + buf.readByte(); + }), + UPDATE_SCORE(207, (user, buf) -> { + readString(buf); + byte b = buf.readByte(); + if (b != 1) { + readString(buf); + buf.readInt(); + } + }), + DISPLAY_SCOREBOARD(208, (user, buf) -> { + buf.readByte(); + readString(buf); + }), + TEAMS(209, (user, buf) -> { + readString(buf); + int x = buf.readByte(); + if (x == 0 || x == 2) { + readString(buf); + readString(buf); + readString(buf); + buf.readByte(); + } + if (x == 0 || x == 3 || x == 4) { + x = buf.readShort(); + for (int i = 0; i < x; i++) readString(buf); + } + }), + PLUGIN_MESSAGE(250, (user, buf) -> { + readString(buf); + short s = buf.readShort(); + for (int i = 0; i < s; i++) buf.readByte(); + }), + SHARED_KEY(252, (user, buf) -> { + readByteArray(buf); + readByteArray(buf); + }), + SERVER_AUTH_DATA(253, (user, buf) -> { + readString(buf); + readByteArray(buf); + readByteArray(buf); + }), + DISCONNECT(255, (user, buf) -> { + readString(buf); + }); + + private static final ClientboundPackets1_5_2[] REGISTRY = new ClientboundPackets1_5_2[256]; + + static { + for (ClientboundPackets1_5_2 packet : values()) { + REGISTRY[packet.id] = packet; + } + } + + public static ClientboundPackets1_5_2 getPacket(final int id) { + return REGISTRY[id]; + } + + private final int id; + private final BiConsumer packetReader; + + ClientboundPackets1_5_2(final int id, final BiConsumer packetReader) { + this.id = id; + this.packetReader = packetReader; + } + + @Override + public int getId() { + return this.id; + } + + @Override + public String getName() { + return name(); + } + + @Override + public BiConsumer getPacketReader() { + return this.packetReader; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_6_1to1_5_2/Protocol1_6_1to1_5_2.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_6_1to1_5_2/Protocol1_6_1to1_5_2.java new file mode 100644 index 0000000..c96d9cd --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_6_1to1_5_2/Protocol1_6_1to1_5_2.java @@ -0,0 +1,338 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_6_1to1_5_2; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.minecraft.entities.Entity1_10Types; +import com.viaversion.viaversion.api.minecraft.metadata.Metadata; +import com.viaversion.viaversion.api.protocol.AbstractProtocol; +import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; +import com.viaversion.viaversion.api.protocol.packet.State; +import com.viaversion.viaversion.api.protocol.remapper.PacketRemapper; +import com.viaversion.viaversion.api.type.Type; +import net.raphimc.vialegacy.ViaLegacy; +import net.raphimc.vialegacy.protocols.release.protocol1_6_1to1_5_2.metadata.MetadataRewriter; +import net.raphimc.vialegacy.protocols.release.protocol1_6_1to1_5_2.rewriter.SoundRewriter; +import net.raphimc.vialegacy.protocols.release.protocol1_6_1to1_5_2.storage.AttachTracker; +import net.raphimc.vialegacy.protocols.release.protocol1_6_1to1_5_2.storage.EntityTracker; +import net.raphimc.vialegacy.protocols.release.protocol1_6_2to1_6_1.ClientboundPackets1_6_1; +import net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.ServerboundPackets1_6_4; +import net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.types.Types1_6_4; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.metadata.MetaIndex1_8to1_7_6; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.Types1_7_6; +import net.raphimc.vialegacy.util.PreNettySplitter; + +import java.util.List; + +public class Protocol1_6_1to1_5_2 extends AbstractProtocol { + + public Protocol1_6_1to1_5_2() { + super(ClientboundPackets1_5_2.class, ClientboundPackets1_6_1.class, ServerboundPackets1_5_2.class, ServerboundPackets1_6_4.class); + } + + @Override + protected void registerPackets() { + this.registerClientbound(ClientboundPackets1_5_2.JOIN_GAME, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + map(Types1_6_4.STRING); // level type + map(Type.BYTE); // game mode + map(Type.BYTE); // dimension id + map(Type.BYTE); // difficulty + map(Type.BYTE); // world height + map(Type.BYTE); // max players + handler(wrapper -> { + final int entityId = wrapper.get(Type.INT, 0); + final EntityTracker tracker = wrapper.user().get(EntityTracker.class); + tracker.getTrackedEntities().put(entityId, Entity1_10Types.EntityType.PLAYER); + tracker.setPlayerID(entityId); + }); + } + }); + this.registerClientbound(ClientboundPackets1_5_2.UPDATE_HEALTH, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.SHORT, Type.FLOAT); // health + map(Type.SHORT); // food + map(Type.FLOAT); // saturation + } + }); + this.registerClientbound(ClientboundPackets1_5_2.SPAWN_PLAYER, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + map(Types1_6_4.STRING); // name + map(Type.INT); // x + map(Type.INT); // y + map(Type.INT); // z + map(Type.BYTE); // yaw + map(Type.BYTE); // pitch + map(Type.UNSIGNED_SHORT); // item + map(Types1_6_4.METADATA_LIST); // metadata + handler(wrapper -> MetadataRewriter.transform(Entity1_10Types.EntityType.PLAYER, wrapper.get(Types1_6_4.METADATA_LIST, 0))); + handler(wrapper -> { + final int entityId = wrapper.get(Type.INT, 0); + wrapper.user().get(EntityTracker.class).getTrackedEntities().put(entityId, Entity1_10Types.EntityType.PLAYER); + }); + } + }); + this.registerClientbound(ClientboundPackets1_5_2.COLLECT_ITEM, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // collected entity id + map(Type.INT); // collector entity id + handler(wrapper -> { + wrapper.user().get(EntityTracker.class).getTrackedEntities().remove(wrapper.get(Type.INT, 0)); + }); + } + }); + this.registerClientbound(ClientboundPackets1_5_2.SPAWN_ENTITY, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + map(Type.BYTE); // type id + map(Type.INT); // x + map(Type.INT); // y + map(Type.INT); // z + map(Type.BYTE); // pitch + map(Type.BYTE); // yaw + map(Type.INT); // data + // more conditional data + handler(wrapper -> { + final int entityID = wrapper.get(Type.INT, 0); + final int typeID = wrapper.get(Type.BYTE, 0); + wrapper.user().get(EntityTracker.class).getTrackedEntities().put(entityID, Entity1_10Types.getTypeFromId(typeID, true)); + }); + } + }); + this.registerClientbound(ClientboundPackets1_5_2.SPAWN_MOB, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + map(Type.UNSIGNED_BYTE); // type id + map(Type.INT); // x + map(Type.INT); // y + map(Type.INT); // z + map(Type.BYTE); // yaw + map(Type.BYTE); // pitch + map(Type.BYTE); // head yaw + map(Type.SHORT); // velocity x + map(Type.SHORT); // velocity y + map(Type.SHORT); // velocity z + map(Types1_6_4.METADATA_LIST); // metadata + handler(wrapper -> { + final int entityID = wrapper.get(Type.INT, 0); + final int typeID = wrapper.get(Type.UNSIGNED_BYTE, 0); + final Entity1_10Types.EntityType entityType = Entity1_10Types.getTypeFromId(typeID, false); + final List metadataList = wrapper.get(Types1_6_4.METADATA_LIST, 0); + wrapper.user().get(EntityTracker.class).getTrackedEntities().put(entityID, entityType); + MetadataRewriter.transform(entityType, metadataList); + + if (entityType.isOrHasParent(Entity1_10Types.EntityType.WOLF)) { + handleWolfMetadata(entityID, metadataList, wrapper); + } + }); + } + }); + this.registerClientbound(ClientboundPackets1_5_2.SPAWN_PAINTING, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + map(Types1_6_4.STRING); // motive + map(Types1_7_6.POSITION_INT); // position + map(Type.INT); // rotation + handler(wrapper -> { + final int entityID = wrapper.get(Type.INT, 0); + wrapper.user().get(EntityTracker.class).getTrackedEntities().put(entityID, Entity1_10Types.EntityType.PAINTING); + }); + } + }); + this.registerClientbound(ClientboundPackets1_5_2.SPAWN_EXPERIENCE_ORB, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + map(Type.INT); // x + map(Type.INT); // y + map(Type.INT); // z + map(Type.SHORT); // count + handler(wrapper -> { + final int entityID = wrapper.get(Type.INT, 0); + wrapper.user().get(EntityTracker.class).getTrackedEntities().put(entityID, Entity1_10Types.EntityType.EXPERIENCE_ORB); + }); + } + }); + this.registerClientbound(ClientboundPackets1_5_2.DESTROY_ENTITIES, new PacketRemapper() { + @Override + public void registerMap() { + map(Types1_7_6.INT_ARRAY); // entity ids + handler(wrapper -> { + final EntityTracker tracker = wrapper.user().get(EntityTracker.class); + for (int entityId : wrapper.get(Types1_7_6.INT_ARRAY, 0)) { + tracker.getTrackedEntities().remove(entityId); + } + }); + } + }); + this.registerClientbound(ClientboundPackets1_5_2.ATTACH_ENTITY, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // riding entity id + map(Type.INT); // vehicle entity id + handler(wrapper -> { + final AttachTracker attachTracker = wrapper.user().get(AttachTracker.class); + final EntityTracker entityTracker = wrapper.user().get(EntityTracker.class); + final int ridingId = wrapper.get(Type.INT, 0); + final int vehicleId = wrapper.get(Type.INT, 1); + if (entityTracker.getPlayerID() == ridingId) { + attachTracker.vehicleEntityId = vehicleId; + } + }); + create(Type.UNSIGNED_BYTE, (short) 0); // leash state + } + }); + this.registerClientbound(ClientboundPackets1_5_2.ENTITY_METADATA, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + map(Types1_6_4.METADATA_LIST); // metadata + handler(wrapper -> { + final EntityTracker tracker = wrapper.user().get(EntityTracker.class); + final List metadataList = wrapper.get(Types1_6_4.METADATA_LIST, 0); + final int entityID = wrapper.get(Type.INT, 0); + final Entity1_10Types.EntityType entityType = tracker.getTrackedEntities().get(entityID); + if (tracker.getTrackedEntities().containsKey(entityID)) { + MetadataRewriter.transform(entityType, metadataList); + if (metadataList.isEmpty()) wrapper.cancel(); + + if (entityType.isOrHasParent(Entity1_10Types.EntityType.WOLF)) { + handleWolfMetadata(entityID, metadataList, wrapper); + } + } else { + wrapper.cancel(); + } + }); + } + }); + this.registerClientbound(ClientboundPackets1_5_2.NAMED_SOUND, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + final String oldSound = wrapper.read(Types1_6_4.STRING); // sound + String newSound = SoundRewriter.map(oldSound); + if (oldSound.isEmpty()) newSound = ""; + if (newSound == null) { + ViaLegacy.getPlatform().getLogger().warning("Unable to map 1.5.2 sound '" + oldSound + "'"); + newSound = ""; + } + if (newSound.isEmpty()) { + wrapper.cancel(); + return; + } + wrapper.write(Types1_6_4.STRING, newSound); + }); + map(Type.INT); // x + map(Type.INT); // y + map(Type.INT); // z + map(Type.FLOAT); // volume + map(Type.UNSIGNED_BYTE); // pitch + } + }); + this.registerClientbound(ClientboundPackets1_5_2.STATISTICS, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // statistic id + map(Type.BYTE, Type.INT); // increment + } + }); + this.registerClientbound(ClientboundPackets1_5_2.PLAYER_ABILITIES, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.BYTE); // flags + map(Type.BYTE, Type.FLOAT, b -> b / 255F); // fly speed + map(Type.BYTE, Type.FLOAT, b -> b / 255F); // walk speed + } + }); + + this.registerServerbound(State.STATUS, ServerboundPackets1_5_2.SERVER_PING.getId(), ServerboundPackets1_6_4.SERVER_PING.getId(), new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + wrapper.clearPacket(); + wrapper.write(Type.BYTE, (byte) 1); // readSuccessfully + }); + } + }); + this.registerServerbound(ServerboundPackets1_6_4.ENTITY_ACTION, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + map(Type.BYTE); // action id + read(Type.INT); // action parameter + handler(wrapper -> { + if (wrapper.get(Type.BYTE, 0) > 5) wrapper.cancel(); + }); + } + }); + this.registerServerbound(ServerboundPackets1_6_4.STEER_VEHICLE, ServerboundPackets1_5_2.INTERACT_ENTITY, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + final AttachTracker attachTracker = wrapper.user().get(AttachTracker.class); + final EntityTracker entityTracker = wrapper.user().get(EntityTracker.class); + wrapper.read(Type.FLOAT); // sideways + wrapper.read(Type.FLOAT); // forwards + wrapper.read(Type.BOOLEAN); // jumping + final boolean sneaking = wrapper.read(Type.BOOLEAN); // sneaking + + if (attachTracker.lastSneakState != sneaking) { + attachTracker.lastSneakState = sneaking; + if (sneaking) { + wrapper.write(Type.INT, entityTracker.getPlayerID()); // player id + wrapper.write(Type.INT, attachTracker.vehicleEntityId); // entity id + wrapper.write(Type.BYTE, (byte) 0); // mode + return; + } + } + wrapper.cancel(); + }); + } + }); + this.registerServerbound(ServerboundPackets1_6_4.PLAYER_ABILITIES, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.BYTE); // flags + map(Type.FLOAT, Type.BYTE, f -> (byte) (f * 255F)); // fly speed + map(Type.FLOAT, Type.BYTE, f -> (byte) (f * 255F)); // walk speed + } + }); + } + + private void handleWolfMetadata(final int entityId, final List metadataList, final PacketWrapper wrapper) throws Exception { + for (Metadata metadata : metadataList) { + final MetaIndex1_8to1_7_6 index = MetaIndex1_8to1_7_6.searchIndex(Entity1_10Types.EntityType.WOLF, metadata.id()); + + if (index == MetaIndex1_8to1_7_6.TAMEABLE_FLAGS) { + if ((metadata.value() & 4) != 0) { // is tamed + final PacketWrapper attributes = PacketWrapper.create(ClientboundPackets1_6_1.ENTITY_PROPERTIES, wrapper.user()); + attributes.write(Type.INT, entityId); // entity id + attributes.write(Type.INT, 1); // count + attributes.write(Types1_6_4.STRING, "generic.maxHealth"); // id + attributes.write(Type.DOUBLE, 20.0D); // value + + wrapper.send(Protocol1_6_1to1_5_2.class); + attributes.send(Protocol1_6_1to1_5_2.class); + wrapper.cancel(); + } + break; + } + } + } + + @Override + public void init(UserConnection userConnection) { + userConnection.put(new PreNettySplitter(userConnection, Protocol1_6_1to1_5_2.class, ClientboundPackets1_5_2::getPacket)); + + userConnection.put(new EntityTracker(userConnection)); + userConnection.put(new AttachTracker(userConnection)); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_6_1to1_5_2/ServerboundPackets1_5_2.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_6_1to1_5_2/ServerboundPackets1_5_2.java new file mode 100644 index 0000000..78d2d8a --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_6_1to1_5_2/ServerboundPackets1_5_2.java @@ -0,0 +1,201 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_6_1to1_5_2; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.packet.ServerboundPacketType; +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.util.PreNettyPacketType; + +import java.util.function.BiConsumer; + +import static net.raphimc.vialegacy.util.PreNettyTypes.*; + +public enum ServerboundPackets1_5_2 implements ServerboundPacketType, PreNettyPacketType { + + KEEP_ALIVE(0, (user, buf) -> { + buf.readInt(); + }), + LOGIN(1, (user, buf) -> { + buf.readInt(); + readString(buf); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + CLIENT_PROTOCOL(2, (user, buf) -> { + buf.readByte(); + readString(buf); + readString(buf); + buf.readInt(); + }), + CHAT_MESSAGE(3, (user, buf) -> { + readString(buf); + }), + INTERACT_ENTITY(7, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readByte(); + }), + RESPAWN(9, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + readString(buf); + }), + PLAYER_MOVEMENT(10, (user, buf) -> { + buf.readUnsignedByte(); + }), + PLAYER_POSITION(11, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readUnsignedByte(); + }), + PLAYER_ROTATION(12, (user, buf) -> { + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION_AND_ROTATION(13, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_DIGGING(14, (user, buf) -> { + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + }), + PLAYER_BLOCK_PLACEMENT(15, (user, buf) -> { + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + readItemStack1_3_1(buf); + buf.readUnsignedByte(); + buf.readUnsignedByte(); + buf.readUnsignedByte(); + }), + HELD_ITEM_CHANGE(16, (user, buf) -> { + buf.readShort(); + }), + ANIMATION(18, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + ENTITY_ACTION(19, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + CLOSE_WINDOW(101, (user, buf) -> { + buf.readByte(); + }), + CLICK_WINDOW(102, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readByte(); + buf.readShort(); + buf.readByte(); + readItemStack1_3_1(buf); + }), + WINDOW_CONFIRMATION(106, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readByte(); + }), + CREATIVE_INVENTORY_ACTION(107, (user, buf) -> { + buf.readShort(); + readItemStack1_3_1(buf); + }), + CLICK_WINDOW_BUTTON(108, (user, buf) -> { + buf.readByte(); + buf.readByte(); + }), + UPDATE_SIGN(130, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + readString(buf); + readString(buf); + readString(buf); + readString(buf); + }), + PLAYER_ABILITIES(202, (user, buf) -> { + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + TAB_COMPLETE(203, (user, buf) -> { + readString(buf); + }), + CLIENT_SETTINGS(204, (user, buf) -> { + readString(buf); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readBoolean(); + }), + CLIENT_STATUS(205, (user, buf) -> { + buf.readByte(); + }), + PLUGIN_MESSAGE(250, (user, buf) -> { + readString(buf); + short s = buf.readShort(); + for (int i = 0; i < s; i++) buf.readByte(); + }), + SHARED_KEY(252, (user, buf) -> { + readByteArray(buf); + readByteArray(buf); + }), + SERVER_PING(254, (user, buf) -> { + buf.readByte(); + }), + DISCONNECT(255, (user, buf) -> { + readString(buf); + }); + + private static final ServerboundPackets1_5_2[] REGISTRY = new ServerboundPackets1_5_2[256]; + + static { + for (ServerboundPackets1_5_2 packet : values()) { + REGISTRY[packet.id] = packet; + } + } + + public static ServerboundPackets1_5_2 getPacket(final int id) { + return REGISTRY[id]; + } + + private final int id; + private final BiConsumer packetReader; + + ServerboundPackets1_5_2(final int id, final BiConsumer packetReader) { + this.id = id; + this.packetReader = packetReader; + } + + @Override + public int getId() { + return this.id; + } + + @Override + public String getName() { + return name(); + } + + @Override + public BiConsumer getPacketReader() { + return this.packetReader; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_6_1to1_5_2/metadata/MetaIndex1_6_1to1_5_2.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_6_1to1_5_2/metadata/MetaIndex1_6_1to1_5_2.java new file mode 100644 index 0000000..3c14db2 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_6_1to1_5_2/metadata/MetaIndex1_6_1to1_5_2.java @@ -0,0 +1,94 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_6_1to1_5_2.metadata; + +import com.viaversion.viaversion.api.minecraft.entities.Entity1_10Types; +import com.viaversion.viaversion.util.Pair; +import net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.types.MetaType1_6_4; + +import java.util.HashMap; +import java.util.Optional; + +public enum MetaIndex1_6_1to1_5_2 { + + ENTITY_LIVING_POTION_EFFECT_COLOR(Entity1_10Types.EntityType.ENTITY_LIVING, 8, MetaType1_6_4.Int, 7, MetaType1_6_4.Int), + ENTITY_LIVING_IS_POTION_EFFECT_AMBIENT(Entity1_10Types.EntityType.ENTITY_LIVING, 9, MetaType1_6_4.Byte, 8, MetaType1_6_4.Byte), + ENTITY_LIVING_ARROWS(Entity1_10Types.EntityType.ENTITY_LIVING, 10, MetaType1_6_4.Byte, 9, MetaType1_6_4.Byte), + ENTITY_LIVING_NAME_TAG(Entity1_10Types.EntityType.ENTITY_LIVING, 5, MetaType1_6_4.String, 10, MetaType1_6_4.String), + ENTITY_LIVING_NAME_TAG_VISIBILITY(Entity1_10Types.EntityType.ENTITY_LIVING, 6, MetaType1_6_4.Byte, 11, MetaType1_6_4.Byte), + HUMAN_ABSORPTION_HEARTS(Entity1_10Types.EntityType.ENTITY_HUMAN, 17, MetaType1_6_4.Byte, MetaType1_6_4.Float), + BOAT_DAMAGE_TAKEN(Entity1_10Types.EntityType.BOAT, 19, MetaType1_6_4.Int, MetaType1_6_4.Float), + MINECART_DAMAGE_TAKEN(Entity1_10Types.EntityType.MINECART_ABSTRACT, 19, MetaType1_6_4.Int, MetaType1_6_4.Float), + WITHER_HEALTH(Entity1_10Types.EntityType.WITHER, 16, MetaType1_6_4.Int, 6, MetaType1_6_4.Float), + ENDER_DRAGON_HEALTH(Entity1_10Types.EntityType.ENDER_DRAGON, 16, MetaType1_6_4.Int, 6, MetaType1_6_4.Float), + WOLF_HEALTH(Entity1_10Types.EntityType.WOLF, 18, MetaType1_6_4.Int, MetaType1_6_4.Float), + ; + + private static final HashMap, MetaIndex1_6_1to1_5_2> metadataRewrites = new HashMap<>(); + + static { + for (MetaIndex1_6_1to1_5_2 index : MetaIndex1_6_1to1_5_2.values()) { + metadataRewrites.put(new Pair<>(index.getEntityType(), index.getOldIndex()), index); + } + } + + private final Entity1_10Types.EntityType entityType; + private final int oldIndex; + private final int newIndex; + private final MetaType1_6_4 oldType; + private final MetaType1_6_4 newType; + + MetaIndex1_6_1to1_5_2(Entity1_10Types.EntityType entityType, int oldIndex, MetaType1_6_4 oldType, MetaType1_6_4 newType) { + this.entityType = entityType; + this.oldIndex = oldIndex; + this.newIndex = oldIndex; + this.oldType = oldType; + this.newType = newType; + } + + MetaIndex1_6_1to1_5_2(Entity1_10Types.EntityType entityType, int oldIndex, MetaType1_6_4 oldType, int newIndex, MetaType1_6_4 newType) { + this.entityType = entityType; + this.oldIndex = oldIndex; + this.oldType = oldType; + this.newIndex = newIndex; + this.newType = newType; + } + + public Entity1_10Types.EntityType getEntityType() { + return this.entityType; + } + + public int getOldIndex() { + return this.oldIndex; + } + + public int getNewIndex() { + return this.newIndex; + } + + public MetaType1_6_4 getOldType() { + return this.oldType; + } + + public MetaType1_6_4 getNewType() { + return this.newType; + } + + private static Optional getIndex(Entity1_10Types.EntityType type, int index) { + final Pair pair = new Pair<>(type, index); + return Optional.ofNullable(metadataRewrites.get(pair)); + } + + public static MetaIndex1_6_1to1_5_2 searchIndex(Entity1_10Types.EntityType type, int index) { + Entity1_10Types.EntityType currentType = type; + do { + Optional optMeta = getIndex(currentType, index); + if (optMeta.isPresent()) { + return optMeta.get(); + } + + currentType = currentType.getParent(); + } while (currentType != null); + + return null; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_6_1to1_5_2/metadata/MetadataRewriter.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_6_1to1_5_2/metadata/MetadataRewriter.java new file mode 100644 index 0000000..44b7972 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_6_1to1_5_2/metadata/MetadataRewriter.java @@ -0,0 +1,53 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_6_1to1_5_2.metadata; + +import com.viaversion.viaversion.api.minecraft.entities.Entity1_10Types; +import com.viaversion.viaversion.api.minecraft.metadata.Metadata; +import net.raphimc.vialegacy.ViaLegacy; + +import java.util.ArrayList; +import java.util.List; +import java.util.logging.Level; + +public class MetadataRewriter { + + public static void transform(Entity1_10Types.EntityType type, List list) { + for (Metadata entry : new ArrayList<>(list)) { + final MetaIndex1_6_1to1_5_2 metaIndex = MetaIndex1_6_1to1_5_2.searchIndex(type, entry.id()); + try { + if (metaIndex == null) continue; + + final Object value = entry.getValue(); + entry.setTypeAndValue(metaIndex.getOldType(), value); // check if metadata type is the expected type from metaindex entry + entry.setMetaTypeUnsafe(metaIndex.getNewType()); + entry.setId(metaIndex.getNewIndex()); + + switch (metaIndex.getNewType()) { + case Byte: + entry.setValue(((Number) value).byteValue()); + break; + case Short: + entry.setValue(((Number) value).shortValue()); + break; + case Int: + entry.setValue(((Number) value).intValue()); + break; + case Float: + entry.setValue(((Number) value).floatValue()); + break; + case Slot: + case String: + case Position: + break; + default: + ViaLegacy.getPlatform().getLogger().warning("1.5.2 MetaDataType: Unhandled Type: " + metaIndex.getNewType() + " " + entry); + list.remove(entry); + break; + } + } catch (Throwable e) { + ViaLegacy.getPlatform().getLogger().log(Level.WARNING, "Error rewriting metadata entry for " + type.name() + ": " + entry, e); + list.remove(entry); + } + } + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_6_1to1_5_2/rewriter/SoundRewriter.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_6_1to1_5_2/rewriter/SoundRewriter.java new file mode 100644 index 0000000..47f591d --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_6_1to1_5_2/rewriter/SoundRewriter.java @@ -0,0 +1,188 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_6_1to1_5_2.rewriter; + +import com.viaversion.viaversion.libs.fastutil.objects.Object2ObjectMap; +import com.viaversion.viaversion.libs.fastutil.objects.Object2ObjectOpenHashMap; + +public class SoundRewriter { + + private static final Object2ObjectMap SOUNDS = new Object2ObjectOpenHashMap<>(168, 0.99F); + + static { + SOUNDS.put("ambient.cave.cave", "ambient.cave.cave"); + SOUNDS.put("ambient.weather.rain", "ambient.weather.rain"); + SOUNDS.put("ambient.weather.thunder", "ambient.weather.thunder"); + SOUNDS.put("damage.fallbig", "damage.fallbig"); + SOUNDS.put("damage.fallsmall", "damage.fallsmall"); + SOUNDS.put("damage.hit", "damage.hit"); + SOUNDS.put("dig.cloth", "dig.cloth"); + SOUNDS.put("dig.grass", "dig.grass"); + SOUNDS.put("dig.gravel", "dig.gravel"); + SOUNDS.put("dig.sand", "dig.sand"); + SOUNDS.put("dig.snow", "dig.snow"); + SOUNDS.put("dig.stone", "dig.stone"); + SOUNDS.put("dig.wood", "dig.wood"); + SOUNDS.put("fire.fire", "fire.fire"); + SOUNDS.put("fire.ignite", "fire.ignite"); + SOUNDS.put("fireworks.blast", "fireworks.blast"); + SOUNDS.put("fireworks.blast_far", "fireworks.blast_far"); + SOUNDS.put("fireworks.largeBlast", "fireworks.largeBlast"); + SOUNDS.put("fireworks.largeBlast_far", "fireworks.largeBlast_far"); + SOUNDS.put("fireworks.launch", "fireworks.launch"); + SOUNDS.put("fireworks.twinkle", "fireworks.twinkle"); + SOUNDS.put("fireworks.twinkle_far", "fireworks.twinkle_far"); + SOUNDS.put("liquid.lava", "liquid.lava"); + SOUNDS.put("liquid.lavapop", "liquid.lavapop"); + SOUNDS.put("liquid.splash", "liquid.splash"); + SOUNDS.put("liquid.swim", "liquid.swim"); + SOUNDS.put("liquid.water", "liquid.water"); + SOUNDS.put("minecart.base", "minecart.base"); + SOUNDS.put("minecart.inside", "minecart.inside"); + SOUNDS.put("mob.bat.death", "mob.bat.death"); + SOUNDS.put("mob.bat.hurt", "mob.bat.hurt"); + SOUNDS.put("mob.bat.idle", "mob.bat.idle"); + SOUNDS.put("mob.bat.loop", "mob.bat.loop"); + SOUNDS.put("mob.bat.takeoff", "mob.bat.takeoff"); + SOUNDS.put("mob.blaze.breathe", "mob.blaze.breathe"); + SOUNDS.put("mob.blaze.death", "mob.blaze.death"); + SOUNDS.put("mob.blaze.hit", "mob.blaze.hit"); + SOUNDS.put("mob.cat.hiss", "mob.cat.hiss"); + SOUNDS.put("mob.cat.hitt", "mob.cat.hitt"); + SOUNDS.put("mob.cat.meow", "mob.cat.meow"); + SOUNDS.put("mob.cat.purr", "mob.cat.purr"); + SOUNDS.put("mob.cat.purreow", "mob.cat.purreow"); + SOUNDS.put("mob.chicken.hurt", "mob.chicken.hurt"); + SOUNDS.put("mob.chicken.plop", "mob.chicken.plop"); + SOUNDS.put("mob.chicken.say", "mob.chicken.say"); + SOUNDS.put("mob.chicken.step", "mob.chicken.step"); + SOUNDS.put("mob.cow.hurt", "mob.cow.hurt"); + SOUNDS.put("mob.cow.say", "mob.cow.say"); + SOUNDS.put("mob.cow.step", "mob.cow.step"); + SOUNDS.put("mob.creeper.death", "mob.creeper.death"); + SOUNDS.put("mob.creeper.say", "mob.creeper.say"); + SOUNDS.put("mob.enderdragon.end", "mob.enderdragon.end"); + SOUNDS.put("mob.enderdragon.growl", "mob.enderdragon.growl"); + SOUNDS.put("mob.enderdragon.hit", "mob.enderdragon.hit"); + SOUNDS.put("mob.enderdragon.wings", "mob.enderdragon.wings"); + SOUNDS.put("mob.endermen.death", "mob.endermen.death"); + SOUNDS.put("mob.endermen.hit", "mob.endermen.hit"); + SOUNDS.put("mob.endermen.idle", "mob.endermen.idle"); + SOUNDS.put("mob.endermen.portal", "mob.endermen.portal"); + SOUNDS.put("mob.endermen.scream", "mob.endermen.scream"); + SOUNDS.put("mob.endermen.stare", "mob.endermen.stare"); + SOUNDS.put("mob.ghast.affectionate scream", "mob.ghast.affectionate_scream"); + SOUNDS.put("mob.ghast.charge", "mob.ghast.charge"); + SOUNDS.put("mob.ghast.death", "mob.ghast.death"); + SOUNDS.put("mob.ghast.fireball", "mob.ghast.fireball"); + SOUNDS.put("mob.ghast.moan", "mob.ghast.moan"); + SOUNDS.put("mob.ghast.scream", "mob.ghast.scream"); + SOUNDS.put("mob.irongolem.death", "mob.irongolem.death"); + SOUNDS.put("mob.irongolem.hit", "mob.irongolem.hit"); + SOUNDS.put("mob.irongolem.throw", "mob.irongolem.throw"); + SOUNDS.put("mob.irongolem.walk", "mob.irongolem.walk"); + SOUNDS.put("mob.magmacube.big", "mob.magmacube.big"); + SOUNDS.put("mob.magmacube.jump", "mob.magmacube.jump"); + SOUNDS.put("mob.magmacube.small", "mob.magmacube.small"); + SOUNDS.put("mob.pig.death", "mob.pig.death"); + SOUNDS.put("mob.pig.say", "mob.pig.say"); + SOUNDS.put("mob.pig.step", "mob.pig.step"); + SOUNDS.put("mob.sheep.say", "mob.sheep.say"); + SOUNDS.put("mob.sheep.shear", "mob.sheep.shear"); + SOUNDS.put("mob.sheep.step", "mob.sheep.step"); + SOUNDS.put("mob.silverfish.hit", "mob.silverfish.hit"); + SOUNDS.put("mob.silverfish.kill", "mob.silverfish.kill"); + SOUNDS.put("mob.silverfish.say", "mob.silverfish.say"); + SOUNDS.put("mob.silverfish.step", "mob.silverfish.step"); + SOUNDS.put("mob.skeleton.death", "mob.skeleton.death"); + SOUNDS.put("mob.skeleton.hurt", "mob.skeleton.hurt"); + SOUNDS.put("mob.skeleton.say", "mob.skeleton.say"); + SOUNDS.put("mob.skeleton.step", "mob.skeleton.step"); + SOUNDS.put("mob.slime.attack", "mob.slime.attack"); + SOUNDS.put("mob.slime.big", "mob.slime.big"); + SOUNDS.put("mob.slime.small", "mob.slime.small"); + SOUNDS.put("mob.spider.death", "mob.spider.death"); + SOUNDS.put("mob.spider.say", "mob.spider.say"); + SOUNDS.put("mob.spider.step", "mob.spider.step"); + SOUNDS.put("mob.wither.death", "mob.wither.death"); + SOUNDS.put("mob.wither.hurt", "mob.wither.hurt"); + SOUNDS.put("mob.wither.idle", "mob.wither.idle"); + SOUNDS.put("mob.wither.shoot", "mob.wither.shoot"); + SOUNDS.put("mob.wither.spawn", "mob.wither.spawn"); + SOUNDS.put("mob.wolf.bark", "mob.wolf.bark"); + SOUNDS.put("mob.wolf.death", "mob.wolf.death"); + SOUNDS.put("mob.wolf.growl", "mob.wolf.growl"); + SOUNDS.put("mob.wolf.howl", "mob.wolf.howl"); + SOUNDS.put("mob.wolf.hurt", "mob.wolf.hurt"); + SOUNDS.put("mob.wolf.panting", "mob.wolf.panting"); + SOUNDS.put("mob.wolf.shake", "mob.wolf.shake"); + SOUNDS.put("mob.wolf.step", "mob.wolf.step"); + SOUNDS.put("mob.wolf.whine", "mob.wolf.whine"); + SOUNDS.put("mob.zombie.death", "mob.zombie.death"); + SOUNDS.put("mob.zombie.hurt", "mob.zombie.hurt"); + SOUNDS.put("mob.zombie.infect", "mob.zombie.infect"); + SOUNDS.put("mob.zombie.metal", "mob.zombie.metal"); + SOUNDS.put("mob.zombie.remedy", "mob.zombie.remedy"); + SOUNDS.put("mob.zombie.say", "mob.zombie.say"); + SOUNDS.put("mob.zombie.step", "mob.zombie.step"); + SOUNDS.put("mob.zombie.unfect", "mob.zombie.unfect"); + SOUNDS.put("mob.zombie.wood", "mob.zombie.wood"); + SOUNDS.put("mob.zombie.woodbreak", "mob.zombie.woodbreak"); + SOUNDS.put("mob.zombiepig.zpig", "mob.zombiepig.zpig"); + SOUNDS.put("mob.zombiepig.zpigangry", "mob.zombiepig.zpigangry"); + SOUNDS.put("mob.zombiepig.zpigdeath", "mob.zombiepig.zpigdeath"); + SOUNDS.put("mob.zombiepig.zpighurt", "mob.zombiepig.zpighurt"); + SOUNDS.put("mob.villager.default", "mob.villager.idle"); + SOUNDS.put("mob.villager.defaulthurt", "mob.villager.hit"); + SOUNDS.put("mob.villager.defaultdeath", "mob.villager.death"); + SOUNDS.put("note.bass", "note.bass"); + SOUNDS.put("note.bassattack", "note.bassattack"); + SOUNDS.put("note.bd", "note.bd"); + SOUNDS.put("note.harp", "note.harp"); + SOUNDS.put("note.hat", "note.hat"); + SOUNDS.put("note.pling", "note.pling"); + SOUNDS.put("note.snare", "note.snare"); + SOUNDS.put("portal.portal", "portal.portal"); + SOUNDS.put("portal.travel", "portal.travel"); + SOUNDS.put("portal.trigger", "portal.trigger"); + SOUNDS.put("random.anvil_break", "random.anvil_break"); + SOUNDS.put("random.anvil_land", "random.anvil_land"); + SOUNDS.put("random.anvil_use", "random.anvil_use"); + SOUNDS.put("random.bow", "random.bow"); + SOUNDS.put("random.bowhit", "random.bowhit"); + SOUNDS.put("random.break", "random.break"); + SOUNDS.put("random.breath", "random.breath"); + SOUNDS.put("random.burp", "random.burp"); + SOUNDS.put("random.chestclosed", "random.chestclosed"); + SOUNDS.put("random.chestopen", "random.chestopen"); + SOUNDS.put("random.classic_hurt", "random.classic_hurt"); + SOUNDS.put("random.click", "random.click"); + SOUNDS.put("random.door_close", "random.door_close"); + SOUNDS.put("random.door_open", "random.door_open"); + SOUNDS.put("random.drink", "random.drink"); + SOUNDS.put("random.eat", "random.eat"); + SOUNDS.put("random.explode", "random.explode"); + SOUNDS.put("random.fizz", "random.fizz"); + SOUNDS.put("random.fuse", "random.fuse"); + SOUNDS.put("random.glass", "random.glass"); + SOUNDS.put("random.levelup", "random.levelup"); + SOUNDS.put("random.orb", "random.orb"); + SOUNDS.put("random.pop", "random.pop"); + SOUNDS.put("random.splash", "random.splash"); + SOUNDS.put("random.successful_hit", "random.successful_hit"); + SOUNDS.put("random.wood click", "random.wood_click"); + SOUNDS.put("step.cloth", "step.cloth"); + SOUNDS.put("step.grass", "step.grass"); + SOUNDS.put("step.gravel", "step.gravel"); + SOUNDS.put("step.ladder", "step.ladder"); + SOUNDS.put("step.sand", "step.sand"); + SOUNDS.put("step.snow", "step.snow"); + SOUNDS.put("step.stone", "step.stone"); + SOUNDS.put("step.wood", "step.wood"); + SOUNDS.put("tile.piston.in", "tile.piston.in"); + SOUNDS.put("tile.piston.out", "tile.piston.out"); + } + + public static String map(final String sound) { + return SOUNDS.get(sound); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_6_1to1_5_2/storage/AttachTracker.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_6_1to1_5_2/storage/AttachTracker.java new file mode 100644 index 0000000..5664d50 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_6_1to1_5_2/storage/AttachTracker.java @@ -0,0 +1,15 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_6_1to1_5_2.storage; + +import com.viaversion.viaversion.api.connection.StoredObject; +import com.viaversion.viaversion.api.connection.UserConnection; + +public class AttachTracker extends StoredObject { + + public int vehicleEntityId = -1; + public boolean lastSneakState = false; + + public AttachTracker(UserConnection user) { + super(user); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_6_1to1_5_2/storage/EntityTracker.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_6_1to1_5_2/storage/EntityTracker.java new file mode 100644 index 0000000..1aff287 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_6_1to1_5_2/storage/EntityTracker.java @@ -0,0 +1,36 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_6_1to1_5_2.storage; + +import com.viaversion.viaversion.api.connection.StoredObject; +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.minecraft.entities.Entity1_10Types; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +public class EntityTracker extends StoredObject { + + private final Map entityMap = new ConcurrentHashMap<>(); + + private int playerID; + + public EntityTracker(UserConnection user) { + super(user); + } + + public int getPlayerID() { + return this.playerID; + } + + public void setPlayerID(int playerID) { + this.playerID = playerID; + } + + public void removeEntity(int entityId) { + this.entityMap.remove(entityId); + } + + public Map getTrackedEntities() { + return this.entityMap; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_6_2to1_6_1/ClientboundPackets1_6_1.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_6_2to1_6_1/ClientboundPackets1_6_1.java new file mode 100644 index 0000000..0422fc0 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_6_2to1_6_1/ClientboundPackets1_6_1.java @@ -0,0 +1,493 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_6_2to1_6_1; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType; +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.util.PreNettyPacketType; + +import java.util.function.BiConsumer; + +import static net.raphimc.vialegacy.util.PreNettyTypes.*; + +public enum ClientboundPackets1_6_1 implements ClientboundPacketType, PreNettyPacketType { + + KEEP_ALIVE(0, (user, buf) -> { + buf.readInt(); + }), + JOIN_GAME(1, (user, buf) -> { + buf.readInt(); + readString(buf); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + CHAT_MESSAGE(3, (user, buf) -> { + readString(buf); + }), + TIME_UPDATE(4, (user, buf) -> { + buf.readLong(); + buf.readLong(); + }), + ENTITY_EQUIPMENT(5, (user, buf) -> { + buf.readInt(); + buf.readShort(); + readItemStack1_3_1(buf); + }), + SPAWN_POSITION(6, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + UPDATE_HEALTH(8, (user, buf) -> { + buf.readFloat(); + buf.readShort(); + buf.readFloat(); + }), + RESPAWN(9, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + readString(buf); + }), + PLAYER_POSITION_ONLY_ONGROUND(10, (user, buf) -> { + buf.readUnsignedByte(); + }), + PLAYER_POSITION_ONLY_POSITION(11, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION_ONLY_LOOK(12, (user, buf) -> { + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION(13, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + HELD_ITEM_CHANGE(16, (user, buf) -> { + buf.readShort(); + }), + USE_BED(17, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readByte(); + buf.readInt(); + }), + ENTITY_ANIMATION(18, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + SPAWN_PLAYER(20, (user, buf) -> { + buf.readInt(); + readString(buf); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + readEntityMetadata1_4_4(buf); + }), + COLLECT_ITEM(22, (user, buf) -> { + buf.readInt(); + buf.readInt(); + }), + SPAWN_ENTITY(23, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + int i = buf.readInt(); + if (i > 0) { + buf.readShort(); + buf.readShort(); + buf.readShort(); + } + }), + SPAWN_MOB(24, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + buf.readShort(); + buf.readShort(); + readEntityMetadata1_4_4(buf); + }), + SPAWN_PAINTING(25, (user, buf) -> { + buf.readInt(); + readString(buf); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + SPAWN_EXPERIENCE_ORB(26, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readShort(); + }), + ENTITY_VELOCITY(28, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readShort(); + buf.readShort(); + }), + DESTROY_ENTITIES(29, (user, buf) -> { + int x = buf.readUnsignedByte(); + for (int i = 0; i < x; i++) buf.readInt(); + }), + ENTITY_MOVEMENT(30, (user, buf) -> { + buf.readInt(); + }), + ENTITY_POSITION(31, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_ROTATION(32, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_POSITION_AND_ROTATION(33, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_TELEPORT(34, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_HEAD_LOOK(35, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + ENTITY_STATUS(38, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + ATTACH_ENTITY(39, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readUnsignedByte(); + }), + ENTITY_METADATA(40, (user, buf) -> { + buf.readInt(); + readEntityMetadata1_4_4(buf); + }), + ENTITY_EFFECT(41, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + }), + REMOVE_ENTITY_EFFECT(42, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + SET_EXPERIENCE(43, (user, buf) -> { + buf.readFloat(); + buf.readShort(); + buf.readShort(); + }), + ENTITY_PROPERTIES(44, (user, buf) -> { + buf.readInt(); + int x = buf.readInt(); + for (int i = 0; i < x; i++) { + readString(buf); + buf.readDouble(); + } + }), + CHUNK_DATA(51, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readBoolean(); + buf.readShort(); + buf.readShort(); + int x = buf.readInt(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + MULTI_BLOCK_CHANGE(52, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readShort(); + int x = buf.readInt(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + BLOCK_CHANGE(53, (user, buf) -> { + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readShort(); + buf.readUnsignedByte(); + }), + BLOCK_ACTION(54, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + buf.readUnsignedByte(); + buf.readUnsignedByte(); + buf.readShort(); + }), + BLOCK_BREAK_ANIMATION(55, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readUnsignedByte(); + }), + MAP_BULK_CHUNK(56, (user, buf) -> { + int x = buf.readShort(); + int y = buf.readInt(); + buf.readBoolean(); + for (int i = 0; i < y; i++) buf.readByte(); + for (int i = 0; i < x; i++) { + buf.readInt(); + buf.readInt(); + buf.readShort(); + buf.readShort(); + } + }), + EXPLOSION(60, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + int x = buf.readInt(); + for (int i = 0; i < x; i++) { + buf.readByte(); + buf.readByte(); + buf.readByte(); + } + buf.readFloat(); + buf.readFloat(); + buf.readFloat(); + }), + EFFECT(61, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readBoolean(); + }), + NAMED_SOUND(62, (user, buf) -> { + readString(buf); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + SPAWN_PARTICLE(63, (user, buf) -> { + readString(buf); + buf.readFloat(); + buf.readFloat(); + buf.readFloat(); + buf.readFloat(); + buf.readFloat(); + buf.readFloat(); + buf.readFloat(); + buf.readInt(); + }), + GAME_EVENT(70, (user, buf) -> { + buf.readByte(); + buf.readByte(); + }), + SPAWN_GLOBAL_ENTITY(71, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + OPEN_WINDOW(100, (user, buf) -> { + buf.readByte(); + int x = buf.readByte(); + readString(buf); + buf.readByte(); + buf.readBoolean(); + if (x == 11) buf.readInt(); + }), + CLOSE_WINDOW(101, (user, buf) -> { + buf.readByte(); + }), + SET_SLOT(103, (user, buf) -> { + buf.readByte(); + buf.readShort(); + readItemStack1_3_1(buf); + }), + WINDOW_ITEMS(104, (user, buf) -> { + buf.readByte(); + int x = buf.readShort(); + for (int i = 0; i < x; i++) readItemStack1_3_1(buf); + }), + WINDOW_PROPERTY(105, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readShort(); + }), + WINDOW_CONFIRMATION(106, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readByte(); + }), + CREATIVE_INVENTORY_ACTION(107, (user, buf) -> { + buf.readShort(); + readItemStack1_3_1(buf); + }), + UPDATE_SIGN(130, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + readString(buf); + readString(buf); + readString(buf); + readString(buf); + }), + MAP_DATA(131, (user, buf) -> { + buf.readShort(); + buf.readShort(); + int x = buf.readUnsignedShort(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + BLOCK_ENTITY_DATA(132, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + buf.readByte(); + readTag(buf); + }), + STATISTICS(200, (user, buf) -> { + buf.readInt(); + buf.readInt(); + }), + PLAYER_INFO(201, (user, buf) -> { + readString(buf); + buf.readByte(); + buf.readShort(); + }), + PLAYER_ABILITIES(202, (user, buf) -> { + buf.readByte(); + buf.readFloat(); + buf.readFloat(); + }), + TAB_COMPLETE(203, (user, buf) -> { + readString(buf); + }), + SCOREBOARD_OBJECTIVE(206, (user, buf) -> { + readString(buf); + readString(buf); + buf.readByte(); + }), + UPDATE_SCORE(207, (user, buf) -> { + readString(buf); + byte b = buf.readByte(); + if (b != 1) { + readString(buf); + buf.readInt(); + } + }), + DISPLAY_SCOREBOARD(208, (user, buf) -> { + buf.readByte(); + readString(buf); + }), + TEAMS(209, (user, buf) -> { + readString(buf); + int x = buf.readByte(); + if (x == 0 || x == 2) { + readString(buf); + readString(buf); + readString(buf); + buf.readByte(); + } + if (x == 0 || x == 3 || x == 4) { + x = buf.readShort(); + for (int i = 0; i < x; i++) readString(buf); + } + }), + PLUGIN_MESSAGE(250, (user, buf) -> { + readString(buf); + short s = buf.readShort(); + for (int i = 0; i < s; i++) buf.readByte(); + }), + SHARED_KEY(252, (user, buf) -> { + readByteArray(buf); + readByteArray(buf); + }), + SERVER_AUTH_DATA(253, (user, buf) -> { + readString(buf); + readByteArray(buf); + readByteArray(buf); + }), + DISCONNECT(255, (user, buf) -> { + readString(buf); + }); + + private static final ClientboundPackets1_6_1[] REGISTRY = new ClientboundPackets1_6_1[256]; + + static { + for (ClientboundPackets1_6_1 packet : values()) { + REGISTRY[packet.id] = packet; + } + } + + public static ClientboundPackets1_6_1 getPacket(final int id) { + return REGISTRY[id]; + } + + private final int id; + private final BiConsumer packetReader; + + ClientboundPackets1_6_1(final int id, final BiConsumer packetReader) { + this.id = id; + this.packetReader = packetReader; + } + + @Override + public int getId() { + return this.id; + } + + @Override + public String getName() { + return name(); + } + + @Override + public BiConsumer getPacketReader() { + return this.packetReader; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_6_2to1_6_1/Protocol1_6_2to1_6_1.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_6_2to1_6_1/Protocol1_6_2to1_6_1.java new file mode 100644 index 0000000..9a1b365 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_6_2to1_6_1/Protocol1_6_2to1_6_1.java @@ -0,0 +1,89 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_6_2to1_6_1; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.minecraft.Position; +import com.viaversion.viaversion.api.minecraft.item.Item; +import com.viaversion.viaversion.api.protocol.AbstractProtocol; +import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; +import com.viaversion.viaversion.api.protocol.remapper.PacketRemapper; +import com.viaversion.viaversion.api.type.Type; +import net.raphimc.vialegacy.api.ItemList1_6; +import net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.ClientboundPackets1_6_4; +import net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.ServerboundPackets1_6_4; +import net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.types.Types1_6_4; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.Types1_7_6; +import net.raphimc.vialegacy.util.BlockFaceUtils; +import net.raphimc.vialegacy.util.PreNettySplitter; + +import java.nio.charset.StandardCharsets; + +public class Protocol1_6_2to1_6_1 extends AbstractProtocol { + + public Protocol1_6_2to1_6_1() { + super(ClientboundPackets1_6_1.class, ClientboundPackets1_6_4.class, ServerboundPackets1_6_4.class, ServerboundPackets1_6_4.class); + } + + @Override + protected void registerPackets() { + this.registerClientbound(ClientboundPackets1_6_1.JOIN_GAME, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + final PacketWrapper brand = PacketWrapper.create(ClientboundPackets1_6_4.PLUGIN_MESSAGE, wrapper.user()); + brand.write(Types1_6_4.STRING, "MC|Brand"); + final byte[] brandBytes = "legacy".getBytes(StandardCharsets.UTF_8); + brand.write(Type.SHORT, (short) brandBytes.length); // data length + brand.write(Type.REMAINING_BYTES, brandBytes); // data + + wrapper.send(Protocol1_6_2to1_6_1.class); + brand.send(Protocol1_6_2to1_6_1.class); + wrapper.cancel(); + }); + } + }); + this.registerClientbound(ClientboundPackets1_6_1.ENTITY_PROPERTIES, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + handler(wrapper -> { + final int amount = wrapper.passthrough(Type.INT); // count + for (int i = 0; i < amount; i++) { + wrapper.passthrough(Types1_6_4.STRING); // id + wrapper.passthrough(Type.DOUBLE); // baseValue + wrapper.write(Type.SHORT, (short) 0); // modifier count + } + }); + } + }); + + this.registerServerbound(ServerboundPackets1_6_4.PLAYER_BLOCK_PLACEMENT, new PacketRemapper() { + @Override + public void registerMap() { + map(Types1_7_6.POSITION_UBYTE); // position + map(Type.UNSIGNED_BYTE); // direction + map(Types1_7_6.COMPRESSED_ITEM); // item + map(Type.UNSIGNED_BYTE); // offset x + map(Type.UNSIGNED_BYTE); // offset y + map(Type.UNSIGNED_BYTE); // offset z + handler(wrapper -> { + final Position pos = wrapper.get(Types1_7_6.POSITION_UBYTE, 0); + final short direction = wrapper.get(Type.UNSIGNED_BYTE, 0); + final Item item = wrapper.get(Types1_7_6.COMPRESSED_ITEM, 0); + + if (item != null && item.identifier() == ItemList1_6.sign.itemID && direction != 255 && direction != 0) { // If placed item is a sign then cancel and send a OPEN_SIGN_EDITOR packet + final PacketWrapper openSignEditor = PacketWrapper.create(ClientboundPackets1_6_4.OPEN_SIGN_EDITOR, wrapper.user()); + openSignEditor.write(Type.BYTE, (byte) 0); // magic value + openSignEditor.write(Types1_7_6.POSITION_INT, pos.getRelative(BlockFaceUtils.getFace(direction))); + openSignEditor.send(Protocol1_6_2to1_6_1.class); + } + }); + } + }); + } + + @Override + public void init(UserConnection userConnection) { + userConnection.put(new PreNettySplitter(userConnection, Protocol1_6_2to1_6_1.class, ClientboundPackets1_6_1::getPacket)); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_6_4to1_6_2/Protocol1_6_4to1_6_2.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_6_4to1_6_2/Protocol1_6_4to1_6_2.java new file mode 100644 index 0000000..c9a6233 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_6_4to1_6_2/Protocol1_6_4to1_6_2.java @@ -0,0 +1,13 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_6_4to1_6_2; + +import com.viaversion.viaversion.api.protocol.AbstractProtocol; +import net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.ClientboundPackets1_6_4; +import net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.ServerboundPackets1_6_4; + +public class Protocol1_6_4to1_6_2 extends AbstractProtocol { + + public Protocol1_6_4to1_6_2() { + super(ClientboundPackets1_6_4.class, ClientboundPackets1_6_4.class, ServerboundPackets1_6_4.class, ServerboundPackets1_6_4.class); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/ClientboundPackets1_6_4.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/ClientboundPackets1_6_4.java new file mode 100644 index 0000000..084b576 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/ClientboundPackets1_6_4.java @@ -0,0 +1,506 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType; +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.util.PreNettyPacketType; + +import java.util.function.BiConsumer; + +import static net.raphimc.vialegacy.util.PreNettyTypes.*; + +public enum ClientboundPackets1_6_4 implements ClientboundPacketType, PreNettyPacketType { + + KEEP_ALIVE(0, (user, buf) -> { + buf.readInt(); + }), + JOIN_GAME(1, (user, buf) -> { + buf.readInt(); + readString(buf); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + CHAT_MESSAGE(3, (user, buf) -> { + readString(buf); + }), + TIME_UPDATE(4, (user, buf) -> { + buf.readLong(); + buf.readLong(); + }), + ENTITY_EQUIPMENT(5, (user, buf) -> { + buf.readInt(); + buf.readShort(); + readItemStack1_3_1(buf); + }), + SPAWN_POSITION(6, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + UPDATE_HEALTH(8, (user, buf) -> { + buf.readFloat(); + buf.readShort(); + buf.readFloat(); + }), + RESPAWN(9, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + readString(buf); + }), + PLAYER_POSITION_ONLY_ONGROUND(10, (user, buf) -> { + buf.readUnsignedByte(); + }), + PLAYER_POSITION_ONLY_POSITION(11, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION_ONLY_LOOK(12, (user, buf) -> { + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION(13, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + HELD_ITEM_CHANGE(16, (user, buf) -> { + buf.readShort(); + }), + USE_BED(17, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readByte(); + buf.readInt(); + }), + ENTITY_ANIMATION(18, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + SPAWN_PLAYER(20, (user, buf) -> { + buf.readInt(); + readString(buf); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + readEntityMetadata1_4_4(buf); + }), + COLLECT_ITEM(22, (user, buf) -> { + buf.readInt(); + buf.readInt(); + }), + SPAWN_ENTITY(23, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + int i = buf.readInt(); + if (i > 0) { + buf.readShort(); + buf.readShort(); + buf.readShort(); + } + }), + SPAWN_MOB(24, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + buf.readShort(); + buf.readShort(); + readEntityMetadata1_4_4(buf); + }), + SPAWN_PAINTING(25, (user, buf) -> { + buf.readInt(); + readString(buf); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + SPAWN_EXPERIENCE_ORB(26, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readShort(); + }), + ENTITY_VELOCITY(28, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readShort(); + buf.readShort(); + }), + DESTROY_ENTITIES(29, (user, buf) -> { + int x = buf.readUnsignedByte(); + for (int i = 0; i < x; i++) buf.readInt(); + }), + ENTITY_MOVEMENT(30, (user, buf) -> { + buf.readInt(); + }), + ENTITY_POSITION(31, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_ROTATION(32, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_POSITION_AND_ROTATION(33, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_TELEPORT(34, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readByte(); + }), + ENTITY_HEAD_LOOK(35, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + ENTITY_STATUS(38, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + ATTACH_ENTITY(39, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readUnsignedByte(); + }), + ENTITY_METADATA(40, (user, buf) -> { + buf.readInt(); + readEntityMetadata1_4_4(buf); + }), + ENTITY_EFFECT(41, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + }), + REMOVE_ENTITY_EFFECT(42, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + SET_EXPERIENCE(43, (user, buf) -> { + buf.readFloat(); + buf.readShort(); + buf.readShort(); + }), + ENTITY_PROPERTIES(44, (user, buf) -> { + buf.readInt(); + int x = buf.readInt(); + for (int i = 0; i < x; i++) { + readString(buf); + buf.readDouble(); + int s = buf.readUnsignedShort(); + for (int k = 0; k < s; k++) { + buf.readLong(); + buf.readLong(); + buf.readDouble(); + buf.readByte(); + } + } + }), + CHUNK_DATA(51, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readBoolean(); + buf.readShort(); + buf.readShort(); + int x = buf.readInt(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + MULTI_BLOCK_CHANGE(52, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readShort(); + int x = buf.readInt(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + BLOCK_CHANGE(53, (user, buf) -> { + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readShort(); + buf.readUnsignedByte(); + }), + BLOCK_ACTION(54, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + buf.readUnsignedByte(); + buf.readUnsignedByte(); + buf.readShort(); + }), + BLOCK_BREAK_ANIMATION(55, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readUnsignedByte(); + }), + MAP_BULK_CHUNK(56, (user, buf) -> { + int x = buf.readShort(); + int y = buf.readInt(); + buf.readBoolean(); + for (int i = 0; i < y; i++) buf.readByte(); + for (int i = 0; i < x; i++) { + buf.readInt(); + buf.readInt(); + buf.readShort(); + buf.readShort(); + } + }), + EXPLOSION(60, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + int x = buf.readInt(); + for (int i = 0; i < x; i++) { + buf.readByte(); + buf.readByte(); + buf.readByte(); + } + buf.readFloat(); + buf.readFloat(); + buf.readFloat(); + }), + EFFECT(61, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readBoolean(); + }), + NAMED_SOUND(62, (user, buf) -> { + readString(buf); + buf.readInt(); + buf.readInt(); + buf.readInt(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + SPAWN_PARTICLE(63, (user, buf) -> { + readString(buf); + buf.readFloat(); + buf.readFloat(); + buf.readFloat(); + buf.readFloat(); + buf.readFloat(); + buf.readFloat(); + buf.readFloat(); + buf.readInt(); + }), + GAME_EVENT(70, (user, buf) -> { + buf.readByte(); + buf.readByte(); + }), + SPAWN_GLOBAL_ENTITY(71, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + OPEN_WINDOW(100, (user, buf) -> { + buf.readByte(); + int x = buf.readByte(); + readString(buf); + buf.readByte(); + buf.readBoolean(); + if (x == 11) buf.readInt(); + }), + CLOSE_WINDOW(101, (user, buf) -> { + buf.readByte(); + }), + SET_SLOT(103, (user, buf) -> { + buf.readByte(); + buf.readShort(); + readItemStack1_3_1(buf); + }), + WINDOW_ITEMS(104, (user, buf) -> { + buf.readByte(); + int x = buf.readShort(); + for (int i = 0; i < x; i++) readItemStack1_3_1(buf); + }), + WINDOW_PROPERTY(105, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readShort(); + }), + WINDOW_CONFIRMATION(106, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readByte(); + }), + CREATIVE_INVENTORY_ACTION(107, (user, buf) -> { + buf.readShort(); + readItemStack1_3_1(buf); + }), + UPDATE_SIGN(130, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + readString(buf); + readString(buf); + readString(buf); + readString(buf); + }), + MAP_DATA(131, (user, buf) -> { + buf.readShort(); + buf.readShort(); + int x = buf.readUnsignedShort(); + for (int i = 0; i < x; i++) buf.readByte(); + }), + BLOCK_ENTITY_DATA(132, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + buf.readByte(); + readTag(buf); + }), + OPEN_SIGN_EDITOR(133, (user, buf) -> { + buf.readByte(); + buf.readInt(); + buf.readInt(); + buf.readInt(); + }), + STATISTICS(200, (user, buf) -> { + buf.readInt(); + buf.readInt(); + }), + PLAYER_INFO(201, (user, buf) -> { + readString(buf); + buf.readByte(); + buf.readShort(); + }), + PLAYER_ABILITIES(202, (user, buf) -> { + buf.readByte(); + buf.readFloat(); + buf.readFloat(); + }), + TAB_COMPLETE(203, (user, buf) -> { + readString(buf); + }), + SCOREBOARD_OBJECTIVE(206, (user, buf) -> { + readString(buf); + readString(buf); + buf.readByte(); + }), + UPDATE_SCORE(207, (user, buf) -> { + readString(buf); + byte b = buf.readByte(); + if (b != 1) { + readString(buf); + buf.readInt(); + } + }), + DISPLAY_SCOREBOARD(208, (user, buf) -> { + buf.readByte(); + readString(buf); + }), + TEAMS(209, (user, buf) -> { + readString(buf); + int x = buf.readByte(); + if (x == 0 || x == 2) { + readString(buf); + readString(buf); + readString(buf); + buf.readByte(); + } + if (x == 0 || x == 3 || x == 4) { + x = buf.readShort(); + for (int i = 0; i < x; i++) readString(buf); + } + }), + PLUGIN_MESSAGE(250, (user, buf) -> { + readString(buf); + short s = buf.readShort(); + for (int i = 0; i < s; i++) buf.readByte(); + }), + SHARED_KEY(252, (user, buf) -> { + readByteArray(buf); + readByteArray(buf); + }), + SERVER_AUTH_DATA(253, (user, buf) -> { + readString(buf); + readByteArray(buf); + readByteArray(buf); + }), + DISCONNECT(255, (user, buf) -> { + readString(buf); + }); + + private static final ClientboundPackets1_6_4[] REGISTRY = new ClientboundPackets1_6_4[256]; + + static { + for (ClientboundPackets1_6_4 packet : values()) { + REGISTRY[packet.id] = packet; + } + } + + public static ClientboundPackets1_6_4 getPacket(final int id) { + return REGISTRY[id]; + } + + private final int id; + private final BiConsumer packetReader; + + ClientboundPackets1_6_4(final int id, final BiConsumer packetReader) { + this.id = id; + this.packetReader = packetReader; + } + + @Override + public int getId() { + return this.id; + } + + @Override + public String getName() { + return name(); + } + + @Override + public BiConsumer getPacketReader() { + return this.packetReader; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/Protocol1_7_2_5to1_6_4.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/Protocol1_7_2_5to1_6_4.java new file mode 100644 index 0000000..d4bf69c --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/Protocol1_7_2_5to1_6_4.java @@ -0,0 +1,1185 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4; + +import com.google.common.base.Joiner; +import com.viaversion.viaversion.api.Via; +import com.viaversion.viaversion.api.connection.ProtocolInfo; +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.minecraft.BlockChangeRecord; +import com.viaversion.viaversion.api.minecraft.Position; +import com.viaversion.viaversion.api.minecraft.chunks.Chunk; +import com.viaversion.viaversion.api.minecraft.entities.Entity1_10Types; +import com.viaversion.viaversion.api.minecraft.item.DataItem; +import com.viaversion.viaversion.api.minecraft.item.Item; +import com.viaversion.viaversion.api.minecraft.metadata.Metadata; +import com.viaversion.viaversion.api.platform.providers.ViaProviders; +import com.viaversion.viaversion.api.protocol.AbstractProtocol; +import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; +import com.viaversion.viaversion.api.protocol.packet.State; +import com.viaversion.viaversion.api.protocol.remapper.PacketRemapper; +import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.libs.fastutil.ints.Int2IntMap; +import com.viaversion.viaversion.libs.fastutil.objects.Object2IntMap; +import com.viaversion.viaversion.libs.fastutil.objects.Object2IntOpenHashMap; +import com.viaversion.viaversion.libs.gson.JsonObject; +import com.viaversion.viaversion.protocols.base.*; +import com.viaversion.viaversion.protocols.protocol1_8.ClientboundPackets1_8; +import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; +import io.netty.buffer.ByteBuf; +import io.netty.buffer.Unpooled; +import io.netty.channel.*; +import net.raphimc.vialegacy.ViaLegacy; +import net.raphimc.vialegacy.api.IdAndData; +import net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.providers.EncryptionProvider; +import net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.rewriter.*; +import net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.storage.*; +import net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.types.MetaType1_6_4; +import net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.types.Types1_6_4; +import net.raphimc.vialegacy.protocols.release.protocol1_7_6_10to1_7_2_5.ClientboundPackets1_7_2; +import net.raphimc.vialegacy.protocols.release.protocol1_7_6_10to1_7_2_5.ServerboundPackets1_7_2; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.Protocol1_8to1_7_6_10; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.providers.GameProfileFetcher; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.*; +import net.raphimc.vialegacy.util.PreNettySplitter; + +import java.util.List; +import java.util.logging.Level; + +public class Protocol1_7_2_5to1_6_4 extends AbstractProtocol { + + public static ItemRewriter ITEM_REWRITER = new ItemRewriter(); + + public Protocol1_7_2_5to1_6_4() { + super(ClientboundPackets1_6_4.class, ClientboundPackets1_7_2.class, ServerboundPackets1_6_4.class, ServerboundPackets1_7_2.class); + } + + @Override + protected void registerPackets() { + this.registerClientbound(State.STATUS, ClientboundPackets1_6_4.DISCONNECT.getId(), ClientboundStatusPackets.STATUS_RESPONSE.getId(), new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + final String reason = wrapper.read(Types1_6_4.STRING); // reason + try { + final String[] motdParts = reason.split("\0"); + final JsonObject rootObject = new JsonObject(); + final JsonObject descriptionObject = new JsonObject(); + final JsonObject playersObject = new JsonObject(); + final JsonObject versionObject = new JsonObject(); + + descriptionObject.addProperty("text", motdParts[3]); + playersObject.addProperty("max", Integer.parseInt(motdParts[5])); + playersObject.addProperty("online", Integer.parseInt(motdParts[4])); + versionObject.addProperty("name", motdParts[2]); + versionObject.addProperty("protocol", Integer.parseInt(motdParts[1])); + rootObject.add("description", descriptionObject); + rootObject.add("players", playersObject); + rootObject.add("version", versionObject); + + wrapper.write(Type.STRING, rootObject.toString()); + } catch (Throwable e) { + ViaLegacy.getPlatform().getLogger().log(Level.WARNING, "Could not parse 1.6.4 ping: " + reason, e); + wrapper.cancel(); + } + }); + } + }); + this.registerClientbound(State.LOGIN, ClientboundPackets1_6_4.SHARED_KEY.getId(), ClientboundLoginPackets.GAME_PROFILE.getId(), new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + final ProtocolInfo info = wrapper.user().getProtocolInfo(); + final ProtocolMetadataStorage protocolMetadata = wrapper.user().get(ProtocolMetadataStorage.class); + wrapper.read(Type.SHORT_BYTE_ARRAY); // shared secret + wrapper.read(Type.SHORT_BYTE_ARRAY); // verify token + wrapper.write(Type.STRING, info.getUuid().toString().replace("-", "")); // uuid + wrapper.write(Type.STRING, info.getUsername()); // user name + + if (!protocolMetadata.skipEncryption) { + Via.getManager().getProviders().get(EncryptionProvider.class).enableDecryption(wrapper.user()); + } + info.setState(State.PLAY); + Via.getManager().getConnectionManager().onLoginSuccess(wrapper.user()); + if (info.getPipeline().pipes().stream().allMatch(Via.getManager().getProtocolManager()::isBaseProtocol)) { + wrapper.user().setActive(false); + } + if (Via.getManager().isDebug()) { + ViaLegacy.getPlatform().getLogger().log(Level.INFO, "{0} logged in with protocol {1}, Route: {2}", new Object[]{info.getUsername(), info.getProtocolVersion(), Joiner.on(", ").join(info.getPipeline().pipes(), ", ")}); + } + + final PacketWrapper respawn = PacketWrapper.create(ServerboundPackets1_6_4.CLIENT_STATUS, wrapper.user()); + respawn.write(Type.BYTE, (byte) 0); // force respawn + respawn.sendToServer(Protocol1_7_2_5to1_6_4.class); + }); + } + }); + this.cancelClientbound(ClientboundPackets1_6_4.SHARED_KEY); + this.registerClientbound(State.LOGIN, ClientboundPackets1_6_4.SERVER_AUTH_DATA.getId(), ClientboundLoginPackets.HELLO.getId(), new PacketRemapper() { + @Override + public void registerMap() { + map(Types1_6_4.STRING, Type.STRING); // server hash + map(Type.SHORT_BYTE_ARRAY); // public key + map(Type.SHORT_BYTE_ARRAY); // verify token + handler(wrapper -> { + final ProtocolMetadataStorage protocolMetadata = wrapper.user().get(ProtocolMetadataStorage.class); + final String serverHash = wrapper.get(Type.STRING, 0); + protocolMetadata.authenticate = !serverHash.equals("-"); + }); + } + }); + this.cancelClientbound(ClientboundPackets1_6_4.SERVER_AUTH_DATA); + this.registerClientbound(State.LOGIN, ClientboundPackets1_6_4.DISCONNECT.getId(), ClientboundLoginPackets.LOGIN_DISCONNECT.getId(), new PacketRemapper() { + @Override + public void registerMap() { + map(Types1_6_4.STRING, Type.STRING, ChatComponentRewriter::toClient); // reason + } + }); + this.cancelClientbound(State.LOGIN, ClientboundPackets1_6_4.PLUGIN_MESSAGE.getId()); + this.registerClientbound(State.LOGIN, ClientboundPackets1_6_4.JOIN_GAME.getId(), ClientboundPackets1_6_4.JOIN_GAME.getId(), new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + ViaLegacy.getPlatform().getLogger().warning("Server skipped LOGIN state"); + final PacketWrapper sharedKey = PacketWrapper.create(ClientboundPackets1_6_4.SHARED_KEY, wrapper.user()); + sharedKey.write(Type.SHORT_BYTE_ARRAY, new byte[0]); + sharedKey.write(Type.SHORT_BYTE_ARRAY, new byte[0]); + wrapper.user().get(ProtocolMetadataStorage.class).skipEncryption = true; + sharedKey.send(BaseProtocol.class); // switch to play state + wrapper.user().get(ProtocolMetadataStorage.class).skipEncryption = false; + + wrapper.send(BaseProtocol.class); + wrapper.cancel(); + }); + } + }); + this.registerClientbound(ClientboundPackets1_6_4.JOIN_GAME, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + handler(wrapper -> { + wrapper.user().get(PlayerInfoStorage.class).entityId = wrapper.get(Type.INT, 0); + final String terrainType = wrapper.read(Types1_6_4.STRING); // level type + final short gameType = wrapper.read(Type.BYTE); // game mode + final byte dimension = wrapper.read(Type.BYTE); // dimension id + final short difficulty = wrapper.read(Type.BYTE); // difficulty + wrapper.read(Type.BYTE); // world height + final short maxPlayers = wrapper.read(Type.BYTE); // max players + + wrapper.write(Type.UNSIGNED_BYTE, gameType); + wrapper.write(Type.BYTE, dimension); + wrapper.write(Type.UNSIGNED_BYTE, difficulty); + wrapper.write(Type.UNSIGNED_BYTE, maxPlayers); + wrapper.write(Type.STRING, terrainType); + }); + handler(wrapper -> { + final byte dimensionId = wrapper.get(Type.BYTE, 0); + wrapper.user().get(DimensionTracker.class).setDimension(dimensionId); + wrapper.user().get(ClientWorld.class).setEnvironment(dimensionId); + }); + } + }); + this.registerClientbound(ClientboundPackets1_6_4.CHAT_MESSAGE, new PacketRemapper() { + @Override + public void registerMap() { + map(Types1_6_4.STRING, Type.STRING, msg -> TranslationRewriter.toClient(ChatComponentRewriter.toClient(msg))); // message + } + }); + this.registerClientbound(ClientboundPackets1_6_4.ENTITY_EQUIPMENT, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + map(Type.SHORT); // slot + map(Types1_7_6.COMPRESSED_ITEM); // item + handler(wrapper -> ITEM_REWRITER.rewriteRead(wrapper.get(Types1_7_6.COMPRESSED_ITEM, 0))); + } + }); + this.registerClientbound(ClientboundPackets1_6_4.RESPAWN, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // dimension id + map(Type.BYTE, Type.UNSIGNED_BYTE); // difficulty + map(Type.BYTE, Type.UNSIGNED_BYTE); // gamemode + read(Type.SHORT); // world height + map(Types1_6_4.STRING, Type.STRING); // worldType + handler(wrapper -> { + final int oldDim = wrapper.user().get(DimensionTracker.class).getDimensionId(); + final int newDim = wrapper.get(Type.INT, 0); + wrapper.user().get(DimensionTracker.class).setDimension(newDim); + wrapper.user().get(ClientWorld.class).setEnvironment(newDim); + if (oldDim != newDim) { + wrapper.user().get(ChunkTracker.class).clear(); + } + }); + } + }); + this.registerClientbound(ClientboundPackets1_6_4.PLAYER_POSITION_ONLY_ONGROUND, ClientboundPackets1_7_2.PLAYER_POSITION, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + final PlayerInfoStorage playerInfoStorage = wrapper.user().get(PlayerInfoStorage.class); + final boolean supportsFlags = wrapper.user().getProtocolInfo().getPipeline().contains(Protocol1_8to1_7_6_10.class); + + wrapper.write(Type.DOUBLE, supportsFlags ? 0D : playerInfoStorage.posX); // x + wrapper.write(Type.DOUBLE, supportsFlags ? 0D : playerInfoStorage.posY + 1.62F); // y + wrapper.write(Type.DOUBLE, supportsFlags ? 0D : playerInfoStorage.posZ); // z + wrapper.write(Type.FLOAT, supportsFlags ? 0F : playerInfoStorage.yaw); // yaw + wrapper.write(Type.FLOAT, supportsFlags ? 0F : playerInfoStorage.pitch); // pitch + if (supportsFlags) { + wrapper.read(Type.BOOLEAN); // onGround + wrapper.write(Type.BYTE, (byte) 0b11111); // flags + + wrapper.setPacketType(ClientboundPackets1_8.PLAYER_POSITION); + wrapper.send(Protocol1_8to1_7_6_10.class); + wrapper.cancel(); + } else { + wrapper.passthrough(Type.BOOLEAN); // onGround + } + + final PacketWrapper setVelocityToZero = PacketWrapper.create(ClientboundPackets1_7_2.ENTITY_VELOCITY, wrapper.user()); + setVelocityToZero.write(Type.INT, playerInfoStorage.entityId); // entity id + setVelocityToZero.write(Type.SHORT, (short) 0); // velocity x + setVelocityToZero.write(Type.SHORT, (short) 0); // velocity y + setVelocityToZero.write(Type.SHORT, (short) 0); // velocity z + + if (!wrapper.isCancelled()) wrapper.send(Protocol1_7_2_5to1_6_4.class); + setVelocityToZero.send(Protocol1_7_2_5to1_6_4.class); + wrapper.cancel(); + }); + } + }); + this.registerClientbound(ClientboundPackets1_6_4.PLAYER_POSITION_ONLY_POSITION, ClientboundPackets1_7_2.PLAYER_POSITION, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + final PlayerInfoStorage playerInfoStorage = wrapper.user().get(PlayerInfoStorage.class); + final boolean supportsFlags = wrapper.user().getProtocolInfo().getPipeline().contains(Protocol1_8to1_7_6_10.class); + + wrapper.passthrough(Type.DOUBLE); // x + wrapper.passthrough(Type.DOUBLE); // stance + wrapper.read(Type.DOUBLE); // y + wrapper.passthrough(Type.DOUBLE); // z + wrapper.write(Type.FLOAT, supportsFlags ? 0F : playerInfoStorage.yaw); // yaw + wrapper.write(Type.FLOAT, supportsFlags ? 0F : playerInfoStorage.pitch); // pitch + if (supportsFlags) { + wrapper.read(Type.BOOLEAN); // onGround + wrapper.write(Type.BYTE, (byte) 0b11000); // flags + + wrapper.setPacketType(ClientboundPackets1_8.PLAYER_POSITION); + wrapper.send(Protocol1_8to1_7_6_10.class); + wrapper.cancel(); + } else { + wrapper.passthrough(Type.BOOLEAN); // onGround + } + }); + } + }); + this.registerClientbound(ClientboundPackets1_6_4.PLAYER_POSITION_ONLY_LOOK, ClientboundPackets1_7_2.PLAYER_POSITION, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + final PlayerInfoStorage playerInfoStorage = wrapper.user().get(PlayerInfoStorage.class); + final boolean supportsFlags = wrapper.user().getProtocolInfo().getPipeline().contains(Protocol1_8to1_7_6_10.class); + + wrapper.write(Type.DOUBLE, supportsFlags ? 0D : playerInfoStorage.posX); // x + wrapper.write(Type.DOUBLE, supportsFlags ? 0D : playerInfoStorage.posY + 1.62F); // y + wrapper.write(Type.DOUBLE, supportsFlags ? 0D : playerInfoStorage.posZ); // z + wrapper.passthrough(Type.FLOAT); // yaw + wrapper.passthrough(Type.FLOAT); // pitch + if (supportsFlags) { + wrapper.read(Type.BOOLEAN); // onGround + wrapper.write(Type.BYTE, (byte) 0b111); // flags + + wrapper.setPacketType(ClientboundPackets1_8.PLAYER_POSITION); + wrapper.send(Protocol1_8to1_7_6_10.class); + wrapper.cancel(); + } else { + wrapper.passthrough(Type.BOOLEAN); // onGround + } + + final PacketWrapper setVelocityToZero = PacketWrapper.create(ClientboundPackets1_7_2.ENTITY_VELOCITY, wrapper.user()); + setVelocityToZero.write(Type.INT, playerInfoStorage.entityId); // entity id + setVelocityToZero.write(Type.SHORT, (short) 0); // velocity x + setVelocityToZero.write(Type.SHORT, (short) 0); // velocity y + setVelocityToZero.write(Type.SHORT, (short) 0); // velocity z + + if (!wrapper.isCancelled()) wrapper.send(Protocol1_7_2_5to1_6_4.class); + setVelocityToZero.send(Protocol1_7_2_5to1_6_4.class); + wrapper.cancel(); + }); + } + }); + this.registerClientbound(ClientboundPackets1_6_4.PLAYER_POSITION, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.DOUBLE); // x + map(Type.DOUBLE); // stance + read(Type.DOUBLE); // y + map(Type.DOUBLE); // z + map(Type.FLOAT); // yaw + map(Type.FLOAT); // pitch + map(Type.BOOLEAN); // onGround + } + }); + this.registerClientbound(ClientboundPackets1_6_4.HELD_ITEM_CHANGE, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.SHORT, Type.BYTE); // slot + } + }); + this.registerClientbound(ClientboundPackets1_6_4.USE_BED, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + handler(wrapper -> { + if (wrapper.read(Type.BYTE) != 0) wrapper.cancel(); + }); + map(Types1_7_6.POSITION_BYTE); // position + } + }); + this.registerClientbound(ClientboundPackets1_6_4.ENTITY_ANIMATION, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT, Type.VAR_INT); // entity id + handler(wrapper -> { + short animate = wrapper.read(Type.BYTE); // animation + if (animate == 0 || animate == 4) wrapper.cancel(); + if (animate >= 1 && animate <= 3) { + animate--; + } else { + animate -= 2; + } + wrapper.write(Type.UNSIGNED_BYTE, animate); + }); + } + }); + this.registerClientbound(ClientboundPackets1_6_4.SPAWN_PLAYER, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT, Type.VAR_INT); // entity id + handler(wrapper -> { + final String name = wrapper.read(Types1_6_4.STRING); // name + final GameProfileFetcher gameProfileFetcher = Via.getManager().getProviders().get(GameProfileFetcher.class); + wrapper.write(Type.STRING, (gameProfileFetcher.isLegacySkinLoadingEnabled(wrapper.user()) ? gameProfileFetcher.getMojangUUID(name) : gameProfileFetcher.getOfflineUUID(name)).toString().replace("-", "")); // uuid + wrapper.write(Type.STRING, name); + }); + map(Type.INT); // x + map(Type.INT); // y + map(Type.INT); // z + map(Type.BYTE); // yaw + map(Type.BYTE); // pitch + handler(wrapper -> { + final Item currentItem = new DataItem(wrapper.read(Type.UNSIGNED_SHORT), (byte) 1, (short) 0, null); // item + ITEM_REWRITER.rewriteRead(currentItem); + wrapper.write(Type.SHORT, (short) currentItem.identifier()); + }); + map(Types1_6_4.METADATA_LIST, Types1_7_6.METADATA_LIST); // metadata + handler(wrapper -> rewriteMetadata(wrapper.get(Types1_7_6.METADATA_LIST, 0))); + } + }); + this.registerClientbound(ClientboundPackets1_6_4.SPAWN_ENTITY, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT, Type.VAR_INT); // entity id + map(Type.BYTE); // type id + map(Type.INT); // x + map(Type.INT); // y + map(Type.INT); // z + map(Type.BYTE); // pitch + map(Type.BYTE); // yaw + map(Type.INT); // data + handler(wrapper -> { + int data = wrapper.get(Type.INT, 3); + if (Entity1_10Types.getTypeFromId(wrapper.get(Type.BYTE, 0), true) == Entity1_10Types.ObjectType.FALLING_BLOCK.getType()) { + final int id = data & 0xFFFF; + final int metadata = data >> 16; + final IdAndData block = new IdAndData(id, metadata); + wrapper.user().get(ChunkTracker.class).remapBlockParticle(block); + data = (block.id & 0xFFFF) | block.data << 16; + } + wrapper.set(Type.INT, 3, data); + }); + } + }); + this.registerClientbound(ClientboundPackets1_6_4.SPAWN_MOB, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT, Type.VAR_INT); // entity id + map(Type.UNSIGNED_BYTE); // type id + map(Type.INT); // x + map(Type.INT); // y + map(Type.INT); // z + map(Type.BYTE); // yaw + map(Type.BYTE); // pitch + map(Type.BYTE); // head yaw + map(Type.SHORT); // velocity x + map(Type.SHORT); // velocity y + map(Type.SHORT); // velocity z + map(Types1_6_4.METADATA_LIST, Types1_7_6.METADATA_LIST); // metadata + handler(wrapper -> rewriteMetadata(wrapper.get(Types1_7_6.METADATA_LIST, 0))); + } + }); + this.registerClientbound(ClientboundPackets1_6_4.SPAWN_PAINTING, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT, Type.VAR_INT); // entity id + map(Types1_6_4.STRING, Type.STRING); // motive + map(Types1_7_6.POSITION_INT); // position + map(Type.INT); // rotation + } + }); + this.registerClientbound(ClientboundPackets1_6_4.SPAWN_EXPERIENCE_ORB, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT, Type.VAR_INT); // entity id + map(Type.INT); // x + map(Type.INT); // y + map(Type.INT); // z + map(Type.SHORT); // count + } + }); + this.registerClientbound(ClientboundPackets1_6_4.ENTITY_METADATA, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + map(Types1_6_4.METADATA_LIST, Types1_7_6.METADATA_LIST); // metadata + handler(wrapper -> rewriteMetadata(wrapper.get(Types1_7_6.METADATA_LIST, 0))); + } + }); + this.registerClientbound(ClientboundPackets1_6_4.ENTITY_PROPERTIES, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + handler(wrapper -> { + final int amount = wrapper.passthrough(Type.INT); // count + for (int i = 0; i < amount; i++) { + wrapper.write(Type.STRING, wrapper.read(Types1_6_4.STRING)); // id + wrapper.passthrough(Type.DOUBLE); // baseValue + final int modifierlength = wrapper.passthrough(Type.SHORT); // modifier count + for (int x = 0; x < modifierlength; x++) { + wrapper.passthrough(Type.UUID); // modifier uuid + wrapper.passthrough(Type.DOUBLE); // modifier amount + wrapper.passthrough(Type.BYTE); // modifier operation + } + } + }); + } + }); + this.registerClientbound(ClientboundPackets1_6_4.CHUNK_DATA, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + final Chunk chunk = wrapper.passthrough(new Chunk1_7_6Type(wrapper.user().get(ClientWorld.class))); + wrapper.user().get(ChunkTracker.class).trackAndRemap(chunk); + }); + } + }); + this.registerClientbound(ClientboundPackets1_6_4.MULTI_BLOCK_CHANGE, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // chunkX + map(Type.INT); // chunkZ + map(Types1_7_6.BLOCK_CHANGE_RECORD_ARRAY); // blockChangeRecords + handler(wrapper -> { + final int chunkX = wrapper.get(Type.INT, 0); + final int chunkZ = wrapper.get(Type.INT, 1); + final BlockChangeRecord[] blockChangeRecords = wrapper.get(Types1_7_6.BLOCK_CHANGE_RECORD_ARRAY, 0); + for (BlockChangeRecord record : blockChangeRecords) { + final int targetX = record.getSectionX() + (chunkX << 4); + final int targetY = record.getY(-1); + final int targetZ = record.getSectionZ() + (chunkZ << 4); + final IdAndData block = IdAndData.fromCompressedData(record.getBlockId()); + final Position pos = new Position(targetX, targetY, targetZ); + wrapper.user().get(ChunkTracker.class).trackAndRemap(pos, block); + record.setBlockId(block.toCompressedData()); + } + }); + } + }); + this.registerClientbound(ClientboundPackets1_6_4.BLOCK_CHANGE, new PacketRemapper() { + @Override + public void registerMap() { + map(Types1_7_6.POSITION_UBYTE); // position + map(Type.UNSIGNED_SHORT, Type.VAR_INT); // block id + map(Type.UNSIGNED_BYTE); // block data + handler(wrapper -> { + final Position pos = wrapper.get(Types1_7_6.POSITION_UBYTE, 0); // position + final int blockId = wrapper.get(Type.VAR_INT, 0); // block id + final int data = wrapper.get(Type.UNSIGNED_BYTE, 0); // block data + final IdAndData block = new IdAndData(blockId, data); + wrapper.user().get(ChunkTracker.class).trackAndRemap(pos, block); + wrapper.set(Type.VAR_INT, 0, block.id); // block id + wrapper.set(Type.UNSIGNED_BYTE, 0, (short) block.data); // block data + }); + } + }); + this.registerClientbound(ClientboundPackets1_6_4.BLOCK_ACTION, new PacketRemapper() { + @Override + public void registerMap() { + map(Types1_7_6.POSITION_SHORT); // position + map(Type.BYTE, Type.UNSIGNED_BYTE); // type + map(Type.BYTE, Type.UNSIGNED_BYTE); // data + map(Type.SHORT, Type.VAR_INT); // block id + } + }); + this.registerClientbound(ClientboundPackets1_6_4.BLOCK_BREAK_ANIMATION, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT, Type.VAR_INT); // entity id + map(Types1_7_6.POSITION_INT); // position + map(Type.BYTE); // progress + } + }); + this.registerClientbound(ClientboundPackets1_6_4.MAP_BULK_CHUNK, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + final Chunk[] chunks = wrapper.passthrough(new ChunkBulk1_7_6Type(wrapper.user().get(ClientWorld.class))); + for (Chunk chunk : chunks) { + wrapper.user().get(ChunkTracker.class).trackAndRemap(chunk); + } + }); + } + }); + this.registerClientbound(ClientboundPackets1_6_4.EXPLOSION, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.DOUBLE, Type.FLOAT); // x + map(Type.DOUBLE, Type.FLOAT); // y + map(Type.DOUBLE, Type.FLOAT); // z + map(Type.FLOAT); // radius + map(Type.INT); // record count + handler(wrapper -> { + final int x = wrapper.get(Type.FLOAT, 0).intValue(); + final int y = wrapper.get(Type.FLOAT, 1).intValue(); + final int z = wrapper.get(Type.FLOAT, 2).intValue(); + final int recordCount = wrapper.get(Type.INT, 0); + final ChunkTracker chunkTracker = wrapper.user().get(ChunkTracker.class); + for (int i = 0; i < recordCount; i++) { + final Position pos = new Position(x + wrapper.passthrough(Type.BYTE), y + wrapper.passthrough(Type.BYTE), z + wrapper.passthrough(Type.BYTE)); + chunkTracker.trackAndRemap(pos, new IdAndData(0, 0)); + } + }); + map(Type.FLOAT); // velocity x + map(Type.FLOAT); // velocity y + map(Type.FLOAT); // velocity z + } + }); + this.registerClientbound(ClientboundPackets1_6_4.NAMED_SOUND, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + final String oldSound = wrapper.read(Types1_6_4.STRING); // sound + String newSound = SoundRewriter.map(oldSound); + if (oldSound.isEmpty()) newSound = ""; + if (newSound == null) { + ViaLegacy.getPlatform().getLogger().warning("Unable to map 1.6.4 sound '" + oldSound + "'"); + newSound = ""; + } + if (newSound.isEmpty()) { + wrapper.cancel(); + return; + } + wrapper.write(Type.STRING, newSound); + }); + map(Type.INT); // x + map(Type.INT); // y + map(Type.INT); // z + map(Type.FLOAT); // volume + map(Type.UNSIGNED_BYTE); // pitch + } + }); + this.registerClientbound(ClientboundPackets1_6_4.EFFECT, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // effect id + map(Types1_7_6.POSITION_UBYTE); // position + map(Type.INT); // data + map(Type.BOOLEAN); // server wide + handler(wrapper -> { + final int effectId = wrapper.get(Type.INT, 0); // effect id + int data = wrapper.get(Type.INT, 1); // data + final boolean disableRelativeVolume = wrapper.get(Type.BOOLEAN, 0); // server wide + + if (!disableRelativeVolume && effectId == 2001) { // block break effect + final ChunkTracker chunkTracker = wrapper.user().get(ChunkTracker.class); + final int blockID = data & 4095; + final int blockData = data >> 12 & 255; + final IdAndData block = new IdAndData(blockID, blockData); + chunkTracker.remapBlockParticle(block); + data = (block.id & 4095) | block.data << 12; + + wrapper.set(Type.INT, 1, data); + } + }); + } + }); + this.registerClientbound(ClientboundPackets1_6_4.SPAWN_PARTICLE, new PacketRemapper() { + @Override + public void registerMap() { + map(Types1_6_4.STRING, Type.STRING); // particle + map(Type.FLOAT); // x + map(Type.FLOAT); // y + map(Type.FLOAT); // z + map(Type.FLOAT); // offset x + map(Type.FLOAT); // offset y + map(Type.FLOAT); // offset z + map(Type.FLOAT); // speed + map(Type.INT); // amount + handler(wrapper -> { + final String[] parts = wrapper.get(Type.STRING, 0).split("_", 3); + if (parts[0].equals("tilecrack")) { + parts[0] = "blockcrack"; + } + if (parts[0].equals("blockcrack") || parts[0].equals("blockdust")) { + final int id = Integer.parseInt(parts[1]); + final int metadata = Integer.parseInt(parts[2]); + final IdAndData block = new IdAndData(id, metadata); + wrapper.user().get(ChunkTracker.class).remapBlockParticle(block); + parts[1] = String.valueOf(block.id); + parts[2] = String.valueOf(block.data); + } + + wrapper.set(Type.STRING, 0, String.join("_", parts)); + }); + } + }); + this.registerClientbound(ClientboundPackets1_6_4.GAME_EVENT, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.BYTE, Type.UNSIGNED_BYTE); // reason + map(Type.BYTE, Type.FLOAT); // value + handler(wrapper -> { + final short gameState = wrapper.get(Type.UNSIGNED_BYTE, 0); + if (gameState == 1) { + final PacketWrapper startRain = PacketWrapper.create(ClientboundPackets1_7_2.GAME_EVENT, wrapper.user()); + startRain.write(Type.UNSIGNED_BYTE, (short) 7); + startRain.write(Type.FLOAT, 1.0f); + + wrapper.send(Protocol1_7_2_5to1_6_4.class); + startRain.send(Protocol1_7_2_5to1_6_4.class); + wrapper.cancel(); + } else if (gameState == 2) { + final PacketWrapper stopRain = PacketWrapper.create(ClientboundPackets1_7_2.GAME_EVENT, wrapper.user()); + stopRain.write(Type.UNSIGNED_BYTE, (short) 7); + stopRain.write(Type.FLOAT, 0.0f); + + wrapper.send(Protocol1_7_2_5to1_6_4.class); + stopRain.send(Protocol1_7_2_5to1_6_4.class); + wrapper.cancel(); + } + }); + } + }); + this.registerClientbound(ClientboundPackets1_6_4.SPAWN_GLOBAL_ENTITY, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT, Type.VAR_INT); // entity id + map(Type.BYTE); // type id + map(Type.INT); // x + map(Type.INT); // y + map(Type.INT); // z + } + }); + this.registerClientbound(ClientboundPackets1_6_4.OPEN_WINDOW, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.UNSIGNED_BYTE); // window id + map(Type.UNSIGNED_BYTE); // window type + map(Types1_6_4.STRING, Type.STRING); // title + map(Type.UNSIGNED_BYTE); // slots + map(Type.BOOLEAN); // use provided title + // more conditional data + } + }); + this.registerClientbound(ClientboundPackets1_6_4.CLOSE_WINDOW, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.BYTE, Type.UNSIGNED_BYTE); // window id + } + }); + this.registerClientbound(ClientboundPackets1_6_4.SET_SLOT, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.BYTE); // window id + map(Type.SHORT); // slot + map(Types1_7_6.COMPRESSED_ITEM); // item + handler(wrapper -> ITEM_REWRITER.rewriteRead(wrapper.get(Types1_7_6.COMPRESSED_ITEM, 0))); + } + }); + this.registerClientbound(ClientboundPackets1_6_4.WINDOW_ITEMS, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.BYTE, Type.UNSIGNED_BYTE); // window id + handler(wrapper -> { + final Item[] items = wrapper.passthrough(Types1_7_6.COMPRESSED_ITEM_ARRAY); // items + for (Item item : items) { + ITEM_REWRITER.rewriteRead(item); + } + }); + } + }); + this.registerClientbound(ClientboundPackets1_6_4.UPDATE_SIGN, new PacketRemapper() { + @Override + public void registerMap() { + map(Types1_7_6.POSITION_SHORT); // position + map(Types1_6_4.STRING, Type.STRING); // line 1 + map(Types1_6_4.STRING, Type.STRING); // line 2 + map(Types1_6_4.STRING, Type.STRING); // line 3 + map(Types1_6_4.STRING, Type.STRING); // line 4 + } + }); + this.registerClientbound(ClientboundPackets1_6_4.MAP_DATA, new PacketRemapper() { + @Override + public void registerMap() { + read(Type.SHORT); // item id + map(Type.SHORT, Type.VAR_INT); // map id + map(Type.SHORT_BYTE_ARRAY); // data + } + }); + this.registerClientbound(ClientboundPackets1_6_4.BLOCK_ENTITY_DATA, new PacketRemapper() { + @Override + public void registerMap() { + map(Types1_7_6.POSITION_SHORT); // position + map(Type.BYTE, Type.UNSIGNED_BYTE); // type + map(Types1_7_6.COMPRESSED_NBT); // data + } + }); + this.registerClientbound(ClientboundPackets1_6_4.OPEN_SIGN_EDITOR, new PacketRemapper() { + @Override + public void registerMap() { + read(Type.BYTE); // always 0 + map(Types1_7_6.POSITION_INT); // position + } + }); + this.registerClientbound(ClientboundPackets1_6_4.STATISTICS, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + wrapper.cancel(); + final StatisticsStorage statisticsStorage = wrapper.user().get(StatisticsStorage.class); + final int statId = wrapper.read(Type.INT); // statistic id + final int increment = wrapper.read(Type.INT); // increment + statisticsStorage.values.put(statId, statisticsStorage.values.get(statId) + increment); + }); + } + }); + this.registerClientbound(ClientboundPackets1_6_4.PLAYER_INFO, new PacketRemapper() { + @Override + public void registerMap() { + map(Types1_6_4.STRING, Type.STRING); // name + map(Type.BOOLEAN); // online + map(Type.SHORT); // ping + } + }); + this.registerClientbound(ClientboundPackets1_6_4.TAB_COMPLETE, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + final String completions = wrapper.read(Types1_6_4.STRING); // completions + final String[] completionsArray = completions.split("\0"); + wrapper.write(Type.VAR_INT, completionsArray.length); // completions count + for (String s : completionsArray) { + wrapper.write(Type.STRING, s); // completion + } + }); + } + }); + this.registerClientbound(ClientboundPackets1_6_4.SCOREBOARD_OBJECTIVE, new PacketRemapper() { + @Override + public void registerMap() { + map(Types1_6_4.STRING, Type.STRING); // name + map(Types1_6_4.STRING, Type.STRING); // value + map(Type.BYTE); // mode + } + }); + this.registerClientbound(ClientboundPackets1_6_4.UPDATE_SCORE, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + wrapper.write(Type.STRING, wrapper.read(Types1_6_4.STRING)); // name + final byte mode = wrapper.passthrough(Type.BYTE); // mode + if (mode == 0) { + wrapper.write(Type.STRING, wrapper.read(Types1_6_4.STRING)); // objective + wrapper.passthrough(Type.INT); // score + } + }); + } + }); + this.registerClientbound(ClientboundPackets1_6_4.DISPLAY_SCOREBOARD, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.BYTE); // position + map(Types1_6_4.STRING, Type.STRING); // name + } + }); + this.registerClientbound(ClientboundPackets1_6_4.TEAMS, new PacketRemapper() { + @Override + public void registerMap() { + map(Types1_6_4.STRING, Type.STRING); // name + handler(wrapper -> { + final byte mode = wrapper.passthrough(Type.BYTE); // mode + if (mode == 0 || mode == 2) { + wrapper.write(Type.STRING, wrapper.read(Types1_6_4.STRING)); // display name + wrapper.write(Type.STRING, wrapper.read(Types1_6_4.STRING)); // prefix + wrapper.write(Type.STRING, wrapper.read(Types1_6_4.STRING)); // suffix + wrapper.passthrough(Type.BYTE); // flags + } + if (mode == 0 || mode == 3 || mode == 4) { + final int count = wrapper.passthrough(Type.SHORT); // count + for (int i = 0; i < count; i++) { + wrapper.write(Type.STRING, wrapper.read(Types1_6_4.STRING)); // player name + } + } + }); + } + }); + this.registerClientbound(ClientboundPackets1_6_4.PLUGIN_MESSAGE, new PacketRemapper() { + @Override + public void registerMap() { + map(Types1_6_4.STRING, Type.STRING); // channel + handler(wrapper -> { + final String channel = wrapper.get(Type.STRING, 0); + wrapper.passthrough(Type.SHORT); // length + if (channel.equals("MC|TrList")) { + wrapper.passthrough(Type.INT); // window id + final int count = wrapper.passthrough(Type.UNSIGNED_BYTE); // count + for (int i = 0; i < count; i++) { + ITEM_REWRITER.rewriteRead(wrapper.passthrough(Types1_7_6.COMPRESSED_ITEM)); // item 1 + ITEM_REWRITER.rewriteRead(wrapper.passthrough(Types1_7_6.COMPRESSED_ITEM)); // item 3 + if (wrapper.passthrough(Type.BOOLEAN)) { // has 3 items + ITEM_REWRITER.rewriteRead(wrapper.passthrough(Types1_7_6.COMPRESSED_ITEM)); // item 2 + } + wrapper.passthrough(Type.BOOLEAN); // unavailable + } + } + }); + } + }); + this.registerClientbound(ClientboundPackets1_6_4.DISCONNECT, new PacketRemapper() { + @Override + public void registerMap() { + map(Types1_6_4.STRING, Type.STRING, ChatComponentRewriter::toClient); + } + }); + this.cancelClientbound(ClientboundPackets1_6_4.CREATIVE_INVENTORY_ACTION); + + this.registerServerbound(State.STATUS, ServerboundPackets1_6_4.SERVER_PING.getId(), ServerboundStatusPackets.STATUS_REQUEST.getId(), new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + final HandshakeStorage handshakeStorage = wrapper.user().get(HandshakeStorage.class); + final String ip = handshakeStorage.getHostname(); + final int port = handshakeStorage.getPort(); + wrapper.write(Type.UNSIGNED_BYTE, (short) 1); // always 1 + wrapper.write(Type.UNSIGNED_BYTE, (short) 250); // packet id + wrapper.write(Types1_6_4.STRING, "MC|PingHost"); // channel + wrapper.write(Type.UNSIGNED_SHORT, 3 + 2 * ip.length() + 4); // length + wrapper.write(Type.UNSIGNED_BYTE, (short) (-wrapper.user().getProtocolInfo().getServerProtocolVersion() >> 2)); // protocol Id + wrapper.write(Types1_6_4.STRING, ip); // hostname + wrapper.write(Type.INT, port); // port + }); + } + }); + this.registerServerbound(State.STATUS, -1, ServerboundStatusPackets.PING_REQUEST.getId(), new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + wrapper.cancel(); + final PacketWrapper pong = PacketWrapper.create(ClientboundStatusPackets.PONG_RESPONSE, wrapper.user()); + pong.write(Type.LONG, wrapper.read(Type.LONG)); // start time + pong.send(Protocol1_7_2_5to1_6_4.class); + }); + } + }); + this.registerServerbound(State.LOGIN, ServerboundPackets1_6_4.CLIENT_PROTOCOL.getId(), ServerboundLoginPackets.HELLO.getId(), new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + final String name = wrapper.read(Type.STRING); // user name + final ProtocolInfo info = wrapper.user().getProtocolInfo(); + final HandshakeStorage handshakeStorage = wrapper.user().get(HandshakeStorage.class); + final GameProfileFetcher gameProfileFetcher = Via.getManager().getProviders().get(GameProfileFetcher.class); + info.setUsername(name); + info.setUuid(gameProfileFetcher.isLegacySkinLoadingEnabled(wrapper.user()) ? gameProfileFetcher.getMojangUUID(info.getUsername()) : gameProfileFetcher.getOfflineUUID(info.getUsername())); + + wrapper.write(Type.UNSIGNED_BYTE, (short) (-info.getServerProtocolVersion() >> 2)); // protocol id + wrapper.write(Types1_6_4.STRING, name); // user name + wrapper.write(Types1_6_4.STRING, handshakeStorage.getHostname()); // hostname + wrapper.write(Type.INT, handshakeStorage.getPort()); // port + }); + } + }); + this.registerServerbound(State.LOGIN, ServerboundPackets1_6_4.SHARED_KEY.getId(), ServerboundLoginPackets.ENCRYPTION_KEY.getId()); + this.registerServerbound(ServerboundPackets1_7_2.CHAT_MESSAGE, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.STRING, Types1_6_4.STRING); // message + } + }); + this.registerServerbound(ServerboundPackets1_7_2.INTERACT_ENTITY, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> wrapper.write(Type.INT, wrapper.user().get(PlayerInfoStorage.class).entityId)); // player id + map(Type.INT); // entity id + map(Type.BYTE); // mode + } + }); + this.registerServerbound(ServerboundPackets1_7_2.PLAYER_MOVEMENT, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.BOOLEAN); // onGround + handler(wrapper -> wrapper.user().get(PlayerInfoStorage.class).onGround = wrapper.get(Type.BOOLEAN, 0)); + } + }); + this.registerServerbound(ServerboundPackets1_7_2.PLAYER_POSITION, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.DOUBLE); // x + map(Type.DOUBLE); // y + map(Type.DOUBLE); // stance + map(Type.DOUBLE); // z + map(Type.BOOLEAN); // onGround + handler(wrapper -> { + final PlayerInfoStorage playerInfoStorage = wrapper.user().get(PlayerInfoStorage.class); + playerInfoStorage.posX = wrapper.get(Type.DOUBLE, 0); + playerInfoStorage.posY = wrapper.get(Type.DOUBLE, 1); + playerInfoStorage.posZ = wrapper.get(Type.DOUBLE, 3); + playerInfoStorage.onGround = wrapper.get(Type.BOOLEAN, 0); + }); + } + }); + this.registerServerbound(ServerboundPackets1_7_2.PLAYER_ROTATION, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.FLOAT); // yaw + map(Type.FLOAT); // pitch + map(Type.BOOLEAN); // onGround + handler(wrapper -> { + final PlayerInfoStorage playerInfoStorage = wrapper.user().get(PlayerInfoStorage.class); + playerInfoStorage.yaw = wrapper.get(Type.FLOAT, 0); + playerInfoStorage.pitch = wrapper.get(Type.FLOAT, 1); + playerInfoStorage.onGround = wrapper.get(Type.BOOLEAN, 0); + }); + } + }); + this.registerServerbound(ServerboundPackets1_7_2.PLAYER_POSITION_AND_ROTATION, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.DOUBLE); // x + map(Type.DOUBLE); // y + map(Type.DOUBLE); // stance + map(Type.DOUBLE); // z + map(Type.FLOAT); // yaw + map(Type.FLOAT); // pitch + map(Type.BOOLEAN); // onGround + handler(wrapper -> { + final PlayerInfoStorage playerInfoStorage = wrapper.user().get(PlayerInfoStorage.class); + playerInfoStorage.posX = wrapper.get(Type.DOUBLE, 0); + playerInfoStorage.posY = wrapper.get(Type.DOUBLE, 1); + playerInfoStorage.posZ = wrapper.get(Type.DOUBLE, 3); + playerInfoStorage.yaw = wrapper.get(Type.FLOAT, 0); + playerInfoStorage.pitch = wrapper.get(Type.FLOAT, 1); + playerInfoStorage.onGround = wrapper.get(Type.BOOLEAN, 0); + }); + } + }); + this.registerServerbound(ServerboundPackets1_7_2.PLAYER_BLOCK_PLACEMENT, new PacketRemapper() { + @Override + public void registerMap() { + map(Types1_7_6.POSITION_UBYTE); // position + map(Type.UNSIGNED_BYTE); // direction + map(Types1_7_6.COMPRESSED_ITEM); // item + handler(wrapper -> ITEM_REWRITER.rewriteWrite(wrapper.get(Types1_7_6.COMPRESSED_ITEM, 0))); + map(Type.UNSIGNED_BYTE); // offset x + map(Type.UNSIGNED_BYTE); // offset y + map(Type.UNSIGNED_BYTE); // offset z + } + }); + this.registerServerbound(ServerboundPackets1_7_2.CLICK_WINDOW, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.BYTE); // windowId + map(Type.SHORT); // slot + map(Type.BYTE); // button + map(Type.SHORT); // action + map(Type.BYTE); // mode + map(Types1_7_6.COMPRESSED_ITEM); // item + handler(wrapper -> ITEM_REWRITER.rewriteWrite(wrapper.get(Types1_7_6.COMPRESSED_ITEM, 0))); + } + }); + this.registerServerbound(ServerboundPackets1_7_2.CREATIVE_INVENTORY_ACTION, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.SHORT); // slot + map(Types1_7_6.COMPRESSED_ITEM); // item + handler(wrapper -> ITEM_REWRITER.rewriteWrite(wrapper.get(Types1_7_6.COMPRESSED_ITEM, 0))); + } + }); + this.registerServerbound(ServerboundPackets1_7_2.UPDATE_SIGN, new PacketRemapper() { + @Override + public void registerMap() { + map(Types1_7_6.POSITION_SHORT); // position + map(Type.STRING, Types1_6_4.STRING); // line 1 + map(Type.STRING, Types1_6_4.STRING); // line 2 + map(Type.STRING, Types1_6_4.STRING); // line 3 + map(Type.STRING, Types1_6_4.STRING); // line 4 + } + }); + this.registerServerbound(ServerboundPackets1_7_2.TAB_COMPLETE, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.STRING, Types1_6_4.STRING); // text + } + }); + this.registerServerbound(ServerboundPackets1_7_2.CLIENT_SETTINGS, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.STRING, Types1_6_4.STRING); // language + handler(wrapper -> { + byte renderDistance = wrapper.read(Type.BYTE); // render distance + + if (renderDistance <= 2) { + renderDistance = 3; // TINY + } else if (renderDistance <= 4) { + renderDistance = 2; // SHORT + } else if (renderDistance <= 8) { + renderDistance = 1; // NORMAL + } else { // >= 16 + renderDistance = 0; // FAR + } + + wrapper.write(Type.BYTE, renderDistance); + }); + handler(wrapper -> { + final byte chatVisibility = wrapper.read(Type.BYTE); // chat visibility + final boolean enableColors = wrapper.read(Type.BOOLEAN); // enable colors + final byte mask = (byte) (chatVisibility | (enableColors ? 1 : 0) << 3); + wrapper.write(Type.BYTE, mask); // mask + }); + map(Type.BYTE); // difficulty + map(Type.BOOLEAN); // show cape + } + }); + this.registerServerbound(ServerboundPackets1_7_2.CLIENT_STATUS, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + final int action = wrapper.read(Type.VAR_INT); // action + + if (action == 1) { // Request Statistics + final Object2IntMap loadedStatistics = new Object2IntOpenHashMap<>(); + for (Int2IntMap.Entry entry : wrapper.user().get(StatisticsStorage.class).values.int2IntEntrySet()) { + final String key = StatisticRewriter.map(entry.getIntKey()); + if (key == null) continue; + loadedStatistics.put(key, entry.getIntValue()); + } + + final PacketWrapper statistics = PacketWrapper.create(ClientboundPackets1_8.STATISTICS, wrapper.user()); + statistics.write(Type.VAR_INT, loadedStatistics.size()); // count + for (Object2IntMap.Entry entry : loadedStatistics.object2IntEntrySet()) { + statistics.write(Type.STRING, entry.getKey()); // statistic name + statistics.write(Type.VAR_INT, entry.getIntValue()); // statistic value + } + statistics.send(Protocol1_7_2_5to1_6_4.class); + } + if (action != 0) { + wrapper.cancel(); + return; + } + wrapper.write(Type.BYTE, (byte) 1); // force respawn + }); + } + }); + this.registerServerbound(ServerboundPackets1_7_2.PLUGIN_MESSAGE, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.STRING, Types1_6_4.STRING); // channel + map(Type.SHORT); // length + handler(wrapper -> { + final String channel = wrapper.get(Types1_6_4.STRING, 0); + final PacketWrapper lengthPacketWrapper = PacketWrapper.create(null, wrapper.user()); + final ByteBuf lengthBuffer = Unpooled.buffer(); + + switch (channel) { + case "MC|BEdit": + case "MC|BSign": + final Item item = wrapper.read(Types1_7_6.COMPRESSED_ITEM); // book + ITEM_REWRITER.rewriteWrite(item); + + lengthPacketWrapper.write(Types1_7_6.COMPRESSED_ITEM, item); + lengthPacketWrapper.writeToBuffer(lengthBuffer); + + wrapper.set(Type.SHORT, 0, (short) lengthBuffer.readableBytes()); // length + wrapper.write(Types1_7_6.COMPRESSED_ITEM, item); // book + break; + case "MC|AdvCdm": + final byte type = wrapper.read(Type.BYTE); // command block type + if (type == 0) { + final int posX = wrapper.read(Type.INT); // x + final int posY = wrapper.read(Type.INT); // y + final int posZ = wrapper.read(Type.INT); // z + final String command = wrapper.read(Type.STRING); // command + + lengthPacketWrapper.write(Type.INT, posX); + lengthPacketWrapper.write(Type.INT, posY); + lengthPacketWrapper.write(Type.INT, posZ); + lengthPacketWrapper.write(Types1_6_4.STRING, command); + lengthPacketWrapper.writeToBuffer(lengthBuffer); + + wrapper.set(Type.SHORT, 0, (short) lengthBuffer.readableBytes()); // length + wrapper.write(Type.INT, posX); // x + wrapper.write(Type.INT, posY); // y + wrapper.write(Type.INT, posZ); // z + wrapper.write(Types1_6_4.STRING, command); // command + } else { + wrapper.cancel(); + } + break; + } + lengthBuffer.release(); + }); + } + }); + } + + private void rewriteMetadata(final List metadataList) { + for (Metadata metadata : metadataList) { + if (metadata.metaType().equals(MetaType1_6_4.Slot)) { + ITEM_REWRITER.rewriteRead(metadata.value()); + } + metadata.setMetaType(MetaType1_7_6.byId(metadata.metaType().typeId())); + } + } + + @Override + public void register(ViaProviders providers) { + providers.require(EncryptionProvider.class); + } + + @Override + public void init(UserConnection userConnection) { + userConnection.put(new PreNettySplitter(userConnection, Protocol1_7_2_5to1_6_4.class, ClientboundPackets1_6_4::getPacket)); + + userConnection.put(new PlayerInfoStorage(userConnection)); + userConnection.put(new StatisticsStorage(userConnection)); + userConnection.put(new DimensionTracker(userConnection)); + if (!userConnection.has(ClientWorld.class)) { + userConnection.put(new ClientWorld(userConnection)); + } + userConnection.put(new ChunkTracker(userConnection)); + + userConnection.getChannel().pipeline().addFirst(new ChannelOutboundHandlerAdapter() { + @Override + public void close(ChannelHandlerContext ctx, ChannelPromise promise) throws Exception { + if (userConnection.getProtocolInfo().getState().equals(State.PLAY) && ctx.channel().isWritable() && userConnection.get(PlayerInfoStorage.class).entityId != -1) { + final PacketWrapper disconnect = PacketWrapper.create(ServerboundPackets1_6_4.DISCONNECT, userConnection); + disconnect.write(Types1_6_4.STRING, "Quitting"); // reason + disconnect.sendToServer(Protocol1_7_2_5to1_6_4.class); + Thread.sleep(50); // Wait for the packet to arrive at the server + } + + super.close(ctx, promise); + } + }); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/ServerboundPackets1_6_4.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/ServerboundPackets1_6_4.java new file mode 100644 index 0000000..f3e222e --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/ServerboundPackets1_6_4.java @@ -0,0 +1,216 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.packet.ServerboundPacketType; +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.util.PreNettyPacketType; + +import java.util.function.BiConsumer; + +import static net.raphimc.vialegacy.util.PreNettyTypes.*; + +public enum ServerboundPackets1_6_4 implements ServerboundPacketType, PreNettyPacketType { + + KEEP_ALIVE(0, (user, buf) -> { + buf.readInt(); + }), + LOGIN(1, (user, buf) -> { + buf.readInt(); + readString(buf); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readByte(); + }), + CLIENT_PROTOCOL(2, (user, buf) -> { + buf.readByte(); + readString(buf); + readString(buf); + buf.readInt(); + }), + CHAT_MESSAGE(3, (user, buf) -> { + readString(buf); + }), + INTERACT_ENTITY(7, (user, buf) -> { + buf.readInt(); + buf.readInt(); + buf.readByte(); + }), + RESPAWN(9, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readByte(); + buf.readShort(); + readString(buf); + }), + PLAYER_MOVEMENT(10, (user, buf) -> { + buf.readUnsignedByte(); + }), + PLAYER_POSITION(11, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readUnsignedByte(); + }), + PLAYER_ROTATION(12, (user, buf) -> { + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_POSITION_AND_ROTATION(13, (user, buf) -> { + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readDouble(); + buf.readFloat(); + buf.readFloat(); + buf.readUnsignedByte(); + }), + PLAYER_DIGGING(14, (user, buf) -> { + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + }), + PLAYER_BLOCK_PLACEMENT(15, (user, buf) -> { + buf.readInt(); + buf.readUnsignedByte(); + buf.readInt(); + buf.readUnsignedByte(); + readItemStack1_3_1(buf); + buf.readUnsignedByte(); + buf.readUnsignedByte(); + buf.readUnsignedByte(); + }), + HELD_ITEM_CHANGE(16, (user, buf) -> { + buf.readShort(); + }), + ANIMATION(18, (user, buf) -> { + buf.readInt(); + buf.readByte(); + }), + ENTITY_ACTION(19, (user, buf) -> { + buf.readInt(); + buf.readByte(); + buf.readInt(); + }), + STEER_VEHICLE(27, (user, buf) -> { + buf.readFloat(); + buf.readFloat(); + buf.readBoolean(); + buf.readBoolean(); + }), + CLOSE_WINDOW(101, (user, buf) -> { + buf.readByte(); + }), + CLICK_WINDOW(102, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readByte(); + buf.readShort(); + buf.readByte(); + readItemStack1_3_1(buf); + }), + WINDOW_CONFIRMATION(106, (user, buf) -> { + buf.readByte(); + buf.readShort(); + buf.readByte(); + }), + CREATIVE_INVENTORY_ACTION(107, (user, buf) -> { + buf.readShort(); + readItemStack1_3_1(buf); + }), + CLICK_WINDOW_BUTTON(108, (user, buf) -> { + buf.readByte(); + buf.readByte(); + }), + UPDATE_SIGN(130, (user, buf) -> { + buf.readInt(); + buf.readShort(); + buf.readInt(); + readString(buf); + readString(buf); + readString(buf); + readString(buf); + }), + PLAYER_ABILITIES(202, (user, buf) -> { + buf.readByte(); + buf.readFloat(); + buf.readFloat(); + }), + TAB_COMPLETE(203, (user, buf) -> { + readString(buf); + }), + CLIENT_SETTINGS(204, (user, buf) -> { + readString(buf); + buf.readByte(); + buf.readByte(); + buf.readByte(); + buf.readBoolean(); + }), + CLIENT_STATUS(205, (user, buf) -> { + buf.readByte(); + }), + PLUGIN_MESSAGE(250, (user, buf) -> { + readString(buf); + short s = buf.readShort(); + for (int i = 0; i < s; i++) buf.readByte(); + }), + SHARED_KEY(252, (user, buf) -> { + readByteArray(buf); + readByteArray(buf); + }), + SERVER_PING(254, (user, buf) -> { + buf.readByte(); + buf.readByte(); + readString(buf); + buf.readShort(); + byte x = buf.readByte(); + if (x >= 73) { + readString(buf); + buf.readInt(); + } + }), + DISCONNECT(255, (user, buf) -> { + readString(buf); + }); + + private static final ServerboundPackets1_6_4[] REGISTRY = new ServerboundPackets1_6_4[256]; + + static { + for (ServerboundPackets1_6_4 packet : values()) { + REGISTRY[packet.id] = packet; + } + } + + public static ServerboundPackets1_6_4 getPacket(final int id) { + return REGISTRY[id]; + } + + private final int id; + private final BiConsumer packetReader; + + ServerboundPackets1_6_4(final int id, final BiConsumer packetReader) { + this.id = id; + this.packetReader = packetReader; + } + + @Override + public int getId() { + return this.id; + } + + @Override + public String getName() { + return name(); + } + + @Override + public BiConsumer getPacketReader() { + return this.packetReader; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/baseprotocols/EmptyBaseProtocol.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/baseprotocols/EmptyBaseProtocol.java new file mode 100644 index 0000000..52d3187 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/baseprotocols/EmptyBaseProtocol.java @@ -0,0 +1,12 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.baseprotocols; + +import com.viaversion.viaversion.api.protocol.AbstractSimpleProtocol; + +public class EmptyBaseProtocol extends AbstractSimpleProtocol { + + @Override + public boolean isBaseProtocol() { + return true; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/baseprotocols/PreNettyBaseProtocol.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/baseprotocols/PreNettyBaseProtocol.java new file mode 100644 index 0000000..1ee2e10 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/baseprotocols/PreNettyBaseProtocol.java @@ -0,0 +1,46 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.baseprotocols; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.AbstractSimpleProtocol; +import com.viaversion.viaversion.api.protocol.packet.State; +import com.viaversion.viaversion.api.protocol.remapper.PacketRemapper; +import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.protocols.base.ServerboundHandshakePackets; +import net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.storage.HandshakeStorage; +import net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.storage.ProtocolMetadataStorage; + +public class PreNettyBaseProtocol extends AbstractSimpleProtocol { + + public static final PreNettyBaseProtocol INSTANCE = new PreNettyBaseProtocol(); + + private PreNettyBaseProtocol() { + this.initialize(); + } + + @Override + protected void registerPackets() { + this.registerServerbound(State.HANDSHAKE, ServerboundHandshakePackets.CLIENT_INTENTION.getId(), ServerboundHandshakePackets.CLIENT_INTENTION.getId(), new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + wrapper.cancel(); + wrapper.read(Type.VAR_INT); // protocolVersion + final String hostname = wrapper.read(Type.STRING); // hostName + final int port = wrapper.read(Type.UNSIGNED_SHORT); // port + wrapper.user().put(new HandshakeStorage(wrapper.user(), hostname, port)); + }); + } + }); + } + + @Override + public void init(UserConnection userConnection) { + userConnection.put(new ProtocolMetadataStorage(userConnection)); + } + + @Override + public boolean isBaseProtocol() { + return true; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/providers/EncryptionProvider.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/providers/EncryptionProvider.java new file mode 100644 index 0000000..21ea83f --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/providers/EncryptionProvider.java @@ -0,0 +1,10 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.providers; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.platform.providers.Provider; + +public abstract class EncryptionProvider implements Provider { + + public abstract void enableDecryption(final UserConnection user); + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/rewriter/ChatComponentRewriter.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/rewriter/ChatComponentRewriter.java new file mode 100644 index 0000000..85f3821 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/rewriter/ChatComponentRewriter.java @@ -0,0 +1,23 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.rewriter; + +import com.viaversion.viaversion.libs.gson.JsonElement; +import com.viaversion.viaversion.libs.gson.JsonObject; +import com.viaversion.viaversion.rewriter.ComponentRewriter; + +public class ChatComponentRewriter { + + private static final ComponentRewriter FIX_COMPONENT = new ComponentRewriter() { + @Override + protected void handleTranslate(JsonObject object, String translate) { + final JsonElement args = object.remove("using"); + if (args != null) { + object.add("with", args); + } + } + }; + + public static String toClient(final String text) { + return FIX_COMPONENT.processText(text).toString(); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/rewriter/ItemRewriter.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/rewriter/ItemRewriter.java new file mode 100644 index 0000000..e7239ed --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/rewriter/ItemRewriter.java @@ -0,0 +1,38 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.rewriter; + +import net.raphimc.vialegacy.api.AbstractItemRewriter; + +public class ItemRewriter extends AbstractItemRewriter { + + public ItemRewriter() { + super("1.6.4", false); + registerRemappedItem(26, 355, "Bed Block"); + registerRemappedItem(34, 33, "Piston Head"); + registerRemappedItem(36, 33, "Piston Moving"); + registerRemappedItem(55, 331, "Redstone Wire"); + registerRemappedItem(59, 295, "Wheat Crops"); + registerRemappedItem(63, 323, "Standing Sign"); + registerRemappedItem(64, 324, "Oak Door Block"); + registerRemappedItem(68, 323, "Wall Sign"); + registerRemappedItem(71, 330, "Iron Door Block"); + registerRemappedItem(74, 73, "Lit Redstone Ore"); + registerRemappedItem(75, 76, "Unlit Redstone Torch"); + registerRemappedItem(83, 338, "Sugar Cane Block"); + registerRemappedItem(92, 354, "Cake Block"); + registerRemappedItem(93, 356, "Unlit Redstone Repeater"); + registerRemappedItem(94, 356, "Lit Redstone Repeater"); + registerRemappedItem(95, 146, "Locked Chest"); + registerRemappedItem(104, 361, "Pumpkin Stem"); + registerRemappedItem(105, 362, "Melon Stem"); + registerRemappedItem(115, 372, "Nether Wart Block"); + registerRemappedItem(117, 379, "Brewing Stand Block"); + registerRemappedItem(118, 380, "Cauldron Block"); + registerRemappedItem(124, 123, "Lit Redstone Lamp"); + registerRemappedItem(132, 287, "Tripwire"); + registerRemappedItem(140, 390, "Flower Pot"); + registerRemappedItem(144, 397, "Undefined Mob Head"); + registerRemappedItem(149, 404, "Unlit Redstone Comparator"); + registerRemappedItem(150, 404, "Lit Redstone Comparator"); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/rewriter/SoundRewriter.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/rewriter/SoundRewriter.java new file mode 100644 index 0000000..9f35541 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/rewriter/SoundRewriter.java @@ -0,0 +1,213 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.rewriter; + +import com.viaversion.viaversion.libs.fastutil.objects.Object2ObjectMap; +import com.viaversion.viaversion.libs.fastutil.objects.Object2ObjectOpenHashMap; + +public class SoundRewriter { + + private static final Object2ObjectMap SOUNDS = new Object2ObjectOpenHashMap<>(196, 0.99F); + + static { + SOUNDS.put("ambient.cave.cave", "ambient.cave.cave"); + SOUNDS.put("ambient.weather.rain", "ambient.weather.rain"); + SOUNDS.put("ambient.weather.thunder", "ambient.weather.thunder"); + SOUNDS.put("damage.fallbig", "game.neutral.hurt.fall.big"); + SOUNDS.put("damage.fallsmall", "game.neutral.hurt.fall.small"); + SOUNDS.put("damage.hit", "game.neutral.hurt"); + SOUNDS.put("dig.cloth", "dig.cloth"); + SOUNDS.put("dig.grass", "dig.grass"); + SOUNDS.put("dig.gravel", "dig.gravel"); + SOUNDS.put("dig.sand", "dig.sand"); + SOUNDS.put("dig.snow", "dig.snow"); + SOUNDS.put("dig.stone", "dig.stone"); + SOUNDS.put("dig.wood", "dig.wood"); + SOUNDS.put("fire.fire", "fire.fire"); + SOUNDS.put("fire.ignite", "fire.ignite"); + SOUNDS.put("fireworks.blast", "fireworks.blast"); + SOUNDS.put("fireworks.blast_far", "fireworks.blast_far"); + SOUNDS.put("fireworks.largeBlast", "fireworks.largeBlast"); + SOUNDS.put("fireworks.largeBlast_far", "fireworks.largeBlast_far"); + SOUNDS.put("fireworks.launch", "fireworks.launch"); + SOUNDS.put("fireworks.twinkle", "fireworks.twinkle"); + SOUNDS.put("fireworks.twinkle_far", "fireworks.twinkle_far"); + SOUNDS.put("liquid.lava", "liquid.lava"); + SOUNDS.put("liquid.lavapop", "liquid.lavapop"); + SOUNDS.put("liquid.splash", "game.neutral.swim.splash"); + SOUNDS.put("liquid.swim", "game.neutral.swim"); + SOUNDS.put("liquid.water", "liquid.water"); + SOUNDS.put("minecart.base", "minecart.base"); + SOUNDS.put("minecart.inside", "minecart.inside"); + SOUNDS.put("mob.bat.death", "mob.bat.death"); + SOUNDS.put("mob.bat.hurt", "mob.bat.hurt"); + SOUNDS.put("mob.bat.idle", "mob.bat.idle"); + SOUNDS.put("mob.bat.loop", "mob.bat.loop"); + SOUNDS.put("mob.bat.takeoff", "mob.bat.takeoff"); + SOUNDS.put("mob.blaze.breathe", "mob.blaze.breathe"); + SOUNDS.put("mob.blaze.death", "mob.blaze.death"); + SOUNDS.put("mob.blaze.hit", "mob.blaze.hit"); + SOUNDS.put("mob.cat.hiss", "mob.cat.hiss"); + SOUNDS.put("mob.cat.hitt", "mob.cat.hitt"); + SOUNDS.put("mob.cat.meow", "mob.cat.meow"); + SOUNDS.put("mob.cat.purr", "mob.cat.purr"); + SOUNDS.put("mob.cat.purreow", "mob.cat.purreow"); + SOUNDS.put("mob.chicken.hurt", "mob.chicken.hurt"); + SOUNDS.put("mob.chicken.plop", "mob.chicken.plop"); + SOUNDS.put("mob.chicken.say", "mob.chicken.say"); + SOUNDS.put("mob.chicken.step", "mob.chicken.step"); + SOUNDS.put("mob.cow.hurt", "mob.cow.hurt"); + SOUNDS.put("mob.cow.say", "mob.cow.say"); + SOUNDS.put("mob.cow.step", "mob.cow.step"); + SOUNDS.put("mob.creeper.death", "mob.creeper.death"); + SOUNDS.put("mob.creeper.say", "mob.creeper.say"); + SOUNDS.put("mob.enderdragon.end", "mob.enderdragon.end"); + SOUNDS.put("mob.enderdragon.growl", "mob.enderdragon.growl"); + SOUNDS.put("mob.enderdragon.hit", "mob.enderdragon.hit"); + SOUNDS.put("mob.enderdragon.wings", "mob.enderdragon.wings"); + SOUNDS.put("mob.endermen.death", "mob.endermen.death"); + SOUNDS.put("mob.endermen.hit", "mob.endermen.hit"); + SOUNDS.put("mob.endermen.idle", "mob.endermen.idle"); + SOUNDS.put("mob.endermen.portal", "mob.endermen.portal"); + SOUNDS.put("mob.endermen.scream", "mob.endermen.scream"); + SOUNDS.put("mob.endermen.stare", "mob.endermen.stare"); + SOUNDS.put("mob.ghast.affectionate_scream", "mob.ghast.affectionate_scream"); + SOUNDS.put("mob.ghast.charge", "mob.ghast.charge"); + SOUNDS.put("mob.ghast.death", "mob.ghast.death"); + SOUNDS.put("mob.ghast.fireball", "mob.ghast.fireball"); + SOUNDS.put("mob.ghast.moan", "mob.ghast.moan"); + SOUNDS.put("mob.ghast.scream", "mob.ghast.scream"); + SOUNDS.put("mob.horse.angry", "mob.horse.angry"); + SOUNDS.put("mob.horse.armor", "mob.horse.armor"); + SOUNDS.put("mob.horse.breathe", "mob.horse.breathe"); + SOUNDS.put("mob.horse.death", "mob.horse.death"); + SOUNDS.put("mob.horse.donkey.angry", "mob.horse.donkey.angry"); + SOUNDS.put("mob.horse.donkey.death", "mob.horse.donkey.death"); + SOUNDS.put("mob.horse.donkey.hit", "mob.horse.donkey.hit"); + SOUNDS.put("mob.horse.donkey.idle", "mob.horse.donkey.idle"); + SOUNDS.put("mob.horse.gallop", "mob.horse.gallop"); + SOUNDS.put("mob.horse.hit", "mob.horse.hit"); + SOUNDS.put("mob.horse.idle", "mob.horse.idle"); + SOUNDS.put("mob.horse.jump", "mob.horse.jump"); + SOUNDS.put("mob.horse.land", "mob.horse.land"); + SOUNDS.put("mob.horse.leather", "mob.horse.leather"); + SOUNDS.put("mob.horse.skeleton.death", "mob.horse.skeleton.death"); + SOUNDS.put("mob.horse.skeleton.hit", "mob.horse.skeleton.hit"); + SOUNDS.put("mob.horse.skeleton.idle", "mob.horse.skeleton.idle"); + SOUNDS.put("mob.horse.soft", "mob.horse.soft"); + SOUNDS.put("mob.horse.wood", "mob.horse.wood"); + SOUNDS.put("mob.horse.zombie.death", "mob.horse.zombie.death"); + SOUNDS.put("mob.horse.zombie.hit", "mob.horse.zombie.hit"); + SOUNDS.put("mob.horse.zombie.idle", "mob.horse.zombie.idle"); + SOUNDS.put("mob.irongolem.death", "mob.irongolem.death"); + SOUNDS.put("mob.irongolem.hit", "mob.irongolem.hit"); + SOUNDS.put("mob.irongolem.throw", "mob.irongolem.throw"); + SOUNDS.put("mob.irongolem.walk", "mob.irongolem.walk"); + SOUNDS.put("mob.magmacube.big", "mob.magmacube.big"); + SOUNDS.put("mob.magmacube.jump", "mob.magmacube.jump"); + SOUNDS.put("mob.magmacube.small", "mob.magmacube.small"); + SOUNDS.put("mob.pig.death", "mob.pig.death"); + SOUNDS.put("mob.pig.say", "mob.pig.say"); + SOUNDS.put("mob.pig.step", "mob.pig.step"); + SOUNDS.put("mob.sheep.say", "mob.sheep.say"); + SOUNDS.put("mob.sheep.shear", "mob.sheep.shear"); + SOUNDS.put("mob.sheep.step", "mob.sheep.step"); + SOUNDS.put("mob.silverfish.hit", "mob.silverfish.hit"); + SOUNDS.put("mob.silverfish.kill", "mob.silverfish.kill"); + SOUNDS.put("mob.silverfish.say", "mob.silverfish.say"); + SOUNDS.put("mob.silverfish.step", "mob.silverfish.step"); + SOUNDS.put("mob.skeleton.death", "mob.skeleton.death"); + SOUNDS.put("mob.skeleton.hurt", "mob.skeleton.hurt"); + SOUNDS.put("mob.skeleton.say", "mob.skeleton.say"); + SOUNDS.put("mob.skeleton.step", "mob.skeleton.step"); + SOUNDS.put("mob.slime.attack", "mob.slime.attack"); + SOUNDS.put("mob.slime.big", "mob.slime.big"); + SOUNDS.put("mob.slime.small", "mob.slime.small"); + SOUNDS.put("mob.spider.death", "mob.spider.death"); + SOUNDS.put("mob.spider.say", "mob.spider.say"); + SOUNDS.put("mob.spider.step", "mob.spider.step"); + SOUNDS.put("mob.villager.death", "mob.villager.death"); + SOUNDS.put("mob.villager.haggle", "mob.villager.haggle"); + SOUNDS.put("mob.villager.hit", "mob.villager.hit"); + SOUNDS.put("mob.villager.idle", "mob.villager.idle"); + SOUNDS.put("mob.villager.no", "mob.villager.no"); + SOUNDS.put("mob.villager.yes", "mob.villager.yes"); + SOUNDS.put("mob.wither.death", "mob.wither.death"); + SOUNDS.put("mob.wither.hurt", "mob.wither.hurt"); + SOUNDS.put("mob.wither.idle", "mob.wither.idle"); + SOUNDS.put("mob.wither.shoot", "mob.wither.shoot"); + SOUNDS.put("mob.wither.spawn", "mob.wither.spawn"); + SOUNDS.put("mob.wolf.bark", "mob.wolf.bark"); + SOUNDS.put("mob.wolf.death", "mob.wolf.death"); + SOUNDS.put("mob.wolf.growl", "mob.wolf.growl"); + SOUNDS.put("mob.wolf.howl", "mob.wolf.howl"); + SOUNDS.put("mob.wolf.hurt", "mob.wolf.hurt"); + SOUNDS.put("mob.wolf.panting", "mob.wolf.panting"); + SOUNDS.put("mob.wolf.shake", "mob.wolf.shake"); + SOUNDS.put("mob.wolf.step", "mob.wolf.step"); + SOUNDS.put("mob.wolf.whine", "mob.wolf.whine"); + SOUNDS.put("mob.zombie.death", "mob.zombie.death"); + SOUNDS.put("mob.zombie.hurt", "mob.zombie.hurt"); + SOUNDS.put("mob.zombie.infect", "mob.zombie.infect"); + SOUNDS.put("mob.zombie.metal", "mob.zombie.metal"); + SOUNDS.put("mob.zombie.remedy", "mob.zombie.remedy"); + SOUNDS.put("mob.zombie.say", "mob.zombie.say"); + SOUNDS.put("mob.zombie.step", "mob.zombie.step"); + SOUNDS.put("mob.zombie.unfect", "mob.zombie.unfect"); + SOUNDS.put("mob.zombie.wood", "mob.zombie.wood"); + SOUNDS.put("mob.zombie.woodbreak", "mob.zombie.woodbreak"); + SOUNDS.put("mob.zombiepig.zpig", "mob.zombiepig.zpig"); + SOUNDS.put("mob.zombiepig.zpigangry", "mob.zombiepig.zpigangry"); + SOUNDS.put("mob.zombiepig.zpigdeath", "mob.zombiepig.zpigdeath"); + SOUNDS.put("mob.zombiepig.zpighurt", "mob.zombiepig.zpighurt"); + SOUNDS.put("note.bass", "note.bass"); + SOUNDS.put("note.bassattack", "note.bassattack"); + SOUNDS.put("note.bd", "note.bd"); + SOUNDS.put("note.harp", "note.harp"); + SOUNDS.put("note.hat", "note.hat"); + SOUNDS.put("note.pling", "note.pling"); + SOUNDS.put("note.snare", "note.snare"); + SOUNDS.put("portal.portal", "portal.portal"); + SOUNDS.put("portal.travel", "portal.travel"); + SOUNDS.put("portal.trigger", "portal.trigger"); + SOUNDS.put("random.anvil_break", "random.anvil_break"); + SOUNDS.put("random.anvil_land", "random.anvil_land"); + SOUNDS.put("random.anvil_use", "random.anvil_use"); + SOUNDS.put("random.bow", "random.bow"); + SOUNDS.put("random.bowhit", "random.bowhit"); + SOUNDS.put("random.break", "random.break"); + SOUNDS.put("random.breath", ""); + SOUNDS.put("random.burp", "random.burp"); + SOUNDS.put("random.chestclosed", "random.chestclosed"); + SOUNDS.put("random.chestopen", "random.chestopen"); + SOUNDS.put("random.classic_hurt", "game.neutral.hurt"); + SOUNDS.put("random.click", "random.click"); + SOUNDS.put("random.door_close", "random.door_close"); + SOUNDS.put("random.door_open", "random.door_open"); + SOUNDS.put("random.drink", "random.drink"); + SOUNDS.put("random.eat", "random.eat"); + SOUNDS.put("random.explode", "random.explode"); + SOUNDS.put("random.fizz", "random.fizz"); + SOUNDS.put("random.fuse", "creeper.primed"); //similar to: game.tnt.primed + SOUNDS.put("random.glass", "dig.glass"); + SOUNDS.put("random.levelup", "random.levelup"); + SOUNDS.put("random.orb", "random.orb"); + SOUNDS.put("random.pop", "random.pop"); + SOUNDS.put("random.splash", "random.splash"); + SOUNDS.put("random.successful_hit", "random.successful_hit"); + SOUNDS.put("random.wood_click", "random.wood_click"); + SOUNDS.put("step.cloth", "step.cloth"); + SOUNDS.put("step.grass", "step.grass"); + SOUNDS.put("step.gravel", "step.gravel"); + SOUNDS.put("step.ladder", "step.ladder"); + SOUNDS.put("step.sand", "step.sand"); + SOUNDS.put("step.snow", "step.snow"); + SOUNDS.put("step.stone", "step.stone"); + SOUNDS.put("step.wood", "step.wood"); + SOUNDS.put("tile.piston.in", "tile.piston.in"); + SOUNDS.put("tile.piston.out", "tile.piston.out"); + } + + public static String map(final String sound) { + return SOUNDS.get(sound); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/rewriter/StatisticRewriter.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/rewriter/StatisticRewriter.java new file mode 100644 index 0000000..a3f8f82 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/rewriter/StatisticRewriter.java @@ -0,0 +1,781 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.rewriter; + +import com.viaversion.viaversion.libs.fastutil.ints.Int2ObjectMap; +import com.viaversion.viaversion.libs.fastutil.ints.Int2ObjectOpenHashMap; + +public class StatisticRewriter { + + private static final Int2ObjectMap STATISTICS = new Int2ObjectOpenHashMap<>(764, 0.99F); + + static { + STATISTICS.put(1000, "stat.startGame"); + STATISTICS.put(1001, "stat.createWorld"); + STATISTICS.put(1002, "stat.loadWorld"); + STATISTICS.put(1003, "stat.joinMultiplayer"); + STATISTICS.put(1004, "stat.leaveGame"); + STATISTICS.put(1100, "stat.playOneMinute"); + STATISTICS.put(2000, "stat.walkOneCm"); + STATISTICS.put(2001, "stat.swimOneCm"); + STATISTICS.put(2002, "stat.fallOneCm"); + STATISTICS.put(2003, "stat.climbOneCm"); + STATISTICS.put(2004, "stat.flyOneCm"); + STATISTICS.put(2005, "stat.diveOneCm"); + STATISTICS.put(2006, "stat.minecartOneCm"); + STATISTICS.put(2007, "stat.boatOneCm"); + STATISTICS.put(2008, "stat.pigOneCm"); + STATISTICS.put(2010, "stat.jump"); + STATISTICS.put(2011, "stat.drop"); + STATISTICS.put(2020, "stat.damageDealt"); + STATISTICS.put(2021, "stat.damageTaken"); + STATISTICS.put(2022, "stat.deaths"); + STATISTICS.put(2023, "stat.mobKills"); + STATISTICS.put(2024, "stat.playerKills"); + STATISTICS.put(2025, "stat.fishCaught"); + STATISTICS.put(5242880, "achievement.openInventory"); + STATISTICS.put(5242881, "achievement.mineWood"); + STATISTICS.put(5242882, "achievement.buildWorkBench"); + STATISTICS.put(5242883, "achievement.buildPickaxe"); + STATISTICS.put(5242884, "achievement.buildFurnace"); + STATISTICS.put(5242885, "achievement.acquireIron"); + STATISTICS.put(5242886, "achievement.buildHoe"); + STATISTICS.put(5242887, "achievement.makeBread"); + STATISTICS.put(5242888, "achievement.bakeCake"); + STATISTICS.put(5242889, "achievement.buildBetterPickaxe"); + STATISTICS.put(5242890, "achievement.cookFish"); + STATISTICS.put(5242891, "achievement.onARail"); + STATISTICS.put(5242892, "achievement.buildSword"); + STATISTICS.put(5242893, "achievement.killEnemy"); + STATISTICS.put(5242894, "achievement.killCow"); + STATISTICS.put(5242895, "achievement.flyPig"); + STATISTICS.put(5242896, "achievement.snipeSkeleton"); + STATISTICS.put(5242897, "achievement.diamonds"); + STATISTICS.put(5242898, "achievement.portal"); + STATISTICS.put(5242899, "achievement.ghast"); + STATISTICS.put(5242900, "achievement.blazeRod"); + STATISTICS.put(5242901, "achievement.potion"); + STATISTICS.put(5242902, "achievement.theEnd"); + STATISTICS.put(5242903, "achievement.theEnd2"); + STATISTICS.put(5242904, "achievement.enchantments"); + STATISTICS.put(5242905, "achievement.overkill"); + STATISTICS.put(5242906, "achievement.bookcase"); + STATISTICS.put(16777217, "stat.mineBlock.1"); + STATISTICS.put(16777218, "stat.mineBlock.2"); + STATISTICS.put(16777219, "stat.mineBlock.3"); + STATISTICS.put(16777220, "stat.mineBlock.4"); + STATISTICS.put(16777221, "stat.mineBlock.5"); + STATISTICS.put(16777222, "stat.mineBlock.6"); + STATISTICS.put(16777228, "stat.mineBlock.12"); + STATISTICS.put(16777229, "stat.mineBlock.13"); + STATISTICS.put(16777230, "stat.mineBlock.14"); + STATISTICS.put(16777231, "stat.mineBlock.15"); + STATISTICS.put(16777232, "stat.mineBlock.16"); + STATISTICS.put(16777233, "stat.mineBlock.17"); + STATISTICS.put(16777234, "stat.mineBlock.18"); + STATISTICS.put(16777235, "stat.mineBlock.19"); + STATISTICS.put(16777236, "stat.mineBlock.20"); + STATISTICS.put(16777237, "stat.mineBlock.21"); + STATISTICS.put(16777238, "stat.mineBlock.22"); + STATISTICS.put(16777239, "stat.mineBlock.23"); + STATISTICS.put(16777240, "stat.mineBlock.24"); + STATISTICS.put(16777241, "stat.mineBlock.25"); + STATISTICS.put(16777243, "stat.mineBlock.27"); + STATISTICS.put(16777244, "stat.mineBlock.28"); + STATISTICS.put(16777245, "stat.mineBlock.29"); + STATISTICS.put(16777246, "stat.mineBlock.30"); + STATISTICS.put(16777247, "stat.mineBlock.31"); + STATISTICS.put(16777248, "stat.mineBlock.32"); + STATISTICS.put(16777249, "stat.mineBlock.33"); + STATISTICS.put(16777250, "stat.mineBlock.34"); + STATISTICS.put(16777251, "stat.mineBlock.35"); + STATISTICS.put(16777252, "stat.mineBlock.36"); + STATISTICS.put(16777253, "stat.mineBlock.37"); + STATISTICS.put(16777254, "stat.mineBlock.38"); + STATISTICS.put(16777255, "stat.mineBlock.39"); + STATISTICS.put(16777256, "stat.mineBlock.40"); + STATISTICS.put(16777257, "stat.mineBlock.41"); + STATISTICS.put(16777258, "stat.mineBlock.42"); + STATISTICS.put(16777259, "stat.mineBlock.43"); + STATISTICS.put(16777260, "stat.mineBlock.44"); + STATISTICS.put(16777261, "stat.mineBlock.45"); + STATISTICS.put(16777262, "stat.mineBlock.46"); + STATISTICS.put(16777263, "stat.mineBlock.47"); + STATISTICS.put(16777264, "stat.mineBlock.48"); + STATISTICS.put(16777265, "stat.mineBlock.49"); + STATISTICS.put(16777266, "stat.mineBlock.50"); + STATISTICS.put(16777269, "stat.mineBlock.53"); + STATISTICS.put(16777270, "stat.mineBlock.54"); + STATISTICS.put(16777272, "stat.mineBlock.56"); + STATISTICS.put(16777273, "stat.mineBlock.57"); + STATISTICS.put(16777274, "stat.mineBlock.58"); + STATISTICS.put(16777276, "stat.mineBlock.60"); + STATISTICS.put(16777277, "stat.mineBlock.61"); + STATISTICS.put(16777278, "stat.mineBlock.62"); + STATISTICS.put(16777281, "stat.mineBlock.65"); + STATISTICS.put(16777282, "stat.mineBlock.66"); + STATISTICS.put(16777283, "stat.mineBlock.67"); + STATISTICS.put(16777285, "stat.mineBlock.69"); + STATISTICS.put(16777286, "stat.mineBlock.70"); + STATISTICS.put(16777288, "stat.mineBlock.72"); + STATISTICS.put(16777289, "stat.mineBlock.73"); + STATISTICS.put(16777290, "stat.mineBlock.74"); + STATISTICS.put(16777291, "stat.mineBlock.75"); + STATISTICS.put(16777292, "stat.mineBlock.76"); + STATISTICS.put(16777293, "stat.mineBlock.77"); + STATISTICS.put(16777294, "stat.mineBlock.78"); + STATISTICS.put(16777295, "stat.mineBlock.79"); + STATISTICS.put(16777296, "stat.mineBlock.80"); + STATISTICS.put(16777297, "stat.mineBlock.81"); + STATISTICS.put(16777298, "stat.mineBlock.82"); + STATISTICS.put(16777300, "stat.mineBlock.84"); + STATISTICS.put(16777301, "stat.mineBlock.85"); + STATISTICS.put(16777302, "stat.mineBlock.86"); + STATISTICS.put(16777303, "stat.mineBlock.87"); + STATISTICS.put(16777304, "stat.mineBlock.88"); + STATISTICS.put(16777305, "stat.mineBlock.89"); + STATISTICS.put(16777306, "stat.mineBlock.90"); + STATISTICS.put(16777307, "stat.mineBlock.91"); + STATISTICS.put(16777311, "stat.mineBlock.95"); + STATISTICS.put(16777313, "stat.mineBlock.97"); + STATISTICS.put(16777314, "stat.mineBlock.98"); + STATISTICS.put(16777315, "stat.mineBlock.99"); + STATISTICS.put(16777316, "stat.mineBlock.100"); + STATISTICS.put(16777317, "stat.mineBlock.101"); + STATISTICS.put(16777318, "stat.mineBlock.102"); + STATISTICS.put(16777319, "stat.mineBlock.103"); + STATISTICS.put(16777320, "stat.mineBlock.104"); + STATISTICS.put(16777321, "stat.mineBlock.105"); + STATISTICS.put(16777322, "stat.mineBlock.106"); + STATISTICS.put(16777323, "stat.mineBlock.107"); + STATISTICS.put(16777324, "stat.mineBlock.108"); + STATISTICS.put(16777325, "stat.mineBlock.109"); + STATISTICS.put(16777326, "stat.mineBlock.110"); + STATISTICS.put(16777327, "stat.mineBlock.111"); + STATISTICS.put(16777328, "stat.mineBlock.112"); + STATISTICS.put(16777329, "stat.mineBlock.113"); + STATISTICS.put(16777330, "stat.mineBlock.114"); + STATISTICS.put(16777331, "stat.mineBlock.115"); + STATISTICS.put(16777332, "stat.mineBlock.116"); + STATISTICS.put(16777333, "stat.mineBlock.117"); + STATISTICS.put(16777334, "stat.mineBlock.118"); + STATISTICS.put(16777335, "stat.mineBlock.119"); + STATISTICS.put(16777336, "stat.mineBlock.120"); + STATISTICS.put(16777337, "stat.mineBlock.121"); + STATISTICS.put(16777338, "stat.mineBlock.122"); + STATISTICS.put(16777339, "stat.mineBlock.123"); + STATISTICS.put(16777340, "stat.mineBlock.124"); + STATISTICS.put(16777341, "stat.mineBlock.125"); + STATISTICS.put(16777342, "stat.mineBlock.126"); + STATISTICS.put(16777343, "stat.mineBlock.127"); + STATISTICS.put(16777344, "stat.mineBlock.128"); + STATISTICS.put(16777345, "stat.mineBlock.129"); + STATISTICS.put(16777346, "stat.mineBlock.130"); + STATISTICS.put(16777347, "stat.mineBlock.131"); + STATISTICS.put(16777348, "stat.mineBlock.132"); + STATISTICS.put(16777349, "stat.mineBlock.133"); + STATISTICS.put(16777350, "stat.mineBlock.134"); + STATISTICS.put(16777351, "stat.mineBlock.135"); + STATISTICS.put(16777352, "stat.mineBlock.136"); + STATISTICS.put(16777353, "stat.mineBlock.137"); + STATISTICS.put(16777354, "stat.mineBlock.138"); + STATISTICS.put(16777355, "stat.mineBlock.139"); + STATISTICS.put(16777356, "stat.mineBlock.140"); + STATISTICS.put(16777359, "stat.mineBlock.143"); + STATISTICS.put(16777360, "stat.mineBlock.144"); + STATISTICS.put(16777361, "stat.mineBlock.145"); + STATISTICS.put(16777362, "stat.mineBlock.146"); + STATISTICS.put(16777363, "stat.mineBlock.147"); + STATISTICS.put(16777364, "stat.mineBlock.148"); + STATISTICS.put(16777367, "stat.mineBlock.151"); + STATISTICS.put(16777368, "stat.mineBlock.152"); + STATISTICS.put(16777369, "stat.mineBlock.153"); + STATISTICS.put(16777370, "stat.mineBlock.154"); + STATISTICS.put(16777371, "stat.mineBlock.155"); + STATISTICS.put(16777372, "stat.mineBlock.156"); + STATISTICS.put(16777373, "stat.mineBlock.157"); + STATISTICS.put(16777374, "stat.mineBlock.158"); + STATISTICS.put(16777375, "stat.mineBlock.159"); + STATISTICS.put(16777386, "stat.mineBlock.170"); + STATISTICS.put(16777387, "stat.mineBlock.171"); + STATISTICS.put(16777388, "stat.mineBlock.172"); + STATISTICS.put(16777389, "stat.mineBlock.173"); + STATISTICS.put(16842753, "stat.craftItem.1"); + STATISTICS.put(16842757, "stat.craftItem.5"); + STATISTICS.put(16842772, "stat.craftItem.20"); + STATISTICS.put(16842774, "stat.craftItem.22"); + STATISTICS.put(16842775, "stat.craftItem.23"); + STATISTICS.put(16842776, "stat.craftItem.24"); + STATISTICS.put(16842777, "stat.craftItem.25"); + STATISTICS.put(16842779, "stat.craftItem.27"); + STATISTICS.put(16842780, "stat.craftItem.28"); + STATISTICS.put(16842781, "stat.craftItem.29"); + STATISTICS.put(16842785, "stat.craftItem.33"); + STATISTICS.put(16842787, "stat.craftItem.35"); + STATISTICS.put(16842793, "stat.craftItem.41"); + STATISTICS.put(16842794, "stat.craftItem.42"); + STATISTICS.put(16842796, "stat.craftItem.44"); + STATISTICS.put(16842797, "stat.craftItem.45"); + STATISTICS.put(16842798, "stat.craftItem.46"); + STATISTICS.put(16842799, "stat.craftItem.47"); + STATISTICS.put(16842802, "stat.craftItem.50"); + STATISTICS.put(16842805, "stat.craftItem.53"); + STATISTICS.put(16842806, "stat.craftItem.54"); + STATISTICS.put(16842809, "stat.craftItem.57"); + STATISTICS.put(16842810, "stat.craftItem.58"); + STATISTICS.put(16842813, "stat.craftItem.61"); + STATISTICS.put(16842817, "stat.craftItem.65"); + STATISTICS.put(16842818, "stat.craftItem.66"); + STATISTICS.put(16842819, "stat.craftItem.67"); + STATISTICS.put(16842821, "stat.craftItem.69"); + STATISTICS.put(16842822, "stat.craftItem.70"); + STATISTICS.put(16842824, "stat.craftItem.72"); + STATISTICS.put(16842828, "stat.craftItem.76"); + STATISTICS.put(16842829, "stat.craftItem.77"); + STATISTICS.put(16842830, "stat.craftItem.78"); + STATISTICS.put(16842832, "stat.craftItem.80"); + STATISTICS.put(16842834, "stat.craftItem.82"); + STATISTICS.put(16842836, "stat.craftItem.84"); + STATISTICS.put(16842837, "stat.craftItem.85"); + STATISTICS.put(16842841, "stat.craftItem.89"); + STATISTICS.put(16842843, "stat.craftItem.91"); + STATISTICS.put(16842848, "stat.craftItem.96"); + STATISTICS.put(16842850, "stat.craftItem.98"); + STATISTICS.put(16842853, "stat.craftItem.101"); + STATISTICS.put(16842854, "stat.craftItem.102"); + STATISTICS.put(16842855, "stat.craftItem.103"); + STATISTICS.put(16842859, "stat.craftItem.107"); + STATISTICS.put(16842860, "stat.craftItem.108"); + STATISTICS.put(16842861, "stat.craftItem.109"); + STATISTICS.put(16842864, "stat.craftItem.112"); + STATISTICS.put(16842865, "stat.craftItem.113"); + STATISTICS.put(16842866, "stat.craftItem.114"); + STATISTICS.put(16842868, "stat.craftItem.116"); + STATISTICS.put(16842875, "stat.craftItem.123"); + STATISTICS.put(16842878, "stat.craftItem.126"); + STATISTICS.put(16842880, "stat.craftItem.128"); + STATISTICS.put(16842882, "stat.craftItem.130"); + STATISTICS.put(16842883, "stat.craftItem.131"); + STATISTICS.put(16842885, "stat.craftItem.133"); + STATISTICS.put(16842886, "stat.craftItem.134"); + STATISTICS.put(16842887, "stat.craftItem.135"); + STATISTICS.put(16842888, "stat.craftItem.136"); + STATISTICS.put(16842890, "stat.craftItem.138"); + STATISTICS.put(16842891, "stat.craftItem.139"); + STATISTICS.put(16842895, "stat.craftItem.143"); + STATISTICS.put(16842897, "stat.craftItem.145"); + STATISTICS.put(16842898, "stat.craftItem.146"); + STATISTICS.put(16842899, "stat.craftItem.147"); + STATISTICS.put(16842900, "stat.craftItem.148"); + STATISTICS.put(16842903, "stat.craftItem.151"); + STATISTICS.put(16842904, "stat.craftItem.152"); + STATISTICS.put(16842906, "stat.craftItem.154"); + STATISTICS.put(16842907, "stat.craftItem.155"); + STATISTICS.put(16842908, "stat.craftItem.156"); + STATISTICS.put(16842909, "stat.craftItem.157"); + STATISTICS.put(16842910, "stat.craftItem.158"); + STATISTICS.put(16842911, "stat.craftItem.159"); + STATISTICS.put(16842922, "stat.craftItem.170"); + STATISTICS.put(16842923, "stat.craftItem.171"); + STATISTICS.put(16842924, "stat.craftItem.172"); + STATISTICS.put(16842925, "stat.craftItem.173"); + STATISTICS.put(16843008, "stat.craftItem.256"); + STATISTICS.put(16843009, "stat.craftItem.257"); + STATISTICS.put(16843010, "stat.craftItem.258"); + STATISTICS.put(16843011, "stat.craftItem.259"); + STATISTICS.put(16843013, "stat.craftItem.261"); + STATISTICS.put(16843014, "stat.craftItem.262"); + STATISTICS.put(16843015, "stat.craftItem.263"); + STATISTICS.put(16843016, "stat.craftItem.264"); + STATISTICS.put(16843017, "stat.craftItem.265"); + STATISTICS.put(16843018, "stat.craftItem.266"); + STATISTICS.put(16843019, "stat.craftItem.267"); + STATISTICS.put(16843020, "stat.craftItem.268"); + STATISTICS.put(16843021, "stat.craftItem.269"); + STATISTICS.put(16843022, "stat.craftItem.270"); + STATISTICS.put(16843023, "stat.craftItem.271"); + STATISTICS.put(16843024, "stat.craftItem.272"); + STATISTICS.put(16843025, "stat.craftItem.273"); + STATISTICS.put(16843026, "stat.craftItem.274"); + STATISTICS.put(16843027, "stat.craftItem.275"); + STATISTICS.put(16843028, "stat.craftItem.276"); + STATISTICS.put(16843029, "stat.craftItem.277"); + STATISTICS.put(16843030, "stat.craftItem.278"); + STATISTICS.put(16843031, "stat.craftItem.279"); + STATISTICS.put(16843032, "stat.craftItem.280"); + STATISTICS.put(16843033, "stat.craftItem.281"); + STATISTICS.put(16843034, "stat.craftItem.282"); + STATISTICS.put(16843035, "stat.craftItem.283"); + STATISTICS.put(16843036, "stat.craftItem.284"); + STATISTICS.put(16843037, "stat.craftItem.285"); + STATISTICS.put(16843038, "stat.craftItem.286"); + STATISTICS.put(16843042, "stat.craftItem.290"); + STATISTICS.put(16843043, "stat.craftItem.291"); + STATISTICS.put(16843044, "stat.craftItem.292"); + STATISTICS.put(16843045, "stat.craftItem.293"); + STATISTICS.put(16843046, "stat.craftItem.294"); + STATISTICS.put(16843048, "stat.craftItem.296"); + STATISTICS.put(16843049, "stat.craftItem.297"); + STATISTICS.put(16843050, "stat.craftItem.298"); + STATISTICS.put(16843051, "stat.craftItem.299"); + STATISTICS.put(16843052, "stat.craftItem.300"); + STATISTICS.put(16843053, "stat.craftItem.301"); + STATISTICS.put(16843054, "stat.craftItem.302"); + STATISTICS.put(16843055, "stat.craftItem.303"); + STATISTICS.put(16843056, "stat.craftItem.304"); + STATISTICS.put(16843057, "stat.craftItem.305"); + STATISTICS.put(16843058, "stat.craftItem.306"); + STATISTICS.put(16843059, "stat.craftItem.307"); + STATISTICS.put(16843060, "stat.craftItem.308"); + STATISTICS.put(16843061, "stat.craftItem.309"); + STATISTICS.put(16843062, "stat.craftItem.310"); + STATISTICS.put(16843063, "stat.craftItem.311"); + STATISTICS.put(16843064, "stat.craftItem.312"); + STATISTICS.put(16843065, "stat.craftItem.313"); + STATISTICS.put(16843066, "stat.craftItem.314"); + STATISTICS.put(16843067, "stat.craftItem.315"); + STATISTICS.put(16843068, "stat.craftItem.316"); + STATISTICS.put(16843069, "stat.craftItem.317"); + STATISTICS.put(16843072, "stat.craftItem.320"); + STATISTICS.put(16843073, "stat.craftItem.321"); + STATISTICS.put(16843074, "stat.craftItem.322"); + STATISTICS.put(16843075, "stat.craftItem.323"); + STATISTICS.put(16843076, "stat.craftItem.324"); + STATISTICS.put(16843077, "stat.craftItem.325"); + STATISTICS.put(16843080, "stat.craftItem.328"); + STATISTICS.put(16843082, "stat.craftItem.330"); + STATISTICS.put(16843083, "stat.craftItem.331"); + STATISTICS.put(16843085, "stat.craftItem.333"); + STATISTICS.put(16843088, "stat.craftItem.336"); + STATISTICS.put(16843091, "stat.craftItem.339"); + STATISTICS.put(16843092, "stat.craftItem.340"); + STATISTICS.put(16843094, "stat.craftItem.342"); + STATISTICS.put(16843095, "stat.craftItem.343"); + STATISTICS.put(16843097, "stat.craftItem.345"); + STATISTICS.put(16843098, "stat.craftItem.346"); + STATISTICS.put(16843099, "stat.craftItem.347"); + STATISTICS.put(16843102, "stat.craftItem.350"); + STATISTICS.put(16843103, "stat.craftItem.351"); + STATISTICS.put(16843105, "stat.craftItem.353"); + STATISTICS.put(16843106, "stat.craftItem.354"); + STATISTICS.put(16843107, "stat.craftItem.355"); + STATISTICS.put(16843108, "stat.craftItem.356"); + STATISTICS.put(16843109, "stat.craftItem.357"); + STATISTICS.put(16843111, "stat.craftItem.359"); + STATISTICS.put(16843113, "stat.craftItem.361"); + STATISTICS.put(16843114, "stat.craftItem.362"); + STATISTICS.put(16843116, "stat.craftItem.364"); + STATISTICS.put(16843118, "stat.craftItem.366"); + STATISTICS.put(16843123, "stat.craftItem.371"); + STATISTICS.put(16843126, "stat.craftItem.374"); + STATISTICS.put(16843128, "stat.craftItem.376"); + STATISTICS.put(16843129, "stat.craftItem.377"); + STATISTICS.put(16843130, "stat.craftItem.378"); + STATISTICS.put(16843131, "stat.craftItem.379"); + STATISTICS.put(16843132, "stat.craftItem.380"); + STATISTICS.put(16843133, "stat.craftItem.381"); + STATISTICS.put(16843134, "stat.craftItem.382"); + STATISTICS.put(16843137, "stat.craftItem.385"); + STATISTICS.put(16843138, "stat.craftItem.386"); + STATISTICS.put(16843140, "stat.craftItem.388"); + STATISTICS.put(16843141, "stat.craftItem.389"); + STATISTICS.put(16843142, "stat.craftItem.390"); + STATISTICS.put(16843145, "stat.craftItem.393"); + STATISTICS.put(16843147, "stat.craftItem.395"); + STATISTICS.put(16843148, "stat.craftItem.396"); + STATISTICS.put(16843150, "stat.craftItem.398"); + STATISTICS.put(16843152, "stat.craftItem.400"); + STATISTICS.put(16843156, "stat.craftItem.404"); + STATISTICS.put(16843157, "stat.craftItem.405"); + STATISTICS.put(16843158, "stat.craftItem.406"); + STATISTICS.put(16843159, "stat.craftItem.407"); + STATISTICS.put(16843160, "stat.craftItem.408"); + STATISTICS.put(16843172, "stat.craftItem.420"); + STATISTICS.put(16908289, "stat.useItem.1"); + STATISTICS.put(16908290, "stat.useItem.2"); + STATISTICS.put(16908291, "stat.useItem.3"); + STATISTICS.put(16908292, "stat.useItem.4"); + STATISTICS.put(16908293, "stat.useItem.5"); + STATISTICS.put(16908294, "stat.useItem.6"); + STATISTICS.put(16908295, "stat.useItem.7"); + STATISTICS.put(16908296, "stat.useItem.8"); + STATISTICS.put(16908297, "stat.useItem.9"); + STATISTICS.put(16908298, "stat.useItem.10"); + STATISTICS.put(16908299, "stat.useItem.11"); + STATISTICS.put(16908300, "stat.useItem.12"); + STATISTICS.put(16908301, "stat.useItem.13"); + STATISTICS.put(16908302, "stat.useItem.14"); + STATISTICS.put(16908303, "stat.useItem.15"); + STATISTICS.put(16908304, "stat.useItem.16"); + STATISTICS.put(16908305, "stat.useItem.17"); + STATISTICS.put(16908306, "stat.useItem.18"); + STATISTICS.put(16908307, "stat.useItem.19"); + STATISTICS.put(16908308, "stat.useItem.20"); + STATISTICS.put(16908309, "stat.useItem.21"); + STATISTICS.put(16908310, "stat.useItem.22"); + STATISTICS.put(16908311, "stat.useItem.23"); + STATISTICS.put(16908312, "stat.useItem.24"); + STATISTICS.put(16908313, "stat.useItem.25"); + STATISTICS.put(16908314, "stat.useItem.26"); + STATISTICS.put(16908315, "stat.useItem.27"); + STATISTICS.put(16908316, "stat.useItem.28"); + STATISTICS.put(16908317, "stat.useItem.29"); + STATISTICS.put(16908318, "stat.useItem.30"); + STATISTICS.put(16908319, "stat.useItem.31"); + STATISTICS.put(16908320, "stat.useItem.32"); + STATISTICS.put(16908321, "stat.useItem.33"); + STATISTICS.put(16908322, "stat.useItem.34"); + STATISTICS.put(16908323, "stat.useItem.35"); + STATISTICS.put(16908324, "stat.useItem.36"); + STATISTICS.put(16908325, "stat.useItem.37"); + STATISTICS.put(16908326, "stat.useItem.38"); + STATISTICS.put(16908327, "stat.useItem.39"); + STATISTICS.put(16908328, "stat.useItem.40"); + STATISTICS.put(16908329, "stat.useItem.41"); + STATISTICS.put(16908330, "stat.useItem.42"); + STATISTICS.put(16908331, "stat.useItem.43"); + STATISTICS.put(16908332, "stat.useItem.44"); + STATISTICS.put(16908333, "stat.useItem.45"); + STATISTICS.put(16908334, "stat.useItem.46"); + STATISTICS.put(16908335, "stat.useItem.47"); + STATISTICS.put(16908336, "stat.useItem.48"); + STATISTICS.put(16908337, "stat.useItem.49"); + STATISTICS.put(16908338, "stat.useItem.50"); + STATISTICS.put(16908339, "stat.useItem.51"); + STATISTICS.put(16908340, "stat.useItem.52"); + STATISTICS.put(16908341, "stat.useItem.53"); + STATISTICS.put(16908342, "stat.useItem.54"); + STATISTICS.put(16908343, "stat.useItem.55"); + STATISTICS.put(16908344, "stat.useItem.56"); + STATISTICS.put(16908345, "stat.useItem.57"); + STATISTICS.put(16908346, "stat.useItem.58"); + STATISTICS.put(16908347, "stat.useItem.59"); + STATISTICS.put(16908348, "stat.useItem.60"); + STATISTICS.put(16908349, "stat.useItem.61"); + STATISTICS.put(16908350, "stat.useItem.62"); + STATISTICS.put(16908351, "stat.useItem.63"); + STATISTICS.put(16908352, "stat.useItem.64"); + STATISTICS.put(16908353, "stat.useItem.65"); + STATISTICS.put(16908354, "stat.useItem.66"); + STATISTICS.put(16908355, "stat.useItem.67"); + STATISTICS.put(16908356, "stat.useItem.68"); + STATISTICS.put(16908357, "stat.useItem.69"); + STATISTICS.put(16908358, "stat.useItem.70"); + STATISTICS.put(16908359, "stat.useItem.71"); + STATISTICS.put(16908360, "stat.useItem.72"); + STATISTICS.put(16908361, "stat.useItem.73"); + STATISTICS.put(16908362, "stat.useItem.74"); + STATISTICS.put(16908363, "stat.useItem.75"); + STATISTICS.put(16908364, "stat.useItem.76"); + STATISTICS.put(16908365, "stat.useItem.77"); + STATISTICS.put(16908366, "stat.useItem.78"); + STATISTICS.put(16908367, "stat.useItem.79"); + STATISTICS.put(16908368, "stat.useItem.80"); + STATISTICS.put(16908369, "stat.useItem.81"); + STATISTICS.put(16908370, "stat.useItem.82"); + STATISTICS.put(16908371, "stat.useItem.83"); + STATISTICS.put(16908372, "stat.useItem.84"); + STATISTICS.put(16908373, "stat.useItem.85"); + STATISTICS.put(16908374, "stat.useItem.86"); + STATISTICS.put(16908375, "stat.useItem.87"); + STATISTICS.put(16908376, "stat.useItem.88"); + STATISTICS.put(16908377, "stat.useItem.89"); + STATISTICS.put(16908378, "stat.useItem.90"); + STATISTICS.put(16908379, "stat.useItem.91"); + STATISTICS.put(16908380, "stat.useItem.92"); + STATISTICS.put(16908381, "stat.useItem.93"); + STATISTICS.put(16908382, "stat.useItem.94"); + STATISTICS.put(16908383, "stat.useItem.95"); + STATISTICS.put(16908384, "stat.useItem.96"); + STATISTICS.put(16908385, "stat.useItem.97"); + STATISTICS.put(16908386, "stat.useItem.98"); + STATISTICS.put(16908387, "stat.useItem.99"); + STATISTICS.put(16908388, "stat.useItem.100"); + STATISTICS.put(16908389, "stat.useItem.101"); + STATISTICS.put(16908390, "stat.useItem.102"); + STATISTICS.put(16908391, "stat.useItem.103"); + STATISTICS.put(16908392, "stat.useItem.104"); + STATISTICS.put(16908393, "stat.useItem.105"); + STATISTICS.put(16908394, "stat.useItem.106"); + STATISTICS.put(16908395, "stat.useItem.107"); + STATISTICS.put(16908396, "stat.useItem.108"); + STATISTICS.put(16908397, "stat.useItem.109"); + STATISTICS.put(16908398, "stat.useItem.110"); + STATISTICS.put(16908399, "stat.useItem.111"); + STATISTICS.put(16908400, "stat.useItem.112"); + STATISTICS.put(16908401, "stat.useItem.113"); + STATISTICS.put(16908402, "stat.useItem.114"); + STATISTICS.put(16908403, "stat.useItem.115"); + STATISTICS.put(16908404, "stat.useItem.116"); + STATISTICS.put(16908405, "stat.useItem.117"); + STATISTICS.put(16908406, "stat.useItem.118"); + STATISTICS.put(16908407, "stat.useItem.119"); + STATISTICS.put(16908408, "stat.useItem.120"); + STATISTICS.put(16908409, "stat.useItem.121"); + STATISTICS.put(16908410, "stat.useItem.122"); + STATISTICS.put(16908411, "stat.useItem.123"); + STATISTICS.put(16908412, "stat.useItem.124"); + STATISTICS.put(16908413, "stat.useItem.125"); + STATISTICS.put(16908414, "stat.useItem.126"); + STATISTICS.put(16908415, "stat.useItem.127"); + STATISTICS.put(16908416, "stat.useItem.128"); + STATISTICS.put(16908417, "stat.useItem.129"); + STATISTICS.put(16908418, "stat.useItem.130"); + STATISTICS.put(16908419, "stat.useItem.131"); + STATISTICS.put(16908420, "stat.useItem.132"); + STATISTICS.put(16908421, "stat.useItem.133"); + STATISTICS.put(16908422, "stat.useItem.134"); + STATISTICS.put(16908423, "stat.useItem.135"); + STATISTICS.put(16908424, "stat.useItem.136"); + STATISTICS.put(16908425, "stat.useItem.137"); + STATISTICS.put(16908426, "stat.useItem.138"); + STATISTICS.put(16908427, "stat.useItem.139"); + STATISTICS.put(16908428, "stat.useItem.140"); + STATISTICS.put(16908429, "stat.useItem.141"); + STATISTICS.put(16908430, "stat.useItem.142"); + STATISTICS.put(16908431, "stat.useItem.143"); + STATISTICS.put(16908432, "stat.useItem.144"); + STATISTICS.put(16908433, "stat.useItem.145"); + STATISTICS.put(16908434, "stat.useItem.146"); + STATISTICS.put(16908435, "stat.useItem.147"); + STATISTICS.put(16908436, "stat.useItem.148"); + STATISTICS.put(16908437, "stat.useItem.149"); + STATISTICS.put(16908438, "stat.useItem.150"); + STATISTICS.put(16908439, "stat.useItem.151"); + STATISTICS.put(16908440, "stat.useItem.152"); + STATISTICS.put(16908441, "stat.useItem.153"); + STATISTICS.put(16908442, "stat.useItem.154"); + STATISTICS.put(16908443, "stat.useItem.155"); + STATISTICS.put(16908444, "stat.useItem.156"); + STATISTICS.put(16908445, "stat.useItem.157"); + STATISTICS.put(16908446, "stat.useItem.158"); + STATISTICS.put(16908447, "stat.useItem.159"); + STATISTICS.put(16908458, "stat.useItem.170"); + STATISTICS.put(16908459, "stat.useItem.171"); + STATISTICS.put(16908460, "stat.useItem.172"); + STATISTICS.put(16908461, "stat.useItem.173"); + STATISTICS.put(16908544, "stat.useItem.256"); + STATISTICS.put(16908545, "stat.useItem.257"); + STATISTICS.put(16908546, "stat.useItem.258"); + STATISTICS.put(16908547, "stat.useItem.259"); + STATISTICS.put(16908548, "stat.useItem.260"); + STATISTICS.put(16908549, "stat.useItem.261"); + STATISTICS.put(16908550, "stat.useItem.262"); + STATISTICS.put(16908551, "stat.useItem.263"); + STATISTICS.put(16908552, "stat.useItem.264"); + STATISTICS.put(16908553, "stat.useItem.265"); + STATISTICS.put(16908554, "stat.useItem.266"); + STATISTICS.put(16908555, "stat.useItem.267"); + STATISTICS.put(16908556, "stat.useItem.268"); + STATISTICS.put(16908557, "stat.useItem.269"); + STATISTICS.put(16908558, "stat.useItem.270"); + STATISTICS.put(16908559, "stat.useItem.271"); + STATISTICS.put(16908560, "stat.useItem.272"); + STATISTICS.put(16908561, "stat.useItem.273"); + STATISTICS.put(16908562, "stat.useItem.274"); + STATISTICS.put(16908563, "stat.useItem.275"); + STATISTICS.put(16908564, "stat.useItem.276"); + STATISTICS.put(16908565, "stat.useItem.277"); + STATISTICS.put(16908566, "stat.useItem.278"); + STATISTICS.put(16908567, "stat.useItem.279"); + STATISTICS.put(16908568, "stat.useItem.280"); + STATISTICS.put(16908569, "stat.useItem.281"); + STATISTICS.put(16908570, "stat.useItem.282"); + STATISTICS.put(16908571, "stat.useItem.283"); + STATISTICS.put(16908572, "stat.useItem.284"); + STATISTICS.put(16908573, "stat.useItem.285"); + STATISTICS.put(16908574, "stat.useItem.286"); + STATISTICS.put(16908575, "stat.useItem.287"); + STATISTICS.put(16908576, "stat.useItem.288"); + STATISTICS.put(16908577, "stat.useItem.289"); + STATISTICS.put(16908578, "stat.useItem.290"); + STATISTICS.put(16908579, "stat.useItem.291"); + STATISTICS.put(16908580, "stat.useItem.292"); + STATISTICS.put(16908581, "stat.useItem.293"); + STATISTICS.put(16908582, "stat.useItem.294"); + STATISTICS.put(16908583, "stat.useItem.295"); + STATISTICS.put(16908584, "stat.useItem.296"); + STATISTICS.put(16908585, "stat.useItem.297"); + STATISTICS.put(16908586, "stat.useItem.298"); + STATISTICS.put(16908587, "stat.useItem.299"); + STATISTICS.put(16908588, "stat.useItem.300"); + STATISTICS.put(16908589, "stat.useItem.301"); + STATISTICS.put(16908590, "stat.useItem.302"); + STATISTICS.put(16908591, "stat.useItem.303"); + STATISTICS.put(16908592, "stat.useItem.304"); + STATISTICS.put(16908593, "stat.useItem.305"); + STATISTICS.put(16908594, "stat.useItem.306"); + STATISTICS.put(16908595, "stat.useItem.307"); + STATISTICS.put(16908596, "stat.useItem.308"); + STATISTICS.put(16908597, "stat.useItem.309"); + STATISTICS.put(16908598, "stat.useItem.310"); + STATISTICS.put(16908599, "stat.useItem.311"); + STATISTICS.put(16908600, "stat.useItem.312"); + STATISTICS.put(16908601, "stat.useItem.313"); + STATISTICS.put(16908602, "stat.useItem.314"); + STATISTICS.put(16908603, "stat.useItem.315"); + STATISTICS.put(16908604, "stat.useItem.316"); + STATISTICS.put(16908605, "stat.useItem.317"); + STATISTICS.put(16908606, "stat.useItem.318"); + STATISTICS.put(16908607, "stat.useItem.319"); + STATISTICS.put(16908608, "stat.useItem.320"); + STATISTICS.put(16908609, "stat.useItem.321"); + STATISTICS.put(16908610, "stat.useItem.322"); + STATISTICS.put(16908611, "stat.useItem.323"); + STATISTICS.put(16908612, "stat.useItem.324"); + STATISTICS.put(16908613, "stat.useItem.325"); + STATISTICS.put(16908614, "stat.useItem.326"); + STATISTICS.put(16908615, "stat.useItem.327"); + STATISTICS.put(16908616, "stat.useItem.328"); + STATISTICS.put(16908617, "stat.useItem.329"); + STATISTICS.put(16908618, "stat.useItem.330"); + STATISTICS.put(16908619, "stat.useItem.331"); + STATISTICS.put(16908620, "stat.useItem.332"); + STATISTICS.put(16908621, "stat.useItem.333"); + STATISTICS.put(16908622, "stat.useItem.334"); + STATISTICS.put(16908623, "stat.useItem.335"); + STATISTICS.put(16908624, "stat.useItem.336"); + STATISTICS.put(16908625, "stat.useItem.337"); + STATISTICS.put(16908626, "stat.useItem.338"); + STATISTICS.put(16908627, "stat.useItem.339"); + STATISTICS.put(16908628, "stat.useItem.340"); + STATISTICS.put(16908629, "stat.useItem.341"); + STATISTICS.put(16908630, "stat.useItem.342"); + STATISTICS.put(16908631, "stat.useItem.343"); + STATISTICS.put(16908632, "stat.useItem.344"); + STATISTICS.put(16908633, "stat.useItem.345"); + STATISTICS.put(16908634, "stat.useItem.346"); + STATISTICS.put(16908635, "stat.useItem.347"); + STATISTICS.put(16908636, "stat.useItem.348"); + STATISTICS.put(16908637, "stat.useItem.349"); + STATISTICS.put(16908638, "stat.useItem.350"); + STATISTICS.put(16908639, "stat.useItem.351"); + STATISTICS.put(16908640, "stat.useItem.352"); + STATISTICS.put(16908641, "stat.useItem.353"); + STATISTICS.put(16908642, "stat.useItem.354"); + STATISTICS.put(16908643, "stat.useItem.355"); + STATISTICS.put(16908644, "stat.useItem.356"); + STATISTICS.put(16908645, "stat.useItem.357"); + STATISTICS.put(16908646, "stat.useItem.358"); + STATISTICS.put(16908647, "stat.useItem.359"); + STATISTICS.put(16908648, "stat.useItem.360"); + STATISTICS.put(16908649, "stat.useItem.361"); + STATISTICS.put(16908650, "stat.useItem.362"); + STATISTICS.put(16908651, "stat.useItem.363"); + STATISTICS.put(16908652, "stat.useItem.364"); + STATISTICS.put(16908653, "stat.useItem.365"); + STATISTICS.put(16908654, "stat.useItem.366"); + STATISTICS.put(16908655, "stat.useItem.367"); + STATISTICS.put(16908656, "stat.useItem.368"); + STATISTICS.put(16908657, "stat.useItem.369"); + STATISTICS.put(16908658, "stat.useItem.370"); + STATISTICS.put(16908659, "stat.useItem.371"); + STATISTICS.put(16908660, "stat.useItem.372"); + STATISTICS.put(16908661, "stat.useItem.373"); + STATISTICS.put(16908662, "stat.useItem.374"); + STATISTICS.put(16908663, "stat.useItem.375"); + STATISTICS.put(16908664, "stat.useItem.376"); + STATISTICS.put(16908665, "stat.useItem.377"); + STATISTICS.put(16908666, "stat.useItem.378"); + STATISTICS.put(16908667, "stat.useItem.379"); + STATISTICS.put(16908668, "stat.useItem.380"); + STATISTICS.put(16908669, "stat.useItem.381"); + STATISTICS.put(16908670, "stat.useItem.382"); + STATISTICS.put(16908671, "stat.useItem.383"); + STATISTICS.put(16908672, "stat.useItem.384"); + STATISTICS.put(16908673, "stat.useItem.385"); + STATISTICS.put(16908674, "stat.useItem.386"); + STATISTICS.put(16908675, "stat.useItem.387"); + STATISTICS.put(16908676, "stat.useItem.388"); + STATISTICS.put(16908677, "stat.useItem.389"); + STATISTICS.put(16908678, "stat.useItem.390"); + STATISTICS.put(16908679, "stat.useItem.391"); + STATISTICS.put(16908680, "stat.useItem.392"); + STATISTICS.put(16908681, "stat.useItem.393"); + STATISTICS.put(16908682, "stat.useItem.394"); + STATISTICS.put(16908683, "stat.useItem.395"); + STATISTICS.put(16908684, "stat.useItem.396"); + STATISTICS.put(16908685, "stat.useItem.397"); + STATISTICS.put(16908686, "stat.useItem.398"); + STATISTICS.put(16908687, "stat.useItem.399"); + STATISTICS.put(16908688, "stat.useItem.400"); + STATISTICS.put(16908689, "stat.useItem.401"); + STATISTICS.put(16908690, "stat.useItem.402"); + STATISTICS.put(16908691, "stat.useItem.403"); + STATISTICS.put(16908692, "stat.useItem.404"); + STATISTICS.put(16908693, "stat.useItem.405"); + STATISTICS.put(16908694, "stat.useItem.406"); + STATISTICS.put(16908695, "stat.useItem.407"); + STATISTICS.put(16908696, "stat.useItem.408"); + STATISTICS.put(16908705, "stat.useItem.417"); + STATISTICS.put(16908706, "stat.useItem.418"); + STATISTICS.put(16908707, "stat.useItem.419"); + STATISTICS.put(16908708, "stat.useItem.420"); + STATISTICS.put(16908709, "stat.useItem.421"); + STATISTICS.put(16910544, "stat.useItem.2256"); + STATISTICS.put(16910545, "stat.useItem.2257"); + STATISTICS.put(16910546, "stat.useItem.2258"); + STATISTICS.put(16910547, "stat.useItem.2259"); + STATISTICS.put(16910548, "stat.useItem.2260"); + STATISTICS.put(16910549, "stat.useItem.2261"); + STATISTICS.put(16910550, "stat.useItem.2262"); + STATISTICS.put(16910551, "stat.useItem.2263"); + STATISTICS.put(16910552, "stat.useItem.2264"); + STATISTICS.put(16910553, "stat.useItem.2265"); + STATISTICS.put(16910554, "stat.useItem.2266"); + STATISTICS.put(16910555, "stat.useItem.2267"); + STATISTICS.put(16974080, "stat.breakItem.256"); + STATISTICS.put(16974081, "stat.breakItem.257"); + STATISTICS.put(16974082, "stat.breakItem.258"); + STATISTICS.put(16974083, "stat.breakItem.259"); + STATISTICS.put(16974085, "stat.breakItem.261"); + STATISTICS.put(16974091, "stat.breakItem.267"); + STATISTICS.put(16974092, "stat.breakItem.268"); + STATISTICS.put(16974093, "stat.breakItem.269"); + STATISTICS.put(16974094, "stat.breakItem.270"); + STATISTICS.put(16974095, "stat.breakItem.271"); + STATISTICS.put(16974096, "stat.breakItem.272"); + STATISTICS.put(16974097, "stat.breakItem.273"); + STATISTICS.put(16974098, "stat.breakItem.274"); + STATISTICS.put(16974099, "stat.breakItem.275"); + STATISTICS.put(16974100, "stat.breakItem.276"); + STATISTICS.put(16974101, "stat.breakItem.277"); + STATISTICS.put(16974102, "stat.breakItem.278"); + STATISTICS.put(16974103, "stat.breakItem.279"); + STATISTICS.put(16974107, "stat.breakItem.283"); + STATISTICS.put(16974108, "stat.breakItem.284"); + STATISTICS.put(16974109, "stat.breakItem.285"); + STATISTICS.put(16974110, "stat.breakItem.286"); + STATISTICS.put(16974114, "stat.breakItem.290"); + STATISTICS.put(16974115, "stat.breakItem.291"); + STATISTICS.put(16974116, "stat.breakItem.292"); + STATISTICS.put(16974117, "stat.breakItem.293"); + STATISTICS.put(16974118, "stat.breakItem.294"); + STATISTICS.put(16974122, "stat.breakItem.298"); + STATISTICS.put(16974123, "stat.breakItem.299"); + STATISTICS.put(16974124, "stat.breakItem.300"); + STATISTICS.put(16974125, "stat.breakItem.301"); + STATISTICS.put(16974126, "stat.breakItem.302"); + STATISTICS.put(16974127, "stat.breakItem.303"); + STATISTICS.put(16974128, "stat.breakItem.304"); + STATISTICS.put(16974129, "stat.breakItem.305"); + STATISTICS.put(16974130, "stat.breakItem.306"); + STATISTICS.put(16974131, "stat.breakItem.307"); + STATISTICS.put(16974132, "stat.breakItem.308"); + STATISTICS.put(16974133, "stat.breakItem.309"); + STATISTICS.put(16974134, "stat.breakItem.310"); + STATISTICS.put(16974135, "stat.breakItem.311"); + STATISTICS.put(16974136, "stat.breakItem.312"); + STATISTICS.put(16974137, "stat.breakItem.313"); + STATISTICS.put(16974138, "stat.breakItem.314"); + STATISTICS.put(16974139, "stat.breakItem.315"); + STATISTICS.put(16974140, "stat.breakItem.316"); + STATISTICS.put(16974141, "stat.breakItem.317"); + STATISTICS.put(16974170, "stat.breakItem.346"); + STATISTICS.put(16974183, "stat.breakItem.359"); + STATISTICS.put(16974222, "stat.breakItem.398"); + } + + public static String map(final int stat) { + return STATISTICS.get(stat); + } + +} \ No newline at end of file diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/rewriter/TranslationRewriter.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/rewriter/TranslationRewriter.java new file mode 100644 index 0000000..9bf3942 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/rewriter/TranslationRewriter.java @@ -0,0 +1,66 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.rewriter; + +import com.viaversion.viaversion.libs.fastutil.objects.Object2ObjectMap; +import com.viaversion.viaversion.libs.fastutil.objects.Object2ObjectOpenHashMap; +import com.viaversion.viaversion.libs.gson.JsonObject; +import com.viaversion.viaversion.rewriter.ComponentRewriter; + +public class TranslationRewriter { + + private static final Object2ObjectMap TRANSLATIONS = new Object2ObjectOpenHashMap<>(37, 0.99F); + + static { + TRANSLATIONS.put("menu.playdemo", "Play Demo World"); + TRANSLATIONS.put("options.ao.off", "Off"); + TRANSLATIONS.put("options.framerateLimit", "Performance"); + TRANSLATIONS.put("options.resourcepack", "Resource Packs"); + TRANSLATIONS.put("performance.max", "Max FPS"); + TRANSLATIONS.put("performance.balanced", "Balanced"); + TRANSLATIONS.put("performance.powersaver", "Power saver"); + TRANSLATIONS.put("key.forward", "Forward"); + TRANSLATIONS.put("key.left", "Left"); + TRANSLATIONS.put("key.back", "Back"); + TRANSLATIONS.put("key.right", "Right"); + TRANSLATIONS.put("key.drop", "Drop"); + TRANSLATIONS.put("key.chat", "Chat"); + TRANSLATIONS.put("key.fog", "Toggle Fog"); + TRANSLATIONS.put("key.attack", "Attack"); + TRANSLATIONS.put("key.use", "Use Item"); + TRANSLATIONS.put("key.command", "Command"); + TRANSLATIONS.put("resourcePack.title", "Select Resource Pack"); + TRANSLATIONS.put("tile.dirt.name", "Dirt"); + TRANSLATIONS.put("tile.sand.name", "Sand"); + TRANSLATIONS.put("tile.flower.name", "Flower"); + TRANSLATIONS.put("tile.rose.name", "Rose"); + TRANSLATIONS.put("item.fishRaw.name", "Raw Fish"); + TRANSLATIONS.put("item.fishCooked.name", "Cooked Fish"); + TRANSLATIONS.put("commands.give.usage", "/give [amount] [data]"); + TRANSLATIONS.put("commands.give.success", "Given %s (ID %s) * %s to %s"); + TRANSLATIONS.put("commands.scoreboard.objectives.add.wrongType", "Invalid objective criteria type. Valid types are: %s"); + TRANSLATIONS.put("commands.scoreboard.objectives.list.count", "Showing %s objective(s) on scoreboard"); + TRANSLATIONS.put("commands.scoreboard.players.list.count", "Showing %s tracked players on the scoreboard"); + TRANSLATIONS.put("commands.scoreboard.players.list.player.count", "Showing %s tracked objective(s) for %s"); + TRANSLATIONS.put("commands.scoreboard.teams.list.count", "Showing %s teams on the scoreboard"); + TRANSLATIONS.put("commands.scoreboard.teams.list.player.count", "Showing %s player(s) in team %s"); + TRANSLATIONS.put("commands.scoreboard.teams.empty.usage", "/scoreboard teams clear "); + TRANSLATIONS.put("commands.scoreboard.teams.option.usage", "/scoreboard teams option "); + TRANSLATIONS.put("commands.weather.usage", "/weather [duration in seconds]"); + TRANSLATIONS.put("mco.configure.world.subscription.extend", "Extend"); + TRANSLATIONS.put("mco.configure.world.restore.question.line1", "Your realm will be restored to a previous version"); + } + + private static final ComponentRewriter REWRITER = new ComponentRewriter() { + @Override + protected void handleTranslate(JsonObject object, String translate) { + final String text = TRANSLATIONS.get(translate); + if (text != null) { + object.addProperty("translate", text); + } + } + }; + + public static String toClient(final String text) { + return REWRITER.processText(text).toString(); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/storage/ChunkTracker.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/storage/ChunkTracker.java new file mode 100644 index 0000000..3c492bd --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/storage/ChunkTracker.java @@ -0,0 +1,297 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.storage; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.minecraft.chunks.DataPalette; +import net.raphimc.vialegacy.api.*; +import net.raphimc.vialegacy.util.VersionEnum; + +import java.util.HashMap; +import java.util.Map; + +public class ChunkTracker extends AbstractChunkTracker { + + private static final Map SOLID_BLOCKS = new HashMap<>(); + + static { + SOLID_BLOCKS.put(0, false); + SOLID_BLOCKS.put(1, true); + SOLID_BLOCKS.put(2, true); + SOLID_BLOCKS.put(3, true); + SOLID_BLOCKS.put(4, true); + SOLID_BLOCKS.put(5, true); + SOLID_BLOCKS.put(6, false); + SOLID_BLOCKS.put(7, true); + SOLID_BLOCKS.put(8, false); + SOLID_BLOCKS.put(9, false); + SOLID_BLOCKS.put(10, false); + SOLID_BLOCKS.put(11, false); + SOLID_BLOCKS.put(12, true); + SOLID_BLOCKS.put(13, true); + SOLID_BLOCKS.put(14, true); + SOLID_BLOCKS.put(15, true); + SOLID_BLOCKS.put(16, true); + SOLID_BLOCKS.put(17, true); + SOLID_BLOCKS.put(18, true); + SOLID_BLOCKS.put(19, true); + SOLID_BLOCKS.put(20, false); + SOLID_BLOCKS.put(21, true); + SOLID_BLOCKS.put(22, true); + SOLID_BLOCKS.put(23, true); + SOLID_BLOCKS.put(24, true); + SOLID_BLOCKS.put(25, true); + SOLID_BLOCKS.put(26, false); + SOLID_BLOCKS.put(27, false); + SOLID_BLOCKS.put(28, false); + SOLID_BLOCKS.put(29, false); + SOLID_BLOCKS.put(30, false); + SOLID_BLOCKS.put(31, false); + SOLID_BLOCKS.put(32, false); + SOLID_BLOCKS.put(33, false); + SOLID_BLOCKS.put(34, false); + SOLID_BLOCKS.put(35, true); + SOLID_BLOCKS.put(36, false); + SOLID_BLOCKS.put(37, false); + SOLID_BLOCKS.put(38, false); + SOLID_BLOCKS.put(39, false); + SOLID_BLOCKS.put(40, false); + SOLID_BLOCKS.put(41, true); + SOLID_BLOCKS.put(42, true); + SOLID_BLOCKS.put(43, true); + SOLID_BLOCKS.put(44, false); + SOLID_BLOCKS.put(45, true); + SOLID_BLOCKS.put(46, true); + SOLID_BLOCKS.put(47, true); + SOLID_BLOCKS.put(48, true); + SOLID_BLOCKS.put(49, true); + SOLID_BLOCKS.put(50, false); + SOLID_BLOCKS.put(51, false); + SOLID_BLOCKS.put(52, false); + SOLID_BLOCKS.put(53, false); + SOLID_BLOCKS.put(54, false); + SOLID_BLOCKS.put(55, false); + SOLID_BLOCKS.put(56, true); + SOLID_BLOCKS.put(57, true); + SOLID_BLOCKS.put(58, true); + SOLID_BLOCKS.put(59, false); + SOLID_BLOCKS.put(60, false); + SOLID_BLOCKS.put(61, true); + SOLID_BLOCKS.put(62, true); + SOLID_BLOCKS.put(63, false); + SOLID_BLOCKS.put(64, false); + SOLID_BLOCKS.put(65, false); + SOLID_BLOCKS.put(66, false); + SOLID_BLOCKS.put(67, false); + SOLID_BLOCKS.put(68, false); + SOLID_BLOCKS.put(69, false); + SOLID_BLOCKS.put(70, false); + SOLID_BLOCKS.put(71, false); + SOLID_BLOCKS.put(72, false); + SOLID_BLOCKS.put(73, true); + SOLID_BLOCKS.put(74, true); + SOLID_BLOCKS.put(75, false); + SOLID_BLOCKS.put(76, false); + SOLID_BLOCKS.put(77, false); + SOLID_BLOCKS.put(78, false); + SOLID_BLOCKS.put(79, false); + SOLID_BLOCKS.put(80, true); + SOLID_BLOCKS.put(81, false); + SOLID_BLOCKS.put(82, true); + SOLID_BLOCKS.put(83, false); + SOLID_BLOCKS.put(84, true); + SOLID_BLOCKS.put(85, false); + SOLID_BLOCKS.put(86, true); + SOLID_BLOCKS.put(87, true); + SOLID_BLOCKS.put(88, true); + SOLID_BLOCKS.put(89, true); + SOLID_BLOCKS.put(90, false); + SOLID_BLOCKS.put(91, true); + SOLID_BLOCKS.put(92, false); + SOLID_BLOCKS.put(93, false); + SOLID_BLOCKS.put(94, false); + SOLID_BLOCKS.put(95, false); + SOLID_BLOCKS.put(96, false); + SOLID_BLOCKS.put(97, true); + SOLID_BLOCKS.put(98, true); + SOLID_BLOCKS.put(99, true); + SOLID_BLOCKS.put(100, true); + SOLID_BLOCKS.put(101, false); + SOLID_BLOCKS.put(102, false); + SOLID_BLOCKS.put(103, true); + SOLID_BLOCKS.put(104, false); + SOLID_BLOCKS.put(105, false); + SOLID_BLOCKS.put(106, false); + SOLID_BLOCKS.put(107, false); + SOLID_BLOCKS.put(108, false); + SOLID_BLOCKS.put(109, false); + SOLID_BLOCKS.put(110, true); + SOLID_BLOCKS.put(111, false); + SOLID_BLOCKS.put(112, true); + SOLID_BLOCKS.put(113, false); + SOLID_BLOCKS.put(114, false); + SOLID_BLOCKS.put(115, false); + SOLID_BLOCKS.put(116, false); + SOLID_BLOCKS.put(117, false); + SOLID_BLOCKS.put(118, false); + SOLID_BLOCKS.put(119, false); + SOLID_BLOCKS.put(120, false); + SOLID_BLOCKS.put(121, true); + SOLID_BLOCKS.put(122, false); + SOLID_BLOCKS.put(123, true); + SOLID_BLOCKS.put(124, true); + SOLID_BLOCKS.put(125, true); + SOLID_BLOCKS.put(126, false); + SOLID_BLOCKS.put(127, false); + SOLID_BLOCKS.put(128, false); + SOLID_BLOCKS.put(129, true); + SOLID_BLOCKS.put(130, false); + SOLID_BLOCKS.put(131, false); + SOLID_BLOCKS.put(132, false); + SOLID_BLOCKS.put(133, true); + SOLID_BLOCKS.put(134, false); + SOLID_BLOCKS.put(135, false); + SOLID_BLOCKS.put(136, false); + SOLID_BLOCKS.put(137, true); + SOLID_BLOCKS.put(138, false); + SOLID_BLOCKS.put(139, false); + SOLID_BLOCKS.put(140, false); + SOLID_BLOCKS.put(141, false); + SOLID_BLOCKS.put(142, false); + SOLID_BLOCKS.put(143, false); + SOLID_BLOCKS.put(144, false); + SOLID_BLOCKS.put(145, false); + SOLID_BLOCKS.put(146, false); + SOLID_BLOCKS.put(147, false); + SOLID_BLOCKS.put(148, false); + SOLID_BLOCKS.put(149, false); + SOLID_BLOCKS.put(150, false); + SOLID_BLOCKS.put(151, false); + SOLID_BLOCKS.put(152, true); + SOLID_BLOCKS.put(153, true); + SOLID_BLOCKS.put(154, false); + SOLID_BLOCKS.put(155, true); + SOLID_BLOCKS.put(156, false); + SOLID_BLOCKS.put(157, false); + SOLID_BLOCKS.put(158, true); + SOLID_BLOCKS.put(159, true); + SOLID_BLOCKS.put(160, false); + SOLID_BLOCKS.put(161, true); + SOLID_BLOCKS.put(162, true); + SOLID_BLOCKS.put(163, false); + SOLID_BLOCKS.put(164, false); + SOLID_BLOCKS.put(170, true); + SOLID_BLOCKS.put(171, false); + SOLID_BLOCKS.put(172, true); + SOLID_BLOCKS.put(173, true); + SOLID_BLOCKS.put(174, true); + SOLID_BLOCKS.put(175, false); + } + + public ChunkTracker(final UserConnection user) { + super(user, 0); + + this.registerReplacement(new IdAndData(BlockList1_6.signWall.blockID, 0), new IdAndData(BlockList1_6.signWall.blockID, 3)); + for (int i = 0; i < 16; i++) { + this.registerReplacement(new IdAndData(BlockList1_6.lockedChest.blockID, i), new IdAndData(BlockList1_6.bedrock.blockID, 0)); + } + + if (VersionEnum.fromUserConnection(user).isOlderThanOrEqualTo(VersionEnum.r1_1)) { + for (int i = 9; i < 16; i++) { + this.registerReplacement(new IdAndData(BlockList1_6.doorWood.blockID, i), new IdAndData(BlockList1_6.doorWood.blockID, 8)); + this.registerReplacement(new IdAndData(BlockList1_6.doorIron.blockID, i), new IdAndData(BlockList1_6.doorIron.blockID, 8)); + } + } + if (VersionEnum.fromUserConnection(user).isOlderThanOrEqualTo(VersionEnum.b1_5tob1_5_2)) { + this.registerReplacement(new IdAndData(BlockList1_6.jukebox.blockID, 2), new IdAndData(BlockList1_6.jukebox.blockID, 1)); + } + if (VersionEnum.fromUserConnection(user).isOlderThanOrEqualTo(VersionEnum.b1_4tob1_4_1)) { + for (int i = 1; i < 8; i++) { + this.registerReplacement(new IdAndData(BlockList1_6.sapling.blockID, i), new IdAndData(BlockList1_6.sapling.blockID, 0)); + } + for (int i = 9; i < 16; i++) { + this.registerReplacement(new IdAndData(BlockList1_6.sapling.blockID, i), new IdAndData(BlockList1_6.sapling.blockID, 8)); + } + } + if (VersionEnum.fromUserConnection(user).isOlderThanOrEqualTo(VersionEnum.b1_1_2)) { + for (int i = 1; i < 16; i++) { + this.registerReplacement(new IdAndData(BlockList1_6.leaves.blockID, i), new IdAndData(BlockList1_6.leaves.blockID, 0)); + } + } + } + + @Override + protected void remapBlock(final IdAndData block, final int x, final int y, final int z) { + if (block.id == BlockList1_6.chest.blockID && VersionEnum.fromUserConnection(this.getUser()).isOlderThanOrEqualTo(VersionEnum.b1_7tob1_7_3)) { + byte blockData = 3; + int rot1 = this.getBlockNotNull(x, y, z - 1).id; + int rot2 = this.getBlockNotNull(x, y, z + 1).id; + int rot3 = this.getBlockNotNull(x - 1, y, z).id; + int rot4 = this.getBlockNotNull(x + 1, y, z).id; + + int rot5; + if (rot3 == BlockList1_6.chest.blockID) { + rot5 = this.getBlockNotNull(x - 1, y, z - 1).id; + } else { + rot5 = this.getBlockNotNull(x + 1, y, z - 1).id; + } + + int rot6; + if (rot3 == BlockList1_6.chest.blockID) { + rot6 = this.getBlockNotNull(x - 1, y, z + 1).id; + } else { + rot6 = this.getBlockNotNull(x + 1, y, z + 1).id; + } + + if (rot1 != BlockList1_6.chest.blockID && rot2 != BlockList1_6.chest.blockID) { + if (rot3 != BlockList1_6.chest.blockID && rot4 != BlockList1_6.chest.blockID) { + if (SOLID_BLOCKS.get(rot2) && !SOLID_BLOCKS.get(rot1)) { + blockData = 2; + } + + if (SOLID_BLOCKS.get(rot3) && !SOLID_BLOCKS.get(rot4)) { + blockData = 5; + } + + if (SOLID_BLOCKS.get(rot4) && !SOLID_BLOCKS.get(rot3)) { + blockData = 4; + } + } else { + if (SOLID_BLOCKS.get(rot2) || SOLID_BLOCKS.get(rot6)) { + if (!SOLID_BLOCKS.get(rot1) && !SOLID_BLOCKS.get(rot5)) { + blockData = 2; + } + } + } + } else { + blockData = 5; + + if (rot1 == BlockList1_6.chest.blockID) { + rot5 = this.getBlockNotNull(x - 1, y, z - 1).id; + } else { + rot5 = this.getBlockNotNull(x - 1, y, z + 1).id; + } + + if (rot1 == BlockList1_6.chest.blockID) { + rot6 = this.getBlockNotNull(x + 1, y, z - 1).id; + } else { + rot6 = this.getBlockNotNull(x + 1, y, z + 1).id; + } + + if (SOLID_BLOCKS.get(rot4) || SOLID_BLOCKS.get(rot6)) { + if (!SOLID_BLOCKS.get(rot3) && !SOLID_BLOCKS.get(rot5)) { + blockData = 4; + } + } + } + block.data = blockData; + } + } + + @Override + protected void postRemap(DataPalette palette) { + if (VersionEnum.fromUserConnection(this.getUser()).isOlderThanOrEqualTo(VersionEnum.b1_7tob1_7_3)) { + palette.replaceId(BlockList1_6.chest.blockID << 4, 0); + palette.replaceId(BlockList1_6.chest.blockID << 4 | 1, 0); + } + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/storage/DimensionTracker.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/storage/DimensionTracker.java new file mode 100644 index 0000000..7f3a68c --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/storage/DimensionTracker.java @@ -0,0 +1,22 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.storage; + +import com.viaversion.viaversion.api.connection.StoredObject; +import com.viaversion.viaversion.api.connection.UserConnection; + +public class DimensionTracker extends StoredObject { + + private int dimensionId = 0; + + public DimensionTracker(UserConnection user) { + super(user); + } + + public void setDimension(final int dimensionId) { + this.dimensionId = dimensionId; + } + + public int getDimensionId() { + return this.dimensionId; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/storage/HandshakeStorage.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/storage/HandshakeStorage.java new file mode 100644 index 0000000..5c16957 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/storage/HandshakeStorage.java @@ -0,0 +1,25 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.storage; + +import com.viaversion.viaversion.api.connection.StoredObject; +import com.viaversion.viaversion.api.connection.UserConnection; + +public class HandshakeStorage extends StoredObject { + + private final String hostname; + private final int port; + + public HandshakeStorage(final UserConnection user, final String hostName, final int port) { + super(user); + this.hostname = hostName; + this.port = port; + } + + public String getHostname() { + return this.hostname; + } + + public int getPort() { + return this.port; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/storage/PlayerInfoStorage.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/storage/PlayerInfoStorage.java new file mode 100644 index 0000000..6c19fa6 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/storage/PlayerInfoStorage.java @@ -0,0 +1,20 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.storage; + +import com.viaversion.viaversion.api.connection.StoredObject; +import com.viaversion.viaversion.api.connection.UserConnection; + +public class PlayerInfoStorage extends StoredObject { + + public int entityId = -1; + public boolean onGround = false; + public double posX = 8; + public double posY = 64; + public double posZ = 8; + public float yaw = -180; + public float pitch = 0; + + public PlayerInfoStorage(final UserConnection userConnection) { + super(userConnection); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/storage/ProtocolMetadataStorage.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/storage/ProtocolMetadataStorage.java new file mode 100644 index 0000000..df946aa --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/storage/ProtocolMetadataStorage.java @@ -0,0 +1,16 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.storage; + +import com.viaversion.viaversion.api.connection.StoredObject; +import com.viaversion.viaversion.api.connection.UserConnection; + +public class ProtocolMetadataStorage extends StoredObject { + + public boolean authenticate; + + public boolean skipEncryption; + + public ProtocolMetadataStorage(UserConnection user) { + super(user); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/storage/StatisticsStorage.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/storage/StatisticsStorage.java new file mode 100644 index 0000000..b82a10a --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/storage/StatisticsStorage.java @@ -0,0 +1,16 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.storage; + +import com.viaversion.viaversion.api.connection.StoredObject; +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.libs.fastutil.ints.Int2IntMap; +import com.viaversion.viaversion.libs.fastutil.ints.Int2IntOpenHashMap; + +public class StatisticsStorage extends StoredObject { + + public final Int2IntMap values = new Int2IntOpenHashMap(); + + public StatisticsStorage(final UserConnection userConnection) { + super(userConnection); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/types/MetaType1_6_4.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/types/MetaType1_6_4.java new file mode 100644 index 0000000..6a487ee --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/types/MetaType1_6_4.java @@ -0,0 +1,37 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.types; + +import com.viaversion.viaversion.api.minecraft.metadata.MetaType; +import com.viaversion.viaversion.api.type.Type; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.Types1_7_6; + +public enum MetaType1_6_4 implements MetaType { + + Byte(0, Type.BYTE), + Short(1, Type.SHORT), + Int(2, Type.INT), + Float(3, Type.FLOAT), + String(4, Types1_6_4.STRING), + Slot(5, Types1_7_6.COMPRESSED_ITEM), + Position(6, Type.VECTOR); + + private final int typeID; + private final Type type; + + MetaType1_6_4(int typeID, Type type) { + this.typeID = typeID; + this.type = type; + } + + public static MetaType1_6_4 byId(int id) { + return values()[id]; + } + + public int typeId() { + return this.typeID; + } + + public Type type() { + return this.type; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/types/MetadataType.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/types/MetadataType.java new file mode 100644 index 0000000..80e9a3c --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/types/MetadataType.java @@ -0,0 +1,13 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.types; + +import com.viaversion.viaversion.api.minecraft.metadata.MetaType; +import com.viaversion.viaversion.api.type.types.minecraft.OldMetaType; + +public class MetadataType extends OldMetaType { + + @Override + protected MetaType getType(int index) { + return MetaType1_6_4.byId(index); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/types/StringType.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/types/StringType.java new file mode 100644 index 0000000..25dfeb8 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/types/StringType.java @@ -0,0 +1,28 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.types; + +import com.viaversion.viaversion.api.type.Type; +import io.netty.buffer.ByteBuf; + +public class StringType extends Type { + + public StringType() { + super(String.class); + } + + public String read(ByteBuf buffer) { + final short length = buffer.readShort(); + final StringBuilder builder = new StringBuilder(); + for (int i = 0; i < length; i++) { + builder.append(buffer.readChar()); + } + return builder.toString(); + } + + public void write(ByteBuf buffer, String s) { + buffer.writeShort(s.length()); + for (char c : s.toCharArray()) { + buffer.writeChar(c); + } + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/types/Types1_6_4.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/types/Types1_6_4.java new file mode 100644 index 0000000..e89f4a9 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_2_5to1_6_4/types/Types1_6_4.java @@ -0,0 +1,16 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.types; + +import com.viaversion.viaversion.api.minecraft.metadata.Metadata; +import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.types.minecraft.MetaListType; + +import java.util.List; + +public class Types1_6_4 { + + public static final Type STRING = new StringType(); + + public static final Type METADATA = new MetadataType(); + public static final Type> METADATA_LIST = new MetaListType(METADATA); + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_6_10to1_7_2_5/ClientboundPackets1_7_2.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_6_10to1_7_2_5/ClientboundPackets1_7_2.java new file mode 100644 index 0000000..e170336 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_6_10to1_7_2_5/ClientboundPackets1_7_2.java @@ -0,0 +1,83 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_7_6_10to1_7_2_5; + +import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType; + +public enum ClientboundPackets1_7_2 implements ClientboundPacketType { + + KEEP_ALIVE, // 0x00 + JOIN_GAME, // 0x01 + CHAT_MESSAGE, // 0x02 + TIME_UPDATE, // 0x03 + ENTITY_EQUIPMENT, // 0x04 + SPAWN_POSITION, // 0x05 + UPDATE_HEALTH, // 0x06 + RESPAWN, // 0x07 + PLAYER_POSITION, // 0x08 + HELD_ITEM_CHANGE, // 0x09 + USE_BED, // 0x0A + ENTITY_ANIMATION, // 0x0B + SPAWN_PLAYER, // 0x0C + COLLECT_ITEM, // 0x0D + SPAWN_ENTITY, // 0x0E + SPAWN_MOB, // 0x0F + SPAWN_PAINTING, // 0x10 + SPAWN_EXPERIENCE_ORB, // 0x11 + ENTITY_VELOCITY, // 0x12 + DESTROY_ENTITIES, // 0x13 + ENTITY_MOVEMENT, // 0x14 + ENTITY_POSITION, // 0x15 + ENTITY_ROTATION, // 0x16 + ENTITY_POSITION_AND_ROTATION, // 0x17 + ENTITY_TELEPORT, // 0x18 + ENTITY_HEAD_LOOK, // 0x19 + ENTITY_STATUS, // 0x1A + ATTACH_ENTITY, // 0x1B + ENTITY_METADATA, // 0x1C + ENTITY_EFFECT, // 0x1D + REMOVE_ENTITY_EFFECT, // 0x1E + SET_EXPERIENCE, // 0x1F + ENTITY_PROPERTIES, // 0x20 + CHUNK_DATA, // 0x21 + MULTI_BLOCK_CHANGE, // 0x22 + BLOCK_CHANGE, // 0x23 + BLOCK_ACTION, // 0x24 + BLOCK_BREAK_ANIMATION, // 0x25 + MAP_BULK_CHUNK, // 0x26 + EXPLOSION, // 0x27 + EFFECT, // 0x28 + NAMED_SOUND, // 0x29 + SPAWN_PARTICLE, // 0x2A + GAME_EVENT, // 0x2B + SPAWN_GLOBAL_ENTITY, // 0x2C + OPEN_WINDOW, // 0x2D + CLOSE_WINDOW, // 0x2E + SET_SLOT, // 0x2F + WINDOW_ITEMS, // 0x30 + WINDOW_PROPERTY, // 0x31 + WINDOW_CONFIRMATION, // 0x32 + UPDATE_SIGN, // 0x33 + MAP_DATA, // 0x34 + BLOCK_ENTITY_DATA, // 0x35 + OPEN_SIGN_EDITOR, // 0x36 + STATISTICS, // 0x37 + PLAYER_INFO, // 0x38 + PLAYER_ABILITIES, // 0x39 + TAB_COMPLETE, // 0x3A + SCOREBOARD_OBJECTIVE, // 0x3B + UPDATE_SCORE, // 0x3C + DISPLAY_SCOREBOARD, // 0x3D + TEAMS, // 0x3E + PLUGIN_MESSAGE, // 0x3F + DISCONNECT; // 0x40 + + @Override + public int getId() { + return ordinal(); + } + + @Override + public String getName() { + return name(); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_6_10to1_7_2_5/Protocol1_7_6_10to1_7_2_5.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_6_10to1_7_2_5/Protocol1_7_6_10to1_7_2_5.java new file mode 100644 index 0000000..6233998 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_6_10to1_7_2_5/Protocol1_7_6_10to1_7_2_5.java @@ -0,0 +1,142 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_7_6_10to1_7_2_5; + +import com.viaversion.viaversion.api.Via; +import com.viaversion.viaversion.api.minecraft.Position; +import com.viaversion.viaversion.api.protocol.AbstractProtocol; +import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; +import com.viaversion.viaversion.api.protocol.packet.State; +import com.viaversion.viaversion.api.protocol.remapper.PacketRemapper; +import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.libs.opennbt.tag.builtin.*; +import com.viaversion.viaversion.protocols.base.BaseProtocol1_7; +import com.viaversion.viaversion.protocols.base.ClientboundLoginPackets; +import net.raphimc.vialegacy.ViaLegacy; +import net.raphimc.vialegacy.protocols.release.protocol1_7_6_10to1_7_2_5.rewriter.TranslationRewriter; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.model.GameProfile; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.providers.GameProfileFetcher; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.Types1_7_6; + +import java.util.*; + +public class Protocol1_7_6_10to1_7_2_5 extends AbstractProtocol { + + public Protocol1_7_6_10to1_7_2_5() { + super(ClientboundPackets1_7_2.class, ClientboundPackets1_7_2.class, ServerboundPackets1_7_2.class, ServerboundPackets1_7_2.class); + } + + @Override + protected void registerPackets() { + this.registerClientbound(State.LOGIN, ClientboundLoginPackets.GAME_PROFILE.getId(), ClientboundLoginPackets.GAME_PROFILE.getId(), new PacketRemapper() { + @Override + public void registerMap() { + map(Type.STRING, Type.STRING, BaseProtocol1_7::addDashes); // uuid + map(Type.STRING); // name + } + }); + this.registerClientbound(ClientboundPackets1_7_2.SPAWN_PLAYER, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.VAR_INT); // entity id + map(Type.STRING, Type.STRING, BaseProtocol1_7::addDashes); // uuid + map(Type.STRING); // name + create(Type.VAR_INT, 0); // properties count + map(Type.INT); // x + map(Type.INT); // y + map(Type.INT); // z + map(Type.BYTE); // yaw + map(Type.BYTE); // pitch + map(Type.SHORT); // item in hand + map(Types1_7_6.METADATA_LIST); // metadata + } + }); + this.registerClientbound(ClientboundPackets1_7_2.CHAT_MESSAGE, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.STRING, Type.STRING, TranslationRewriter::toClient); // message + } + }); + this.registerClientbound(ClientboundPackets1_7_2.BLOCK_ENTITY_DATA, new PacketRemapper() { + @Override + public void registerMap() { + map(Types1_7_6.POSITION_SHORT); // position + map(Type.UNSIGNED_BYTE); // type + map(Types1_7_6.COMPRESSED_NBT); // data + handler(wrapper -> { + final GameProfileFetcher gameProfileFetcher = Via.getManager().getProviders().get(GameProfileFetcher.class); + + final Position pos = wrapper.get(Types1_7_6.POSITION_SHORT, 0); + final short type = wrapper.get(Type.UNSIGNED_BYTE, 0); + final CompoundTag tag = wrapper.get(Types1_7_6.COMPRESSED_NBT, 0); + if (type != 4/*skull*/) return; + final ByteTag skullType = tag.get("SkullType"); + if (skullType == null || skullType.asByte() != 3/*player_skull*/) return; + + final StringTag extraType = tag.remove("ExtraType"); + + if (!ViaLegacy.getConfig().isLegacySkullLoading()) return; + + final String skullName = extraType == null ? "" : extraType.getValue(); + final CompoundTag newTag = tag.clone(); + + if (gameProfileFetcher.isUUIDLoaded(skullName)) { // short cut if skull is already loaded + final UUID uuid = gameProfileFetcher.getMojangUUID(skullName); + if (gameProfileFetcher.isGameProfileLoaded(uuid)) { + final GameProfile skullProfile = gameProfileFetcher.getGameProfile(uuid); + if (skullProfile == null || skullProfile.isOffline()) return; + + newTag.put("Owner", writeGameProfileToTag(skullProfile)); + wrapper.set(Types1_7_6.COMPRESSED_NBT, 0, newTag); + return; + } + } + + gameProfileFetcher.getMojangUUIDAsync(skullName).thenAccept(uuid -> { + final GameProfile skullProfile = gameProfileFetcher.getGameProfile(uuid); + if (skullProfile == null || skullProfile.isOffline()) return; + + newTag.put("Owner", writeGameProfileToTag(skullProfile)); + try { + final PacketWrapper updateSkull = PacketWrapper.create(ClientboundPackets1_7_2.BLOCK_ENTITY_DATA, wrapper.user()); + updateSkull.write(Types1_7_6.POSITION_SHORT, pos); + updateSkull.write(Type.UNSIGNED_BYTE, type); + updateSkull.write(Types1_7_6.COMPRESSED_NBT, newTag); + updateSkull.send(Protocol1_7_6_10to1_7_2_5.class); + } catch (Throwable e) { + e.printStackTrace(); + } + }); + }); + } + }); + } + + public static CompoundTag writeGameProfileToTag(final GameProfile gameProfile) { + final CompoundTag ownerTag = new CompoundTag(); + + if (gameProfile.userName != null && !gameProfile.userName.isEmpty()) ownerTag.put("Name", new StringTag(gameProfile.userName)); + if (gameProfile.uuid != null) ownerTag.put("Id", new StringTag(gameProfile.uuid.toString())); + if (!gameProfile.properties.isEmpty()) { + final CompoundTag propertiesTag = new CompoundTag(); + + for (Map.Entry> entry : gameProfile.properties.entrySet()) { + final ListTag propertiesList = new ListTag(); + + for (GameProfile.Property property : entry.getValue()) { + final CompoundTag propertyTag = new CompoundTag(); + propertyTag.put("Value", new StringTag(property.value)); + if (property.signature != null) { + propertyTag.put("Signature", new StringTag(property.signature)); + } + propertiesList.add(propertyTag); + } + + propertiesTag.put(entry.getKey(), propertiesList); + } + + ownerTag.put("Properties", propertiesTag); + } + + return ownerTag; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_6_10to1_7_2_5/ServerboundPackets1_7_2.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_6_10to1_7_2_5/ServerboundPackets1_7_2.java new file mode 100644 index 0000000..f05c762 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_6_10to1_7_2_5/ServerboundPackets1_7_2.java @@ -0,0 +1,42 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_7_6_10to1_7_2_5; + +import com.viaversion.viaversion.api.protocol.packet.ServerboundPacketType; + +public enum ServerboundPackets1_7_2 implements ServerboundPacketType { + + KEEP_ALIVE, // 0x00 + CHAT_MESSAGE, // 0x01 + INTERACT_ENTITY, // 0x02 + PLAYER_MOVEMENT, // 0x03 + PLAYER_POSITION, // 0x04 + PLAYER_ROTATION, // 0x05 + PLAYER_POSITION_AND_ROTATION, // 0x06 + PLAYER_DIGGING, // 0x07 + PLAYER_BLOCK_PLACEMENT, // 0x08 + HELD_ITEM_CHANGE, // 0x09 + ANIMATION, // 0x0A + ENTITY_ACTION, // 0x0B + STEER_VEHICLE, // 0x0C + CLOSE_WINDOW, // 0x0D + CLICK_WINDOW, // 0x0E + WINDOW_CONFIRMATION, // 0x0F + CREATIVE_INVENTORY_ACTION, // 0x10 + CLICK_WINDOW_BUTTON, // 0x11 + UPDATE_SIGN, // 0x12 + PLAYER_ABILITIES, // 0x13 + TAB_COMPLETE, // 0x14 + CLIENT_SETTINGS, // 0x15 + CLIENT_STATUS, // 0x16 + PLUGIN_MESSAGE; // 0x17 + + @Override + public int getId() { + return ordinal(); + } + + @Override + public String getName() { + return name(); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_6_10to1_7_2_5/rewriter/TranslationRewriter.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_6_10to1_7_2_5/rewriter/TranslationRewriter.java new file mode 100644 index 0000000..aee07f8 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_7_6_10to1_7_2_5/rewriter/TranslationRewriter.java @@ -0,0 +1,115 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_7_6_10to1_7_2_5.rewriter; + +import com.viaversion.viaversion.libs.fastutil.objects.Object2ObjectMap; +import com.viaversion.viaversion.libs.fastutil.objects.Object2ObjectOpenHashMap; +import com.viaversion.viaversion.libs.gson.JsonObject; +import com.viaversion.viaversion.rewriter.ComponentRewriter; + +public class TranslationRewriter { + + private static final Object2ObjectMap TRANSLATIONS = new Object2ObjectOpenHashMap<>(86, 0.99F); + + static { + TRANSLATIONS.put("generator.amplified", "AMPLIFIED"); + TRANSLATIONS.put("$o", "Play Demo World"); + TRANSLATIONS.put("options.serverTextures", "Server Textures"); + TRANSLATIONS.put("mco.title", "Minecraft Realms"); + TRANSLATIONS.put("mco.terms.buttons.agree", "Agree"); + TRANSLATIONS.put("mco.terms.buttons.disagree", "Don't Agree"); + TRANSLATIONS.put("mco.terms.title", "Realms Terms of Service"); + TRANSLATIONS.put("mco.terms.sentence.1", "I agree to Minecraft Realms"); + TRANSLATIONS.put("mco.terms.sentence.2", "Terms of Service"); + TRANSLATIONS.put("mco.buy.realms.title", "Buy a Realm"); + TRANSLATIONS.put("mco.buy.realms.buy", "I want one!"); + TRANSLATIONS.put("mco.selectServer.play", "Play"); + TRANSLATIONS.put("mco.selectServer.configure", "Configure"); + TRANSLATIONS.put("mco.selectServer.leave", "Leave Realm"); + TRANSLATIONS.put("mco.selectServer.create", "Create Realm"); + TRANSLATIONS.put("mco.selectServer.buy", "Buy Realm"); + TRANSLATIONS.put("mco.selectServer.moreinfo", "More Info"); + TRANSLATIONS.put("mco.selectServer.expired", "Expired Server"); + TRANSLATIONS.put("mco.selectServer.open", "Open Server"); + TRANSLATIONS.put("mco.selectServer.closed", "Closed Server"); + TRANSLATIONS.put("mco.selectServer.locked", "Locked Server"); + TRANSLATIONS.put("mco.selectServer.expires.days", "Expires in %s days"); + TRANSLATIONS.put("mco.selectServer.expires.day", "Expires in a day"); + TRANSLATIONS.put("mco.selectServer.expires.soon", "Expires soon"); + TRANSLATIONS.put("mco.configure.world.edit.title", "Edit Realm"); + TRANSLATIONS.put("mco.configure.world.title", "Configure Realm"); + TRANSLATIONS.put("mco.configure.world.name", "Name"); + TRANSLATIONS.put("mco.configure.world.description", "Description"); + TRANSLATIONS.put("mco.configure.world.location", "Location"); + TRANSLATIONS.put("mco.configure.world.invited", "Invited"); + TRANSLATIONS.put("mco.configure.world.buttons.edit", "Edit"); + TRANSLATIONS.put("mco.configure.world.buttons.reset", "Reset Realm"); + TRANSLATIONS.put("mco.configure.world.buttons.done", "Done"); + TRANSLATIONS.put("mco.configure.world.buttons.delete", "Delete"); + TRANSLATIONS.put("mco.configure.world.buttons.open", "Open Realm"); + TRANSLATIONS.put("mco.configure.world.buttons.close", "Close Realm"); + TRANSLATIONS.put("mco.configure.world.buttons.invite", "Invite"); + TRANSLATIONS.put("mco.configure.world.buttons.uninvite", "Uninvite"); + TRANSLATIONS.put("mco.configure.world.buttons.backup", "Backups"); + TRANSLATIONS.put("mco.configure.world.buttons.subscription", "Subscription"); + TRANSLATIONS.put("mco.configure.world.invite.profile.name", "Name"); + TRANSLATIONS.put("mco.configure.world.uninvite.question", "Are you sure that you want to uninvite"); + TRANSLATIONS.put("mco.configure.world.status", "Status"); + TRANSLATIONS.put("mco.configure.world.subscription.title", "Subscription Info"); + TRANSLATIONS.put("mco.configure.world.subscription.daysleft", "Days Left"); + TRANSLATIONS.put("mco.configure.world.subscription.start", "Start Date"); + TRANSLATIONS.put("mco.configure.world.subscription.extend", "Extend Subscription"); + TRANSLATIONS.put("mco.create.world.location.title", "Locations"); + TRANSLATIONS.put("mco.create.world.location.warning", "You may not get the exact location you select"); + TRANSLATIONS.put("mco.create.world.wait", "Creating the realm..."); + TRANSLATIONS.put("mco.create.world.seed", "Seed (Optional)"); + TRANSLATIONS.put("mco.reset.world.title", "Reset Realm"); + TRANSLATIONS.put("mco.reset.world.warning", "This will permanently delete your realm!"); + TRANSLATIONS.put("mco.reset.world.seed", "Seed (Optional)"); + TRANSLATIONS.put("mco.reset.world.resetting.screen.title", "Resetting Realm..."); + TRANSLATIONS.put("mco.configure.world.close.question.line1", "Your realm will become unavailable."); + TRANSLATIONS.put("mco.configure.world.close.question.line2", "Are you sure you want to do that?"); + TRANSLATIONS.put("mco.configure.world.leave.question.line1", "If you leave this realm you won't see it unless invited again"); + TRANSLATIONS.put("mco.configure.world.leave.question.line2", "Are you sure you want to do that?"); + TRANSLATIONS.put("mco.configure.world.reset.question.line1", "Your realm will be regenerated and your current realm will be lost"); + TRANSLATIONS.put("mco.configure.world.reset.question.line2", "Are you sure you want to do that?"); + TRANSLATIONS.put("mco.configure.world.restore.question.line1", "Your realm will be restored to date"); + TRANSLATIONS.put("mco.configure.world.restore.question.line2", "Are you sure you want to do that?"); + TRANSLATIONS.put("mco.configure.world.restore.download.question.line1", "You will be redirected to your default browser to download your world map."); + TRANSLATIONS.put("mco.configure.world.restore.download.question.line2", "Do you want to continue?"); + TRANSLATIONS.put("mco.more.info.question.line1", "You will be redirected to your default browser to see the page."); + TRANSLATIONS.put("mco.more.info.question.line2", "Do you want to continue?"); + TRANSLATIONS.put("mco.connect.connecting", "Connecting to the online server..."); + TRANSLATIONS.put("mco.connect.authorizing", "Logging in..."); + TRANSLATIONS.put("mco.connect.failed", "Failed to connect to the online server"); + TRANSLATIONS.put("mco.create.world", "Create"); + TRANSLATIONS.put("mco.client.outdated.title", "Client Outdated!"); + TRANSLATIONS.put("mco.client.outdated.msg", "Your client is outdated, please consider updating it to use Realms"); + TRANSLATIONS.put("mco.backup.title", "Backups"); + TRANSLATIONS.put("mco.backup.button.restore", "Restore"); + TRANSLATIONS.put("mco.backup.restoring", "Restoring your realm"); + TRANSLATIONS.put("mco.backup.button.download", "Download Latest"); + TRANSLATIONS.put("mco.template.title", "Realm Templates"); + TRANSLATIONS.put("mco.template.button.select", "Select"); + TRANSLATIONS.put("mco.template.default.name", "Select Template (Optional)"); + TRANSLATIONS.put("mco.template.name", "Template"); + TRANSLATIONS.put("mco.invites.button.accept", "Accept"); + TRANSLATIONS.put("mco.invites.button.reject", "Reject"); + TRANSLATIONS.put("mco.invites.title", "Pending Invitations"); + TRANSLATIONS.put("mco.invites.pending", "New invitations!"); + TRANSLATIONS.put("mco.invites.nopending", "No pending invitations!"); + } + + private static final ComponentRewriter REWRITER = new ComponentRewriter() { + @Override + protected void handleTranslate(JsonObject object, String translate) { + final String text = TRANSLATIONS.get(translate); + if (text != null) { + object.addProperty("translate", text); + } + } + }; + + public static String toClient(final String text) { + return REWRITER.processText(text).toString(); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/Protocol1_8to1_7_6_10.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/Protocol1_8to1_7_6_10.java new file mode 100644 index 0000000..e35c435 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/Protocol1_8to1_7_6_10.java @@ -0,0 +1,1566 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10; + +import com.google.common.base.Joiner; +import com.viaversion.viaversion.api.Via; +import com.viaversion.viaversion.api.connection.ProtocolInfo; +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.minecraft.BlockChangeRecord; +import com.viaversion.viaversion.api.minecraft.Position; +import com.viaversion.viaversion.api.minecraft.chunks.Chunk; +import com.viaversion.viaversion.api.minecraft.entities.Entity1_10Types; +import com.viaversion.viaversion.api.minecraft.item.DataItem; +import com.viaversion.viaversion.api.minecraft.item.Item; +import com.viaversion.viaversion.api.minecraft.metadata.Metadata; +import com.viaversion.viaversion.api.platform.providers.ViaProviders; +import com.viaversion.viaversion.api.protocol.AbstractProtocol; +import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; +import com.viaversion.viaversion.api.protocol.packet.State; +import com.viaversion.viaversion.api.protocol.remapper.PacketRemapper; +import com.viaversion.viaversion.api.protocol.remapper.ValueTransformer; +import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.types.version.Types1_8; +import com.viaversion.viaversion.libs.gson.JsonObject; +import com.viaversion.viaversion.protocols.base.ClientboundLoginPackets; +import com.viaversion.viaversion.protocols.base.ServerboundLoginPackets; +import com.viaversion.viaversion.protocols.protocol1_8.ClientboundPackets1_8; +import com.viaversion.viaversion.protocols.protocol1_8.ServerboundPackets1_8; +import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; +import com.viaversion.viaversion.protocols.protocol1_9to1_8.types.Chunk1_8Type; +import com.viaversion.viaversion.protocols.protocol1_9to1_8.types.ChunkBulk1_8Type; +import io.netty.buffer.ByteBuf; +import io.netty.buffer.Unpooled; +import net.raphimc.vialegacy.ViaLegacy; +import net.raphimc.vialegacy.api.IdAndData; +import net.raphimc.vialegacy.api.ItemList1_6; +import net.raphimc.vialegacy.protocols.release.protocol1_7_6_10to1_7_2_5.ClientboundPackets1_7_2; +import net.raphimc.vialegacy.protocols.release.protocol1_7_6_10to1_7_2_5.ServerboundPackets1_7_2; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.data.Particle; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.metadata.MetadataRewriter; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.model.*; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.providers.GameProfileFetcher; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.rewriter.*; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.storage.*; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.*; + +import java.nio.charset.StandardCharsets; +import java.util.*; + +public class Protocol1_8to1_7_6_10 extends AbstractProtocol { + + public static final ItemRewriter ITEM_REWRITER = new ItemRewriter(); + + public Protocol1_8to1_7_6_10() { + super(ClientboundPackets1_7_2.class, ClientboundPackets1_8.class, ServerboundPackets1_7_2.class, ServerboundPackets1_8.class); + } + + public static final ValueTransformer LEGACY_TO_JSON = new ValueTransformer(Type.STRING, Type.STRING) { + @Override + public String transform(PacketWrapper packetWrapper, String message) { + final JsonObject jsonObject = new JsonObject(); + jsonObject.addProperty("text", message); + return jsonObject.toString(); + } + }; + + public static final ValueTransformer LEGACY_TO_JSON_TRANSLATE = new ValueTransformer(Type.STRING, Type.STRING) { + @Override + public String transform(PacketWrapper packetWrapper, String message) { + final JsonObject jsonObject = new JsonObject(); + jsonObject.addProperty("translate", message); + return jsonObject.toString(); + } + }; + + @Override + protected void registerPackets() { + this.registerClientbound(State.LOGIN, ClientboundLoginPackets.HELLO.getId(), ClientboundLoginPackets.HELLO.getId(), new PacketRemapper() { + @Override + public void registerMap() { + map(Type.STRING); // server hash + map(Type.SHORT_BYTE_ARRAY, Type.BYTE_ARRAY_PRIMITIVE); // public key + map(Type.SHORT_BYTE_ARRAY, Type.BYTE_ARRAY_PRIMITIVE); // verify token + } + }); + this.registerClientbound(ClientboundPackets1_7_2.KEEP_ALIVE, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT, Type.VAR_INT); // key + } + }); + this.registerClientbound(ClientboundPackets1_7_2.JOIN_GAME, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // entity id + map(Type.UNSIGNED_BYTE); // gamemode + map(Type.BYTE); // dimension id + map(Type.UNSIGNED_BYTE); // difficulty + map(Type.UNSIGNED_BYTE); // max players + map(Type.STRING); // level type + create(Type.BOOLEAN, false); // reduced debug info + handler(wrapper -> { + final ProtocolInfo protocolInfo = wrapper.user().getProtocolInfo(); + final TablistStorage tablistStorage = wrapper.user().get(TablistStorage.class); + tablistStorage.sendTempEntry(new TabListEntry(protocolInfo.getUsername(), protocolInfo.getUuid())); // load own skin + }); + handler(wrapper -> { + final int entityId = wrapper.get(Type.INT, 0); + final byte dimensionId = wrapper.get(Type.BYTE, 0); + final EntityTracker tracker = wrapper.user().get(EntityTracker.class); + tracker.trackEntity(entityId, Entity1_10Types.EntityType.PLAYER); + tracker.setPlayerID(entityId); + wrapper.user().get(DimensionTracker.class).setDimension(dimensionId); + wrapper.user().get(ClientWorld.class).setEnvironment(dimensionId); + }); + } + }); + this.registerClientbound(ClientboundPackets1_7_2.CHAT_MESSAGE, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.STRING, Type.STRING, msg -> TranslationRewriter.toClient(ChatItemRewriter.toClient(msg))); // message + create(Type.BYTE, (byte) 0); // position + } + }); + this.registerClientbound(ClientboundPackets1_7_2.ENTITY_EQUIPMENT, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT, Type.VAR_INT); // entity id + map(Type.SHORT); // slot + map(Types1_7_6.COMPRESSED_ITEM, Type.ITEM); // item + handler(wrapper -> ITEM_REWRITER.rewriteRead(wrapper.get(Type.ITEM, 0))); + } + }); + this.registerClientbound(ClientboundPackets1_7_2.SPAWN_POSITION, new PacketRemapper() { + @Override + public void registerMap() { + map(Types1_7_6.POSITION_INT, Type.POSITION); // position + } + }); + this.registerClientbound(ClientboundPackets1_7_2.UPDATE_HEALTH, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.FLOAT); // health + map(Type.SHORT, Type.VAR_INT); // food + map(Type.FLOAT); // saturation + } + }); + this.registerClientbound(ClientboundPackets1_7_2.RESPAWN, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // dimension id + map(Type.UNSIGNED_BYTE); // difficulty + map(Type.UNSIGNED_BYTE); // gamemode + map(Type.STRING); // worldType + handler(wrapper -> { + final int oldDim = wrapper.user().get(DimensionTracker.class).getDimensionId(); + final int newDim = wrapper.get(Type.INT, 0); + wrapper.user().get(DimensionTracker.class).setDimension(newDim); + wrapper.user().get(ClientWorld.class).setEnvironment(newDim); + if (oldDim != newDim) { + wrapper.user().get(ChunkTracker.class).clear(); + wrapper.user().get(EntityTracker.class).clear(); + } + }); + } + }); + this.registerClientbound(ClientboundPackets1_7_2.PLAYER_POSITION, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.DOUBLE); // x + map(Type.DOUBLE, Type.DOUBLE, stance -> stance - 1.62F); // y + map(Type.DOUBLE); // z + map(Type.FLOAT); // yaw + map(Type.FLOAT); // pitch + read(Type.BOOLEAN); // onGround + create(Type.BYTE, (byte) 0); // flags + } + }); + this.registerClientbound(ClientboundPackets1_7_2.USE_BED, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT, Type.VAR_INT); // entity id + map(Types1_7_6.POSITION_BYTE, Type.POSITION); // position + } + }); + this.registerClientbound(ClientboundPackets1_7_2.SPAWN_PLAYER, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + wrapper.passthrough(Type.VAR_INT); // entity id + final UUID uuid = UUID.fromString(wrapper.read(Type.STRING)); // uuid + wrapper.write(Type.UUID, uuid); + final String name = wrapper.read(Type.STRING); // name + + final TablistStorage tablistStorage = wrapper.user().get(TablistStorage.class); + final TabListEntry tempTabEntry = new TabListEntry(name, uuid); + + final int dataCount = wrapper.read(Type.VAR_INT); // properties count + for (int i = 0; i < dataCount; i++) { + final String key = wrapper.read(Type.STRING); // name + final String value = wrapper.read(Type.STRING); // value + final String signature = wrapper.read(Type.STRING); // signature + tempTabEntry.gameProfile.addProperty(new GameProfile.Property(key, value, signature)); + } + + wrapper.passthrough(Type.INT); // x + wrapper.passthrough(Type.INT); // y + wrapper.passthrough(Type.INT); // z + wrapper.passthrough(Type.BYTE); // yaw + wrapper.passthrough(Type.BYTE); // pitch + + final short itemId = wrapper.read(Type.SHORT); // item in hand + final Item currentItem = new DataItem(itemId, (byte) 1, (short) 0, null); + ITEM_REWRITER.rewriteRead(currentItem); + wrapper.write(Type.SHORT, (short) currentItem.identifier()); + + final List metadata = wrapper.read(Types1_7_6.METADATA_LIST); // metadata + MetadataRewriter.transform(Entity1_10Types.EntityType.PLAYER, metadata); + wrapper.write(Types1_8.METADATA_LIST, metadata); + + tablistStorage.sendTempEntry(tempTabEntry); + }); + handler(wrapper -> { + final int entityID = wrapper.get(Type.VAR_INT, 0); + wrapper.user().get(EntityTracker.class).trackEntity(entityID, Entity1_10Types.EntityType.PLAYER); + }); + } + }); + this.registerClientbound(ClientboundPackets1_7_2.COLLECT_ITEM, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT, Type.VAR_INT); // collected entity id + map(Type.INT, Type.VAR_INT); // collector entity id + handler(wrapper -> { + wrapper.user().get(EntityTracker.class).removeEntity(wrapper.get(Type.VAR_INT, 0)); + }); + } + }); + this.registerClientbound(ClientboundPackets1_7_2.SPAWN_ENTITY, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.VAR_INT); // entity id + map(Type.BYTE); // type id + map(Type.INT); // x + map(Type.INT); // y + map(Type.INT); // z + map(Type.BYTE); // pitch + map(Type.BYTE); // yaw + map(Type.INT); // data + handler(wrapper -> { + final EntityTracker tracker = wrapper.user().get(EntityTracker.class); + final int entityID = wrapper.get(Type.VAR_INT, 0); + final int typeID = wrapper.get(Type.BYTE, 0); + final int x = wrapper.get(Type.INT, 0); + final int y = wrapper.get(Type.INT, 1); + final int z = wrapper.get(Type.INT, 2); + tracker.trackEntity(entityID, Entity1_10Types.getTypeFromId(typeID, true)); + tracker.updateEntityLocation(entityID, x, y, z, false); + }); + handler(wrapper -> { + final Entity1_10Types.EntityType type = Entity1_10Types.getTypeFromId(wrapper.get(Type.BYTE, 0), true); + int x = wrapper.get(Type.INT, 0); + int y = wrapper.get(Type.INT, 1); + int z = wrapper.get(Type.INT, 2); + byte yaw = wrapper.get(Type.BYTE, 2); + int data = wrapper.get(Type.INT, 3); + + if (type == Entity1_10Types.ObjectType.ITEM_FRAME.getType()) { + switch (data) { + case 0: + z += 32; + yaw = 0; + break; + case 1: + x -= 32; + yaw = 64; + break; + case 2: + z -= 32; + yaw = -128; + break; + case 3: + x += 32; + yaw = -64; + break; + } + } else if (type == Entity1_10Types.ObjectType.FALLING_BLOCK.getType()) { + final int id = data & 0xffff; + final int metadata = data >> 16; + final IdAndData block = new IdAndData(id, metadata); + wrapper.user().get(ChunkTracker.class).remapBlockParticle(block); + data = block.id | block.data << 12; + } + + y = realignEntityY(type, y); + + wrapper.set(Type.INT, 0, x); + wrapper.set(Type.INT, 1, y); + wrapper.set(Type.INT, 2, z); + wrapper.set(Type.BYTE, 2, yaw); + wrapper.set(Type.INT, 3, data); + }); + } + }); + this.registerClientbound(ClientboundPackets1_7_2.SPAWN_MOB, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.VAR_INT); // entity id + map(Type.UNSIGNED_BYTE); // type id + map(Type.INT); // x + map(Type.INT); // y + map(Type.INT); // z + map(Type.BYTE); // yaw + map(Type.BYTE); // pitch + map(Type.BYTE); // head yaw + map(Type.SHORT); // velocity x + map(Type.SHORT); // velocity y + map(Type.SHORT); // velocity z + map(Types1_7_6.METADATA_LIST, Types1_8.METADATA_LIST); // metadata + handler(wrapper -> { + final EntityTracker tracker = wrapper.user().get(EntityTracker.class); + final int entityID = wrapper.get(Type.VAR_INT, 0); + final int typeID = wrapper.get(Type.UNSIGNED_BYTE, 0); + final int x = wrapper.get(Type.INT, 0); + final int y = wrapper.get(Type.INT, 1); + final int z = wrapper.get(Type.INT, 2); + final List metadataList = wrapper.get(Types1_8.METADATA_LIST, 0); + final Entity1_10Types.EntityType entityType = Entity1_10Types.getTypeFromId(typeID, false); + tracker.trackEntity(entityID, entityType); + tracker.updateEntityLocation(entityID, x, y, z, false); + tracker.updateEntityMetadata(entityID, metadataList); + + MetadataRewriter.transform(entityType, metadataList); + }); + } + }); + this.registerClientbound(ClientboundPackets1_7_2.SPAWN_PAINTING, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.VAR_INT); // entity id + map(Type.STRING); // motive + map(Types1_7_6.POSITION_INT, Type.POSITION); // position + map(Type.INT, Type.BYTE); // rotation + handler(wrapper -> { + final short rotation = wrapper.get(Type.BYTE, 0); + final Position pos = wrapper.get(Type.POSITION, 0); + int modX = 0; + int modZ = 0; + switch (rotation) { + case 0: + modZ = 1; + break; + case 1: + modX = -1; + break; + case 2: + modZ = -1; + break; + case 3: + modX = 1; + break; + } + wrapper.set(Type.POSITION, 0, new Position(pos.x() + modX, pos.y(), pos.z() + modZ)); + }); + handler(wrapper -> { + final int entityID = wrapper.get(Type.VAR_INT, 0); + wrapper.user().get(EntityTracker.class).trackEntity(entityID, Entity1_10Types.EntityType.PAINTING); + }); + } + }); + this.registerClientbound(ClientboundPackets1_7_2.SPAWN_EXPERIENCE_ORB, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.VAR_INT); // entity id + map(Type.INT); // x + map(Type.INT); // y + map(Type.INT); // z + map(Type.SHORT); // count + handler(wrapper -> { + final int entityID = wrapper.get(Type.VAR_INT, 0); + wrapper.user().get(EntityTracker.class).trackEntity(entityID, Entity1_10Types.EntityType.EXPERIENCE_ORB); + + wrapper.set(Type.INT, 1, realignEntityY(Entity1_10Types.EntityType.EXPERIENCE_ORB, wrapper.get(Type.INT, 1))); + }); + } + }); + this.registerClientbound(ClientboundPackets1_7_2.ENTITY_VELOCITY, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT, Type.VAR_INT); // entity id + map(Type.SHORT); // velocity x + map(Type.SHORT); // velocity y + map(Type.SHORT); // velocity z + } + }); + this.registerClientbound(ClientboundPackets1_7_2.DESTROY_ENTITIES, new PacketRemapper() { + @Override + public void registerMap() { + map(Types1_7_6.INT_ARRAY, Type.VAR_INT_ARRAY_PRIMITIVE); // entity ids + handler(wrapper -> { + final EntityTracker tracker = wrapper.user().get(EntityTracker.class); + for (int entityId : wrapper.get(Type.VAR_INT_ARRAY_PRIMITIVE, 0)) { + tracker.removeEntity(entityId); + } + }); + } + }); + this.registerClientbound(ClientboundPackets1_7_2.ENTITY_MOVEMENT, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT, Type.VAR_INT); // entity id + } + }); + this.registerClientbound(ClientboundPackets1_7_2.ENTITY_POSITION, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT, Type.VAR_INT); // entity id + map(Type.BYTE); // x + map(Type.BYTE); // y + map(Type.BYTE); // z + handler(wrapper -> { + final EntityTracker tracker = wrapper.user().get(EntityTracker.class); + final int entityId = wrapper.get(Type.VAR_INT, 0); + final byte x = wrapper.get(Type.BYTE, 0); + final byte y = wrapper.get(Type.BYTE, 1); + final byte z = wrapper.get(Type.BYTE, 2); + tracker.updateEntityLocation(entityId, x, y, z, true); + }); + handler(wrapper -> { + if (ViaLegacy.getConfig().isDynamicOnground()) { + final EntityTracker entityTracker = wrapper.user().get(EntityTracker.class); + final boolean onGround = wrapper.get(Type.BYTE, 1) > -8/*0.25D*/; + entityTracker.getGroundMap().put(wrapper.get(Type.VAR_INT, 0), onGround); + wrapper.write(Type.BOOLEAN, onGround); // onGround + } else { + wrapper.write(Type.BOOLEAN, true); // onGround + } + }); + } + }); + this.registerClientbound(ClientboundPackets1_7_2.ENTITY_ROTATION, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT, Type.VAR_INT); // entity id + map(Type.BYTE); // yaw + map(Type.BYTE); // pitch + handler(wrapper -> { + if (ViaLegacy.getConfig().isDynamicOnground()) { + final EntityTracker entityTracker = wrapper.user().get(EntityTracker.class); + wrapper.write(Type.BOOLEAN, entityTracker.getGroundMap().getOrDefault(wrapper.get(Type.VAR_INT, 0), true)); // onGround + } else { + wrapper.write(Type.BOOLEAN, true); // onGround + } + }); + } + }); + this.registerClientbound(ClientboundPackets1_7_2.ENTITY_POSITION_AND_ROTATION, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT, Type.VAR_INT); // entity id + map(Type.BYTE); // x + map(Type.BYTE); // y + map(Type.BYTE); // z + map(Type.BYTE); // yaw + map(Type.BYTE); // pitch + handler(wrapper -> { + final EntityTracker tracker = wrapper.user().get(EntityTracker.class); + final int entityId = wrapper.get(Type.VAR_INT, 0); + final byte x = wrapper.get(Type.BYTE, 0); + final byte y = wrapper.get(Type.BYTE, 1); + final byte z = wrapper.get(Type.BYTE, 2); + tracker.updateEntityLocation(entityId, x, y, z, true); + }); + handler(wrapper -> { + if (ViaLegacy.getConfig().isDynamicOnground()) { + final EntityTracker entityTracker = wrapper.user().get(EntityTracker.class); + final boolean onGround = wrapper.get(Type.BYTE, 1) > -8/*0.25D*/; + entityTracker.getGroundMap().put(wrapper.get(Type.VAR_INT, 0), onGround); + wrapper.write(Type.BOOLEAN, onGround); // onGround + } else { + wrapper.write(Type.BOOLEAN, true); // onGround + } + }); + } + }); + this.registerClientbound(ClientboundPackets1_7_2.ENTITY_TELEPORT, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT, Type.VAR_INT); // entity id + map(Type.INT); // x + map(Type.INT); // y + map(Type.INT); // z + map(Type.BYTE); // yaw + map(Type.BYTE); // pitch + create(Type.BOOLEAN, true); // onGround + handler(wrapper -> { + final EntityTracker tracker = wrapper.user().get(EntityTracker.class); + final int entityId = wrapper.get(Type.VAR_INT, 0); + final int x = wrapper.get(Type.INT, 0); + final int y = wrapper.get(Type.INT, 1); + final int z = wrapper.get(Type.INT, 2); + tracker.updateEntityLocation(entityId, x, y, z, false); + }); + handler(wrapper -> { + final EntityTracker entityTracker = wrapper.user().get(EntityTracker.class); + final Entity1_10Types.EntityType type = entityTracker.getTrackedEntities().get(wrapper.get(Type.VAR_INT, 0)); + + wrapper.set(Type.INT, 1, realignEntityY(type, wrapper.get(Type.INT, 1))); + }); + } + }); + this.registerClientbound(ClientboundPackets1_7_2.ENTITY_HEAD_LOOK, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT, Type.VAR_INT); // entity id + map(Type.BYTE); // head yaw + } + }); + this.registerClientbound(ClientboundPackets1_7_2.ATTACH_ENTITY, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // riding entity id + map(Type.INT); // vehicle entity id + map(Type.UNSIGNED_BYTE); // leash state + handler(wrapper -> { + final short leashState = wrapper.get(Type.UNSIGNED_BYTE, 0); + if (leashState == 0) { + final EntityTracker tracker = wrapper.user().get(EntityTracker.class); + final int ridingId = wrapper.get(Type.INT, 0); + final int vehicleId = wrapper.get(Type.INT, 1); + tracker.updateEntityAttachState(ridingId, vehicleId); + } + }); + } + }); + this.registerClientbound(ClientboundPackets1_7_2.ENTITY_METADATA, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT, Type.VAR_INT); // entity id + map(Types1_7_6.METADATA_LIST, Types1_8.METADATA_LIST); // metadata + handler(wrapper -> { + final EntityTracker tracker = wrapper.user().get(EntityTracker.class); + final List metadataList = wrapper.get(Types1_8.METADATA_LIST, 0); + final int entityID = wrapper.get(Type.VAR_INT, 0); + if (tracker.getTrackedEntities().containsKey(entityID)) { + tracker.updateEntityMetadata(entityID, metadataList); + MetadataRewriter.transform(tracker.getTrackedEntities().get(entityID), metadataList); + if (metadataList.isEmpty()) wrapper.cancel(); + } else { + wrapper.cancel(); + } + }); + } + }); + this.registerClientbound(ClientboundPackets1_7_2.ENTITY_EFFECT, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT, Type.VAR_INT); // entity id + map(Type.BYTE); // effect id + map(Type.BYTE); // amplifier + map(Type.SHORT, Type.VAR_INT); // duration + create(Type.BOOLEAN, false); // hide particles + } + }); + this.registerClientbound(ClientboundPackets1_7_2.REMOVE_ENTITY_EFFECT, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT, Type.VAR_INT); // entity id + map(Type.BYTE); // effect id + } + }); + this.registerClientbound(ClientboundPackets1_7_2.SET_EXPERIENCE, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.FLOAT); // experience bar + map(Type.SHORT, Type.VAR_INT); // level + map(Type.SHORT, Type.VAR_INT); // total experience + } + }); + this.registerClientbound(ClientboundPackets1_7_2.ENTITY_PROPERTIES, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT, Type.VAR_INT); // entity id + handler(wrapper -> { + final int amount = wrapper.passthrough(Type.INT); // count + for (int i = 0; i < amount; i++) { + wrapper.passthrough(Type.STRING); // id + wrapper.passthrough(Type.DOUBLE); // baseValue + final int modifierlength = wrapper.read(Type.SHORT); // modifier count + wrapper.write(Type.VAR_INT, modifierlength); + for (int j = 0; j < modifierlength; j++) { + wrapper.passthrough(Type.UUID); // modifier uuid + wrapper.passthrough(Type.DOUBLE); // modifier amount + wrapper.passthrough(Type.BYTE); // modifier operation + } + } + }); + } + }); + this.registerClientbound(ClientboundPackets1_7_2.CHUNK_DATA, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + final Chunk chunk = wrapper.read(new Chunk1_7_6Type(wrapper.user().get(ClientWorld.class))); + wrapper.user().get(ChunkTracker.class).trackAndRemap(chunk); + wrapper.write(new Chunk1_8Type(wrapper.user().get(ClientWorld.class)), chunk); + }); + } + }); + this.registerClientbound(ClientboundPackets1_7_2.MULTI_BLOCK_CHANGE, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // chunkX + map(Type.INT); // chunkZ + map(Types1_7_6.BLOCK_CHANGE_RECORD_ARRAY, Type.BLOCK_CHANGE_RECORD_ARRAY); // blockChangeRecords + handler(wrapper -> { + final int chunkX = wrapper.get(Type.INT, 0); + final int chunkZ = wrapper.get(Type.INT, 1); + final BlockChangeRecord[] blockChangeRecords = wrapper.get(Type.BLOCK_CHANGE_RECORD_ARRAY, 0); + for (BlockChangeRecord record : blockChangeRecords) { + final int targetX = record.getSectionX() + (chunkX << 4); + final int targetY = record.getY(-1); + final int targetZ = record.getSectionZ() + (chunkZ << 4); + final IdAndData block = IdAndData.fromCompressedData(record.getBlockId()); + final Position pos = new Position(targetX, targetY, targetZ); + wrapper.user().get(ChunkTracker.class).trackAndRemap(pos, block); + record.setBlockId(block.toCompressedData()); + } + }); + } + }); + this.registerClientbound(ClientboundPackets1_7_2.BLOCK_CHANGE, new PacketRemapper() { + @Override + public void registerMap() { + map(Types1_7_6.POSITION_UBYTE, Type.POSITION); // position + handler(wrapper -> { + final int blockId = wrapper.read(Type.VAR_INT); // block id + final int data = wrapper.read(Type.UNSIGNED_BYTE); // block data + final Position pos = wrapper.get(Type.POSITION, 0); // position + final IdAndData block = new IdAndData(blockId, data); + wrapper.user().get(ChunkTracker.class).trackAndRemap(pos, block); + wrapper.write(Type.VAR_INT, block.toCompressedData()); + }); + } + }); + this.registerClientbound(ClientboundPackets1_7_2.BLOCK_ACTION, new PacketRemapper() { + @Override + public void registerMap() { + map(Types1_7_6.POSITION_SHORT, Type.POSITION); // position + map(Type.UNSIGNED_BYTE); // type + map(Type.UNSIGNED_BYTE); // data + map(Type.VAR_INT); // block id + } + }); + this.registerClientbound(ClientboundPackets1_7_2.BLOCK_BREAK_ANIMATION, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.VAR_INT); // entity id + map(Types1_7_6.POSITION_INT, Type.POSITION); // position + map(Type.BYTE); // progress + } + }); + this.registerClientbound(ClientboundPackets1_7_2.MAP_BULK_CHUNK, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + final Chunk[] chunks = wrapper.read(new ChunkBulk1_7_6Type(wrapper.user().get(ClientWorld.class))); + for (Chunk chunk : chunks) { + wrapper.user().get(ChunkTracker.class).trackAndRemap(chunk); + } + wrapper.write(new ChunkBulk1_8Type(wrapper.user().get(ClientWorld.class)), chunks); + }); + } + }); + this.registerClientbound(ClientboundPackets1_7_2.EXPLOSION, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.FLOAT); // x + map(Type.FLOAT); // y + map(Type.FLOAT); // z + map(Type.FLOAT); // radius + map(Type.INT); // record count + handler(wrapper -> { + final int x = wrapper.get(Type.FLOAT, 0).intValue(); + final int y = wrapper.get(Type.FLOAT, 1).intValue(); + final int z = wrapper.get(Type.FLOAT, 2).intValue(); + final int recordCount = wrapper.get(Type.INT, 0); + final ChunkTracker chunkTracker = wrapper.user().get(ChunkTracker.class); + for (int i = 0; i < recordCount; i++) { + final Position pos = new Position(x + wrapper.passthrough(Type.BYTE), y + wrapper.passthrough(Type.BYTE), z + wrapper.passthrough(Type.BYTE)); + chunkTracker.trackAndRemap(pos, new IdAndData(0, 0)); + } + }); + map(Type.FLOAT); // velocity x + map(Type.FLOAT); // velocity y + map(Type.FLOAT); // velocity z + } + }); + this.registerClientbound(ClientboundPackets1_7_2.EFFECT, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + int effectId = wrapper.read(Type.INT); // effect id + final Position pos = wrapper.read(Types1_7_6.POSITION_UBYTE); // position + int data = wrapper.read(Type.INT); // data + final boolean disableRelativeVolume = wrapper.read(Type.BOOLEAN); // server wide + + if (!disableRelativeVolume && effectId == 2006) { // block dust effect + wrapper.setPacketType(ClientboundPackets1_8.SPAWN_PARTICLE); + final Random rnd = new Random(); + final ChunkTracker chunkTracker = wrapper.user().get(ChunkTracker.class); + final IdAndData block = chunkTracker.getBlockNotNull(pos); + if (block.id != 0) { + double var21 = Math.min(0.2F + (float) data / 15.0F, 10.0F); + if (var21 > 2.5D) var21 = 2.5D; + final float var25 = randomFloatClamp(rnd, 0.0F, ((float) Math.PI * 2F)); + final double var26 = randomFloatClamp(rnd, 0.75F, 1.0F); + + final float offsetY = (float) (0.20000000298023224D + var21 / 100.0D); + final float offsetX = (float) (Math.cos(var25) * 0.2F * var26 * var26 * (var21 + 0.2D)); + final float offsetZ = (float) (Math.sin(var25) * 0.2F * var26 * var26 * (var21 + 0.2D)); + final int amount = (int) (150.0D * var21); + + wrapper.write(Type.INT, Particle.BLOCK_DUST.ordinal()); + wrapper.write(Type.BOOLEAN, false); // longDistance + wrapper.write(Type.FLOAT, pos.x() + 0.5F); + wrapper.write(Type.FLOAT, pos.y() + 1.0F); + wrapper.write(Type.FLOAT, pos.z() + 0.5F); + wrapper.write(Type.FLOAT, offsetX); + wrapper.write(Type.FLOAT, offsetY); + wrapper.write(Type.FLOAT, offsetZ); + wrapper.write(Type.FLOAT, 0.15000000596046448F); // particleSpeed + wrapper.write(Type.INT, amount); + wrapper.write(Type.VAR_INT, block.id | (block.data << 12)); + } else { + wrapper.cancel(); + } + } else { + if (!disableRelativeVolume && effectId == 1003) { // door_open + if (Math.random() > 0.5) { + effectId = 1006; // door_close + } + } else if (!disableRelativeVolume && effectId == 2001) { // block break effect + final ChunkTracker chunkTracker = wrapper.user().get(ChunkTracker.class); + final int blockID = data & 4095; + final int blockData = data >> 12 & 255; + final IdAndData block = new IdAndData(blockID, blockData); + chunkTracker.remapBlockParticle(block); + data = block.id | (block.data << 12); + } + + wrapper.write(Type.INT, effectId); + wrapper.write(Type.POSITION, pos); + wrapper.write(Type.INT, data); + wrapper.write(Type.BOOLEAN, disableRelativeVolume); + } + }); + } + }); + this.registerClientbound(ClientboundPackets1_7_2.SPAWN_PARTICLE, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + final String[] parts = wrapper.read(Type.STRING).split("_", 3); + Particle particle = Particle.find(parts[0]); + if (particle == null) { + particle = Particle.BARRIER; + ViaLegacy.getPlatform().getLogger().warning("Could not find 1.8 particle for " + Arrays.toString(parts)); + } + wrapper.write(Type.INT, particle.ordinal()); // particle id + wrapper.write(Type.BOOLEAN, false); // long distance + wrapper.passthrough(Type.FLOAT); // x + wrapper.passthrough(Type.FLOAT); // y + wrapper.passthrough(Type.FLOAT); // z + wrapper.passthrough(Type.FLOAT); // offset x + wrapper.passthrough(Type.FLOAT); // offset y + wrapper.passthrough(Type.FLOAT); // offset z + wrapper.passthrough(Type.FLOAT); // speed + wrapper.passthrough(Type.INT); // amount + + if (particle == Particle.ICON_CRACK) { + final int id = Integer.parseInt(parts[1]); + int damage = 0; + if (parts.length > 2) damage = Integer.parseInt(parts[2]); + final DataItem item = new DataItem(id, (byte) 1, (short) damage, null); + ITEM_REWRITER.rewriteRead(item); + wrapper.write(Type.VAR_INT, item.identifier()); // particle data + if (item.data() != 0) + wrapper.write(Type.VAR_INT, (int) item.data()); // particle data + } else if (particle == Particle.BLOCK_CRACK || particle == Particle.BLOCK_DUST) { + final int id = Integer.parseInt(parts[1]); + final int metadata = Integer.parseInt(parts[2]); + final IdAndData block = new IdAndData(id, metadata); + wrapper.user().get(ChunkTracker.class).remapBlockParticle(block); + wrapper.write(Type.VAR_INT, block.id | block.data << 12); // particle data + } else if (particle.extra > 0) + throw new IllegalStateException("Tried to write particle which requires extra data, but no handler was found"); + }); + } + }); + this.registerClientbound(ClientboundPackets1_7_2.GAME_EVENT, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.UNSIGNED_BYTE); // reason + map(Type.FLOAT); // value + handler(wrapper -> { + if (wrapper.get(Type.UNSIGNED_BYTE, 0) == 3) { + final PacketWrapper chatMessage = PacketWrapper.create(ClientboundPackets1_8.CHAT_MESSAGE, wrapper.user()); + chatMessage.write(Type.STRING, LEGACY_TO_JSON.transform(chatMessage, "Your game mode has been updated")); // message + chatMessage.write(Type.BYTE, (byte) 0); // position + chatMessage.send(Protocol1_8to1_7_6_10.class); + } + }); + } + }); + this.registerClientbound(ClientboundPackets1_7_2.OPEN_WINDOW, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + final short windowId = wrapper.passthrough(Type.UNSIGNED_BYTE); // window id + final short windowType = wrapper.read(Type.UNSIGNED_BYTE); // window type + String title = wrapper.read(Type.STRING); // title + short slots = wrapper.read(Type.UNSIGNED_BYTE); // slots + boolean useProvidedWindowTitle = wrapper.read(Type.BOOLEAN); // use provided title + + wrapper.user().get(WindowTracker.class).types.put(windowId, windowType); + + final String inventoryName; + switch (windowType) { + case 0: + inventoryName = "minecraft:chest"; + break; + case 1: + inventoryName = "minecraft:crafting_table"; + break; + case 2: + inventoryName = "minecraft:furnace"; + break; + case 3: + inventoryName = "minecraft:dispenser"; + break; + case 4: + inventoryName = "minecraft:enchanting_table"; + break; + case 5: + inventoryName = "minecraft:brewing_stand"; + break; + case 6: + inventoryName = "minecraft:villager"; + if (!useProvidedWindowTitle || title.isEmpty()) { + title = "entity.Villager.name"; + useProvidedWindowTitle = false; + } + break; + case 7: + inventoryName = "minecraft:beacon"; + break; + case 8: + inventoryName = "minecraft:anvil"; + break; + case 9: + inventoryName = "minecraft:hopper"; + break; + case 10: + inventoryName = "minecraft:dropper"; + break; + case 11: + inventoryName = "EntityHorse"; + break; + default: + throw new IllegalArgumentException("Unknown window type: " + windowType); + } + + if (windowType == 1/*crafting_table*/ || windowType == 4/*enchanting_table*/ || windowType == 8/*anvil*/) { + slots = 0; + } + + if (useProvidedWindowTitle) { + title = LEGACY_TO_JSON.transform(wrapper, title); + } else { + title = LEGACY_TO_JSON_TRANSLATE.transform(wrapper, title); + } + + wrapper.write(Type.STRING, inventoryName); + wrapper.write(Type.STRING, title); + wrapper.write(Type.UNSIGNED_BYTE, slots); + if (windowType == 11) wrapper.passthrough(Type.INT); // entity id + }); + } + }); + this.registerClientbound(ClientboundPackets1_7_2.SET_SLOT, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + final short windowId = wrapper.read(Type.BYTE); // window id + wrapper.write(Type.UNSIGNED_BYTE, windowId); // actually wrong, should by BYTE but Via uses U_BYTE + short slot = wrapper.read(Type.SHORT); // slot + final short windowType = wrapper.user().get(WindowTracker.class).get(windowId); + if (windowType == 4/*enchanting_table*/ && slot >= 1) slot += 1; + wrapper.write(Type.SHORT, slot); + }); + map(Types1_7_6.COMPRESSED_ITEM, Type.ITEM); // item + handler(wrapper -> ITEM_REWRITER.rewriteRead(wrapper.get(Type.ITEM, 0))); + } + }); + this.registerClientbound(ClientboundPackets1_7_2.WINDOW_ITEMS, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + final short windowId = wrapper.passthrough(Type.UNSIGNED_BYTE); // window id + final short windowType = wrapper.user().get(WindowTracker.class).get(windowId); + Item[] items = wrapper.read(Types1_7_6.COMPRESSED_ITEM_ARRAY); // items + if (windowType == 4/*enchanting_table*/) { + final Item[] old = items; + items = new Item[old.length + 1]; + items[0] = old[0]; + System.arraycopy(old, 1, items, 2, old.length - 1); + items[1] = new DataItem(351/*lapis_lazuli*/, (byte) 3, (short) 4, null); + } + for (Item item : items) { + ITEM_REWRITER.rewriteRead(item); + } + wrapper.write(Type.ITEM_ARRAY, items); + }); + } + }); + this.registerClientbound(ClientboundPackets1_7_2.WINDOW_PROPERTY, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.UNSIGNED_BYTE); // window id + map(Type.SHORT); // progress bar id + map(Type.SHORT); // progress bar value + handler(wrapper -> { + final short windowId = wrapper.get(Type.UNSIGNED_BYTE, 0); + short progressBar = wrapper.get(Type.SHORT, 0); + final short windowType = wrapper.user().get(WindowTracker.class).get(windowId); + if (windowType == 2) { // furnace + switch (progressBar) { + case 0: { // cookTime + progressBar = 2; + final PacketWrapper windowProperty = PacketWrapper.create(ClientboundPackets1_8.WINDOW_PROPERTY, wrapper.user()); + windowProperty.write(Type.UNSIGNED_BYTE, windowId); + windowProperty.write(Type.SHORT, (short) 3); + windowProperty.write(Type.SHORT, (short) 200); + windowProperty.send(Protocol1_8to1_7_6_10.class); + break; + } + case 1: { // furnaceBurnTime + progressBar = 0; + break; + } + case 2: { // currentItemBurnTime + progressBar = 1; + break; + } + } + wrapper.set(Type.SHORT, 0, progressBar); + } + }); + } + }); + this.registerClientbound(ClientboundPackets1_7_2.UPDATE_SIGN, new PacketRemapper() { + @Override + public void registerMap() { + map(Types1_7_6.POSITION_SHORT, Type.POSITION); // position + map(LEGACY_TO_JSON); // line 1 + map(LEGACY_TO_JSON); // line 2 + map(LEGACY_TO_JSON); // line 3 + map(LEGACY_TO_JSON); // line 4 + } + }); + this.registerClientbound(ClientboundPackets1_7_2.MAP_DATA, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + final int id = wrapper.passthrough(Type.VAR_INT); // map id + final byte[] data = wrapper.read(Type.SHORT_BYTE_ARRAY); // data + + final MapStorage mapStorage = wrapper.user().get(MapStorage.class); + MapData mapData = mapStorage.getMapData(id); + if (mapData == null) mapStorage.putMapData(id, mapData = new MapData()); + + if (data[0] == 1) { + final int count = (data.length - 1) / 3; + mapData.mapIcons = new MapIcon[count]; + + for (int i = 0; i < count; i++) { + mapData.mapIcons[i] = new MapIcon((byte) (data[i * 3 + 1] >> 4), (byte) (data[i * 3 + 1] & 0xF), data[i * 3 + 2], data[i * 3 + 3]); + } + } else if (data[0] == 2) { + mapData.scale = data[1]; + } + + wrapper.write(Type.BYTE, mapData.scale); + wrapper.write(Type.VAR_INT, mapData.mapIcons.length); + for (MapIcon mapIcon : mapData.mapIcons) { + wrapper.write(Type.BYTE, (byte) (mapIcon.direction << 4 | mapIcon.type & 0xF)); + wrapper.write(Type.BYTE, mapIcon.x); + wrapper.write(Type.BYTE, mapIcon.z); + } + + if (data[0] == 0) { + final byte x = data[1]; + final byte z = data[2]; + final int rows = data.length - 3; + final byte[] newData = new byte[rows]; + System.arraycopy(data, 3, newData, 0, rows); + + wrapper.write(Type.BYTE, (byte) 1); + wrapper.write(Type.BYTE, (byte) rows); + wrapper.write(Type.BYTE, x); + wrapper.write(Type.BYTE, z); + wrapper.write(Type.BYTE_ARRAY_PRIMITIVE, newData); + } else { + wrapper.write(Type.BYTE, (byte) 0); + } + }); + } + }); + this.registerClientbound(ClientboundPackets1_7_2.BLOCK_ENTITY_DATA, new PacketRemapper() { + @Override + public void registerMap() { + map(Types1_7_6.POSITION_SHORT, Type.POSITION); // position + map(Type.UNSIGNED_BYTE); // type + map(Types1_7_6.COMPRESSED_NBT, Type.NBT); // data + } + }); + this.registerClientbound(ClientboundPackets1_7_2.OPEN_SIGN_EDITOR, new PacketRemapper() { + @Override + public void registerMap() { + map(Types1_7_6.POSITION_INT, Type.POSITION); // position + } + }); + this.registerClientbound(ClientboundPackets1_7_2.PLAYER_INFO, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + final String name = wrapper.read(Type.STRING); // name + final boolean online = wrapper.read(Type.BOOLEAN); // online + final short ping = wrapper.read(Type.SHORT); // ping + + final TablistStorage tablistStorage = wrapper.user().get(TablistStorage.class); + TabListEntry entry = tablistStorage.tablist.get(name); + + if (entry == null && online) { // add entry + tablistStorage.tablist.put(name, entry = new TabListEntry(name, ping)); + wrapper.write(Type.VAR_INT, 0); // action + wrapper.write(Type.VAR_INT, 1); // count + wrapper.write(Type.UUID, entry.gameProfile.uuid); // uuid + wrapper.write(Type.STRING, entry.gameProfile.userName); // name + wrapper.write(Type.VAR_INT, 0); // properties count + wrapper.write(Type.VAR_INT, 0); // gamemode + wrapper.write(Type.VAR_INT, entry.ping); // ping + wrapper.write(Type.OPTIONAL_STRING, null); // display name + } else if (entry != null && !online) { // remove entry + tablistStorage.tablist.remove(name); + wrapper.write(Type.VAR_INT, 4); // action + wrapper.write(Type.VAR_INT, 1); // count + wrapper.write(Type.UUID, entry.gameProfile.uuid); // uuid + } else if (entry != null) { // update ping + entry.ping = ping; + wrapper.write(Type.VAR_INT, 2); // action + wrapper.write(Type.VAR_INT, 1); // count + wrapper.write(Type.UUID, entry.gameProfile.uuid); // uuid + wrapper.write(Type.VAR_INT, entry.ping); // ping + } else { + wrapper.cancel(); + } + }); + } + }); + this.registerClientbound(ClientboundPackets1_7_2.SCOREBOARD_OBJECTIVE, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.STRING); // name + handler(wrapper -> { + final String value = wrapper.read(Type.STRING); // value + final byte mode = wrapper.passthrough(Type.BYTE); // mode + + if (mode == 0/*CREATE*/ || mode == 2/*UPDATE*/) { + wrapper.write(Type.STRING, value); + wrapper.write(Type.STRING, "integer"); + } + }); + } + }); + this.registerClientbound(ClientboundPackets1_7_2.UPDATE_SCORE, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.STRING); // name + handler(wrapper -> { + final byte mode = wrapper.passthrough(Type.BYTE); // mode + if (mode == 0/*UPDATE*/) { + wrapper.passthrough(Type.STRING); // objective + wrapper.write(Type.VAR_INT, wrapper.read(Type.INT)); // score + } else { + wrapper.write(Type.STRING, ""); + } + }); + } + }); + this.registerClientbound(ClientboundPackets1_7_2.TEAMS, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.STRING); // name + handler(wrapper -> { + final byte mode = wrapper.passthrough(Type.BYTE); // mode + if (mode == 0 || mode == 2) { + wrapper.passthrough(Type.STRING); // display name + wrapper.passthrough(Type.STRING); // prefix + wrapper.passthrough(Type.STRING); // suffix + wrapper.passthrough(Type.BYTE); // flags + wrapper.write(Type.STRING, "always"); // nametag visibility + wrapper.write(Type.BYTE, (byte) 0); // color + } + if (mode == 0 || mode == 3 || mode == 4) { + final int count = wrapper.read(Type.SHORT); // count + final String[] playerNames = new String[count]; + for (int i = 0; i < count; i++) { + playerNames[i] = wrapper.read(Type.STRING); // player name + } + wrapper.write(Type.STRING_ARRAY, playerNames); + } + }); + } + }); + this.registerClientbound(ClientboundPackets1_7_2.PLUGIN_MESSAGE, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.STRING); // channel + handler(wrapper -> { + final String channel = wrapper.get(Type.STRING, 0); + wrapper.read(Type.SHORT); // length + + switch (channel) { + case "MC|Brand": { + final byte[] data = wrapper.read(Type.REMAINING_BYTES); + final String brand = new String(data, StandardCharsets.UTF_8); + wrapper.write(Type.STRING, brand); + break; + } + case "MC|TrList": + wrapper.passthrough(Type.INT); // window id + final int count = wrapper.passthrough(Type.UNSIGNED_BYTE); // count + for (int i = 0; i < count; i++) { + Item item = wrapper.read(Types1_7_6.COMPRESSED_ITEM); + ITEM_REWRITER.rewriteRead(item); + wrapper.write(Type.ITEM, item); // item 1 + + item = wrapper.read(Types1_7_6.COMPRESSED_ITEM); + ITEM_REWRITER.rewriteRead(item); + wrapper.write(Type.ITEM, item); // item 3 + + final boolean has3Items = wrapper.passthrough(Type.BOOLEAN); // has 3 items + if (has3Items) { + item = wrapper.read(Types1_7_6.COMPRESSED_ITEM); + ITEM_REWRITER.rewriteRead(item); + wrapper.write(Type.ITEM, item); // item 2 + } + + wrapper.passthrough(Type.BOOLEAN); // unavailable + wrapper.write(Type.INT, 0); // uses + wrapper.write(Type.INT, Integer.MAX_VALUE); // max uses + } + break; + case "MC|RPack": { + final byte[] data = wrapper.read(Type.REMAINING_BYTES); + final String resourcePackURL = new String(data, StandardCharsets.UTF_8); + wrapper.setPacketType(ClientboundPackets1_8.RESOURCE_PACK); + wrapper.clearPacket(); + wrapper.write(Type.STRING, resourcePackURL); + wrapper.write(Type.STRING, "legacy"); + break; + } + } + }); + } + }); + + this.registerServerbound(State.LOGIN, ServerboundLoginPackets.ENCRYPTION_KEY.getId(), ServerboundLoginPackets.ENCRYPTION_KEY.getId(), new PacketRemapper() { + @Override + public void registerMap() { + map(Type.BYTE_ARRAY_PRIMITIVE, Type.SHORT_BYTE_ARRAY); // shared secret + map(Type.BYTE_ARRAY_PRIMITIVE, Type.SHORT_BYTE_ARRAY); // verify token + } + }); + this.registerServerbound(ServerboundPackets1_8.KEEP_ALIVE, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.VAR_INT, Type.INT); // key + } + }); + this.registerServerbound(ServerboundPackets1_8.INTERACT_ENTITY, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.VAR_INT, Type.INT); // entity id + handler(wrapper -> { + final int mode = wrapper.read(Type.VAR_INT); // mode + if (mode == 2) { // interactAt + wrapper.write(Type.BYTE, (byte) 0); // mode + wrapper.read(Type.FLOAT); // offsetX + wrapper.read(Type.FLOAT); // offsetY + wrapper.read(Type.FLOAT); // offsetZ + final EntityTracker entityTracker = wrapper.user().get(EntityTracker.class); + final Entity1_10Types.EntityType entityType = entityTracker.getTrackedEntities().get(wrapper.get(Type.INT, 0)); + if (entityType == null || !entityType.isOrHasParent(Entity1_10Types.EntityType.ARMOR_STAND)) { + wrapper.cancel(); + } + } else { + wrapper.write(Type.BYTE, (byte) mode); // mode + } + }); + } + }); + this.registerServerbound(ServerboundPackets1_8.PLAYER_POSITION, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.DOUBLE); // x + map(Type.DOUBLE); // y + handler(wrapper -> wrapper.write(Type.DOUBLE, wrapper.get(Type.DOUBLE, 1) + 1.62)); // stance + map(Type.DOUBLE); // z + map(Type.BOOLEAN); // onGround + } + }); + this.registerServerbound(ServerboundPackets1_8.PLAYER_POSITION_AND_ROTATION, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.DOUBLE); // x + map(Type.DOUBLE); // y + handler(wrapper -> wrapper.write(Type.DOUBLE, wrapper.get(Type.DOUBLE, 1) + 1.62)); // stance + map(Type.DOUBLE); // z + map(Type.FLOAT); // yaw + map(Type.FLOAT); // pitch + map(Type.BOOLEAN); // onGround + } + }); + this.registerServerbound(ServerboundPackets1_8.PLAYER_DIGGING, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.VAR_INT, Type.UNSIGNED_BYTE); // status + map(Type.POSITION, Types1_7_6.POSITION_UBYTE); // position + map(Type.UNSIGNED_BYTE); // direction + } + }); + this.registerServerbound(ServerboundPackets1_8.PLAYER_BLOCK_PLACEMENT, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.POSITION, Types1_7_6.POSITION_UBYTE); // position + map(Type.UNSIGNED_BYTE); // direction + map(Type.ITEM, Types1_7_6.COMPRESSED_ITEM); // item + map(Type.UNSIGNED_BYTE); // offset x + map(Type.UNSIGNED_BYTE); // offset y + map(Type.UNSIGNED_BYTE); // offset z + handler(wrapper -> { + final short direction = wrapper.get(Type.UNSIGNED_BYTE, 0); + final Item item = wrapper.get(Types1_7_6.COMPRESSED_ITEM, 0); + ITEM_REWRITER.rewriteWrite(item); + + if (item != null && item.identifier() == ItemList1_6.writtenBook.itemID && direction == 255) { // If placed item is a book then cancel it and send a MC|BOpen to the client + final PacketWrapper openBook = PacketWrapper.create(ClientboundPackets1_8.PLUGIN_MESSAGE, wrapper.user()); + openBook.write(Type.STRING, "MC|BOpen"); // channel + openBook.write(Type.REMAINING_BYTES, new byte[0]); // data + openBook.send(Protocol1_8to1_7_6_10.class); + wrapper.cancel(); + } + }); + } + }); + this.registerServerbound(ServerboundPackets1_8.ANIMATION, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + final EntityTracker entityTracker = wrapper.user().get(EntityTracker.class); + wrapper.write(Type.INT, entityTracker.getPlayerID()); // entity id + wrapper.write(Type.BYTE, (byte) 1); // animation + }); + } + }); + this.registerServerbound(ServerboundPackets1_8.ENTITY_ACTION, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.VAR_INT, Type.INT); // entity id + map(Type.VAR_INT, Type.BYTE, action -> (byte) (action + 1)); // action id + map(Type.VAR_INT, Type.INT); // action parameter + } + }); + this.registerServerbound(ServerboundPackets1_8.STEER_VEHICLE, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.FLOAT); // sideways + map(Type.FLOAT); // forwards + handler(wrapper -> { + final byte flags = wrapper.read(Type.BYTE); // flags + wrapper.write(Type.BOOLEAN, (flags & 1) > 0); // jumping + wrapper.write(Type.BOOLEAN, (flags & 2) > 0); // sneaking + }); + } + }); + this.registerServerbound(ServerboundPackets1_8.CLICK_WINDOW, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + final short windowId = wrapper.read(Type.UNSIGNED_BYTE); // window id + wrapper.write(Type.BYTE, (byte) windowId); // actually wrong, should be BYTE but Via uses U_BYTE + final short slot = wrapper.passthrough(Type.SHORT); // slot + + final short windowType = wrapper.user().get(WindowTracker.class).get(windowId); + if (windowType == 4/*enchanting_table*/) { + if (slot == 1) { + final PacketWrapper resetHandItem = PacketWrapper.create(ClientboundPackets1_8.SET_SLOT, wrapper.user()); + resetHandItem.write(Type.UNSIGNED_BYTE, (short) -1); // window id + resetHandItem.write(Type.SHORT, (short) 0); // slot + resetHandItem.write(Type.ITEM, new DataItem(-1, (byte) 0, (short) 0, null)); + resetHandItem.send(Protocol1_8to1_7_6_10.class); + final PacketWrapper setLapisSlot = PacketWrapper.create(ClientboundPackets1_8.SET_SLOT, wrapper.user()); + setLapisSlot.write(Type.UNSIGNED_BYTE, windowId); + setLapisSlot.write(Type.SHORT, slot); + setLapisSlot.write(Type.ITEM, new DataItem(351/*lapis_lazuli*/, (byte) 3, (short) 4, null)); + setLapisSlot.send(Protocol1_8to1_7_6_10.class); + wrapper.cancel(); + } else if (slot > 1) { + wrapper.set(Type.SHORT, 0, (short) (slot - 1)); + } + } + }); + map(Type.BYTE); // button + map(Type.SHORT); // transaction id + map(Type.BYTE); // action + map(Type.ITEM, Types1_7_6.COMPRESSED_ITEM); // item + handler(wrapper -> ITEM_REWRITER.rewriteWrite(wrapper.get(Types1_7_6.COMPRESSED_ITEM, 0))); + } + }); + this.registerServerbound(ServerboundPackets1_8.CREATIVE_INVENTORY_ACTION, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.SHORT); // slot + map(Type.ITEM, Types1_7_6.COMPRESSED_ITEM); // item + handler(wrapper -> ITEM_REWRITER.rewriteWrite(wrapper.get(Types1_7_6.COMPRESSED_ITEM, 0))); + } + }); + this.registerServerbound(ServerboundPackets1_8.UPDATE_SIGN, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.POSITION, Types1_7_6.POSITION_SHORT); // position + handler(wrapper -> { + wrapper.cancel(); + // TODO: Wait for mcstructs to have a json to legacy string method + /*for (int i = 0; i < 4; i++) { + final JsonElement component = wrapper.read(Type.COMPONENT); // line + String text = ChatUtil.jsonToLegacy(new Gson().toJson(component)); + if (text.length() > 15) text = text.substring(0, 15); + wrapper.write(Type.STRING, text); + }*/ + }); + } + }); + this.registerServerbound(ServerboundPackets1_8.TAB_COMPLETE, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + final String text = wrapper.read(Type.STRING); // text + wrapper.clearPacket(); // remove optional blockpos + wrapper.write(Type.STRING, text); + }); + } + }); + this.registerServerbound(ServerboundPackets1_8.CLIENT_SETTINGS, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.STRING); // language + map(Type.BYTE); // view distance + map(Type.BYTE); // chat visibility + map(Type.BOOLEAN); // enable colors + create(Type.BYTE, (byte) 2); // difficulty (unused) + map(Type.UNSIGNED_BYTE, Type.BOOLEAN, flags -> (flags & 1) == 1); // skin flags -> show cape + } + }); + this.registerServerbound(ServerboundPackets1_8.PLUGIN_MESSAGE, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.STRING); // channel + handler(wrapper -> { + final String channel = wrapper.get(Type.STRING, 0); + + if (ViaLegacy.getConfig().isIgnoreLong1_8ChannelNames() && channel.length() > 16) { + if (!Via.getConfig().isSuppressConversionWarnings()) { + ViaLegacy.getPlatform().getLogger().warning("Ignoring incoming plugin channel, as it is longer than 16 characters: '" + channel + "'"); + } + wrapper.cancel(); + return; + } + + final PacketWrapper lengthPacketWrapper = PacketWrapper.create(null, wrapper.user()); + final ByteBuf lengthBuffer = Unpooled.buffer(); + + switch (channel) { + case "MC|BEdit": + case "MC|BSign": + final Item item = wrapper.read(Type.ITEM); // book + ITEM_REWRITER.rewriteWrite(item); + + lengthPacketWrapper.write(Types1_7_6.COMPRESSED_ITEM, item); + lengthPacketWrapper.writeToBuffer(lengthBuffer); + + wrapper.write(Type.SHORT, (short) lengthBuffer.readableBytes()); // length + wrapper.write(Types1_7_6.COMPRESSED_ITEM, item); // book + break; + case "MC|TrSel": + final int selectedTrade = wrapper.read(Type.INT); // selected trade + + lengthPacketWrapper.write(Type.INT, selectedTrade); + lengthPacketWrapper.writeToBuffer(lengthBuffer); + + wrapper.write(Type.SHORT, (short) lengthBuffer.readableBytes()); // length + wrapper.write(Type.INT, selectedTrade); // selected trade + break; + case "MC|Brand": + case "MC|ItemName": + final String content = wrapper.read(Type.STRING); // client brand or item name + + lengthPacketWrapper.write(Type.REMAINING_BYTES, content.getBytes(StandardCharsets.UTF_8)); + lengthPacketWrapper.writeToBuffer(lengthBuffer); + + wrapper.write(Type.SHORT, (short) lengthBuffer.readableBytes()); // length + wrapper.write(Type.REMAINING_BYTES, content.getBytes(StandardCharsets.UTF_8)); // client brand or item name + break; + case "MC|AdvCdm": + final byte type = wrapper.read(Type.BYTE); // command block type (0 = Block, 1 = Minecart) + final int posXOrEntityId; + final int posY; + final int posZ; + if (type == 0) { + posXOrEntityId = wrapper.read(Type.INT); // x + posY = wrapper.read(Type.INT); // y + posZ = wrapper.read(Type.INT); // z + } else if (type == 1) { + posXOrEntityId = wrapper.read(Type.INT); // entity id + posY = 0; + posZ = 0; + } else { + ViaLegacy.getPlatform().getLogger().warning("Unknown 1.8 command block type: " + type); + wrapper.cancel(); + lengthBuffer.release(); + return; + } + final String command = wrapper.read(Type.STRING); // command + wrapper.read(Type.BOOLEAN); // track output + + lengthPacketWrapper.write(Type.BYTE, type); + if (type == 0) { + lengthPacketWrapper.write(Type.INT, posXOrEntityId); + lengthPacketWrapper.write(Type.INT, posY); + lengthPacketWrapper.write(Type.INT, posZ); + } else { + lengthPacketWrapper.write(Type.INT, posXOrEntityId); + } + lengthPacketWrapper.write(Type.STRING, command); + lengthPacketWrapper.writeToBuffer(lengthBuffer); + + wrapper.write(Type.SHORT, (short) lengthBuffer.readableBytes()); // length + wrapper.write(Type.BYTE, type); // type + if (type == 0) { + wrapper.write(Type.INT, posXOrEntityId); // x + wrapper.write(Type.INT, posY); // y + wrapper.write(Type.INT, posZ); // z + } else { + wrapper.write(Type.INT, posXOrEntityId); // entity id + } + wrapper.write(Type.STRING, command); // command + break; + case "MC|Beacon": + final int primaryEffect = wrapper.read(Type.INT); // primary effect + final int secondaryEffect = wrapper.read(Type.INT); // secondary effect + + lengthPacketWrapper.write(Type.INT, primaryEffect); + lengthPacketWrapper.write(Type.INT, secondaryEffect); + lengthPacketWrapper.writeToBuffer(lengthBuffer); + + wrapper.write(Type.SHORT, (short) lengthBuffer.readableBytes()); // length + wrapper.write(Type.INT, primaryEffect); // primary effect + wrapper.write(Type.INT, secondaryEffect); // secondary effect + break; + case "REGISTER": + case "UNREGISTER": + byte[] channels = wrapper.read(Type.REMAINING_BYTES); + + if (ViaLegacy.getConfig().isIgnoreLong1_8ChannelNames()) { + final String[] registeredChannels = new String(channels, StandardCharsets.UTF_8).split("\0"); + final List validChannels = new ArrayList<>(registeredChannels.length); + for (String registeredChannel : registeredChannels) { + if (registeredChannel.length() > 16) { + if (!Via.getConfig().isSuppressConversionWarnings()) { + ViaLegacy.getPlatform().getLogger().warning("Ignoring incoming plugin channel register of '" + registeredChannel + "', as it is longer than 16 characters"); + } + continue; + } + validChannels.add(registeredChannel); + } + if (validChannels.isEmpty()) { + wrapper.cancel(); + return; + } + channels = Joiner.on('\0').join(validChannels).getBytes(StandardCharsets.UTF_8); + } + + wrapper.write(Type.SHORT, (short) channels.length); // data length + wrapper.write(Type.REMAINING_BYTES, channels); // data + break; + default: + final byte[] data = wrapper.read(Type.REMAINING_BYTES); + + wrapper.write(Type.SHORT, (short) data.length); // data length + wrapper.write(Type.REMAINING_BYTES, data); // data + break; + } + lengthBuffer.release(); + }); + } + }); + this.cancelServerbound(ServerboundPackets1_8.SPECTATE); + this.cancelServerbound(ServerboundPackets1_8.RESOURCE_PACK_STATUS); + } + + private float randomFloatClamp(Random rnd, float min, float max) { + return min >= max ? min : rnd.nextFloat() * (max - min) + min; + } + + private int realignEntityY(final Entity1_10Types.EntityType type, final int y) { + float yPos = y / 32F; + float yOffset = 0F; + if (type == Entity1_10Types.ObjectType.FALLING_BLOCK.getType()) + yOffset = 0.98F / 2F; + if (type == Entity1_10Types.ObjectType.TNT_PRIMED.getType()) + yOffset = 0.98F / 2F; + if (type == Entity1_10Types.ObjectType.ENDER_CRYSTAL.getType()) + yOffset = 1F; + else if (type == Entity1_10Types.ObjectType.MINECART.getType()) + yOffset = 0.7F / 2F; + else if (type == Entity1_10Types.ObjectType.BOAT.getType()) + yOffset = 0.6F / 2F; + else if (type == Entity1_10Types.ObjectType.ITEM.getType()) + yOffset = 0.25F / 2F; + else if (type == Entity1_10Types.ObjectType.LEASH.getType()) + yOffset = 0.5F; + else if (type == Entity1_10Types.EntityType.EXPERIENCE_ORB) + yOffset = 0.5F / 2F; + return (int) Math.floor((yPos - yOffset) * 32F); + } + + @Override + public void register(ViaProviders providers) { + providers.require(GameProfileFetcher.class); + } + + @Override + public void init(UserConnection userConnection) { + userConnection.put(new TablistStorage(userConnection)); + userConnection.put(new WindowTracker(userConnection)); + userConnection.put(new EntityTracker(userConnection)); + userConnection.put(new MapStorage(userConnection)); + userConnection.put(new DimensionTracker(userConnection)); + if (!userConnection.has(ClientWorld.class)) { + userConnection.put(new ClientWorld(userConnection)); + } + userConnection.put(new ChunkTracker(userConnection)); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/chunks/ExtendedBlockStorage.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/chunks/ExtendedBlockStorage.java new file mode 100644 index 0000000..bc3f6cc --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/chunks/ExtendedBlockStorage.java @@ -0,0 +1,92 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.chunks; + +import com.viaversion.viaversion.api.minecraft.chunks.ChunkSection; +import com.viaversion.viaversion.api.minecraft.chunks.NibbleArray; + +public class ExtendedBlockStorage { + + private final byte[] blockLSBArray; + private NibbleArray blockMSBArray; + private final NibbleArray blockMetadataArray; + private final NibbleArray blockLightArray; + private NibbleArray skyLightArray; + + public ExtendedBlockStorage(final boolean skylight) { + this.blockLSBArray = new byte[4096]; + this.blockMetadataArray = new NibbleArray(this.blockLSBArray.length); + this.blockLightArray = new NibbleArray(this.blockLSBArray.length); + + if (skylight) { + this.skyLightArray = new NibbleArray(this.blockLSBArray.length); + } + } + + public int getBlockId(final int x, final int y, final int z) { + int value = this.blockLSBArray[ChunkSection.index(x, y, z)] & 255; + if (this.blockMSBArray != null) { + value |= this.blockMSBArray.get(x, y, z) << 8; + } + return value; + } + + public void setBlockId(final int x, final int y, final int z, final int value) { + this.blockLSBArray[ChunkSection.index(x, y, z)] = (byte) (value & 255); + if (value > 255) { + this.getOrCreateBlockMSBArray().set(x, y, z, (value & 0xF00) >> 8); + } else if (this.blockMSBArray != null) { + this.blockMSBArray.set(x, y, z, 0); + } + } + + public int getBlockMetadata(final int x, final int y, final int z) { + return this.blockMetadataArray.get(x, y, z); + } + + public void setBlockMetadata(final int x, final int y, final int z, final int value) { + this.blockMetadataArray.set(x, y, z, value); + } + + public int getBlockLight(final int x, final int y, final int z) { + return this.blockLightArray.get(x, y, z); + } + + public void setBlockLight(final int x, final int y, int z, final int value) { + this.blockLightArray.set(x, y, z, value); + } + + public int getSkyLight(final int x, final int y, final int z) { + return this.skyLightArray.get(x, y, z); + } + + public void setSkyLight(final int x, final int y, final int z, final int value) { + this.skyLightArray.set(x, y, z, value); + } + + public boolean hasBlockMSBArray() { + return this.blockMSBArray != null; + } + + public byte[] getBlockLSBArray() { + return this.blockLSBArray; + } + + public NibbleArray getOrCreateBlockMSBArray() { + if (this.blockMSBArray == null) { + return this.blockMSBArray = new NibbleArray(this.blockLSBArray.length); + } + return this.blockMSBArray; + } + + public NibbleArray getBlockMetadataArray() { + return this.blockMetadataArray; + } + + public NibbleArray getBlockLightArray() { + return this.blockLightArray; + } + + public NibbleArray getSkyLightArray() { + return this.skyLightArray; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/data/Particle.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/data/Particle.java new file mode 100644 index 0000000..f36cb72 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/data/Particle.java @@ -0,0 +1,74 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.data; + +import java.util.HashMap; + +public enum Particle { + + EXPLOSION_NORMAL("explode"), + EXPLOSION_LARGE("largeexplode"), + EXPLOSION_HUGE("hugeexplosion"), + FIREWORKS_SPARK("fireworksSpark"), + WATER_BUBBLE("bubble"), + WATER_SPLASH("splash"), + WATER_WAKE("wake"), + SUSPENDED("suspended"), + SUSPENDED_DEPTH("depthsuspend"), + CRIT("crit"), + CRIT_MAGIC("magicCrit"), + SMOKE_NORMAL("smoke"), + SMOKE_LARGE("largesmoke"), + SPELL("spell"), + SPELL_INSTANT("instantSpell"), + SPELL_MOB("mobSpell"), + SPELL_MOB_AMBIENT("mobSpellAmbient"), + SPELL_WITCH("witchMagic"), + DRIP_WATER("dripWater"), + DRIP_LAVA("dripLava"), + VILLAGER_ANGRY("angryVillager"), + VILLAGER_HAPPY("happyVillager"), + TOWN_AURA("townaura"), + NOTE("note"), + PORTAL("portal"), + ENCHANTMENT_TABLE("enchantmenttable"), + FLAME("flame"), + LAVA("lava"), + FOOTSTEP("footstep"), + CLOUD("cloud"), + REDSTONE("reddust"), + SNOWBALL("snowballpoof"), + SNOW_SHOVEL("snowshovel"), + SLIME("slime"), + HEART("heart"), + BARRIER("barrier"), + ICON_CRACK("iconcrack", 2), + BLOCK_CRACK("blockcrack", 1), + BLOCK_DUST("blockdust", 1), + WATER_DROP("droplet"), + ITEM_TAKE("take"), + MOB_APPEARANCE("mobappearance"); + + public final String name; + public final int extra; + + private static final HashMap particleMap = new HashMap<>(); + + Particle(String name) { + this(name, 0); + } + + Particle(String name, int extra) { + this.name = name; + this.extra = extra; + } + + public static Particle find(String part) { + return particleMap.get(part); + } + + static { + for (Particle particle : values()) { + particleMap.put(particle.name, particle); + } + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/metadata/MetaIndex1_8to1_7_6.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/metadata/MetaIndex1_8to1_7_6.java new file mode 100644 index 0000000..e1e3663 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/metadata/MetaIndex1_8to1_7_6.java @@ -0,0 +1,164 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.metadata; + +import com.viaversion.viaversion.api.minecraft.entities.Entity1_10Types; +import com.viaversion.viaversion.api.minecraft.metadata.types.MetaType1_8; +import com.viaversion.viaversion.util.Pair; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types.MetaType1_7_6; + +import java.util.HashMap; +import java.util.Optional; + +public enum MetaIndex1_8to1_7_6 { + + ENTITY_FLAGS(Entity1_10Types.EntityType.ENTITY, 0, MetaType1_7_6.Byte, MetaType1_8.Byte), + ENTITY_AIR(Entity1_10Types.EntityType.ENTITY, 1, MetaType1_7_6.Short, MetaType1_8.Short), + ENTITY_NAME_TAG(Entity1_10Types.EntityType.ENTITY, -1, null, 2, MetaType1_8.String), + ENTITY_NAME_TAG_VISIBILITY(Entity1_10Types.EntityType.ENTITY, -1, null, 3, MetaType1_8.Byte), + ENTITY_SILENT(Entity1_10Types.EntityType.ENTITY, -1, null, 4, MetaType1_8.Byte), + ENTITY_LIVING_HEALTH(Entity1_10Types.EntityType.ENTITY_LIVING, 6, MetaType1_7_6.Float, MetaType1_8.Float), + ENTITY_LIVING_POTION_EFFECT_COLOR(Entity1_10Types.EntityType.ENTITY_LIVING, 7, MetaType1_7_6.Int, MetaType1_8.Int), + ENTITY_LIVING_IS_POTION_EFFECT_AMBIENT(Entity1_10Types.EntityType.ENTITY_LIVING, 8, MetaType1_7_6.Byte, MetaType1_8.Byte), + ENTITY_LIVING_ARROWS(Entity1_10Types.EntityType.ENTITY_LIVING, 9, MetaType1_7_6.Byte, MetaType1_8.Byte), + ENTITY_LIVING_NAME_TAG(Entity1_10Types.EntityType.ENTITY_LIVING, 10, MetaType1_7_6.String, 2, MetaType1_8.String), + ENTITY_LIVING_NAME_TAG_VISIBILITY(Entity1_10Types.EntityType.ENTITY_LIVING, 11, MetaType1_7_6.Byte, 3, MetaType1_8.Byte), + ENTITY_LIVING_AI(Entity1_10Types.EntityType.ENTITY_LIVING, -1, null, 15, MetaType1_8.Byte), + ENTITY_AGEABLE_AGE(Entity1_10Types.EntityType.ENTITY_AGEABLE, 12, MetaType1_7_6.Int, MetaType1_8.Byte), + ARMOR_STAND_FLAGS(Entity1_10Types.EntityType.ARMOR_STAND, -1, null, 10, MetaType1_8.Byte), + ARMOR_STAND_HEAD_POSITION(Entity1_10Types.EntityType.ARMOR_STAND, -1, null, 11, MetaType1_8.Rotation), + ARMOR_STAND_BODY_POSITION(Entity1_10Types.EntityType.ARMOR_STAND, -1, null, 12, MetaType1_8.Rotation), + ARMOR_STAND_LEFT_ARM_POSITION(Entity1_10Types.EntityType.ARMOR_STAND, -1, null, 13, MetaType1_8.Rotation), + ARMOR_STAND_RIGHT_ARM_POSITION(Entity1_10Types.EntityType.ARMOR_STAND, -1, null, 14, MetaType1_8.Rotation), + ARMOR_STAND_LEFT_LEG_POSITION(Entity1_10Types.EntityType.ARMOR_STAND, -1, null, 15, MetaType1_8.Rotation), + ARMOR_STAND_RIGHT_LEG_POSITION(Entity1_10Types.EntityType.ARMOR_STAND, -1, null, 16, MetaType1_8.Rotation), + HUMAN_SKIN_FLAGS(Entity1_10Types.EntityType.ENTITY_HUMAN, 16, MetaType1_7_6.Byte, 10, MetaType1_8.Byte), + HUMAN_UNUSED(Entity1_10Types.EntityType.ENTITY_HUMAN, -1, null, 16, MetaType1_8.Byte), + HUMAN_ABSORPTION_HEATS(Entity1_10Types.EntityType.ENTITY_HUMAN, 17, MetaType1_7_6.Float, MetaType1_8.Float), + HUMAN_SCORE(Entity1_10Types.EntityType.ENTITY_HUMAN, 18, MetaType1_7_6.Int, MetaType1_8.Int), + HORSE_FLAGS(Entity1_10Types.EntityType.HORSE, 16, MetaType1_7_6.Int, MetaType1_8.Int), + HORSE_TYPE(Entity1_10Types.EntityType.HORSE, 19, MetaType1_7_6.Byte, MetaType1_8.Byte), + HORSE_COLOR(Entity1_10Types.EntityType.HORSE, 20, MetaType1_7_6.Int, MetaType1_8.Int), + HORSE_OWNER(Entity1_10Types.EntityType.HORSE, 21, MetaType1_7_6.String, MetaType1_8.String), + HORSE_ARMOR(Entity1_10Types.EntityType.HORSE, 22, MetaType1_7_6.Int, MetaType1_8.Int), + BAT_HANGING(Entity1_10Types.EntityType.BAT, 16, MetaType1_7_6.Byte, MetaType1_8.Byte), + TAMEABLE_FLAGS(Entity1_10Types.EntityType.ENTITY_TAMEABLE_ANIMAL, 16, MetaType1_7_6.Byte, MetaType1_8.Byte), + TAMEABLE_OWNER(Entity1_10Types.EntityType.ENTITY_TAMEABLE_ANIMAL, 17, MetaType1_7_6.String, MetaType1_8.String), + OCELOT_TYPE(Entity1_10Types.EntityType.OCELOT, 18, MetaType1_7_6.Byte, MetaType1_8.Byte), + WOLF_HEALTH(Entity1_10Types.EntityType.WOLF, 18, MetaType1_7_6.Float, MetaType1_8.Float), + WOLF_BEGGING(Entity1_10Types.EntityType.WOLF, 19, MetaType1_7_6.Byte, MetaType1_8.Byte), + WOLF_COLLAR_COLOR(Entity1_10Types.EntityType.WOLF, 20, MetaType1_7_6.Byte, MetaType1_8.Byte), + PIG_SADDLE(Entity1_10Types.EntityType.PIG, 16, MetaType1_7_6.Byte, MetaType1_8.Byte), + SHEEP_COLOR_OR_SHEARED(Entity1_10Types.EntityType.SHEEP, 16, MetaType1_7_6.Byte, MetaType1_8.Byte), + VILLAGER_TYPE(Entity1_10Types.EntityType.VILLAGER, 16, MetaType1_7_6.Int, MetaType1_8.Int), + ENDERMAN_CARRIED_BLOCK(Entity1_10Types.EntityType.ENDERMAN, 16, MetaType1_7_6.Byte, MetaType1_8.Short), // merged with ENDERMAN_CARRIED_BLOCK_DATA + ENDERMAN_CARRIED_BLOCK_DATA(Entity1_10Types.EntityType.ENDERMAN, 17, MetaType1_7_6.Byte, MetaType1_8.Byte), // merged to ENDERMAN_CARRIED_BLOCK + ENDERMAN_IS_SCREAMING(Entity1_10Types.EntityType.ENDERMAN, 18, MetaType1_7_6.Byte, MetaType1_8.Byte), + ZOMBIE_CHILD(Entity1_10Types.EntityType.ZOMBIE, 12, MetaType1_7_6.Byte, MetaType1_8.Byte), + ZOMBIE_VILLAGER(Entity1_10Types.EntityType.ZOMBIE, 13, MetaType1_7_6.Byte, MetaType1_8.Byte), + ZOMBIE_CONVERTING(Entity1_10Types.EntityType.ZOMBIE, 14, MetaType1_7_6.Byte, MetaType1_8.Byte), + BLAZE_ON_FIRE(Entity1_10Types.EntityType.BLAZE, 16, MetaType1_7_6.Byte, MetaType1_8.Byte), + SPIDER_CLIMBING(Entity1_10Types.EntityType.SPIDER, 16, MetaType1_7_6.Byte, MetaType1_8.Byte), + CREEPER_STATE(Entity1_10Types.EntityType.CREEPER, 16, MetaType1_7_6.Byte, MetaType1_8.Byte), + CREEPER_POWERED(Entity1_10Types.EntityType.CREEPER, 17, MetaType1_7_6.Byte, MetaType1_8.Byte), + CREEPER_ISIGNITED(Entity1_10Types.EntityType.CREEPER, 18, MetaType1_7_6.Byte, MetaType1_8.Byte), + GHAST_STATE(Entity1_10Types.EntityType.GHAST, 16, MetaType1_7_6.Byte, MetaType1_8.Byte), + GHAST_IS_POWERED(Entity1_10Types.EntityType.GHAST, 17, null, MetaType1_8.Byte), + SLIME_SIZE(Entity1_10Types.EntityType.SLIME, 16, MetaType1_7_6.Byte, MetaType1_8.Byte), + SKELETON_TYPE(Entity1_10Types.EntityType.SKELETON, 13, MetaType1_7_6.Byte, MetaType1_8.Byte), + WITCH_AGRESSIVE(Entity1_10Types.EntityType.WITCH, 21, MetaType1_7_6.Byte, MetaType1_8.Byte), + IRON_GOLEM_IS_PLAYER_CREATED(Entity1_10Types.EntityType.IRON_GOLEM, 16, MetaType1_7_6.Byte, MetaType1_8.Byte), + WITHER_WATCHED_TAGRET_1(Entity1_10Types.EntityType.WITHER, 17, MetaType1_7_6.Int, MetaType1_8.Int), + WITHER_WATCHED_TAGRET_2(Entity1_10Types.EntityType.WITHER, 18, MetaType1_7_6.Int, MetaType1_8.Int), + WITHER_WATCHED_TAGRET_3(Entity1_10Types.EntityType.WITHER, 19, MetaType1_7_6.Int, MetaType1_8.Int), + WITHER_INVULNERABLE_TIME(Entity1_10Types.EntityType.WITHER, 20, MetaType1_7_6.Int, MetaType1_8.Int), + WITHER_SKULL_ISINVULNERABLE(Entity1_10Types.EntityType.WITHER_SKULL, 10, MetaType1_7_6.Byte, MetaType1_8.Byte), + GUARDIAN_FLAGS(Entity1_10Types.EntityType.GUARDIAN, 16, null, MetaType1_8.Byte), + GUARDIAN_TARGET(Entity1_10Types.EntityType.GUARDIAN, 17, null, MetaType1_8.Int), + BOAT_TIME_SINCE_HIT(Entity1_10Types.EntityType.BOAT, 17, MetaType1_7_6.Int, MetaType1_8.Int), + BOAT_FORWARD_DIRECTION(Entity1_10Types.EntityType.BOAT, 18, MetaType1_7_6.Int, MetaType1_8.Int), + BOAT_DAMAGE_TAKEN(Entity1_10Types.EntityType.BOAT, 19, MetaType1_7_6.Float, MetaType1_8.Float), + MINECART_SHAKING_POWER(Entity1_10Types.EntityType.MINECART_ABSTRACT, 17, MetaType1_7_6.Int, MetaType1_8.Int), + MINECART_SHAKING_DIRECTION(Entity1_10Types.EntityType.MINECART_ABSTRACT, 18, MetaType1_7_6.Int, MetaType1_8.Int), + MINECART_DAMAGE_TAKEN(Entity1_10Types.EntityType.MINECART_ABSTRACT, 19, MetaType1_7_6.Float, MetaType1_8.Float), + MINECART_BLOCK_INSIDE(Entity1_10Types.EntityType.MINECART_ABSTRACT, 20, MetaType1_7_6.Int, MetaType1_8.Int), + MINECART_BLOCK_Y(Entity1_10Types.EntityType.MINECART_ABSTRACT, 21, MetaType1_7_6.Int, MetaType1_8.Int), + MINECART_SHOW_BLOCK(Entity1_10Types.EntityType.MINECART_ABSTRACT, 22, MetaType1_7_6.Byte, MetaType1_8.Byte), + FURNACE_MINECART_IS_POWERED(Entity1_10Types.EntityType.MINECART_ABSTRACT, 16, MetaType1_7_6.Byte, MetaType1_8.Byte), + ITEM_ITEM(Entity1_10Types.EntityType.DROPPED_ITEM, 10, MetaType1_7_6.Slot, MetaType1_8.Slot), + ARROW_IS_CRITICAL(Entity1_10Types.EntityType.ARROW, 16, MetaType1_7_6.Byte, MetaType1_8.Byte), + FIREWORK_INFO(Entity1_10Types.EntityType.FIREWORK, 8, MetaType1_7_6.Slot, MetaType1_8.Slot), + ITEM_FRAME_ITEM(Entity1_10Types.EntityType.ITEM_FRAME, 2, MetaType1_7_6.Slot, 8, MetaType1_8.Slot), + ITEM_FRAME_ROTATION(Entity1_10Types.EntityType.ITEM_FRAME, 3, MetaType1_7_6.Byte, 9, MetaType1_8.Byte), + ENDER_CRYSTAL_HEALTH(Entity1_10Types.EntityType.ENDER_CRYSTAL, 8, MetaType1_7_6.Int, 8, MetaType1_8.Int), + RABBIT_TYPE(Entity1_10Types.EntityType.RABBIT, -1, null, 18, MetaType1_8.Byte), + ; + + private static final HashMap, MetaIndex1_8to1_7_6> metadataRewrites = new HashMap<>(); + + static { + for (MetaIndex1_8to1_7_6 index : MetaIndex1_8to1_7_6.values()) { + metadataRewrites.put(new Pair<>(index.getEntityType(), index.getOldIndex()), index); + } + } + + private final Entity1_10Types.EntityType entityType; + private final int oldIndex; + private final int newIndex; + private final MetaType1_7_6 oldType; + private final MetaType1_8 newType; + + MetaIndex1_8to1_7_6(Entity1_10Types.EntityType entityType, int oldIndex, MetaType1_7_6 oldType, MetaType1_8 newType) { + this.entityType = entityType; + this.oldIndex = oldIndex; + this.newIndex = oldIndex; + this.oldType = oldType; + this.newType = newType; + } + + MetaIndex1_8to1_7_6(Entity1_10Types.EntityType entityType, int oldIndex, MetaType1_7_6 oldType, int newIndex, MetaType1_8 newType) { + this.entityType = entityType; + this.oldIndex = oldIndex; + this.oldType = oldType; + this.newIndex = newIndex; + this.newType = newType; + } + + public Entity1_10Types.EntityType getEntityType() { + return this.entityType; + } + + public int getOldIndex() { + return this.oldIndex; + } + + public int getNewIndex() { + return this.newIndex; + } + + public MetaType1_7_6 getOldType() { + return this.oldType; + } + + public MetaType1_8 getNewType() { + return this.newType; + } + + private static Optional getIndex(Entity1_10Types.EntityType type, int index) { + final Pair pair = new Pair<>(type, index); + return Optional.ofNullable(metadataRewrites.get(pair)); + } + + public static MetaIndex1_8to1_7_6 searchIndex(Entity1_10Types.EntityType type, int index) { + Entity1_10Types.EntityType currentType = type; + do { + Optional optMeta = getIndex(currentType, index); + if (optMeta.isPresent()) { + return optMeta.get(); + } + + currentType = currentType.getParent(); + } while (currentType != null); + + return null; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/metadata/MetadataRewriter.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/metadata/MetadataRewriter.java new file mode 100644 index 0000000..b13b8f0 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/metadata/MetadataRewriter.java @@ -0,0 +1,89 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.metadata; + +import com.viaversion.viaversion.api.minecraft.entities.Entity1_10Types; +import com.viaversion.viaversion.api.minecraft.item.Item; +import com.viaversion.viaversion.api.minecraft.metadata.Metadata; +import net.raphimc.vialegacy.ViaLegacy; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.Protocol1_8to1_7_6_10; + +import java.util.ArrayList; +import java.util.List; +import java.util.logging.Level; + +public class MetadataRewriter { + + public static void transform(Entity1_10Types.EntityType type, List list) { + for (Metadata entry : new ArrayList<>(list)) { + final MetaIndex1_8to1_7_6 metaIndex = MetaIndex1_8to1_7_6.searchIndex(type, entry.id()); + try { + if (metaIndex == null) { + ViaLegacy.getPlatform().getLogger().warning("Could not find valid metaindex entry for " + type.name() + ": " + entry); + list.remove(entry); + continue; + } + + final Object value = entry.getValue(); + entry.setTypeAndValue(metaIndex.getOldType(), value); // check if metadata type is the expected type from metaindex entry + entry.setMetaTypeUnsafe(metaIndex.getNewType()); + entry.setId(metaIndex.getNewIndex()); + + if (metaIndex == MetaIndex1_8to1_7_6.ENTITY_AGEABLE_AGE) { + entry.setValue(((int) value) < 0 ? (byte) -1 : (byte) 0); + continue; + } else if (metaIndex == MetaIndex1_8to1_7_6.ITEM_FRAME_ROTATION) { + entry.setValue(Integer.valueOf((Byte) value * 2).byteValue()); + continue; + } else if (metaIndex == MetaIndex1_8to1_7_6.ENDERMAN_CARRIED_BLOCK) { + final byte id = (byte) value; + Metadata blockDataMeta = null; + for (Metadata metadata : list) { + if (metadata.id() == MetaIndex1_8to1_7_6.ENDERMAN_CARRIED_BLOCK_DATA.getOldIndex()) { + blockDataMeta = metadata; + list.remove(blockDataMeta); + break; + } + } + final byte data = blockDataMeta != null ? (Byte) blockDataMeta.getValue() : 0; + entry.setValue((short) (id | (data << 12))); + continue; + } else if (metaIndex == MetaIndex1_8to1_7_6.HUMAN_SKIN_FLAGS) { + byte flags = (byte) value; + boolean cape = flags == 2; + flags = (byte) (cape ? 127 : 125); + entry.setValue(flags); + continue; + } + + switch (metaIndex.getNewType()) { + case Byte: + entry.setValue(((Number) value).byteValue()); + break; + case Short: + entry.setValue(((Number) value).shortValue()); + break; + case Int: + entry.setValue(((Number) value).intValue()); + break; + case Float: + entry.setValue(((Number) value).floatValue()); + break; + case Slot: + Protocol1_8to1_7_6_10.ITEM_REWRITER.rewriteRead((Item) value); + break; + case String: + case Position: + case Rotation: + break; + default: + ViaLegacy.getPlatform().getLogger().warning("1.7.10 MetaDataType: Unhandled Type: " + metaIndex.getNewType() + " " + entry); + list.remove(entry); + break; + } + } catch (Throwable e) { + ViaLegacy.getPlatform().getLogger().log(Level.WARNING, "Error rewriting metadata entry for " + type.name() + ": " + entry, e); + list.remove(entry); + } + } + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/model/GameProfile.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/model/GameProfile.java new file mode 100644 index 0000000..bc2d762 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/model/GameProfile.java @@ -0,0 +1,89 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.model; + +import java.nio.charset.StandardCharsets; +import java.util.*; + +public class GameProfile { + + public static final GameProfile NULL = new GameProfile(); + + public String userName; + public UUID uuid; + public Map> properties = new HashMap<>(); + + private final UUID offlineUuid; + + private GameProfile() { + this.offlineUuid = new UUID(0, 0); + } + + public GameProfile(final String userName) { + if (userName == null) throw new IllegalStateException("Username can't be null"); + this.userName = userName; + this.offlineUuid = this.uuid = UUID.nameUUIDFromBytes(("OfflinePlayer:" + userName).getBytes(StandardCharsets.UTF_8)); + } + + public GameProfile(final String userName, final UUID uuid) { + if (userName == null || uuid == null) throw new IllegalStateException("Username and UUID can't be null"); + this.userName = userName; + this.uuid = uuid; + this.offlineUuid = UUID.nameUUIDFromBytes(("OfflinePlayer:" + userName).getBytes(StandardCharsets.UTF_8)); + } + + public void addProperty(final Property property) { + this.properties.computeIfAbsent(property.key, k -> new ArrayList<>()).add(property); + } + + public List getAllProperties() { + return this.properties.values().stream().reduce((p1, p2) -> { + final List merge = new ArrayList<>(); + merge.addAll(p1); + merge.addAll(p2); + return merge; + }).orElseGet(ArrayList::new); + } + + public boolean isOffline() { + return this.offlineUuid.equals(this.uuid); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + GameProfile that = (GameProfile) o; + return Objects.equals(userName, that.userName) && Objects.equals(uuid, that.uuid) && Objects.equals(properties, that.properties); + } + + @Override + public int hashCode() { + return Objects.hash(userName, uuid, properties); + } + + @Override + public String toString() { + return "GameProfile{" + + "userName='" + userName + '\'' + + ", uuid=" + uuid + + '}'; + } + + public static class Property { + + public String key; + public String value; + public String signature; + + public Property(final String key, final String value) { + this.key = key; + this.value = value; + } + + public Property(final String key, final String value, final String signature) { + this(key, value); + this.signature = signature; + } + + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/model/HologramPartEntity.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/model/HologramPartEntity.java new file mode 100644 index 0000000..ccb0c68 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/model/HologramPartEntity.java @@ -0,0 +1,307 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.model; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.minecraft.entities.Entity1_10Types; +import com.viaversion.viaversion.api.minecraft.metadata.Metadata; +import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; +import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.types.version.Types1_8; +import com.viaversion.viaversion.protocols.protocol1_8.ClientboundPackets1_8; +import net.raphimc.vialegacy.api.Location; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.Protocol1_8to1_7_6_10; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.metadata.MetaIndex1_8to1_7_6; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.metadata.MetadataRewriter; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.storage.EntityTracker; + +import java.util.*; + +public class HologramPartEntity { + + private static final float HORSE_HEIGHT = 1.6F; + private static final float WITHER_SKULL_HEIGHT = 0.3125F; + + private final UserConnection user; + private final EntityTracker entityTracker; + + private final int entityId; + private final Entity1_10Types.EntityType entityType; + private HologramPartEntity riderEntity; + private HologramPartEntity vehicleEntity; + private Location location; + private final Map metadata = new HashMap<>(); + + private Integer mappedEntityId; + + public HologramPartEntity(final UserConnection user, final int entityId, final Entity1_10Types.EntityType entityType) { + this.user = user; + this.entityTracker = this.user.get(EntityTracker.class); + + this.entityId = entityId; + this.entityType = entityType; + this.location = new Location(Float.NaN, Float.NaN, Float.NaN); + + if (entityType == Entity1_10Types.EntityType.HORSE) { + this.metadata.put(MetaIndex1_8to1_7_6.ENTITY_FLAGS, (byte) 0); + this.metadata.put(MetaIndex1_8to1_7_6.ENTITY_LIVING_NAME_TAG_VISIBILITY, (byte) 0); + this.metadata.put(MetaIndex1_8to1_7_6.ENTITY_LIVING_NAME_TAG, ""); + this.metadata.put(MetaIndex1_8to1_7_6.ENTITY_AGEABLE_AGE, 0); + } + } + + public void onChange() throws Exception { + if (this.vehicleEntity == null && this.riderEntity != null) { + this.riderEntity.setPositionFromVehicle(); + } + + if (this.isHologram()) { + if (this.wouldBeInvisible()) { + this.destroyHologramPartEntities(); + this.destroyArmorStand(); + return; + } + + if (this.mappedEntityId == null) { + this.mappedEntityId = this.entityTracker.getNextMappedEntityId(); + this.entityTracker.getVirtualHolograms().put(this.mappedEntityId.intValue(), this); + this.destroyHologramPartEntities(); + this.spawnArmorStand(); + } + + this.updateArmorStand(); + } else if (this.mappedEntityId != null) { + this.onRemove(); + } + } + + public void onRemove() throws Exception { + if (this.mappedEntityId != null) { + this.entityTracker.getVirtualHolograms().remove(this.mappedEntityId.intValue()); + this.destroyArmorStand(); + this.spawnHologramPartEntities(); + this.mappedEntityId = null; + } + } + + public void relocate(final int newMappedEntityId) throws Exception { + this.destroyArmorStand(); + this.mappedEntityId = newMappedEntityId; + this.spawnArmorStand(); + this.updateArmorStand(); + } + + private void spawnHologramPartEntities() throws Exception { + { + final PacketWrapper spawnMob = PacketWrapper.create(ClientboundPackets1_8.SPAWN_MOB, this.user); + spawnMob.write(Type.VAR_INT, this.entityId); // entity id + spawnMob.write(Type.UNSIGNED_BYTE, (short) this.entityType.getId()); // type id + spawnMob.write(Type.INT, (int) (this.location.getX() * 32F)); // x + spawnMob.write(Type.INT, (int) (this.location.getY() * 32F)); // y + spawnMob.write(Type.INT, (int) (this.location.getZ() * 32F)); // z + spawnMob.write(Type.BYTE, (byte) 0); // yaw + spawnMob.write(Type.BYTE, (byte) 0); // pitch + spawnMob.write(Type.BYTE, (byte) 0); // head yaw + spawnMob.write(Type.SHORT, (short) 0); // velocity x + spawnMob.write(Type.SHORT, (short) 0); // velocity y + spawnMob.write(Type.SHORT, (short) 0); // velocity z + spawnMob.write(Types1_8.METADATA_LIST, this.get1_8Metadata()); // metadata + spawnMob.send(Protocol1_8to1_7_6_10.class); + } + if (this.vehicleEntity != null) { + final int objectId = Arrays.stream(Entity1_10Types.ObjectType.values()).filter(o -> o.getType() == this.vehicleEntity.entityType).map(Entity1_10Types.ObjectType::getId).findFirst().orElse(-1); + if (objectId == -1) { + throw new IllegalStateException("Could not find object id for entity type " + this.vehicleEntity.entityType); + } + + final PacketWrapper spawnEntity = PacketWrapper.create(ClientboundPackets1_8.SPAWN_ENTITY, this.user); + spawnEntity.write(Type.VAR_INT, this.vehicleEntity.entityId); // entity id + spawnEntity.write(Type.BYTE, (byte) objectId); // type id + spawnEntity.write(Type.INT, (int) (this.vehicleEntity.location.getX() * 32F)); // x + spawnEntity.write(Type.INT, (int) (this.vehicleEntity.location.getY() * 32F)); // y + spawnEntity.write(Type.INT, (int) (this.vehicleEntity.location.getZ() * 32F)); // z + spawnEntity.write(Type.BYTE, (byte) 0); // yaw + spawnEntity.write(Type.BYTE, (byte) 0); // pitch + spawnEntity.write(Type.INT, 0); // data + spawnEntity.send(Protocol1_8to1_7_6_10.class); + + final PacketWrapper entityMetadata = PacketWrapper.create(ClientboundPackets1_8.ENTITY_METADATA, this.user); + entityMetadata.write(Type.VAR_INT, this.vehicleEntity.entityId); // entity id + entityMetadata.write(Types1_8.METADATA_LIST, this.vehicleEntity.get1_8Metadata()); // metadata + entityMetadata.send(Protocol1_8to1_7_6_10.class); + + final PacketWrapper attachEntity = PacketWrapper.create(ClientboundPackets1_8.ATTACH_ENTITY, this.user); + attachEntity.write(Type.INT, this.entityId); // entity id + attachEntity.write(Type.INT, this.vehicleEntity.entityId); // vehicle id + attachEntity.write(Type.UNSIGNED_BYTE, (short) 0); // leash state + attachEntity.send(Protocol1_8to1_7_6_10.class); + } + } + + private void destroyHologramPartEntities() throws Exception { + final PacketWrapper destroyEntities = PacketWrapper.create(ClientboundPackets1_8.DESTROY_ENTITIES, this.user); + destroyEntities.write(Type.VAR_INT_ARRAY_PRIMITIVE, new int[]{this.entityId, this.vehicleEntity.entityId}); // entity ids + destroyEntities.scheduleSend(Protocol1_8to1_7_6_10.class); + } + + private void spawnArmorStand() throws Exception { + final PacketWrapper spawnMob = PacketWrapper.create(ClientboundPackets1_8.SPAWN_MOB, this.user); + spawnMob.write(Type.VAR_INT, this.mappedEntityId); // entity id + spawnMob.write(Type.UNSIGNED_BYTE, (short) Entity1_10Types.EntityType.ARMOR_STAND.getId()); // type id + spawnMob.write(Type.INT, (int) (this.location.getX() * 32F)); // x + spawnMob.write(Type.INT, (int) ((this.location.getY() + this.getHeight()) * 32F)); // y + spawnMob.write(Type.INT, (int) (this.location.getZ() * 32F)); // z + spawnMob.write(Type.BYTE, (byte) 0); // yaw + spawnMob.write(Type.BYTE, (byte) 0); // pitch + spawnMob.write(Type.BYTE, (byte) 0); // head yaw + spawnMob.write(Type.SHORT, (short) 0); // velocity x + spawnMob.write(Type.SHORT, (short) 0); // velocity y + spawnMob.write(Type.SHORT, (short) 0); // velocity z + spawnMob.write(Types1_8.METADATA_LIST, this.getArmorStandMetadata()); // metadata + spawnMob.send(Protocol1_8to1_7_6_10.class); + } + + private void destroyArmorStand() throws Exception { + if (this.mappedEntityId == null) return; + + final PacketWrapper destroyEntities = PacketWrapper.create(ClientboundPackets1_8.DESTROY_ENTITIES, this.user); + destroyEntities.write(Type.VAR_INT_ARRAY_PRIMITIVE, new int[]{this.mappedEntityId}); // entity ids + destroyEntities.send(Protocol1_8to1_7_6_10.class); + } + + private void updateArmorStand() throws Exception { + if (this.mappedEntityId == null) return; + + final PacketWrapper entityMetadata = PacketWrapper.create(ClientboundPackets1_8.ENTITY_METADATA, this.user); + entityMetadata.write(Type.VAR_INT, this.mappedEntityId); // entity id + entityMetadata.write(Types1_8.METADATA_LIST, this.getArmorStandMetadata()); // metadata + entityMetadata.send(Protocol1_8to1_7_6_10.class); + + final PacketWrapper entityTeleport = PacketWrapper.create(ClientboundPackets1_8.ENTITY_TELEPORT, this.user); + entityTeleport.write(Type.VAR_INT, this.mappedEntityId); // entity id + entityTeleport.write(Type.INT, (int) (this.location.getX() * 32F)); // x + entityTeleport.write(Type.INT, (int) ((this.location.getY() + this.getHeight()) * 32F)); // y + entityTeleport.write(Type.INT, (int) (this.location.getZ() * 32F)); // z + entityTeleport.write(Type.BYTE, (byte) 0); // yaw + entityTeleport.write(Type.BYTE, (byte) 0); // pitch + entityTeleport.write(Type.BOOLEAN, false); // onGround + entityTeleport.send(Protocol1_8to1_7_6_10.class); + } + + private boolean isHologram() { + if (this.entityType != Entity1_10Types.EntityType.HORSE) return false; + if (this.vehicleEntity == null) return false; + if (this.riderEntity != null) return false; + if (this.vehicleEntity.riderEntity != this) return false; + if (this.vehicleEntity.vehicleEntity != null) return false; + + return ((int) this.getMetadata(MetaIndex1_8to1_7_6.ENTITY_AGEABLE_AGE)) <= -44_000; + } + + private boolean wouldBeInvisible() { + if (this.entityType != Entity1_10Types.EntityType.HORSE) return false; + + final int age = (int) this.getMetadata(MetaIndex1_8to1_7_6.ENTITY_AGEABLE_AGE); + return age >= -50_000; + } + + private float getHeight() { + if (this.entityType == Entity1_10Types.EntityType.HORSE) { + final int age = (int) this.getMetadata(MetaIndex1_8to1_7_6.ENTITY_AGEABLE_AGE); + final float size = age >= 0 ? 1F : (0.5F + (-24_000F - age) / -24_000F * 0.5F); + return HORSE_HEIGHT * size; + } else { + return WITHER_SKULL_HEIGHT; + } + } + + private void setPositionFromVehicle() { + if (this.vehicleEntity != null) { + this.location = new Location(this.vehicleEntity.location.getX(), this.vehicleEntity.location.getY() + this.vehicleEntity.getHeight() * 0.75F, this.vehicleEntity.location.getZ()); + } + if (this.riderEntity != null) { + this.riderEntity.setPositionFromVehicle(); + } + } + + public int getEntityId() { + return this.entityId; + } + + public Entity1_10Types.EntityType getEntityType() { + return this.entityType; + } + + public void setVehicleEntity(final HologramPartEntity vehicleEntity) throws Exception { + if (vehicleEntity == null) { + if (this.vehicleEntity != null) { + this.location = this.vehicleEntity.location; + this.location = new Location(this.location.getX(), this.location.getY() + (this.vehicleEntity.entityType == Entity1_10Types.EntityType.HORSE ? HORSE_HEIGHT : WITHER_SKULL_HEIGHT), this.location.getZ()); + this.vehicleEntity.riderEntity = null; + this.vehicleEntity.onChange(); + } + + this.vehicleEntity = null; + } else { + if (this.vehicleEntity != null) { + this.vehicleEntity.riderEntity = null; + this.vehicleEntity.onChange(); + } + + for (HologramPartEntity entity = vehicleEntity.vehicleEntity; entity != null; entity = entity.riderEntity) { + if (entity == this) return; + } + + this.vehicleEntity = vehicleEntity; + vehicleEntity.riderEntity = this; + vehicleEntity.onChange(); + } + + this.onChange(); + } + + public HologramPartEntity getVehicleEntity() { + return this.vehicleEntity; + } + + public HologramPartEntity getRiderEntity() { + return this.riderEntity; + } + + public void setLocation(final Location location) throws Exception { + this.location = location; + this.onChange(); + } + + public Location getLocation() { + return this.location; + } + + public void setMetadata(final MetaIndex1_8to1_7_6 index, final Object value) { + this.metadata.put(index, value); + // The onChange() method is called from the EntityTracker + } + + public Object getMetadata(final MetaIndex1_8to1_7_6 index) { + return this.metadata.get(index); + } + + private List get1_8Metadata() { + final List metadataList = new ArrayList<>(); + for (final Map.Entry entry : this.metadata.entrySet()) { + metadataList.add(new Metadata(entry.getKey().getOldIndex(), entry.getKey().getOldType(), entry.getValue())); + } + MetadataRewriter.transform(this.entityType, metadataList); + return metadataList; + } + + private List getArmorStandMetadata() { + final List metadataList = new ArrayList<>(); + if (this.entityType == Entity1_10Types.EntityType.HORSE) { + metadataList.add(new Metadata(MetaIndex1_8to1_7_6.ENTITY_LIVING_NAME_TAG_VISIBILITY.getNewIndex(), MetaIndex1_8to1_7_6.ENTITY_LIVING_NAME_TAG_VISIBILITY.getNewType(), this.getMetadata(MetaIndex1_8to1_7_6.ENTITY_LIVING_NAME_TAG_VISIBILITY))); + metadataList.add(new Metadata(MetaIndex1_8to1_7_6.ENTITY_LIVING_NAME_TAG.getNewIndex(), MetaIndex1_8to1_7_6.ENTITY_LIVING_NAME_TAG.getNewType(), this.getMetadata(MetaIndex1_8to1_7_6.ENTITY_LIVING_NAME_TAG))); + metadataList.add(new Metadata(MetaIndex1_8to1_7_6.ENTITY_FLAGS.getNewIndex(), MetaIndex1_8to1_7_6.ENTITY_FLAGS.getNewType(), (byte) (1 << 5))); + metadataList.add(new Metadata(MetaIndex1_8to1_7_6.ARMOR_STAND_FLAGS.getNewIndex(), MetaIndex1_8to1_7_6.ARMOR_STAND_FLAGS.getNewType(), (byte) (1 << 4))); + } + return metadataList; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/model/MapData.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/model/MapData.java new file mode 100644 index 0000000..355f4e0 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/model/MapData.java @@ -0,0 +1,8 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.model; + +public class MapData { + + public byte scale = 0; + public MapIcon[] mapIcons = new MapIcon[0]; + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/model/MapIcon.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/model/MapIcon.java new file mode 100644 index 0000000..c450d0f --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/model/MapIcon.java @@ -0,0 +1,17 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.model; + +public class MapIcon { + + public byte direction; + public byte type; + public byte x; + public byte z; + + public MapIcon(final byte direction, final byte type, final byte x, final byte z) { + this.direction = direction; + this.type = type; + this.x = x; + this.z = z; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/model/TabListEntry.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/model/TabListEntry.java new file mode 100644 index 0000000..c7b5139 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/model/TabListEntry.java @@ -0,0 +1,25 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.model; + +import com.google.common.base.Charsets; + +import java.util.UUID; + +public class TabListEntry { + + public GameProfile gameProfile; + public int ping; + public int gameMode; + + public boolean resolved; + + public TabListEntry(final String name, final UUID uuid) { + this.gameProfile = new GameProfile(name, uuid); + this.resolved = true; + } + + public TabListEntry(final String name, final short ping) { + this.gameProfile = new GameProfile(name, UUID.nameUUIDFromBytes(("LegacyPlayer:" + name).getBytes(Charsets.UTF_8))); + this.ping = ping; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/providers/GameProfileFetcher.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/providers/GameProfileFetcher.java new file mode 100644 index 0000000..a3167fe --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/providers/GameProfileFetcher.java @@ -0,0 +1,106 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.providers; + +import com.google.common.cache.*; +import com.google.common.util.concurrent.ThreadFactoryBuilder; +import com.google.common.util.concurrent.UncheckedExecutionException; +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.platform.providers.Provider; +import net.raphimc.vialegacy.ViaLegacy; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.model.GameProfile; + +import java.nio.charset.StandardCharsets; +import java.util.UUID; +import java.util.concurrent.*; +import java.util.logging.Level; +import java.util.regex.Pattern; + +public abstract class GameProfileFetcher implements Provider { + + protected static final Pattern PATTERN_CONTROL_CODE = Pattern.compile("(?i)\\u00A7[0-9A-FK-OR]"); + + private static final ThreadPoolExecutor LOADING_POOL = (ThreadPoolExecutor) Executors.newFixedThreadPool(2, new ThreadFactoryBuilder().setNameFormat("ProtocolHack GameProfile Loader #%d").setDaemon(true).build()); + + private final LoadingCache UUID_CACHE = CacheBuilder.newBuilder().expireAfterWrite(6, TimeUnit.HOURS).build(new CacheLoader() { + @Override + public UUID load(String key) throws Exception { + return loadMojangUUID(key); + } + }); + private final LoadingCache GAMEPROFILE_CACHE = CacheBuilder.newBuilder().expireAfterWrite(6, TimeUnit.HOURS).build(new CacheLoader() { + @Override + public GameProfile load(UUID key) throws Exception { + return loadGameProfile(key); + } + }); + + public boolean isLegacySkinLoadingEnabled(final UserConnection user) { + return ViaLegacy.getConfig().isLegacySkinLoading(); + } + + public boolean isUUIDLoaded(String playerName) { + return UUID_CACHE.getIfPresent(playerName) != null; + } + + public UUID getMojangUUID(String playerName) { + playerName = PATTERN_CONTROL_CODE.matcher(playerName).replaceAll(""); + try { + return UUID_CACHE.get(playerName); + } catch (Throwable e) { + while (e instanceof ExecutionException || e instanceof UncheckedExecutionException || e instanceof CompletionException) e = e.getCause(); + ViaLegacy.getPlatform().getLogger().log(Level.WARNING, "Failed to load uuid for player '" + playerName + "' (" + e.getClass().getName() + ")"); + } + final UUID uuid = this.getOfflineUUID(playerName); + UUID_CACHE.put(playerName, uuid); + return uuid; + } + + public CompletableFuture getMojangUUIDAsync(String playerName) { + final CompletableFuture future = new CompletableFuture<>(); + if (this.isUUIDLoaded(playerName)) { + future.complete(this.getMojangUUID(playerName)); + } else { + LOADING_POOL.submit(() -> { + future.complete(this.getMojangUUID(playerName)); + }); + } + return future; + } + + public boolean isGameProfileLoaded(UUID uuid) { + return GAMEPROFILE_CACHE.getIfPresent(uuid) != null; + } + + public GameProfile getGameProfile(UUID uuid) { + try { + final GameProfile value = GAMEPROFILE_CACHE.get(uuid); + if (GameProfile.NULL.equals(value)) return null; + return value; + } catch (Throwable e) { + while (e instanceof ExecutionException || e instanceof UncheckedExecutionException || e instanceof CompletionException) e = e.getCause(); + ViaLegacy.getPlatform().getLogger().log(Level.WARNING, "Failed to load game profile for uuid '" + uuid + "' (" + e.getClass().getName() + ")"); + } + GAMEPROFILE_CACHE.put(uuid, GameProfile.NULL); + return null; + } + + public CompletableFuture getGameProfileAsync(UUID uuid) { + final CompletableFuture future = new CompletableFuture<>(); + if (this.isGameProfileLoaded(uuid)) { + future.complete(this.getGameProfile(uuid)); + } else { + LOADING_POOL.submit(() -> { + future.complete(this.getGameProfile(uuid)); + }); + } + return future; + } + + public UUID getOfflineUUID(final String playerName) { + return UUID.nameUUIDFromBytes(("OfflinePlayer:" + playerName).getBytes(StandardCharsets.UTF_8)); + } + + public abstract UUID loadMojangUUID(final String playerName) throws Exception; + + public abstract GameProfile loadGameProfile(final UUID uuid) throws Exception; + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/rewriter/ChatItemRewriter.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/rewriter/ChatItemRewriter.java new file mode 100644 index 0000000..e5d1890 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/rewriter/ChatItemRewriter.java @@ -0,0 +1,423 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.rewriter; + +import com.viaversion.viaversion.api.minecraft.item.DataItem; +import com.viaversion.viaversion.api.minecraft.item.Item; +import com.viaversion.viaversion.api.minecraft.nbt.BinaryTagIO; +import com.viaversion.viaversion.libs.fastutil.ints.Int2ObjectOpenHashMap; +import com.viaversion.viaversion.libs.gson.*; +import com.viaversion.viaversion.libs.opennbt.tag.builtin.*; +import com.viaversion.viaversion.rewriter.ComponentRewriter; +import net.raphimc.vialegacy.ViaLegacy; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.Protocol1_8to1_7_6_10; +import net.raphimc.vialegacy.util.ViaStringTagReader1_11_2; + +import java.io.IOException; + +public class ChatItemRewriter extends ComponentRewriter { + + private static final Int2ObjectOpenHashMap ID_TO_NAME = new Int2ObjectOpenHashMap<>(315, 0.99F); + + static { + ID_TO_NAME.put(1, "stone"); + ID_TO_NAME.put(2, "grass"); + ID_TO_NAME.put(3, "dirt"); + ID_TO_NAME.put(4, "cobblestone"); + ID_TO_NAME.put(5, "planks"); + ID_TO_NAME.put(6, "sapling"); + ID_TO_NAME.put(7, "bedrock"); + ID_TO_NAME.put(8, "flowing_water"); + ID_TO_NAME.put(9, "water"); + ID_TO_NAME.put(10, "flowing_lava"); + ID_TO_NAME.put(11, "lava"); + ID_TO_NAME.put(12, "sand"); + ID_TO_NAME.put(13, "gravel"); + ID_TO_NAME.put(14, "gold_ore"); + ID_TO_NAME.put(15, "iron_ore"); + ID_TO_NAME.put(16, "coal_ore"); + ID_TO_NAME.put(17, "log"); + ID_TO_NAME.put(18, "leaves"); + ID_TO_NAME.put(19, "sponge"); + ID_TO_NAME.put(20, "glass"); + ID_TO_NAME.put(21, "lapis_ore"); + ID_TO_NAME.put(22, "lapis_block"); + ID_TO_NAME.put(23, "dispenser"); + ID_TO_NAME.put(24, "sandstone"); + ID_TO_NAME.put(25, "noteblock"); + ID_TO_NAME.put(27, "golden_rail"); + ID_TO_NAME.put(28, "detector_rail"); + ID_TO_NAME.put(29, "sticky_piston"); + ID_TO_NAME.put(30, "web"); + ID_TO_NAME.put(31, "tallgrass"); + ID_TO_NAME.put(32, "deadbush"); + ID_TO_NAME.put(33, "piston"); + ID_TO_NAME.put(35, "wool"); + ID_TO_NAME.put(37, "yellow_flower"); + ID_TO_NAME.put(38, "red_flower"); + ID_TO_NAME.put(39, "brown_mushroom"); + ID_TO_NAME.put(40, "red_mushroom"); + ID_TO_NAME.put(41, "gold_block"); + ID_TO_NAME.put(42, "iron_block"); + ID_TO_NAME.put(43, "double_stone_slab"); + ID_TO_NAME.put(44, "stone_slab"); + ID_TO_NAME.put(45, "brick_block"); + ID_TO_NAME.put(46, "tnt"); + ID_TO_NAME.put(47, "bookshelf"); + ID_TO_NAME.put(48, "mossy_cobblestone"); + ID_TO_NAME.put(49, "obsidian"); + ID_TO_NAME.put(50, "torch"); + ID_TO_NAME.put(51, "fire"); + ID_TO_NAME.put(52, "mob_spawner"); + ID_TO_NAME.put(53, "oak_stairs"); + ID_TO_NAME.put(54, "chest"); + ID_TO_NAME.put(56, "diamond_ore"); + ID_TO_NAME.put(57, "diamond_block"); + ID_TO_NAME.put(58, "crafting_table"); + ID_TO_NAME.put(60, "farmland"); + ID_TO_NAME.put(61, "furnace"); + ID_TO_NAME.put(62, "lit_furnace"); + ID_TO_NAME.put(65, "ladder"); + ID_TO_NAME.put(66, "rail"); + ID_TO_NAME.put(67, "stone_stairs"); + ID_TO_NAME.put(69, "lever"); + ID_TO_NAME.put(70, "stone_pressure_plate"); + ID_TO_NAME.put(72, "wooden_pressure_plate"); + ID_TO_NAME.put(73, "redstone_ore"); + ID_TO_NAME.put(76, "redstone_torch"); + ID_TO_NAME.put(77, "stone_button"); + ID_TO_NAME.put(78, "snow_layer"); + ID_TO_NAME.put(79, "ice"); + ID_TO_NAME.put(80, "snow"); + ID_TO_NAME.put(81, "cactus"); + ID_TO_NAME.put(82, "clay"); + ID_TO_NAME.put(84, "jukebox"); + ID_TO_NAME.put(85, "fence"); + ID_TO_NAME.put(86, "pumpkin"); + ID_TO_NAME.put(87, "netherrack"); + ID_TO_NAME.put(88, "soul_sand"); + ID_TO_NAME.put(89, "glowstone"); + ID_TO_NAME.put(90, "portal"); + ID_TO_NAME.put(91, "lit_pumpkin"); + ID_TO_NAME.put(95, "stained_glass"); + ID_TO_NAME.put(96, "trapdoor"); + ID_TO_NAME.put(97, "monster_egg"); + ID_TO_NAME.put(98, "stonebrick"); + ID_TO_NAME.put(99, "brown_mushroom_block"); + ID_TO_NAME.put(100, "red_mushroom_block"); + ID_TO_NAME.put(101, "iron_bars"); + ID_TO_NAME.put(102, "glass_pane"); + ID_TO_NAME.put(103, "melon_block"); + ID_TO_NAME.put(106, "vine"); + ID_TO_NAME.put(107, "fence_gate"); + ID_TO_NAME.put(108, "brick_stairs"); + ID_TO_NAME.put(109, "stone_brick_stairs"); + ID_TO_NAME.put(110, "mycelium"); + ID_TO_NAME.put(111, "waterlily"); + ID_TO_NAME.put(112, "nether_brick"); + ID_TO_NAME.put(113, "nether_brick_fence"); + ID_TO_NAME.put(114, "nether_brick_stairs"); + ID_TO_NAME.put(116, "enchanting_table"); + ID_TO_NAME.put(119, "end_portal"); + ID_TO_NAME.put(120, "end_portal_frame"); + ID_TO_NAME.put(121, "end_stone"); + ID_TO_NAME.put(122, "dragon_egg"); + ID_TO_NAME.put(123, "redstone_lamp"); + ID_TO_NAME.put(125, "double_wooden_slab"); + ID_TO_NAME.put(126, "wooden_slab"); + ID_TO_NAME.put(127, "cocoa"); + ID_TO_NAME.put(128, "sandstone_stairs"); + ID_TO_NAME.put(129, "emerald_ore"); + ID_TO_NAME.put(130, "ender_chest"); + ID_TO_NAME.put(131, "tripwire_hook"); + ID_TO_NAME.put(133, "emerald_block"); + ID_TO_NAME.put(134, "spruce_stairs"); + ID_TO_NAME.put(135, "birch_stairs"); + ID_TO_NAME.put(136, "jungle_stairs"); + ID_TO_NAME.put(137, "command_block"); + ID_TO_NAME.put(138, "beacon"); + ID_TO_NAME.put(139, "cobblestone_wall"); + ID_TO_NAME.put(141, "carrots"); + ID_TO_NAME.put(142, "potatoes"); + ID_TO_NAME.put(143, "wooden_button"); + ID_TO_NAME.put(145, "anvil"); + ID_TO_NAME.put(146, "trapped_chest"); + ID_TO_NAME.put(147, "light_weighted_pressure_plate"); + ID_TO_NAME.put(148, "heavy_weighted_pressure_plate"); + ID_TO_NAME.put(151, "daylight_detector"); + ID_TO_NAME.put(152, "redstone_block"); + ID_TO_NAME.put(153, "quartz_ore"); + ID_TO_NAME.put(154, "hopper"); + ID_TO_NAME.put(155, "quartz_block"); + ID_TO_NAME.put(156, "quartz_stairs"); + ID_TO_NAME.put(157, "activator_rail"); + ID_TO_NAME.put(158, "dropper"); + ID_TO_NAME.put(159, "stained_hardened_clay"); + ID_TO_NAME.put(160, "stained_glass_pane"); + ID_TO_NAME.put(161, "leaves2"); + ID_TO_NAME.put(162, "log2"); + ID_TO_NAME.put(163, "acacia_stairs"); + ID_TO_NAME.put(164, "dark_oak_stairs"); + ID_TO_NAME.put(170, "hay_block"); + ID_TO_NAME.put(171, "carpet"); + ID_TO_NAME.put(172, "hardened_clay"); + ID_TO_NAME.put(173, "coal_block"); + ID_TO_NAME.put(174, "packed_ice"); + ID_TO_NAME.put(175, "double_plant"); + ID_TO_NAME.put(256, "iron_shovel"); + ID_TO_NAME.put(257, "iron_pickaxe"); + ID_TO_NAME.put(258, "iron_axe"); + ID_TO_NAME.put(259, "flint_and_steel"); + ID_TO_NAME.put(260, "apple"); + ID_TO_NAME.put(261, "bow"); + ID_TO_NAME.put(262, "arrow"); + ID_TO_NAME.put(263, "coal"); + ID_TO_NAME.put(264, "diamond"); + ID_TO_NAME.put(265, "iron_ingot"); + ID_TO_NAME.put(266, "gold_ingot"); + ID_TO_NAME.put(267, "iron_sword"); + ID_TO_NAME.put(268, "wooden_sword"); + ID_TO_NAME.put(269, "wooden_shovel"); + ID_TO_NAME.put(270, "wooden_pickaxe"); + ID_TO_NAME.put(271, "wooden_axe"); + ID_TO_NAME.put(272, "stone_sword"); + ID_TO_NAME.put(273, "stone_shovel"); + ID_TO_NAME.put(274, "stone_pickaxe"); + ID_TO_NAME.put(275, "stone_axe"); + ID_TO_NAME.put(276, "diamond_sword"); + ID_TO_NAME.put(277, "diamond_shovel"); + ID_TO_NAME.put(278, "diamond_pickaxe"); + ID_TO_NAME.put(279, "diamond_axe"); + ID_TO_NAME.put(280, "stick"); + ID_TO_NAME.put(281, "bowl"); + ID_TO_NAME.put(282, "mushroom_stew"); + ID_TO_NAME.put(283, "golden_sword"); + ID_TO_NAME.put(284, "golden_shovel"); + ID_TO_NAME.put(285, "golden_pickaxe"); + ID_TO_NAME.put(286, "golden_axe"); + ID_TO_NAME.put(287, "string"); + ID_TO_NAME.put(288, "feather"); + ID_TO_NAME.put(289, "gunpowder"); + ID_TO_NAME.put(290, "wooden_hoe"); + ID_TO_NAME.put(291, "stone_hoe"); + ID_TO_NAME.put(292, "iron_hoe"); + ID_TO_NAME.put(293, "diamond_hoe"); + ID_TO_NAME.put(294, "golden_hoe"); + ID_TO_NAME.put(295, "wheat_seeds"); + ID_TO_NAME.put(296, "wheat"); + ID_TO_NAME.put(297, "bread"); + ID_TO_NAME.put(298, "leather_helmet"); + ID_TO_NAME.put(299, "leather_chestplate"); + ID_TO_NAME.put(300, "leather_leggings"); + ID_TO_NAME.put(301, "leather_boots"); + ID_TO_NAME.put(302, "chainmail_helmet"); + ID_TO_NAME.put(303, "chainmail_chestplate"); + ID_TO_NAME.put(304, "chainmail_leggings"); + ID_TO_NAME.put(305, "chainmail_boots"); + ID_TO_NAME.put(306, "iron_helmet"); + ID_TO_NAME.put(307, "iron_chestplate"); + ID_TO_NAME.put(308, "iron_leggings"); + ID_TO_NAME.put(309, "iron_boots"); + ID_TO_NAME.put(310, "diamond_helmet"); + ID_TO_NAME.put(311, "diamond_chestplate"); + ID_TO_NAME.put(312, "diamond_leggings"); + ID_TO_NAME.put(313, "diamond_boots"); + ID_TO_NAME.put(314, "golden_helmet"); + ID_TO_NAME.put(315, "golden_chestplate"); + ID_TO_NAME.put(316, "golden_leggings"); + ID_TO_NAME.put(317, "golden_boots"); + ID_TO_NAME.put(318, "flint"); + ID_TO_NAME.put(319, "porkchop"); + ID_TO_NAME.put(320, "cooked_porkchop"); + ID_TO_NAME.put(321, "painting"); + ID_TO_NAME.put(322, "golden_apple"); + ID_TO_NAME.put(323, "sign"); + ID_TO_NAME.put(324, "wooden_door"); + ID_TO_NAME.put(325, "bucket"); + ID_TO_NAME.put(326, "water_bucket"); + ID_TO_NAME.put(327, "lava_bucket"); + ID_TO_NAME.put(328, "minecart"); + ID_TO_NAME.put(329, "saddle"); + ID_TO_NAME.put(330, "iron_door"); + ID_TO_NAME.put(331, "redstone"); + ID_TO_NAME.put(332, "snowball"); + ID_TO_NAME.put(333, "boat"); + ID_TO_NAME.put(334, "leather"); + ID_TO_NAME.put(335, "milk_bucket"); + ID_TO_NAME.put(336, "brick"); + ID_TO_NAME.put(337, "clay_ball"); + ID_TO_NAME.put(338, "reeds"); + ID_TO_NAME.put(339, "paper"); + ID_TO_NAME.put(340, "book"); + ID_TO_NAME.put(341, "slime_ball"); + ID_TO_NAME.put(342, "chest_minecart"); + ID_TO_NAME.put(343, "furnace_minecart"); + ID_TO_NAME.put(344, "egg"); + ID_TO_NAME.put(345, "compass"); + ID_TO_NAME.put(346, "fishing_rod"); + ID_TO_NAME.put(347, "clock"); + ID_TO_NAME.put(348, "glowstone_dust"); + ID_TO_NAME.put(349, "fish"); + ID_TO_NAME.put(350, "cooked_fished"); + ID_TO_NAME.put(351, "dye"); + ID_TO_NAME.put(352, "bone"); + ID_TO_NAME.put(353, "sugar"); + ID_TO_NAME.put(354, "cake"); + ID_TO_NAME.put(355, "bed"); + ID_TO_NAME.put(356, "repeater"); + ID_TO_NAME.put(357, "cookie"); + ID_TO_NAME.put(358, "filled_map"); + ID_TO_NAME.put(359, "shears"); + ID_TO_NAME.put(360, "melon"); + ID_TO_NAME.put(361, "pumpkin_seeds"); + ID_TO_NAME.put(362, "melon_seeds"); + ID_TO_NAME.put(363, "beef"); + ID_TO_NAME.put(364, "cooked_beef"); + ID_TO_NAME.put(365, "chicken"); + ID_TO_NAME.put(366, "cooked_chicken"); + ID_TO_NAME.put(367, "rotten_flesh"); + ID_TO_NAME.put(368, "ender_pearl"); + ID_TO_NAME.put(369, "blaze_rod"); + ID_TO_NAME.put(370, "ghast_tear"); + ID_TO_NAME.put(371, "gold_nugget"); + ID_TO_NAME.put(372, "nether_wart"); + ID_TO_NAME.put(373, "potion"); + ID_TO_NAME.put(374, "glass_bottle"); + ID_TO_NAME.put(375, "spider_eye"); + ID_TO_NAME.put(376, "fermented_spider_eye"); + ID_TO_NAME.put(377, "blaze_powder"); + ID_TO_NAME.put(378, "magma_cream"); + ID_TO_NAME.put(379, "brewing_stand"); + ID_TO_NAME.put(380, "cauldron"); + ID_TO_NAME.put(381, "ender_eye"); + ID_TO_NAME.put(382, "speckled_melon"); + ID_TO_NAME.put(383, "spawn_egg"); + ID_TO_NAME.put(384, "experience_bottle"); + ID_TO_NAME.put(385, "fire_charge"); + ID_TO_NAME.put(386, "writable_book"); + ID_TO_NAME.put(387, "written_book"); + ID_TO_NAME.put(388, "emerald"); + ID_TO_NAME.put(389, "item_frame"); + ID_TO_NAME.put(390, "flower_pot"); + ID_TO_NAME.put(391, "carrot"); + ID_TO_NAME.put(392, "potato"); + ID_TO_NAME.put(393, "baked_potato"); + ID_TO_NAME.put(394, "poisonous_potato"); + ID_TO_NAME.put(395, "map"); + ID_TO_NAME.put(396, "golden_carrot"); + ID_TO_NAME.put(397, "skull"); + ID_TO_NAME.put(398, "carrot_on_a_stick"); + ID_TO_NAME.put(399, "nether_star"); + ID_TO_NAME.put(400, "pumpkin_pie"); + ID_TO_NAME.put(401, "fireworks"); + ID_TO_NAME.put(402, "firework_charge"); + ID_TO_NAME.put(403, "enchanted_book"); + ID_TO_NAME.put(404, "comparator"); + ID_TO_NAME.put(405, "netherbrick"); + ID_TO_NAME.put(406, "quartz"); + ID_TO_NAME.put(407, "tnt_minecart"); + ID_TO_NAME.put(408, "hopper_minecart"); + ID_TO_NAME.put(417, "iron_horse_armor"); + ID_TO_NAME.put(418, "golden_horse_armor"); + ID_TO_NAME.put(419, "diamond_horse_armor"); + ID_TO_NAME.put(420, "lead"); + ID_TO_NAME.put(421, "name_tag"); + ID_TO_NAME.put(422, "command_block_minecart"); + ID_TO_NAME.put(2256, "record_13"); + ID_TO_NAME.put(2257, "record_cat"); + ID_TO_NAME.put(2258, "record_blocks"); + ID_TO_NAME.put(2259, "record_chirp"); + ID_TO_NAME.put(2260, "record_far"); + ID_TO_NAME.put(2261, "record_mall"); + ID_TO_NAME.put(2262, "record_mellohi"); + ID_TO_NAME.put(2263, "record_stal"); + ID_TO_NAME.put(2264, "record_strad"); + ID_TO_NAME.put(2265, "record_ward"); + ID_TO_NAME.put(2266, "record_11"); + ID_TO_NAME.put(2267, "record_wait"); + } + + private static final ComponentRewriter REMAP_SHOW_ITEM = new ComponentRewriter() { + @Override + protected void handleHoverEvent(JsonObject hoverEvent) { + super.handleHoverEvent(hoverEvent); + final String action = hoverEvent.getAsJsonPrimitive("action").getAsString(); + if (!action.equals("show_item")) return; + + final JsonElement value = hoverEvent.get("value"); + if (value == null) return; + + final String text = findItemNBT(value); + if (text == null) return; + + final CompoundTag tag; + try { + tag = ViaStringTagReader1_11_2.getTagFromJson(text); + } catch (Exception e) { + ViaLegacy.getPlatform().getLogger().warning("Error reading NBT in show_item:" + text); + throw new RuntimeException(e); + } + + final CompoundTag itemTag = tag.get("tag"); + final ShortTag idTag = tag.get("id"); + final ShortTag damageTag = tag.get("Damage"); + + // Call item converter + final short damage = damageTag != null ? damageTag.asShort() : 0; + final short id = idTag != null ? idTag.asShort() : 1; + final Item item = new DataItem(); + item.setIdentifier(id); + item.setData(damage); + item.setTag(itemTag); + handleItem(item); + + // Serialize again + if (damage != item.data()) { + tag.put("Damage", new ShortTag(item.data())); + } + tag.put("id", new StringTag("minecraft:" + ID_TO_NAME.getOrDefault(item.identifier(), "stone"))); + if (item.tag() != null) { + tag.put("tag", new CompoundTag(item.tag().getValue())); + } + + final JsonArray array = new JsonArray(); + final JsonObject object = new JsonObject(); + array.add(object); + final String serializedNBT; + try { + serializedNBT = BinaryTagIO.writeString(tag); + object.addProperty("text", serializedNBT); + hoverEvent.add("value", array); + } catch (IOException e) { + ViaLegacy.getPlatform().getLogger().warning("Error writing NBT in show_item:" + text); + e.printStackTrace(); + } + } + + private void handleItem(Item item) { + Protocol1_8to1_7_6_10.ITEM_REWRITER.rewriteRead(item); + } + + private String findItemNBT(JsonElement element) { + if (element.isJsonArray()) { + for (JsonElement jsonElement : element.getAsJsonArray()) { + String value = findItemNBT(jsonElement); + if (value != null) { + return value; + } + } + } else if (element.isJsonObject()) { + final JsonPrimitive text = element.getAsJsonObject().getAsJsonPrimitive("text"); + if (text != null) { + return text.getAsString(); + } + } else if (element.isJsonPrimitive()) { + return element.getAsJsonPrimitive().getAsString(); + } + return null; + } + }; + + public static String toClient(final String text) { + return REMAP_SHOW_ITEM.processText(text).toString(); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/rewriter/ItemRewriter.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/rewriter/ItemRewriter.java new file mode 100644 index 0000000..04a017b --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/rewriter/ItemRewriter.java @@ -0,0 +1,89 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.rewriter; + +import com.viaversion.viaversion.api.Via; +import com.viaversion.viaversion.api.minecraft.item.Item; +import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag; +import com.viaversion.viaversion.libs.opennbt.tag.builtin.StringTag; +import net.raphimc.vialegacy.ViaLegacy; +import net.raphimc.vialegacy.api.AbstractItemRewriter; +import net.raphimc.vialegacy.api.ItemList1_6; +import net.raphimc.vialegacy.protocols.release.protocol1_7_6_10to1_7_2_5.Protocol1_7_6_10to1_7_2_5; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.model.GameProfile; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.providers.GameProfileFetcher; + +import java.util.UUID; + +public class ItemRewriter extends AbstractItemRewriter { + + public ItemRewriter() { + super("1.7", false); + registerRemappedItem(8, 326, "Water Block"); + registerRemappedItem(9, 326, "Stationary Water Block"); + registerRemappedItem(10, 327, "Lava Block"); + registerRemappedItem(11, 327, "Stationary Lava Block"); + registerRemappedItem(51, 385, "Fire"); + registerRemappedItem(90, 399, "Nether portal"); + registerRemappedItem(119, 381, "End portal"); + registerRemappedItem(127, 351, 3, "Cocoa Block"); + registerRemappedItem(141, 391, "Carrot Crops"); + registerRemappedItem(142, 392, "Potato Crops"); + registerRemappedItem(43, 44, "Double Stone Slab"); + registerRemappedItem(125, 126, "Double Wood Slab"); + } + + @Override + public void rewriteRead(Item item) { + super.rewriteRead(item); + if (item == null) return; + + if (item.identifier() == ItemList1_6.skull.itemID && item.data() == 3 && item.tag() != null) { // player_skull + if (!item.tag().contains("SkullOwner")) return; + + String skullOwnerName = null; + if (item.tag().get("SkullOwner") instanceof StringTag) { + final StringTag skullOwnerTag = item.tag().remove("SkullOwner"); + item.tag().put("1_7_SkullOwner", skullOwnerTag); + skullOwnerName = skullOwnerTag.getValue(); + } else if (item.tag().get("SkullOwner") instanceof CompoundTag) { + final CompoundTag skullOwnerTag = item.tag().get("SkullOwner"); + if (skullOwnerTag.get("Name") instanceof StringTag && !skullOwnerTag.contains("Id")) { + final StringTag skullOwnerNameTag = skullOwnerTag.get("Name"); + skullOwnerName = skullOwnerNameTag.getValue(); + } + } + + if (skullOwnerName != null) { + final GameProfileFetcher gameProfileFetcher = Via.getManager().getProviders().get(GameProfileFetcher.class); + if (!ViaLegacy.getConfig().isLegacySkullLoading()) return; + + if (gameProfileFetcher.isUUIDLoaded(skullOwnerName)) { + final UUID uuid = gameProfileFetcher.getMojangUUID(skullOwnerName); + if (gameProfileFetcher.isGameProfileLoaded(uuid)) { + final GameProfile skullProfile = gameProfileFetcher.getGameProfile(uuid); + if (skullProfile == null || skullProfile.isOffline()) return; + item.tag().put("SkullOwner", Protocol1_7_6_10to1_7_2_5.writeGameProfileToTag(skullProfile)); + return; + } + } + + gameProfileFetcher.getMojangUUIDAsync(skullOwnerName).thenAccept(gameProfileFetcher::getGameProfile); + } + } + } + + @Override + public void rewriteWrite(Item item) { + if (item == null) return; + + NOT_VALID: + if (item.identifier() == ItemList1_6.skull.itemID && item.data() == 3 && item.tag() != null) { // player_skull + if (!item.tag().contains("1_7_SkullOwner")) break NOT_VALID; + if (item.tag().get("1_7_SkullOwner") instanceof StringTag) { + item.tag().put("SkullOwner", item.tag().remove("1_7_SkullOwner")); + } + } + + super.rewriteWrite(item); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/rewriter/TranslationRewriter.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/rewriter/TranslationRewriter.java new file mode 100644 index 0000000..b3bd3bb --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/rewriter/TranslationRewriter.java @@ -0,0 +1,88 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.rewriter; + +import com.viaversion.viaversion.libs.fastutil.objects.Object2ObjectMap; +import com.viaversion.viaversion.libs.fastutil.objects.Object2ObjectOpenHashMap; +import com.viaversion.viaversion.libs.gson.JsonObject; +import com.viaversion.viaversion.rewriter.ComponentRewriter; + +public class TranslationRewriter { + + private static final Object2ObjectMap TRANSLATIONS = new Object2ObjectOpenHashMap<>(59, 0.99F); + + static { + TRANSLATIONS.put("gui.toMenu", "Back to title screen"); + TRANSLATIONS.put("generator.amplified", "Amplified"); + TRANSLATIONS.put("disconnect.loginFailedInfo.serversUnavailable", "The authentication are currently down for maintenance."); + TRANSLATIONS.put("options.aoDesc0", "Enable faux ambient occlusion on blocks."); + TRANSLATIONS.put("options.framerateLimitDesc0", "Selects the maximum frame rate:"); + TRANSLATIONS.put("options.framerateLimitDesc1", "35fps, 120fps, or 200+fps."); + TRANSLATIONS.put("options.viewBobbingDesc0", "Enables view-bob when moving."); + TRANSLATIONS.put("options.renderCloudsDesc0", "Enables the rendering of clouds."); + TRANSLATIONS.put("options.graphicsDesc0", "'Fancy': Enables extra transparency."); + TRANSLATIONS.put("options.graphicsDesc1", "'Fast': Suggested for lower-end hardware."); + TRANSLATIONS.put("options.renderDistanceDesc0", "Maximum render distance. Smaller values"); + TRANSLATIONS.put("options.renderDistanceDesc1", "run better on lower-end hardware."); + TRANSLATIONS.put("options.particlesDesc0", "Selects the overall amount of particles."); + TRANSLATIONS.put("options.particlesDesc1", "On lower-end hardware, less is better."); + TRANSLATIONS.put("options.advancedOpenglDesc0", "Enables occlusion queries. On AMD and Intel"); + TRANSLATIONS.put("options.advancedOpenglDesc1", "hardware, this may decrease performance."); + TRANSLATIONS.put("options.fboEnableDesc0", "Enables the use of Framebuffer Objects."); + TRANSLATIONS.put("options.fboEnableDesc1", "Necessary for certain Minecraft features."); + TRANSLATIONS.put("options.postProcessEnableDesc0", "Enables post-processing. Disabling will"); + TRANSLATIONS.put("options.postProcessEnableDesc1", "result in reduction in Awesome Levels."); + TRANSLATIONS.put("options.showCape", "Show Cape"); + TRANSLATIONS.put("options.anisotropicFiltering", "Anisotropic Filtering"); + TRANSLATIONS.put("tile.stone.name", "Stone"); + TRANSLATIONS.put("tile.sapling.roofed_oak.name", "Dark Oak Sapling"); + TRANSLATIONS.put("tile.sponge.name", "Sponge"); + TRANSLATIONS.put("tile.stairsStone.name", "Stone Stairs"); + TRANSLATIONS.put("tile.pressurePlate.name", "Pressure Plate"); + TRANSLATIONS.put("tile.fence.name", "Fence"); + TRANSLATIONS.put("tile.fenceGate.name", "Fence Gate"); + TRANSLATIONS.put("tile.trapdoor.name", "Trapdoor"); + TRANSLATIONS.put("item.doorWood.name", "Wooden Door"); + TRANSLATIONS.put("entity.Arrow.name", "arrow"); + TRANSLATIONS.put("achievement.overkill.desc", "Deal eight hearts of damage in a single hit"); + TRANSLATIONS.put("commands.generic.deprecatedId", "Warning: Using numeric IDs will not be supported in the future. Please use names, such as '%s'"); + TRANSLATIONS.put("commands.give.notFound", "There is no such item with ID %s"); + TRANSLATIONS.put("commands.effect.usage", "/effect [seconds] [amplifier]"); + TRANSLATIONS.put("commands.clear.usage", "/clear [item] [data]"); + TRANSLATIONS.put("commands.time.usage", "/time "); + TRANSLATIONS.put("commands.kill.usage", "/kill"); + TRANSLATIONS.put("commands.kill.success", "Ouch! That looked like it hurt"); + TRANSLATIONS.put("commands.tp.success.coordinates", "Teleported %s to %s,%s,%s"); + TRANSLATIONS.put("commands.tp.usage", "/tp [target player] OR /tp [target player] "); + TRANSLATIONS.put("commands.scoreboard.usage", "/scoreboard "); + TRANSLATIONS.put("commands.scoreboard.objectives.usage", "/scoreboard objectives "); + TRANSLATIONS.put("commands.scoreboard.players.usage", "/scoreboard players "); + TRANSLATIONS.put("commands.scoreboard.players.set.usage", "/scoreboard players set "); + TRANSLATIONS.put("commands.scoreboard.players.add.usage", "/scoreboard players add "); + TRANSLATIONS.put("commands.scoreboard.players.remove.usage", "/scoreboard players remove "); + TRANSLATIONS.put("commands.scoreboard.players.reset.usage", "/scoreboard players reset "); + TRANSLATIONS.put("commands.scoreboard.players.reset.success", "Reset all scores of player %s"); + TRANSLATIONS.put("commands.scoreboard.teams.usage", "/scoreboard teams "); + TRANSLATIONS.put("commands.scoreboard.teams.empty.usage", "/scoreboard teams empty"); + TRANSLATIONS.put("commands.scoreboard.teams.option.usage", "/scoreboard teams option "); + TRANSLATIONS.put("commands.spawnpoint.usage", "/spawnpoint OR /spawnpoint OR /spawnpoint "); + TRANSLATIONS.put("commands.setworldspawn.usage", "/setworldspawn OR /setworldspawn "); + TRANSLATIONS.put("commands.gamerule.usage", "/gamerule OR /gamerule "); + TRANSLATIONS.put("commands.testfor.usage", "/testfor "); + TRANSLATIONS.put("commands.testfor.failed", "/testfor is only usable by commandblocks with analog output"); + TRANSLATIONS.put("commands.achievement.usage", "/achievement give [player]"); + } + + private static final ComponentRewriter REWRITER = new ComponentRewriter() { + @Override + protected void handleTranslate(JsonObject object, String translate) { + final String text = TRANSLATIONS.get(translate); + if (text != null) { + object.addProperty("translate", text); + } + } + }; + + public static String toClient(final String text) { + return REWRITER.processText(text).toString(); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/storage/ChunkTracker.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/storage/ChunkTracker.java new file mode 100644 index 0000000..b936238 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/storage/ChunkTracker.java @@ -0,0 +1,36 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.storage; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.minecraft.chunks.DataPalette; +import net.raphimc.vialegacy.api.*; + +public class ChunkTracker extends AbstractChunkTracker { + + public ChunkTracker(final UserConnection user) { + super(user, BlockList1_6.obsidian.blockID, BlockList1_6.portal.blockID); + + for (int i = 9; i < 16; i++) { // double plant + this.registerReplacement(new IdAndData(175, i), new IdAndData(175, 0)); + } + for (int i = 1; i < 16; i++) { // air + this.registerReplacement(new IdAndData(0, i), new IdAndData(0, 0)); + } + } + + @Override + protected void remapBlock(IdAndData block, int x, int y, int z) { + if (block.id == BlockList1_6.portal.blockID && block.data == 0) { + if (this.getBlockNotNull(x - 1, y, z).id == BlockList1_6.obsidian.blockID || this.getBlockNotNull(x + 1, y, z).id == BlockList1_6.obsidian.blockID) { + block.data = 1; + } else { + block.data = 2; + } + } + } + + @Override + protected void postRemap(DataPalette palette) { + palette.replaceId(BlockList1_6.portal.blockID << 4, 0); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/storage/DimensionTracker.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/storage/DimensionTracker.java new file mode 100644 index 0000000..48d133f --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/storage/DimensionTracker.java @@ -0,0 +1,22 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.storage; + +import com.viaversion.viaversion.api.connection.StoredObject; +import com.viaversion.viaversion.api.connection.UserConnection; + +public class DimensionTracker extends StoredObject { + + private int dimensionId = 0; + + public DimensionTracker(UserConnection user) { + super(user); + } + + public void setDimension(final int dimensionId) { + this.dimensionId = dimensionId; + } + + public int getDimensionId() { + return this.dimensionId; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/storage/EntityTracker.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/storage/EntityTracker.java new file mode 100644 index 0000000..a1cd9f2 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/storage/EntityTracker.java @@ -0,0 +1,146 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.storage; + +import com.viaversion.viaversion.api.connection.StoredObject; +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.minecraft.entities.Entity1_10Types; +import com.viaversion.viaversion.api.minecraft.metadata.Metadata; +import com.viaversion.viaversion.libs.fastutil.ints.Int2ObjectMap; +import com.viaversion.viaversion.libs.fastutil.ints.Int2ObjectOpenHashMap; +import net.raphimc.vialegacy.api.Location; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.metadata.MetaIndex1_8to1_7_6; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.model.HologramPartEntity; + +import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ThreadLocalRandom; + +public class EntityTracker extends StoredObject { + + private final Map entityMap = new ConcurrentHashMap<>(); + private final Map groundMap = new ConcurrentHashMap<>(); + private final Int2ObjectMap hologramParts = new Int2ObjectOpenHashMap<>(); + private final Int2ObjectMap virtualHolograms = new Int2ObjectOpenHashMap<>(); + + private int playerID; + + public EntityTracker(UserConnection user) { + super(user); + } + + public int getPlayerID() { + return this.playerID; + } + + public void setPlayerID(final int playerID) { + this.playerID = playerID; + } + + public Map getTrackedEntities() { + return this.entityMap; + } + + public Map getGroundMap() { + return this.groundMap; + } + + public Int2ObjectMap getVirtualHolograms() { + return this.virtualHolograms; + } + + public void trackEntity(final int entityId, final Entity1_10Types.EntityType entityType) throws Exception { + if (this.virtualHolograms.containsKey(entityId)) { + final int newMappedEntityId = this.getNextMappedEntityId(); + final HologramPartEntity hologramPartEntity = this.virtualHolograms.remove(entityId); + hologramPartEntity.relocate(newMappedEntityId); + this.hologramParts.put(newMappedEntityId, hologramPartEntity); + } + if (this.entityMap.containsKey(entityId)) { + this.removeEntity(entityId); + } + + this.entityMap.put(entityId, entityType); + + if (entityType == Entity1_10Types.EntityType.HORSE || entityType == Entity1_10Types.EntityType.WITHER_SKULL) { + this.hologramParts.put(entityId, new HologramPartEntity(this.getUser(), entityId, entityType)); + } + } + + public void removeEntity(final int entityId) throws Exception { + this.entityMap.remove(entityId); + this.groundMap.remove(entityId); + final HologramPartEntity removedEntity = this.hologramParts.remove(entityId); + if (removedEntity != null) { + if (removedEntity.getRiderEntity() != null) { + removedEntity.getRiderEntity().setVehicleEntity(null); + } + if (removedEntity.getVehicleEntity() != null) { + removedEntity.setVehicleEntity(null); + } + removedEntity.onRemove(); + } + } + + public void updateEntityLocation(final int entityId, final int x, final int y, final int z, final boolean relative) throws Exception { + final HologramPartEntity entity = this.hologramParts.get(entityId); + if (entity != null) { + final Location oldLoc = entity.getLocation(); + + final double xPos = x / 32.0D; + final double yPos = y / 32.0D; + final double zPos = z / 32.0D; + + Location newLoc; + if (relative) { + newLoc = new Location(oldLoc.getX() + xPos, oldLoc.getY() + yPos, oldLoc.getZ() + zPos); + } else { + newLoc = new Location(xPos, yPos, zPos); + } + + entity.setLocation(newLoc); + } + } + + public void updateEntityMetadata(final int entityId, final List metadataList) throws Exception { + final HologramPartEntity entity = this.hologramParts.get(entityId); + if (entity != null) { + for (Metadata metadata : metadataList) { + final MetaIndex1_8to1_7_6 metaIndex = MetaIndex1_8to1_7_6.searchIndex(entity.getEntityType(), metadata.id()); + if (metaIndex != null) { + try { + metadata.setTypeAndValue(metaIndex.getOldType(), metadata.getValue()); + } catch (Throwable ignored) { + continue; + } + entity.setMetadata(metaIndex, metadata.getValue()); + } + } + entity.onChange(); + } + } + + public void updateEntityAttachState(final int ridingId, final int vehicleId) throws Exception { + final HologramPartEntity ridingEntity = this.hologramParts.get(ridingId); + if (ridingEntity != null) { + ridingEntity.setVehicleEntity(this.hologramParts.get(vehicleId)); + } + } + + public void clear() throws Exception { + this.entityMap.clear(); + this.groundMap.clear(); + for (HologramPartEntity hologramPartEntity : this.hologramParts.values()) { + hologramPartEntity.onRemove(); + } + this.virtualHolograms.clear(); + } + + public int getNextMappedEntityId() { + int id; + do { + id = ThreadLocalRandom.current().nextInt(1_000_000_000, Integer.MAX_VALUE); + } while (this.entityMap.containsKey(id) || this.virtualHolograms.containsKey(id)); + return id; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/storage/MapStorage.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/storage/MapStorage.java new file mode 100644 index 0000000..a430139 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/storage/MapStorage.java @@ -0,0 +1,25 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.storage; + +import com.viaversion.viaversion.api.connection.StoredObject; +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.libs.fastutil.ints.Int2ObjectMap; +import com.viaversion.viaversion.libs.fastutil.ints.Int2ObjectOpenHashMap; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.model.MapData; + +public class MapStorage extends StoredObject { + + private final Int2ObjectMap maps = new Int2ObjectOpenHashMap<>(); + + public MapStorage(UserConnection user) { + super(user); + } + + public MapData getMapData(final int id) { + return this.maps.get(id); + } + + public void putMapData(final int id, final MapData mapData) { + this.maps.put(id, mapData); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/storage/TablistStorage.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/storage/TablistStorage.java new file mode 100644 index 0000000..d2d2dfc --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/storage/TablistStorage.java @@ -0,0 +1,64 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.storage; + +import com.viaversion.viaversion.api.Via; +import com.viaversion.viaversion.api.connection.StoredObject; +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; +import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.protocols.protocol1_8.ClientboundPackets1_8; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.Protocol1_8to1_7_6_10; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.model.GameProfile; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.model.TabListEntry; + +import java.util.*; + +public class TablistStorage extends StoredObject { + + public final Map tablist = new HashMap<>(); + + public TablistStorage(UserConnection user) { + super(user); + } + + public void sendTempEntry(final TabListEntry entry) throws Exception { + entry.ping = -1; + this.sendAddEntry(entry); // send tablist entry before spawning player + Via.getPlatform().runSync(() -> { // wait for the client to load the skin then remove the fake tablist entry + try { + sendRemoveEntry(entry); + } catch (Throwable ignored) { + } + }, entry.gameProfile.isOffline() ? 2L : 60L); + } + + public void sendAddEntry(final TabListEntry entry) throws Exception { + final List gameProfileProperties = entry.gameProfile.getAllProperties(); + + final PacketWrapper addPlayerListItemPacket = PacketWrapper.create(ClientboundPackets1_8.PLAYER_INFO, this.getUser()); + addPlayerListItemPacket.write(Type.VAR_INT, 0); // action + addPlayerListItemPacket.write(Type.VAR_INT, 1); // count + addPlayerListItemPacket.write(Type.UUID, entry.gameProfile.uuid); // uuid + addPlayerListItemPacket.write(Type.STRING, entry.gameProfile.userName); // name + addPlayerListItemPacket.write(Type.VAR_INT, gameProfileProperties.size()); // properties count + { // properties + for (GameProfile.Property profileEntry : gameProfileProperties) { + addPlayerListItemPacket.write(Type.STRING, profileEntry.key); // key + addPlayerListItemPacket.write(Type.STRING, profileEntry.value); // value + addPlayerListItemPacket.write(Type.OPTIONAL_STRING, profileEntry.signature); // signature + } + } + addPlayerListItemPacket.write(Type.VAR_INT, entry.gameMode); // gamemode + addPlayerListItemPacket.write(Type.VAR_INT, entry.ping); // ping + addPlayerListItemPacket.write(Type.OPTIONAL_STRING, null); // display name + addPlayerListItemPacket.send(Protocol1_8to1_7_6_10.class); + } + + public void sendRemoveEntry(final TabListEntry entry) throws Exception { + final PacketWrapper removePlayerListItemPacket = PacketWrapper.create(ClientboundPackets1_8.PLAYER_INFO, this.getUser()); + removePlayerListItemPacket.write(Type.VAR_INT, 4); // action + removePlayerListItemPacket.write(Type.VAR_INT, 1); // count + removePlayerListItemPacket.write(Type.UUID, entry.gameProfile.uuid); // uuid + removePlayerListItemPacket.send(Protocol1_8to1_7_6_10.class); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/storage/WindowTracker.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/storage/WindowTracker.java new file mode 100644 index 0000000..94aaa6b --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/storage/WindowTracker.java @@ -0,0 +1,21 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.storage; + +import com.viaversion.viaversion.api.connection.StoredObject; +import com.viaversion.viaversion.api.connection.UserConnection; + +import java.util.HashMap; +import java.util.Map; + +public class WindowTracker extends StoredObject { + + public final Map types = new HashMap<>(); + + public WindowTracker(UserConnection user) { + super(user); + } + + public short get(short windowId) { + return types.getOrDefault(windowId, (short) -1); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/types/BlockChangeRecordArrayType.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/types/BlockChangeRecordArrayType.java new file mode 100644 index 0000000..1aef4c0 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/types/BlockChangeRecordArrayType.java @@ -0,0 +1,52 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types; + +import com.viaversion.viaversion.api.minecraft.BlockChangeRecord; +import com.viaversion.viaversion.api.minecraft.BlockChangeRecord1_8; +import com.viaversion.viaversion.api.type.Type; +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.ViaLegacy; + +import java.io.*; +import java.util.logging.Level; + +public class BlockChangeRecordArrayType extends Type { + + public BlockChangeRecordArrayType() { + super(BlockChangeRecord[].class); + } + + @Override + public BlockChangeRecord[] read(ByteBuf buffer) throws Exception { + final int length = buffer.readUnsignedShort(); + final int dataLength = buffer.readInt(); + final byte[] data = new byte[dataLength]; + buffer.readBytes(data); + final DataInputStream dataInputStream = new DataInputStream(new ByteArrayInputStream(data)); + final BlockChangeRecord[] blockChangeRecords = new BlockChangeRecord[length]; + try { + for (int i = 0; i < length; i++) { + final short position = dataInputStream.readShort(); + final short blockId = dataInputStream.readShort(); + blockChangeRecords[i] = new BlockChangeRecord1_8(position >> 12 & 15, position & 255, position >> 8 & 15, blockId); + } + } catch (IOException e) { + ViaLegacy.getPlatform().getLogger().log(Level.WARNING, "MultiBlockChange Record Array length mismatch: Expected " + dataLength + " bytes", e); + } + return blockChangeRecords; + } + + @Override + public void write(ByteBuf buffer, BlockChangeRecord[] records) throws Exception { + final ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + final DataOutputStream dataOutputStream = new DataOutputStream(byteArrayOutputStream); + for (BlockChangeRecord record : records) { + dataOutputStream.writeShort((short) (record.getSectionX() << 12 | record.getSectionZ() << 8 | record.getY(-1))); + dataOutputStream.writeShort((short) record.getBlockId()); + } + final byte[] data = byteArrayOutputStream.toByteArray(); + buffer.writeShort(records.length); + buffer.writeInt(data.length); + buffer.writeBytes(data); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/types/Chunk1_7_6Type.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/types/Chunk1_7_6Type.java new file mode 100644 index 0000000..5c2b599 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/types/Chunk1_7_6Type.java @@ -0,0 +1,270 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types; + +import com.viaversion.viaversion.api.minecraft.Environment; +import com.viaversion.viaversion.api.minecraft.chunks.*; +import com.viaversion.viaversion.api.type.PartialType; +import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.types.CustomByteType; +import com.viaversion.viaversion.api.type.types.minecraft.BaseChunkType; +import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; +import com.viaversion.viaversion.util.Pair; +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.api.IdAndData; +import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.chunks.ExtendedBlockStorage; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.util.ArrayList; +import java.util.zip.*; + +public class Chunk1_7_6Type extends PartialType { + + public Chunk1_7_6Type(final ClientWorld clientWorld) { + super(clientWorld, Chunk.class); + } + + @Override + public Class getBaseClass() { + return BaseChunkType.class; + } + + /** + * This method is here to allow overriding the code for 1.2.5 -> 1.3.2 because it introduced an unused int + * + * @param byteBuf The buffer + * @param clientWorld The ClientWorld + */ + protected void readUnusedInt(final ByteBuf byteBuf, final ClientWorld clientWorld) { + } + + /** + * This method is here to allow overriding the code for 1.2.5 -> 1.3.2 because it introduced an unused int + * + * @param byteBuf The buffer + * @param clientWorld The ClientWorld + * @param chunk The Chunk + */ + protected void writeUnusedInt(final ByteBuf byteBuf, final ClientWorld clientWorld, final Chunk chunk) { + } + + @Override + public Chunk read(ByteBuf byteBuf, ClientWorld clientWorld) throws Exception { + final int chunkX = byteBuf.readInt(); + final int chunkZ = byteBuf.readInt(); + final boolean fullChunk = byteBuf.readBoolean(); + final short primaryBitMask = byteBuf.readShort(); + final short additionalBitMask = byteBuf.readShort(); + final int compressedSize = byteBuf.readInt(); + this.readUnusedInt(byteBuf, clientWorld); + final byte[] data = new CustomByteType(compressedSize).read(byteBuf); + + final byte[] uncompressedData = new byte[getSize(primaryBitMask, additionalBitMask, fullChunk, clientWorld.getEnvironment() == Environment.NORMAL)]; + final Inflater inflater = new Inflater(); + try { + inflater.setInput(data, 0, compressedSize); + inflater.inflate(uncompressedData); + } catch (DataFormatException ex) { + throw new IOException("Bad compressed data format"); + } finally { + inflater.end(); + } + + // Check if the chunk is an unload packet and return early + if (fullChunk && primaryBitMask == 0) { + return new BaseChunk(chunkX, chunkZ, true, false, 0, new ChunkSection[16], null, new ArrayList<>()); + } + + return deserialize(chunkX, chunkZ, fullChunk, clientWorld.getEnvironment() == Environment.NORMAL, primaryBitMask, additionalBitMask, uncompressedData); + } + + @Override + public void write(ByteBuf byteBuf, ClientWorld clientWorld, Chunk chunk) throws Exception { + final Pair chunkData = serialize(chunk); + final byte[] data = chunkData.key(); + final short additionalBitMask = chunkData.value(); + + final Deflater deflater = new Deflater(); + byte[] compressedData; + int compressedSize; + try { + deflater.setInput(data, 0, data.length); + deflater.finish(); + compressedData = new byte[data.length]; + compressedSize = deflater.deflate(compressedData); + } finally { + deflater.end(); + } + + byteBuf.writeInt(chunk.getX()); + byteBuf.writeInt(chunk.getZ()); + byteBuf.writeBoolean(chunk.isFullChunk()); + byteBuf.writeShort(chunk.getBitmask()); + byteBuf.writeShort(additionalBitMask); + byteBuf.writeInt(compressedSize); + this.writeUnusedInt(byteBuf, clientWorld, chunk); + byteBuf.writeBytes(compressedData, 0, compressedSize); + } + + public static Chunk deserialize(final int chunkX, final int chunkZ, final boolean fullChunk, final boolean skyLight, final int primaryBitMask, final int additionalBitMask, final byte[] chunkData) { + final ExtendedBlockStorage[] storageArrays = new ExtendedBlockStorage[16]; + + int dataPosition = 0; + for (int i = 0; i < storageArrays.length; i++) { + if ((primaryBitMask & 1 << i) != 0) { + if (storageArrays[i] == null) { + storageArrays[i] = new ExtendedBlockStorage(skyLight); + } + + final byte[] lsbArray = storageArrays[i].getBlockLSBArray(); + System.arraycopy(chunkData, dataPosition, lsbArray, 0, lsbArray.length); + dataPosition += lsbArray.length; + } + } + + for (int i = 0; i < storageArrays.length; i++) { + if ((primaryBitMask & 1 << i) != 0 && storageArrays[i] != null) { + final NibbleArray nibbleArray = storageArrays[i].getBlockMetadataArray(); + System.arraycopy(chunkData, dataPosition, nibbleArray.getHandle(), 0, nibbleArray.getHandle().length); + dataPosition += nibbleArray.getHandle().length; + } + } + + for (int i = 0; i < storageArrays.length; i++) { + if ((primaryBitMask & 1 << i) != 0 && storageArrays[i] != null) { + final NibbleArray nibbleArray = storageArrays[i].getBlockLightArray(); + System.arraycopy(chunkData, dataPosition, nibbleArray.getHandle(), 0, nibbleArray.getHandle().length); + dataPosition += nibbleArray.getHandle().length; + } + } + + if (skyLight) { + for (int i = 0; i < storageArrays.length; i++) { + if ((primaryBitMask & 1 << i) != 0 && storageArrays[i] != null) { + final NibbleArray nibbleArray = storageArrays[i].getSkyLightArray(); + System.arraycopy(chunkData, dataPosition, nibbleArray.getHandle(), 0, nibbleArray.getHandle().length); + dataPosition += nibbleArray.getHandle().length; + } + } + } + + for (int i = 0; i < storageArrays.length; i++) { + if ((additionalBitMask & 1 << i) != 0) { + if (storageArrays[i] != null) { + final NibbleArray nibbleArray = storageArrays[i].getOrCreateBlockMSBArray(); + System.arraycopy(chunkData, dataPosition, nibbleArray.getHandle(), 0, nibbleArray.getHandle().length); + dataPosition += nibbleArray.getHandle().length; + } else { + dataPosition += 2048; + } + } + } + + int[] biomeData = null; + if (fullChunk) { + biomeData = new int[256]; + for (int i = 0; i < biomeData.length; i++) { + biomeData[i] = chunkData[dataPosition + i] & 255; + } + dataPosition += biomeData.length; + } + + final ChunkSection[] sections = new ChunkSection[16]; + for (int i = 0; i < storageArrays.length; i++) { + final ExtendedBlockStorage storage = storageArrays[i]; + if (storage != null) { + final ChunkSection section = sections[i] = new ChunkSectionImpl(true); + section.palette(PaletteType.BLOCKS).addId(0); + for (int x = 0; x < 16; x++) { + for (int z = 0; z < 16; z++) { + for (int y = 0; y < 16; y++) { + section.palette(PaletteType.BLOCKS).setIdAt(x, y, z, IdAndData.toCompressedData(storage.getBlockId(x, y, z), storage.getBlockMetadata(x, y, z))); + } + } + } + section.getLight().setBlockLight(storage.getBlockLightArray().getHandle()); + if (skyLight) { + section.getLight().setSkyLight(storage.getSkyLightArray().getHandle()); + } + } + } + + return new BaseChunk(chunkX, chunkZ, fullChunk, false, primaryBitMask, sections, biomeData, new ArrayList<>()); + } + + public static Pair serialize(final Chunk chunk) throws IOException { + final ExtendedBlockStorage[] storageArrays = new ExtendedBlockStorage[16]; + for (int i = 0; i < storageArrays.length; i++) { + final ChunkSection section = chunk.getSections()[i]; + if (section != null) { + final ExtendedBlockStorage storage = storageArrays[i] = new ExtendedBlockStorage(section.getLight().hasSkyLight()); + for (int x = 0; x < 16; x++) { + for (int z = 0; z < 16; z++) { + for (int y = 0; y < 16; y++) { + final int flatBlock = section.palette(PaletteType.BLOCKS).idAt(x, y, z); + storage.setBlockId(x, y, z, flatBlock >> 4); + storage.setBlockMetadata(x, y, z, flatBlock & 15); + } + } + } + storage.getBlockLightArray().setHandle(section.getLight().getBlockLight()); + if (section.getLight().hasSkyLight()) { + storage.getSkyLightArray().setHandle(section.getLight().getSkyLight()); + } + } + } + + final ByteArrayOutputStream output = new ByteArrayOutputStream(); + + for (int i = 0; i < storageArrays.length; i++) { + if ((chunk.getBitmask() & 1 << i) != 0) { + output.write(storageArrays[i].getBlockLSBArray()); + } + } + + for (int i = 0; i < storageArrays.length; i++) { + if ((chunk.getBitmask() & 1 << i) != 0) { + output.write(storageArrays[i].getBlockMetadataArray().getHandle()); + } + } + + for (int i = 0; i < storageArrays.length; i++) { + if ((chunk.getBitmask() & 1 << i) != 0) { + output.write(storageArrays[i].getBlockLightArray().getHandle()); + } + } + + for (int i = 0; i < storageArrays.length; i++) { + if ((chunk.getBitmask() & 1 << i) != 0 && storageArrays[i].getSkyLightArray() != null) { + output.write(storageArrays[i].getSkyLightArray().getHandle()); + } + } + + short additionalBitMask = 0; + for (int i = 0; i < storageArrays.length; i++) { + if ((chunk.getBitmask() & 1 << i) != 0 && storageArrays[i].hasBlockMSBArray()) { + additionalBitMask |= 1 << i; + output.write(storageArrays[i].getOrCreateBlockMSBArray().getHandle()); + } + } + + if (chunk.isFullChunk() && chunk.getBiomeData() != null) { + for (int biome : chunk.getBiomeData()) { + output.write(biome); + } + } + + return new Pair<>(output.toByteArray(), additionalBitMask); + } + + public static int getSize(final short primaryBitMask, final short additionalBitMask, final boolean fullChunk, final boolean skyLight) { + final int primarySectionCount = Integer.bitCount(primaryBitMask & 0xFFFF); + final int additionalSectionCount = Integer.bitCount(additionalBitMask & 0xFFFF); + + int size = ((4096 + 2048 + 2048) * primarySectionCount) + (2048 * additionalSectionCount); + if (skyLight) size += 2048 * primarySectionCount; + if (fullChunk) size += 256; + + return size; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/types/ChunkBulk1_7_6Type.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/types/ChunkBulk1_7_6Type.java new file mode 100644 index 0000000..763f6bb --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/types/ChunkBulk1_7_6Type.java @@ -0,0 +1,134 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types; + +import com.viaversion.viaversion.api.minecraft.chunks.Chunk; +import com.viaversion.viaversion.api.type.PartialType; +import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.types.CustomByteType; +import com.viaversion.viaversion.api.type.types.minecraft.BaseChunkBulkType; +import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; +import com.viaversion.viaversion.util.Pair; +import io.netty.buffer.ByteBuf; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.util.zip.*; + +public class ChunkBulk1_7_6Type extends PartialType { + + public ChunkBulk1_7_6Type(final ClientWorld clientWorld) { + super(clientWorld, Chunk[].class); + } + + @Override + public Class getBaseClass() { + return BaseChunkBulkType.class; + } + + /** + * This method is here to allow overriding the code for 1.4.5 -> 1.4.7 + * + * @param byteBuf The buffer + * @param clientWorld The ClientWorld + * @return Read skylight array or not + */ + protected boolean readHasSkyLight(final ByteBuf byteBuf, final ClientWorld clientWorld) { + return byteBuf.readBoolean(); + } + + /** + * This method is here to allow overriding the code for 1.4.5 -> 1.4.7 + * + * @param byteBuf The buffer + * @param clientWorld The ClientWorld + * @param hasSkyLight Has skylight + */ + protected void writeHasSkyLight(final ByteBuf byteBuf, final ClientWorld clientWorld, final boolean hasSkyLight) { + byteBuf.writeBoolean(hasSkyLight); + } + + @Override + public Chunk[] read(ByteBuf byteBuf, ClientWorld clientWorld) throws Exception { + final short chunkCount = byteBuf.readShort(); + final int compressedSize = byteBuf.readInt(); + final boolean hasSkyLight = this.readHasSkyLight(byteBuf, clientWorld); + final byte[] data = new CustomByteType(compressedSize).read(byteBuf); + final int[] chunkX = new int[chunkCount]; + final int[] chunkZ = new int[chunkCount]; + final short[] primaryBitMask = new short[chunkCount]; + final short[] additionalBitMask = new short[chunkCount]; + for (int i = 0; i < chunkCount; i++) { + chunkX[i] = byteBuf.readInt(); + chunkZ[i] = byteBuf.readInt(); + primaryBitMask[i] = byteBuf.readShort(); + additionalBitMask[i] = byteBuf.readShort(); + } + + final byte[] uncompressedData = new byte[Chunk1_7_6Type.getSize((short) 0xFFFF, (short) 0xFFFF, true, hasSkyLight) * chunkCount]; + final Inflater inflater = new Inflater(); + try { + inflater.setInput(data, 0, compressedSize); + inflater.inflate(uncompressedData); + } catch (DataFormatException ex) { + throw new IOException("Bad compressed data format"); + } finally { + inflater.end(); + } + + final Chunk[] chunks = new Chunk[chunkCount]; + int dataPosition = 0; + for (int i = 0; i < chunkCount; i++) { + final byte[] chunkData = new byte[Chunk1_7_6Type.getSize(primaryBitMask[i], additionalBitMask[i], true, hasSkyLight)]; + System.arraycopy(uncompressedData, dataPosition, chunkData, 0, chunkData.length); + chunks[i] = Chunk1_7_6Type.deserialize(chunkX[i], chunkZ[i], true, hasSkyLight, primaryBitMask[i], additionalBitMask[i], chunkData); + dataPosition += chunkData.length; + } + + return chunks; + } + + @Override + public void write(ByteBuf byteBuf, ClientWorld clientWorld, Chunk[] chunks) throws Exception { + final int chunkCount = chunks.length; + final ByteArrayOutputStream output = new ByteArrayOutputStream(); + final int[] chunkX = new int[chunkCount]; + final int[] chunkZ = new int[chunkCount]; + final short[] primaryBitMask = new short[chunkCount]; + final short[] additionalBitMask = new short[chunkCount]; + + for (int i = 0; i < chunkCount; i++) { + final Chunk chunk = chunks[i]; + final Pair chunkData = Chunk1_7_6Type.serialize(chunk); + output.write(chunkData.key()); + chunkX[i] = chunk.getX(); + chunkZ[i] = chunk.getZ(); + primaryBitMask[i] = (short) chunk.getBitmask(); + additionalBitMask[i] = chunkData.value(); + } + final byte[] data = output.toByteArray(); + + final Deflater deflater = new Deflater(); + byte[] compressedData; + int compressedSize; + try { + deflater.setInput(data, 0, data.length); + deflater.finish(); + compressedData = new byte[data.length]; + compressedSize = deflater.deflate(compressedData); + } finally { + deflater.end(); + } + + byteBuf.writeShort(chunkCount); + byteBuf.writeInt(compressedSize); + this.writeHasSkyLight(byteBuf, clientWorld, true); + byteBuf.writeBytes(compressedData, 0, compressedSize); + + for (int i = 0; i < chunkCount; i++) { + byteBuf.writeInt(chunkX[i]); + byteBuf.writeInt(chunkZ[i]); + byteBuf.writeShort(primaryBitMask[i]); + byteBuf.writeShort(additionalBitMask[i]); + } + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/types/IntArrayType.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/types/IntArrayType.java new file mode 100644 index 0000000..063c438 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/types/IntArrayType.java @@ -0,0 +1,29 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types; + +import com.viaversion.viaversion.api.type.Type; +import io.netty.buffer.ByteBuf; + +public class IntArrayType extends Type { + + public IntArrayType() { + super(int[].class); + } + + @Override + public int[] read(ByteBuf buffer) throws Exception { + final byte length = buffer.readByte(); + final int[] array = new int[length]; + + for (byte i = 0; i < length; i++) { + array[i] = buffer.readInt(); + } + return array; + } + + @Override + public void write(ByteBuf buffer, int[] array) throws Exception { + buffer.writeByte(array.length); + for (int i : array) buffer.writeInt(i); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/types/ItemArrayType.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/types/ItemArrayType.java new file mode 100644 index 0000000..081e26f --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/types/ItemArrayType.java @@ -0,0 +1,35 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types; + +import com.viaversion.viaversion.api.minecraft.item.Item; +import com.viaversion.viaversion.api.type.Type; +import io.netty.buffer.ByteBuf; + +public class ItemArrayType extends Type { + + private final Type itemType; + + public ItemArrayType(final Type itemType) { + super(Item[].class); + this.itemType = itemType; + } + + @Override + public Item[] read(ByteBuf buffer) throws Exception { + final int amount = buffer.readShort(); + final Item[] items = new Item[amount]; + + for (int i = 0; i < amount; i++) { + items[i] = this.itemType.read(buffer); + } + return items; + } + + @Override + public void write(ByteBuf buffer, Item[] items) throws Exception { + buffer.writeShort(items.length); + for (Item item : items) { + this.itemType.write(buffer, (T) item); + } + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/types/ItemType.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/types/ItemType.java new file mode 100644 index 0000000..9d2638e --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/types/ItemType.java @@ -0,0 +1,44 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types; + +import com.viaversion.viaversion.api.minecraft.item.DataItem; +import com.viaversion.viaversion.api.minecraft.item.Item; +import com.viaversion.viaversion.api.type.Type; +import io.netty.buffer.ByteBuf; + +public class ItemType extends Type { + + private final boolean compressed; + + public ItemType(boolean compressed) { + super(Item.class); + this.compressed = compressed; + } + + @Override + public Item read(ByteBuf buffer) throws Exception { + final short id = buffer.readShort(); + if (id < 0) { + return null; + } + + final Item item = new DataItem(); + item.setIdentifier(id); + item.setAmount(buffer.readByte()); + item.setData(buffer.readShort()); + item.setTag((this.compressed ? Types1_7_6.COMPRESSED_NBT : Types1_7_6.NBT).read(buffer)); + return item; + } + + @Override + public void write(ByteBuf buffer, Item item) throws Exception { + if (item == null) { + buffer.writeShort(-1); + } else { + buffer.writeShort(item.identifier()); + buffer.writeByte(item.amount()); + buffer.writeShort(item.data()); + (this.compressed ? Types1_7_6.COMPRESSED_NBT : Types1_7_6.NBT).write(buffer, item.tag()); + } + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/types/MetaType1_7_6.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/types/MetaType1_7_6.java new file mode 100644 index 0000000..994026c --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/types/MetaType1_7_6.java @@ -0,0 +1,36 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types; + +import com.viaversion.viaversion.api.minecraft.metadata.MetaType; +import com.viaversion.viaversion.api.type.Type; + +public enum MetaType1_7_6 implements MetaType { + + Byte(0, Type.BYTE), + Short(1, Type.SHORT), + Int(2, Type.INT), + Float(3, Type.FLOAT), + String(4, Type.STRING), + Slot(5, Types1_7_6.COMPRESSED_ITEM), + Position(6, Type.VECTOR); + + private final int typeID; + private final Type type; + + MetaType1_7_6(int typeID, Type type) { + this.typeID = typeID; + this.type = type; + } + + public static MetaType1_7_6 byId(int id) { + return values()[id]; + } + + public int typeId() { + return this.typeID; + } + + public Type type() { + return this.type; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/types/MetadataType.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/types/MetadataType.java new file mode 100644 index 0000000..59cbf4a --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/types/MetadataType.java @@ -0,0 +1,13 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types; + +import com.viaversion.viaversion.api.minecraft.metadata.MetaType; +import com.viaversion.viaversion.api.type.types.minecraft.OldMetaType; + +public class MetadataType extends OldMetaType { + + @Override + protected MetaType getType(int index) { + return MetaType1_7_6.byId(index); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/types/NBTType.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/types/NBTType.java new file mode 100644 index 0000000..7fb0fbf --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/types/NBTType.java @@ -0,0 +1,54 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types; + +import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.libs.opennbt.NBTIO; +import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag; +import io.netty.buffer.*; + +import java.io.*; +import java.util.zip.GZIPInputStream; +import java.util.zip.GZIPOutputStream; + +public class NBTType extends Type { + + private final boolean compressed; + + public NBTType(final boolean compressed) { + super(CompoundTag.class); + this.compressed = compressed; + } + + @Override + public CompoundTag read(ByteBuf buffer) throws IOException { + final short length = buffer.readShort(); + if (length <= 0) { + return null; + } + + final ByteBuf data = buffer.readSlice(length); + try (InputStream in = this.compressed ? new GZIPInputStream(new ByteBufInputStream(data)) : new ByteBufInputStream(data)) { + return NBTIO.readTag(in); + } + } + + @Override + public void write(ByteBuf buffer, CompoundTag nbt) throws Exception { + if (nbt == null) { + buffer.writeShort(-1); + return; + } + + final ByteBuf data = buffer.alloc().buffer(); + try { + try (OutputStream out = this.compressed ? new GZIPOutputStream(new ByteBufOutputStream(data)) : new ByteBufOutputStream(data)) { + NBTIO.writeTag(out, nbt); + } + + buffer.writeShort(data.readableBytes()); + buffer.writeBytes(data); + } finally { + data.release(); + } + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/types/PositionVarYType.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/types/PositionVarYType.java new file mode 100644 index 0000000..d171e29 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/types/PositionVarYType.java @@ -0,0 +1,32 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types; + +import com.viaversion.viaversion.api.minecraft.Position; +import com.viaversion.viaversion.api.type.Type; +import io.netty.buffer.ByteBuf; + +import java.util.function.IntFunction; + +public class PositionVarYType extends Type { + + private final Type yType; + private final IntFunction yConverter; + + public PositionVarYType(final Type yType, final IntFunction yConverter) { + super(Position.class); + this.yType = yType; + this.yConverter = yConverter; + } + + @Override + public Position read(ByteBuf buffer) throws Exception { + return new Position(buffer.readInt(), this.yType.read(buffer).intValue(), buffer.readInt()); + } + + @Override + public void write(ByteBuf buffer, Position position) throws Exception { + buffer.writeInt(position.x()); + this.yType.write(buffer, this.yConverter.apply(position.y())); + buffer.writeInt(position.z()); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/types/Types1_7_6.java b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/types/Types1_7_6.java new file mode 100644 index 0000000..80534ab --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/release/protocol1_8to1_7_6_10/types/Types1_7_6.java @@ -0,0 +1,36 @@ +package net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.types; + +import com.viaversion.viaversion.api.minecraft.BlockChangeRecord; +import com.viaversion.viaversion.api.minecraft.Position; +import com.viaversion.viaversion.api.minecraft.item.Item; +import com.viaversion.viaversion.api.minecraft.metadata.Metadata; +import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.types.minecraft.MetaListType; +import com.viaversion.viaversion.libs.opennbt.tag.builtin.CompoundTag; + +import java.util.List; + +public class Types1_7_6 { + + public static final Type INT_ARRAY = new IntArrayType(); + + public static final Type NBT = new NBTType(false); + public static final Type COMPRESSED_NBT = new NBTType(true); + + public static final Type ITEM = new ItemType(false); + public static final Type COMPRESSED_ITEM = new ItemType(true); + + public static final Type ITEM_ARRAY = new ItemArrayType<>(ITEM); + public static final Type COMPRESSED_ITEM_ARRAY = new ItemArrayType<>(COMPRESSED_ITEM); + + public static final Type METADATA = new MetadataType(); + public static final Type> METADATA_LIST = new MetaListType(METADATA); + + public static final Type BLOCK_CHANGE_RECORD_ARRAY = new BlockChangeRecordArrayType(); + + public static final Type POSITION_BYTE = new PositionVarYType<>(Type.BYTE, i -> (byte) i); + public static final Type POSITION_UBYTE = new PositionVarYType<>(Type.UNSIGNED_BYTE, i -> (short) i); + public static final Type POSITION_SHORT = new PositionVarYType<>(Type.SHORT, i -> (short) i); + public static final Type POSITION_INT = new PositionVarYType<>(Type.INT, i -> i); + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/snapshot/protocol1_14to3D_Shareware/ClientboundPackets3D_Shareware.java b/src/main/java/net/raphimc/vialegacy/protocols/snapshot/protocol1_14to3D_Shareware/ClientboundPackets3D_Shareware.java new file mode 100644 index 0000000..8bfaa69 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/snapshot/protocol1_14to3D_Shareware/ClientboundPackets3D_Shareware.java @@ -0,0 +1,109 @@ +package net.raphimc.vialegacy.protocols.snapshot.protocol1_14to3D_Shareware; + +import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType; + +public enum ClientboundPackets3D_Shareware implements ClientboundPacketType { + + SPAWN_ENTITY, // 0x00 + SPAWN_EXPERIENCE_ORB, // 0x01 + SPAWN_GLOBAL_ENTITY, // 0x02 + SPAWN_MOB, // 0x03 + SPAWN_PAINTING, // 0x04 + SPAWN_PLAYER, // 0x05 + ENTITY_ANIMATION, // 0x06 + STATISTICS, // 0x07 + BLOCK_BREAK_ANIMATION, // 0x08 + BLOCK_ENTITY_DATA, // 0x09 + BLOCK_ACTION, // 0x0A + BLOCK_CHANGE, // 0x0B + BOSSBAR, // 0x0C + SERVER_DIFFICULTY, // 0x0D + CHAT_MESSAGE, // 0x0E + MULTI_BLOCK_CHANGE, // 0x0F + TAB_COMPLETE, // 0x10 + DECLARE_COMMANDS, // 0x11 + WINDOW_CONFIRMATION, // 0x12 + CLOSE_WINDOW, // 0x13 + OPEN_HORSE_WINDOW, // 0x14 + WINDOW_ITEMS, // 0x15 + WINDOW_PROPERTY, // 0x16 + SET_SLOT, // 0x17 + COOLDOWN, // 0x18 + PLUGIN_MESSAGE, // 0x19 + NAMED_SOUND, // 0x1A + DISCONNECT, // 0x1B + ENTITY_STATUS, // 0x1C + NBT_QUERY, // 0x1D + EXPLOSION, // 0x1E + UNLOAD_CHUNK, // 0x1F + GAME_EVENT, // 0x20 + KEEP_ALIVE, // 0x21 + CHUNK_DATA, // 0x22 + EFFECT, // 0x23 + SPAWN_PARTICLE, // 0x24 + JOIN_GAME, // 0x25 + MAP_DATA, // 0x26 + ENTITY_MOVEMENT, // 0x27 + ENTITY_POSITION, // 0x28 + ENTITY_POSITION_AND_ROTATION, // 0x29 + ENTITY_ROTATION, // 0x2A + VEHICLE_MOVE, // 0x2B + OPEN_BOOK, // 0x2C + OPEN_SIGN_EDITOR, // 0x2D + CRAFT_RECIPE_RESPONSE, // 0x2E + PLAYER_ABILITIES, // 0x2F + COMBAT_EVENT, // 0x30 + PLAYER_INFO, // 0x31 + FACE_PLAYER, // 0x32 + PLAYER_POSITION, // 0x33 + UNLOCK_RECIPES, // 0x34 + DESTROY_ENTITIES, // 0x35 + REMOVE_ENTITY_EFFECT, // 0x36 + RESOURCE_PACK, // 0x37 + RESPAWN, // 0x38 + ENTITY_HEAD_LOOK, // 0x39 + SELECT_ADVANCEMENTS_TAB, // 0x3A + WORLD_BORDER, // 0x3B + CAMERA, // 0x3C + HELD_ITEM_CHANGE, // 0x3D + DISPLAY_SCOREBOARD, // 0x3E + ENTITY_METADATA, // 0x3F + ATTACH_ENTITY, // 0x40 + ENTITY_VELOCITY, // 0x41 + ENTITY_EQUIPMENT, // 0x42 + SET_EXPERIENCE, // 0x43 + UPDATE_HEALTH, // 0x44 + SCOREBOARD_OBJECTIVE, // 0x45 + SET_PASSENGERS, // 0x46 + TEAMS, // 0x47 + UPDATE_SCORE, // 0x48 + SPAWN_POSITION, // 0x49 + TIME_UPDATE, // 0x4A + TITLE, // 0x4B + STOP_SOUND, // 0x4C + SOUND, // 0x4D + ENTITY_SOUND, // 0x4E + TAB_LIST, // 0x4F + COLLECT_ITEM, // 0x50 + ENTITY_TELEPORT, // 0x51 + ADVANCEMENTS, // 0x52 + ENTITY_PROPERTIES, // 0x53 + ENTITY_EFFECT, // 0x54 + DECLARE_RECIPES, // 0x55 + TAGS, // 0x56 + UPDATE_LIGHT, // 0x57 + OPEN_WINDOW, // 0x58 + TRADE_LIST, // 0x59 + UPDATE_VIEW_DISTANCE; // 0x5A + + @Override + public int getId() { + return this.ordinal(); + } + + @Override + public String getName() { + return this.name(); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/snapshot/protocol1_14to3D_Shareware/Protocol1_14to3D_Shareware.java b/src/main/java/net/raphimc/vialegacy/protocols/snapshot/protocol1_14to3D_Shareware/Protocol1_14to3D_Shareware.java new file mode 100644 index 0000000..a8a6558 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/snapshot/protocol1_14to3D_Shareware/Protocol1_14to3D_Shareware.java @@ -0,0 +1,95 @@ +package net.raphimc.vialegacy.protocols.snapshot.protocol1_14to3D_Shareware; + +import com.viaversion.viabackwards.api.BackwardsProtocol; +import com.viaversion.viabackwards.api.data.BackwardsMappings; +import com.viaversion.viabackwards.api.rewriters.SoundRewriter; +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.minecraft.chunks.Chunk; +import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; +import com.viaversion.viaversion.api.protocol.remapper.PacketHandler; +import com.viaversion.viaversion.api.protocol.remapper.PacketRemapper; +import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.*; +import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.types.Chunk1_14Type; +import net.raphimc.vialegacy.protocols.snapshot.protocol1_14to3D_Shareware.packets.BlockItemPackets3D_Shareware; +import net.raphimc.vialegacy.protocols.snapshot.protocol1_14to3D_Shareware.packets.EntityPackets3D_Shareware; +import net.raphimc.vialegacy.protocols.snapshot.protocol1_14to3D_Shareware.storage.ChunkCenterTracker3D_Shareware; +import net.raphimc.vialegacy.util.ItemBackwardsMappings; + +public class Protocol1_14to3D_Shareware extends BackwardsProtocol { + + public static final BackwardsMappings MAPPINGS = new ItemBackwardsMappings("3D_Shareware", "1.14"); + public static final int SERVERSIDE_VIEW_DISTANCE = 64; + + private BlockItemPackets3D_Shareware blockItemPackets; + + public Protocol1_14to3D_Shareware() { + super(ClientboundPackets3D_Shareware.class, ClientboundPackets1_14.class, ServerboundPackets3D_Shareware.class, ServerboundPackets1_14.class); + } + + @Override + protected void registerPackets() { + executeAsyncAfterLoaded(Protocol1_14To1_13_2.class, MAPPINGS::load); + + blockItemPackets = new BlockItemPackets3D_Shareware(this); + blockItemPackets.register(); + new EntityPackets3D_Shareware(this).registerPackets(); + final SoundRewriter soundRewriter = new SoundRewriter(this); + soundRewriter.registerSound(ClientboundPackets3D_Shareware.SOUND); + soundRewriter.registerSound(ClientboundPackets3D_Shareware.ENTITY_SOUND); + soundRewriter.registerNamedSound(ClientboundPackets3D_Shareware.NAMED_SOUND); + soundRewriter.registerStopSound(ClientboundPackets3D_Shareware.STOP_SOUND); + + this.registerClientbound(ClientboundPackets3D_Shareware.CHUNK_DATA, new PacketRemapper() { + @Override + public void registerMap() { + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper packetWrapper) throws Exception { + final Chunk chunk = packetWrapper.passthrough(new Chunk1_14Type()); + ChunkCenterTracker3D_Shareware entityTracker = packetWrapper.user().get(ChunkCenterTracker3D_Shareware.class); + final int diffX = Math.abs(entityTracker.getChunkCenterX() - chunk.getX()); + final int diffZ = Math.abs(entityTracker.getChunkCenterZ() - chunk.getZ()); + if (entityTracker.isForceSendCenterChunk() || diffX >= SERVERSIDE_VIEW_DISTANCE || diffZ >= SERVERSIDE_VIEW_DISTANCE) { + final PacketWrapper fakePosLook = packetWrapper.create(ClientboundPackets1_14.UPDATE_VIEW_POSITION); // Set center chunk + fakePosLook.write(Type.VAR_INT, chunk.getX()); + fakePosLook.write(Type.VAR_INT, chunk.getZ()); + fakePosLook.send(Protocol1_14to3D_Shareware.class); + entityTracker.setChunkCenterX(chunk.getX()); + entityTracker.setChunkCenterZ(chunk.getZ()); + } + } + }); + } + }); + this.registerClientbound(ClientboundPackets3D_Shareware.RESPAWN, new PacketRemapper() { + @Override + public void registerMap() { + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper packetWrapper) throws Exception { + ChunkCenterTracker3D_Shareware entityTracker = packetWrapper.user().get(ChunkCenterTracker3D_Shareware.class); + // The client may reset the center chunk if dimension is changed + entityTracker.setForceSendCenterChunk(true); + } + }); + } + }); + } + + @Override + public void init(UserConnection userConnection) { + userConnection.put(new ChunkCenterTracker3D_Shareware(userConnection)); + } + + @Override + public BackwardsMappings getMappingData() { + return MAPPINGS; + } + + @Override + public BlockItemPackets3D_Shareware getItemRewriter() { + return this.blockItemPackets; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/snapshot/protocol1_14to3D_Shareware/ServerboundPackets3D_Shareware.java b/src/main/java/net/raphimc/vialegacy/protocols/snapshot/protocol1_14to3D_Shareware/ServerboundPackets3D_Shareware.java new file mode 100644 index 0000000..15cd952 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/snapshot/protocol1_14to3D_Shareware/ServerboundPackets3D_Shareware.java @@ -0,0 +1,64 @@ +package net.raphimc.vialegacy.protocols.snapshot.protocol1_14to3D_Shareware; + +import com.viaversion.viaversion.api.protocol.packet.ServerboundPacketType; + +public enum ServerboundPackets3D_Shareware implements ServerboundPacketType { + + TELEPORT_CONFIRM, // 0x00 + QUERY_BLOCK_NBT, // 0x01 + SET_DIFFICULTY, // 0x02 + CHAT_MESSAGE, // 0x03 + CLIENT_STATUS, // 0x04 + CLIENT_SETTINGS, // 0x05 + TAB_COMPLETE, // 0x06 + WINDOW_CONFIRMATION, // 0x07 + CLICK_WINDOW_BUTTON, // 0x08 + CLICK_WINDOW, // 0x09 + CLOSE_WINDOW, // 0x0A + PLUGIN_MESSAGE, // 0x0B + EDIT_BOOK, // 0x0C + ENTITY_NBT_REQUEST, // 0x0D + INTERACT_ENTITY, // 0x0E + LOCK_DIFFICULTY, // 0x0F + KEEP_ALIVE, // 0x10 + PLAYER_MOVEMENT, // 0x11 + PLAYER_POSITION, // 0x12 + PLAYER_POSITION_AND_ROTATION, // 0x13 + PLAYER_ROTATION, // 0x14 + VEHICLE_MOVE, // 0x15 + STEER_BOAT, // 0x16 + PICK_ITEM, // 0x17 + CRAFT_RECIPE_REQUEST, // 0x18 + PLAYER_ABILITIES, // 0x19 + PLAYER_DIGGING, // 0x1A + ENTITY_ACTION, // 0x1B + STEER_VEHICLE, // 0x1C + RECIPE_BOOK_DATA, // 0x1D + RENAME_ITEM, // 0x1E + RESOURCE_PACK_STATUS, // 0x1F + ADVANCEMENT_TAB, // 0x20 + SELECT_TRADE, // 0x21 + SET_BEACON_EFFECT, // 0x22 + HELD_ITEM_CHANGE, // 0x23 + UPDATE_COMMAND_BLOCK, // 0x24 + UPDATE_COMMAND_BLOCK_MINECART, // 0x25 + CREATIVE_INVENTORY_ACTION, // 0x26 + UPDATE_JIGSAW_BLOCK, // 0x27 + UPDATE_STRUCTURE_BLOCK, // 0x28 + UPDATE_SIGN, // 0x29 + ANIMATION, // 0x2A + SPECTATE, // 0x2B + PLAYER_BLOCK_PLACEMENT, // 0x2C + USE_ITEM; // 0x2D + + @Override + public int getId() { + return this.ordinal(); + } + + @Override + public String getName() { + return this.name(); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/snapshot/protocol1_14to3D_Shareware/packets/BlockItemPackets3D_Shareware.java b/src/main/java/net/raphimc/vialegacy/protocols/snapshot/protocol1_14to3D_Shareware/packets/BlockItemPackets3D_Shareware.java new file mode 100644 index 0000000..bd9d7a2 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/snapshot/protocol1_14to3D_Shareware/packets/BlockItemPackets3D_Shareware.java @@ -0,0 +1,53 @@ +package net.raphimc.vialegacy.protocols.snapshot.protocol1_14to3D_Shareware.packets; + +import com.viaversion.viabackwards.api.rewriters.ItemRewriter; +import com.viaversion.viaversion.api.protocol.remapper.PacketRemapper; +import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.ServerboundPackets1_14; +import net.raphimc.vialegacy.protocols.snapshot.protocol1_14to3D_Shareware.ClientboundPackets3D_Shareware; +import net.raphimc.vialegacy.protocols.snapshot.protocol1_14to3D_Shareware.Protocol1_14to3D_Shareware; + +public class BlockItemPackets3D_Shareware extends ItemRewriter { + + public BlockItemPackets3D_Shareware(Protocol1_14to3D_Shareware protocol) { + super(protocol); + } + + @Override + protected void registerPackets() { + this.registerSetCooldown(ClientboundPackets3D_Shareware.COOLDOWN); + this.registerWindowItems(ClientboundPackets3D_Shareware.WINDOW_ITEMS, Type.FLAT_VAR_INT_ITEM_ARRAY); + this.registerSetSlot(ClientboundPackets3D_Shareware.SET_SLOT, Type.FLAT_VAR_INT_ITEM); + this.registerEntityEquipment(ClientboundPackets3D_Shareware.ENTITY_EQUIPMENT, Type.FLAT_VAR_INT_ITEM); + this.registerAdvancements(ClientboundPackets3D_Shareware.ADVANCEMENTS, Type.FLAT_VAR_INT_ITEM); + this.registerClickWindow(ServerboundPackets1_14.CLICK_WINDOW, Type.FLAT_VAR_INT_ITEM); + this.registerCreativeInvAction(ServerboundPackets1_14.CREATIVE_INVENTORY_ACTION, Type.FLAT_VAR_INT_ITEM); + this.registerSpawnParticle(ClientboundPackets3D_Shareware.SPAWN_PARTICLE, Type.FLAT_VAR_INT_ITEM, Type.FLOAT); + + this.protocol.registerClientbound(ClientboundPackets3D_Shareware.TRADE_LIST, new PacketRemapper() { + public void registerMap() { + this.handler((wrapper) -> { + wrapper.passthrough(Type.VAR_INT); + int size = wrapper.passthrough(Type.UNSIGNED_BYTE); + + for (int i = 0; i < size; ++i) { + BlockItemPackets3D_Shareware.this.handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); + BlockItemPackets3D_Shareware.this.handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); + if (wrapper.passthrough(Type.BOOLEAN)) { + BlockItemPackets3D_Shareware.this.handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); + } + + wrapper.passthrough(Type.BOOLEAN); + wrapper.passthrough(Type.INT); + wrapper.passthrough(Type.INT); + wrapper.passthrough(Type.INT); + wrapper.passthrough(Type.INT); + wrapper.passthrough(Type.FLOAT); + } + + }); + } + }); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/snapshot/protocol1_14to3D_Shareware/packets/EntityPackets3D_Shareware.java b/src/main/java/net/raphimc/vialegacy/protocols/snapshot/protocol1_14to3D_Shareware/packets/EntityPackets3D_Shareware.java new file mode 100644 index 0000000..3d5e863 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/snapshot/protocol1_14to3D_Shareware/packets/EntityPackets3D_Shareware.java @@ -0,0 +1,73 @@ +package net.raphimc.vialegacy.protocols.snapshot.protocol1_14to3D_Shareware.packets; + +import com.viaversion.viaversion.api.minecraft.metadata.Metadata; +import com.viaversion.viaversion.api.minecraft.metadata.types.MetaType1_14; +import com.viaversion.viaversion.api.protocol.remapper.PacketRemapper; +import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.types.version.Types1_14; +import net.raphimc.vialegacy.protocols.snapshot.protocol1_14to3D_Shareware.ClientboundPackets3D_Shareware; +import net.raphimc.vialegacy.protocols.snapshot.protocol1_14to3D_Shareware.Protocol1_14to3D_Shareware; + +import java.util.List; + +public class EntityPackets3D_Shareware { + + private final Protocol1_14to3D_Shareware protocol; + + public EntityPackets3D_Shareware(final Protocol1_14to3D_Shareware protocol) { + this.protocol = protocol; + } + + public void registerPackets() { + this.protocol.registerClientbound(ClientboundPackets3D_Shareware.SPAWN_MOB, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.VAR_INT); // 0 - Entity ID + map(Type.UUID); // 1 - Entity UUID + map(Type.VAR_INT); // 2 - Entity Type + map(Type.DOUBLE); // 3 - X + map(Type.DOUBLE); // 4 - Y + map(Type.DOUBLE); // 5 - Z + map(Type.BYTE); // 6 - Yaw + map(Type.BYTE); // 7 - Pitch + map(Type.BYTE); // 8 - Head Pitch + map(Type.SHORT); // 9 - Velocity X + map(Type.SHORT); // 10 - Velocity Y + map(Type.SHORT); // 11 - Velocity Z + map(Types1_14.METADATA_LIST); // 12 - Metadata + handler(packetWrapper -> handleMetadata(packetWrapper.get(Types1_14.METADATA_LIST, 0))); + } + }); + this.protocol.registerClientbound(ClientboundPackets3D_Shareware.SPAWN_PLAYER, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.VAR_INT); // 0 - Entity ID + map(Type.UUID); // 1 - Player UUID + map(Type.DOUBLE); // 2 - X + map(Type.DOUBLE); // 3 - Y + map(Type.DOUBLE); // 4 - Z + map(Type.BYTE); // 5 - Yaw + map(Type.BYTE); // 6 - Pitch + map(Types1_14.METADATA_LIST); // 7 - Metadata + handler(packetWrapper -> handleMetadata(packetWrapper.get(Types1_14.METADATA_LIST, 0))); + } + }); + this.protocol.registerClientbound(ClientboundPackets3D_Shareware.ENTITY_METADATA, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.VAR_INT); // 0 - Entity ID + map(Types1_14.METADATA_LIST); + handler(packetWrapper -> handleMetadata(packetWrapper.get(Types1_14.METADATA_LIST, 0))); + } + }); + } + + public void handleMetadata(final List metadataList) { + for (Metadata metadata : metadataList) { + if (metadata.metaType() == MetaType1_14.Slot) { + metadata.setValue(this.protocol.getItemRewriter().handleItemToClient(metadata.value())); + } + } + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/snapshot/protocol1_14to3D_Shareware/storage/ChunkCenterTracker3D_Shareware.java b/src/main/java/net/raphimc/vialegacy/protocols/snapshot/protocol1_14to3D_Shareware/storage/ChunkCenterTracker3D_Shareware.java new file mode 100644 index 0000000..22e82a2 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/snapshot/protocol1_14to3D_Shareware/storage/ChunkCenterTracker3D_Shareware.java @@ -0,0 +1,39 @@ +package net.raphimc.vialegacy.protocols.snapshot.protocol1_14to3D_Shareware.storage; + +import com.viaversion.viaversion.api.connection.StoredObject; +import com.viaversion.viaversion.api.connection.UserConnection; + +public class ChunkCenterTracker3D_Shareware extends StoredObject { + + private boolean forceSendCenterChunk = true; + private int chunkCenterX, chunkCenterZ; + + public ChunkCenterTracker3D_Shareware(UserConnection user) { + super(user); + } + + public boolean isForceSendCenterChunk() { + return forceSendCenterChunk; + } + + public void setForceSendCenterChunk(boolean forceSendCenterChunk) { + this.forceSendCenterChunk = forceSendCenterChunk; + } + + public int getChunkCenterX() { + return chunkCenterX; + } + + public void setChunkCenterX(int chunkCenterX) { + this.chunkCenterX = chunkCenterX; + } + + public int getChunkCenterZ() { + return chunkCenterZ; + } + + public void setChunkCenterZ(int chunkCenterZ) { + this.chunkCenterZ = chunkCenterZ; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/snapshot/protocol1_16_2toCombatTest8c/Protocol1_16_2toCombatTest8c.java b/src/main/java/net/raphimc/vialegacy/protocols/snapshot/protocol1_16_2toCombatTest8c/Protocol1_16_2toCombatTest8c.java new file mode 100644 index 0000000..178a096 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/snapshot/protocol1_16_2toCombatTest8c/Protocol1_16_2toCombatTest8c.java @@ -0,0 +1,33 @@ +package net.raphimc.vialegacy.protocols.snapshot.protocol1_16_2toCombatTest8c; + +import com.viaversion.viaversion.api.protocol.AbstractProtocol; +import com.viaversion.viaversion.api.protocol.remapper.PacketRemapper; +import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.protocols.protocol1_16_2to1_16_1.ClientboundPackets1_16_2; +import com.viaversion.viaversion.protocols.protocol1_16_2to1_16_1.ServerboundPackets1_16_2; + +public class Protocol1_16_2toCombatTest8c extends AbstractProtocol { + + public Protocol1_16_2toCombatTest8c() { + super(ClientboundPackets1_16_2.class, ClientboundPackets1_16_2.class, ServerboundPackets1_16_2.class, ServerboundPackets1_16_2.class); + } + + @Override + protected void registerPackets() { + this.registerServerbound(ServerboundPackets1_16_2.CLIENT_SETTINGS, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.STRING); //language + map(Type.BYTE); //viewDistance + map(Type.VAR_INT); //chatVisibility + map(Type.BOOLEAN); //chatColors + map(Type.UNSIGNED_BYTE); //playerModelBitMask + map(Type.VAR_INT); //mainArm + handler(wrapper -> { + wrapper.write(Type.BOOLEAN, false); //useShieldOnCrouch + }); + } + }); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/snapshot/protocol1_16to20w14infinite/ClientboundPackets20w14infinite.java b/src/main/java/net/raphimc/vialegacy/protocols/snapshot/protocol1_16to20w14infinite/ClientboundPackets20w14infinite.java new file mode 100644 index 0000000..25da99f --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/snapshot/protocol1_16to20w14infinite/ClientboundPackets20w14infinite.java @@ -0,0 +1,111 @@ +package net.raphimc.vialegacy.protocols.snapshot.protocol1_16to20w14infinite; + +import com.viaversion.viaversion.api.protocol.packet.ClientboundPacketType; + +public enum ClientboundPackets20w14infinite implements ClientboundPacketType { + + SPAWN_ENTITY, // 0x00 + SPAWN_EXPERIENCE_ORB, // 0x01 + SPAWN_GLOBAL_ENTITY, // 0x02 + SPAWN_MOB, // 0x03 + SPAWN_PAINTING, // 0x04 + SPAWN_PLAYER, // 0x05 + ENTITY_ANIMATION, // 0x09 + STATISTICS, // 0x07 + ACKNOWLEDGE_PLAYER_DIGGING, // 0x08 + BLOCK_BREAK_ANIMATION, // 0x09 + BLOCK_ENTITY_DATA, // 0x0A + BLOCK_ACTION, // 0x0B + BLOCK_CHANGE, // 0x0C + BOSSBAR, // 0x0D + SERVER_DIFFICULTY, // 0x0E + CHAT_MESSAGE, // 0x0F + MULTI_BLOCK_CHANGE, // 0x10 + TAB_COMPLETE, // 0x11 + DECLARE_COMMANDS, // 0x12 + WINDOW_CONFIRMATION, // 0x13 + CLOSE_WINDOW, // 0x14 + WINDOW_ITEMS, // 0x15 + WINDOW_PROPERTY, // 0x16 + SET_SLOT, // 0x17 + COOLDOWN, // 0x18 + PLUGIN_MESSAGE, // 0x19 + NAMED_SOUND, // 0x1A + DISCONNECT, // 0x1B + ENTITY_STATUS, // 0x1C + EXPLOSION, // 0x1D + UNLOAD_CHUNK, // 0x1E + GAME_EVENT, // 0x1F + OPEN_HORSE_WINDOW, // 0x20 + KEEP_ALIVE, // 0x21 + CHUNK_DATA, // 0x22 + EFFECT, // 0x22 + SPAWN_PARTICLE, // 0x24 + UPDATE_LIGHT, // 0x25 + JOIN_GAME, // 0x26 + MAP_DATA, // 0x27 + TRADE_LIST, // 0x28 + ENTITY_POSITION, // 0x29 + ENTITY_POSITION_AND_ROTATION, // 0x2A + ENTITY_ROTATION, // 0x2B + ENTITY_MOVEMENT, // 0x2C + VEHICLE_MOVE, // 0x2D + OPEN_BOOK, // 0x2E + OPEN_WINDOW, // 0x2F + OPEN_SIGN_EDITOR, // 0x30 + CRAFT_RECIPE_RESPONSE, // 0x31 + PLAYER_ABILITIES, // 0x32 + COMBAT_EVENT, // 0x33 + PLAYER_INFO, // 0x34 + FACE_PLAYER, // 0x35 + PLAYER_POSITION, // 0x36 + UNLOCK_RECIPES, // 0x37 + DESTROY_ENTITIES, // 0x38 + REMOVE_ENTITY_EFFECT, // 0x39 + RESOURCE_PACK, // 0x3A + RESPAWN, // 0x3B + ENTITY_HEAD_LOOK, // 0x3C + SELECT_ADVANCEMENTS_TAB, // 0x3D + WORLD_BORDER, // 0x3E + CAMERA, // 0x3F + HELD_ITEM_CHANGE, // 0x40 + UPDATE_VIEW_POSITION, // 0x41 + UPDATE_VIEW_DISTANCE, // 0x42 + SPAWN_POSITION, // 0x43 + DISPLAY_SCOREBOARD, // 0x44 + ENTITY_METADATA, // 0x45 + ATTACH_ENTITY, // 0x46 + ENTITY_VELOCITY, // 0x47 + ENTITY_EQUIPMENT, // 0x48 + SET_EXPERIENCE, // 0x49 + UPDATE_HEALTH, // 0x4A + SCOREBOARD_OBJECTIVE, // 0x4B + SET_PASSENGERS, // 0x4C + TEAMS, // 0x4D + UPDATE_SCORE, // 0x4E + TIME_UPDATE, // 0x4F + TITLE, // 0x50 + ENTITY_SOUND, // 0x51 + SOUND, // 0x52 + STOP_SOUND, // 0x53 + TAB_LIST, // 0x54 + NBT_QUERY, // 0x55 + COLLECT_ITEM, // 0x56 + ENTITY_TELEPORT, // 0x57 + ADVANCEMENTS, // 0x58 + ENTITY_PROPERTIES, // 0x59 + ENTITY_EFFECT, // 0x5A + DECLARE_RECIPES, // 0x5B + TAGS; // 0x5C + + @Override + public int getId() { + return this.ordinal(); + } + + @Override + public String getName() { + return this.name(); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/snapshot/protocol1_16to20w14infinite/Protocol1_16to20w14infinite.java b/src/main/java/net/raphimc/vialegacy/protocols/snapshot/protocol1_16to20w14infinite/Protocol1_16to20w14infinite.java new file mode 100644 index 0000000..d5fb27b --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/snapshot/protocol1_16to20w14infinite/Protocol1_16to20w14infinite.java @@ -0,0 +1,172 @@ +package net.raphimc.vialegacy.protocols.snapshot.protocol1_16to20w14infinite; + +import com.viaversion.viabackwards.api.BackwardsProtocol; +import com.viaversion.viabackwards.api.data.BackwardsMappings; +import com.viaversion.viabackwards.api.rewriters.SoundRewriter; +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.minecraft.RegistryType; +import com.viaversion.viaversion.api.minecraft.entities.Entity1_16Types; +import com.viaversion.viaversion.api.protocol.remapper.PacketRemapper; +import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.data.entity.EntityTrackerBase; +import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.data.RecipeRewriter1_14; +import com.viaversion.viaversion.protocols.protocol1_16to1_15_2.*; +import com.viaversion.viaversion.rewriter.StatisticsRewriter; +import com.viaversion.viaversion.rewriter.TagRewriter; +import net.raphimc.vialegacy.protocols.snapshot.protocol1_16to20w14infinite.metadata.MetadataRewriter1_16to20w14infinite; +import net.raphimc.vialegacy.protocols.snapshot.protocol1_16to20w14infinite.packets.BlockItemPackets20w14infinite; +import net.raphimc.vialegacy.protocols.snapshot.protocol1_16to20w14infinite.packets.EntityPackets20w14infinite; +import net.raphimc.vialegacy.util.ItemBackwardsMappings; + +import java.util.UUID; + +public class Protocol1_16to20w14infinite extends BackwardsProtocol { + + public static final BackwardsMappings MAPPINGS = new ItemBackwardsMappings("20w14infinite", "1.16"); + private static final UUID ZERO_UUID = new UUID(0, 0); + + private BlockItemPackets20w14infinite blockItemPackets; + private TagRewriter tagRewriter; + private MetadataRewriter1_16to20w14infinite metadataRewriter; + + public Protocol1_16to20w14infinite() { + super(ClientboundPackets20w14infinite.class, ClientboundPackets1_16.class, ServerboundPackets20w14infinite.class, ServerboundPackets1_16.class); + } + + @Override + protected void registerPackets() { + this.metadataRewriter = new MetadataRewriter1_16to20w14infinite(this); + metadataRewriter.register(); + tagRewriter = new TagRewriter(this); + + this.executeAsyncAfterLoaded(Protocol1_16To1_15_2.class, () -> { + MAPPINGS.load(); + this.onMappingDataLoaded(); + }); + + tagRewriter.register(ClientboundPackets20w14infinite.TAGS, RegistryType.ENTITY); + new StatisticsRewriter(this).register(ClientboundPackets20w14infinite.STATISTICS); + this.blockItemPackets = new BlockItemPackets20w14infinite(this); + this.blockItemPackets.register(); + EntityPackets20w14infinite.register(this); + final SoundRewriter soundRewriter = new SoundRewriter(this); + soundRewriter.registerSound(ClientboundPackets20w14infinite.SOUND); + soundRewriter.registerSound(ClientboundPackets20w14infinite.ENTITY_SOUND); + soundRewriter.registerNamedSound(ClientboundPackets20w14infinite.NAMED_SOUND); + soundRewriter.registerStopSound(ClientboundPackets20w14infinite.STOP_SOUND); + new RecipeRewriter1_14(this).registerDefaultHandler(ClientboundPackets20w14infinite.DECLARE_RECIPES); + + this.registerClientbound(ClientboundPackets20w14infinite.CHAT_MESSAGE, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.COMPONENT); + map(Type.BYTE); + handler(wrapper -> { + wrapper.write(Type.UUID, ZERO_UUID); // Sender uuid - always send as 'system' + }); + } + }); + + this.cancelServerbound(ServerboundPackets1_16.GENERATE_JIGSAW); + this.registerServerbound(ServerboundPackets1_16.INTERACT_ENTITY, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + wrapper.passthrough(Type.VAR_INT); // Entity Id + int action = wrapper.passthrough(Type.VAR_INT); + if (action == 0 || action == 2) { + if (action == 2) { + // Location + wrapper.passthrough(Type.FLOAT); + wrapper.passthrough(Type.FLOAT); + wrapper.passthrough(Type.FLOAT); + } + + wrapper.passthrough(Type.VAR_INT); // Hand + } + + // New boolean: Whether the client is sneaking/pressing shift + wrapper.read(Type.BOOLEAN); + }); + } + }); + this.registerServerbound(ServerboundPackets1_16.PLAYER_ABILITIES, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + wrapper.passthrough(Type.BYTE); + // Flying and walking speed - not important anyways + wrapper.write(Type.FLOAT, 0.05F); + wrapper.write(Type.FLOAT, 0.1F); + }); + } + }); + } + + @Override + protected void onMappingDataLoaded() { + int[] wallPostOverrideTag = new int[47]; + int arrayIndex = 0; + wallPostOverrideTag[arrayIndex++] = 140; + wallPostOverrideTag[arrayIndex++] = 179; + wallPostOverrideTag[arrayIndex++] = 264; + for (int i = 153; i <= 158; i++) { + wallPostOverrideTag[arrayIndex++] = i; + } + for (int i = 163; i <= 168; i++) { + wallPostOverrideTag[arrayIndex++] = i; + } + for (int i = 408; i <= 439; i++) { + wallPostOverrideTag[arrayIndex++] = i; + } + + tagRewriter.addTag(RegistryType.BLOCK, "minecraft:wall_post_override", wallPostOverrideTag); + tagRewriter.addTag(RegistryType.BLOCK, "minecraft:beacon_base_blocks", 133, 134, 148, 265); + tagRewriter.addTag(RegistryType.BLOCK, "minecraft:climbable", 160, 241, 658); + tagRewriter.addTag(RegistryType.BLOCK, "minecraft:fire", 142); + tagRewriter.addTag(RegistryType.BLOCK, "minecraft:campfires", 679); + tagRewriter.addTag(RegistryType.BLOCK, "minecraft:fence_gates", 242, 467, 468, 469, 470, 471); + tagRewriter.addTag(RegistryType.BLOCK, "minecraft:unstable_bottom_center", 242, 467, 468, 469, 470, 471); + tagRewriter.addTag(RegistryType.BLOCK, "minecraft:wooden_trapdoors", 193, 194, 195, 196, 197, 198); + tagRewriter.addTag(RegistryType.ITEM, "minecraft:wooden_trapdoors", 215, 216, 217, 218, 219, 220); + tagRewriter.addTag(RegistryType.ITEM, "minecraft:beacon_payment_items", 529, 530, 531, 760); + tagRewriter.addTag(RegistryType.ENTITY, "minecraft:impact_projectiles", 2, 72, 71, 37, 69, 79, 83, 15, 93); + + // The client crashes if we don't send all tags it may use + tagRewriter.addEmptyTag(RegistryType.BLOCK, "minecraft:guarded_by_piglins"); + tagRewriter.addEmptyTag(RegistryType.BLOCK, "minecraft:soul_speed_blocks"); + tagRewriter.addEmptyTag(RegistryType.BLOCK, "minecraft:soul_fire_base_blocks"); + tagRewriter.addEmptyTag(RegistryType.BLOCK, "minecraft:non_flammable_wood"); + tagRewriter.addEmptyTag(RegistryType.ITEM, "minecraft:non_flammable_wood"); + + // The rest of not accessed tags added in older versions; #1830 + tagRewriter.addEmptyTags(RegistryType.BLOCK, "minecraft:bamboo_plantable_on", "minecraft:beds", "minecraft:bee_growables", + "minecraft:beehives", "minecraft:coral_plants", "minecraft:crops", "minecraft:dragon_immune", "minecraft:flowers", + "minecraft:portals", "minecraft:shulker_boxes", "minecraft:small_flowers", "minecraft:tall_flowers", "minecraft:trapdoors", + "minecraft:underwater_bonemeals", "minecraft:wither_immune", "minecraft:wooden_fences", "minecraft:wooden_trapdoors"); + tagRewriter.addEmptyTags(RegistryType.ENTITY, "minecraft:arrows", "minecraft:beehive_inhabitors", "minecraft:raiders", "minecraft:skeletons"); + tagRewriter.addEmptyTags(RegistryType.ITEM, "minecraft:beds", "minecraft:coals", "minecraft:fences", "minecraft:flowers", + "minecraft:lectern_books", "minecraft:music_discs", "minecraft:small_flowers", "minecraft:tall_flowers", "minecraft:trapdoors", "minecraft:walls", "minecraft:wooden_fences"); + } + + @Override + public void init(UserConnection userConnection) { + userConnection.addEntityTracker(this.getClass(), new EntityTrackerBase(userConnection, Entity1_16Types.PLAYER)); + } + + @Override + public BlockItemPackets20w14infinite getItemRewriter() { + return this.blockItemPackets; + } + + @Override + public MetadataRewriter1_16to20w14infinite getEntityRewriter() { + return this.metadataRewriter; + } + + @Override + public BackwardsMappings getMappingData() { + return MAPPINGS; + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/snapshot/protocol1_16to20w14infinite/ServerboundPackets20w14infinite.java b/src/main/java/net/raphimc/vialegacy/protocols/snapshot/protocol1_16to20w14infinite/ServerboundPackets20w14infinite.java new file mode 100644 index 0000000..206f7a9 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/snapshot/protocol1_16to20w14infinite/ServerboundPackets20w14infinite.java @@ -0,0 +1,64 @@ +package net.raphimc.vialegacy.protocols.snapshot.protocol1_16to20w14infinite; + +import com.viaversion.viaversion.api.protocol.packet.ServerboundPacketType; + +public enum ServerboundPackets20w14infinite implements ServerboundPacketType { + + TELEPORT_CONFIRM, // 0x00 + QUERY_BLOCK_NBT, // 0x01 + SET_DIFFICULTY, // 0x02 + CHAT_MESSAGE, // 0x03 + CLIENT_STATUS, // 0x04 + CLIENT_SETTINGS, // 0x05 + TAB_COMPLETE, // 0x06 + WINDOW_CONFIRMATION, // 0x07 + CLICK_WINDOW_BUTTON, // 0x08 + CLICK_WINDOW, // 0x09 + CLOSE_WINDOW, // 0x0A + PLUGIN_MESSAGE, // 0x0B + EDIT_BOOK, // 0x0C + ENTITY_NBT_REQUEST, // 0x0D + INTERACT_ENTITY, // 0x0E + KEEP_ALIVE, // 0x0F + LOCK_DIFFICULTY, // 0x10 + PLAYER_POSITION, // 0x11 + PLAYER_POSITION_AND_ROTATION, // 0x12 + PLAYER_ROTATION, // 0x13 + PLAYER_MOVEMENT, // 0x14 + VEHICLE_MOVE, // 0x15 + STEER_BOAT, // 0x16 + PICK_ITEM, // 0x17 + CRAFT_RECIPE_REQUEST, // 0x18 + PLAYER_ABILITIES, // 0x19 + PLAYER_DIGGING, // 0x1A + ENTITY_ACTION, // 0x1B + STEER_VEHICLE, // 0x1C + RECIPE_BOOK_DATA, // 0x1D + RENAME_ITEM, // 0x1E + RESOURCE_PACK_STATUS, // 0x1F + ADVANCEMENT_TAB, // 0x20 + SELECT_TRADE, // 0x21 + SET_BEACON_EFFECT, // 0x22 + HELD_ITEM_CHANGE, // 0x23 + UPDATE_COMMAND_BLOCK, // 0x24 + UPDATE_COMMAND_BLOCK_MINECART, // 0x25 + CREATIVE_INVENTORY_ACTION, // 0x26 + UPDATE_JIGSAW_BLOCK, // 0x27 + UPDATE_STRUCTURE_BLOCK, // 0x28 + UPDATE_SIGN, // 0x29 + ANIMATION, // 0x2A + SPECTATE, // 0x2B + PLAYER_BLOCK_PLACEMENT, // 0x2C + USE_ITEM; // 0x2D + + @Override + public int getId() { + return this.ordinal(); + } + + @Override + public String getName() { + return this.name(); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/snapshot/protocol1_16to20w14infinite/data/BiomeData20w14infinite.java b/src/main/java/net/raphimc/vialegacy/protocols/snapshot/protocol1_16to20w14infinite/data/BiomeData20w14infinite.java new file mode 100644 index 0000000..c7a0935 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/snapshot/protocol1_16to20w14infinite/data/BiomeData20w14infinite.java @@ -0,0 +1,98 @@ +package net.raphimc.vialegacy.protocols.snapshot.protocol1_16to20w14infinite.data; + +import com.viaversion.viaversion.libs.fastutil.ints.IntArrayList; +import com.viaversion.viaversion.libs.fastutil.ints.IntList; + +public class BiomeData20w14infinite { + + private static final IntList VALID_BIOMES = new IntArrayList(); + + static { + VALID_BIOMES.add(0); + VALID_BIOMES.add(33); + VALID_BIOMES.add(132); + VALID_BIOMES.add(165); + VALID_BIOMES.add(134); + VALID_BIOMES.add(35); + VALID_BIOMES.add(130); + VALID_BIOMES.add(133); + VALID_BIOMES.add(31); + VALID_BIOMES.add(32); + VALID_BIOMES.add(129); + VALID_BIOMES.add(34); + VALID_BIOMES.add(36); + VALID_BIOMES.add(131); + VALID_BIOMES.add(169); + VALID_BIOMES.add(29); + VALID_BIOMES.add(161); + VALID_BIOMES.add(37); + VALID_BIOMES.add(167); + VALID_BIOMES.add(171); + VALID_BIOMES.add(163); + VALID_BIOMES.add(1); + VALID_BIOMES.add(3); + VALID_BIOMES.add(7); + VALID_BIOMES.add(5); + VALID_BIOMES.add(140); + VALID_BIOMES.add(173); + VALID_BIOMES.add(156); + VALID_BIOMES.add(26); + VALID_BIOMES.add(23); + VALID_BIOMES.add(39); + VALID_BIOMES.add(27); + VALID_BIOMES.add(38); + VALID_BIOMES.add(127); + VALID_BIOMES.add(42); + VALID_BIOMES.add(43); + VALID_BIOMES.add(30); + VALID_BIOMES.add(22); + VALID_BIOMES.add(2); + VALID_BIOMES.add(6); + VALID_BIOMES.add(14); + VALID_BIOMES.add(10); + VALID_BIOMES.add(168); + VALID_BIOMES.add(164); + VALID_BIOMES.add(160); + VALID_BIOMES.add(172); + VALID_BIOMES.add(50); + VALID_BIOMES.add(49); + VALID_BIOMES.add(16); + VALID_BIOMES.add(17); + VALID_BIOMES.add(149); + VALID_BIOMES.add(18); + VALID_BIOMES.add(47); + VALID_BIOMES.add(48); + VALID_BIOMES.add(46); + VALID_BIOMES.add(13); + VALID_BIOMES.add(151); + VALID_BIOMES.add(19); + VALID_BIOMES.add(21); + VALID_BIOMES.add(175); + VALID_BIOMES.add(15); + VALID_BIOMES.add(155); + VALID_BIOMES.add(11); + VALID_BIOMES.add(25); + VALID_BIOMES.add(8); + VALID_BIOMES.add(9); + VALID_BIOMES.add(157); + VALID_BIOMES.add(24); + VALID_BIOMES.add(45); + VALID_BIOMES.add(44); + VALID_BIOMES.add(41); + VALID_BIOMES.add(40); + VALID_BIOMES.add(4); + VALID_BIOMES.add(12); + VALID_BIOMES.add(28); + VALID_BIOMES.add(20); + VALID_BIOMES.add(158); + VALID_BIOMES.add(166); + VALID_BIOMES.add(170); + VALID_BIOMES.add(174); + VALID_BIOMES.add(162); + } + + public static boolean isValid(final int biomeId) { + return VALID_BIOMES.contains(biomeId); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/snapshot/protocol1_16to20w14infinite/metadata/Entity20w14infiniteTypes.java b/src/main/java/net/raphimc/vialegacy/protocols/snapshot/protocol1_16to20w14infinite/metadata/Entity20w14infiniteTypes.java new file mode 100644 index 0000000..a78804e --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/snapshot/protocol1_16to20w14infinite/metadata/Entity20w14infiniteTypes.java @@ -0,0 +1,243 @@ +package net.raphimc.vialegacy.protocols.snapshot.protocol1_16to20w14infinite.metadata; + +import com.viaversion.viaversion.api.minecraft.entities.EntityType; +import net.raphimc.vialegacy.ViaLegacy; + +import java.util.*; + +public enum Entity20w14infiniteTypes implements EntityType { + + ENTITY(-1), + + AREA_EFFECT_CLOUD(0, ENTITY), + END_CRYSTAL(18, ENTITY), + EVOKER_FANGS(22, ENTITY), + EXPERIENCE_ORB(24, ENTITY), + EYE_OF_ENDER(25, ENTITY), + FALLING_BLOCK(26, ENTITY), + FIREWORK_ROCKET(27, ENTITY), + ITEM(35, ENTITY), + LLAMA_SPIT(40, ENTITY), + TNT(59, ENTITY), + SHULKER_BULLET(64, ENTITY), + FISHING_BOBBER(105, ENTITY), + + LIVINGENTITY(-1, ENTITY), + ARMOR_STAND(1, LIVINGENTITY), + PLAYER(104, LIVINGENTITY), + + ABSTRACT_INSENTIENT(-1, LIVINGENTITY), + ENDER_DRAGON(19, ABSTRACT_INSENTIENT), + + BEE(4, ABSTRACT_INSENTIENT), + + ABSTRACT_CREATURE(-1, ABSTRACT_INSENTIENT), + + ABSTRACT_AGEABLE(-1, ABSTRACT_CREATURE), + VILLAGER(85, ABSTRACT_AGEABLE), + WANDERING_TRADER(89, ABSTRACT_AGEABLE), + + // Animals + ABSTRACT_ANIMAL(-1, ABSTRACT_AGEABLE), + DOLPHIN(14, ABSTRACT_INSENTIENT), + CHICKEN(9, ABSTRACT_ANIMAL), + COW(11, ABSTRACT_ANIMAL), + MOOSHROOM(50, COW), + PANDA(53, ABSTRACT_INSENTIENT), + PIG(55, ABSTRACT_ANIMAL), + POLAR_BEAR(58, ABSTRACT_ANIMAL), + RABBIT(60, ABSTRACT_ANIMAL), + SHEEP(62, ABSTRACT_ANIMAL), + TURTLE(78, ABSTRACT_ANIMAL), + FOX(28, ABSTRACT_ANIMAL), + + ABSTRACT_TAMEABLE_ANIMAL(-1, ABSTRACT_ANIMAL), + CAT(7, ABSTRACT_TAMEABLE_ANIMAL), + OCELOT(51, ABSTRACT_TAMEABLE_ANIMAL), + WOLF(94, ABSTRACT_TAMEABLE_ANIMAL), + + ABSTRACT_PARROT(-1, ABSTRACT_TAMEABLE_ANIMAL), + PARROT(54, ABSTRACT_PARROT), + + // Horses + ABSTRACT_HORSE(-1, ABSTRACT_ANIMAL), + CHESTED_HORSE(-1, ABSTRACT_HORSE), + DONKEY(13, CHESTED_HORSE), + MULE(49, CHESTED_HORSE), + LLAMA(39, CHESTED_HORSE), + TRADER_LLAMA(76, CHESTED_HORSE), + HORSE(32, ABSTRACT_HORSE), + SKELETON_HORSE(67, ABSTRACT_HORSE), + ZOMBIE_HORSE(96, ABSTRACT_HORSE), + + // Golem + ABSTRACT_GOLEM(-1, ABSTRACT_CREATURE), + SNOW_GOLEM(70, ABSTRACT_GOLEM), + IRON_GOLEM(86, ABSTRACT_GOLEM), + SHULKER(63, ABSTRACT_GOLEM), + + // Fish + ABSTRACT_FISHES(-1, ABSTRACT_CREATURE), + COD(10, ABSTRACT_FISHES), + PUFFERFISH(56, ABSTRACT_FISHES), + SALMON(61, ABSTRACT_FISHES), + TROPICAL_FISH(77, ABSTRACT_FISHES), + + // Monsters + ABSTRACT_MONSTER(-1, ABSTRACT_CREATURE), + BLAZE(5, ABSTRACT_MONSTER), + CREEPER(12, ABSTRACT_MONSTER), + ENDERMITE(21, ABSTRACT_MONSTER), + ENDERMAN(20, ABSTRACT_MONSTER), + GIANT(30, ABSTRACT_MONSTER), + SILVERFISH(65, ABSTRACT_MONSTER), + VEX(84, ABSTRACT_MONSTER), + WITCH(90, ABSTRACT_MONSTER), + WITHER(91, ABSTRACT_MONSTER), + RAVAGER(99, ABSTRACT_MONSTER), + HOGLIN(100, ABSTRACT_ANIMAL), + PIGLIN(101, ABSTRACT_MONSTER), + STRIDER(102, ABSTRACT_ANIMAL), + + // Illagers + ABSTRACT_ILLAGER_BASE(-1, ABSTRACT_MONSTER), + ABSTRACT_EVO_ILLU_ILLAGER(-1, ABSTRACT_ILLAGER_BASE), + EVOKER(23, ABSTRACT_EVO_ILLU_ILLAGER), + ILLUSIONER(34, ABSTRACT_EVO_ILLU_ILLAGER), + VINDICATOR(87, ABSTRACT_ILLAGER_BASE), + PILLAGER(88, ABSTRACT_ILLAGER_BASE), + + // Skeletons + ABSTRACT_SKELETON(-1, ABSTRACT_MONSTER), + SKELETON(66, ABSTRACT_SKELETON), + STRAY(75, ABSTRACT_SKELETON), + WITHER_SKELETON(92, ABSTRACT_SKELETON), + + // Guardians + GUARDIAN(31, ABSTRACT_MONSTER), + ELDER_GUARDIAN(17, GUARDIAN), + + // Spiders + SPIDER(73, ABSTRACT_MONSTER), + CAVE_SPIDER(8, SPIDER), + + // Zombies + ZOMBIE(95, ABSTRACT_MONSTER), + DROWNED(16, ZOMBIE), + HUSK(33, ZOMBIE), + ZOMBIE_PIGMAN(57, ZOMBIE), + ZOMBIE_VILLAGER(97, ZOMBIE), + + // Flying entities + ABSTRACT_FLYING(-1, ABSTRACT_INSENTIENT), + GHAST(29, ABSTRACT_FLYING), + PHANTOM(98, ABSTRACT_FLYING), + + ABSTRACT_AMBIENT(-1, ABSTRACT_INSENTIENT), + BAT(3, ABSTRACT_AMBIENT), + + ABSTRACT_WATERMOB(-1, ABSTRACT_INSENTIENT), + SQUID(74, ABSTRACT_WATERMOB), + + // Slimes + SLIME(68, ABSTRACT_INSENTIENT), + MAGMA_CUBE(41, SLIME), + + // Hangable objects + ABSTRACT_HANGING(-1, ENTITY), + LEASH_KNOT(38, ABSTRACT_HANGING), + ITEM_FRAME(36, ABSTRACT_HANGING), + PAINTING(52, ABSTRACT_HANGING), + + ABSTRACT_LIGHTNING(-1, ENTITY), + LIGHTNING_BOLT(103, ABSTRACT_LIGHTNING), + + // Arrows + ABSTRACT_ARROW(-1, ENTITY), + ARROW(2, ABSTRACT_ARROW), + SPECTRAL_ARROW(72, ABSTRACT_ARROW), + TRIDENT(83, ABSTRACT_ARROW), + + // Fireballs + ABSTRACT_FIREBALL(-1, ENTITY), + DRAGON_FIREBALL(15, ABSTRACT_FIREBALL), + FIREBALL(37, ABSTRACT_FIREBALL), + SMALL_FIREBALL(69, ABSTRACT_FIREBALL), + WITHER_SKULL(93, ABSTRACT_FIREBALL), + + // Projectiles + PROJECTILE_ABSTRACT(-1, ENTITY), + SNOWBALL(71, PROJECTILE_ABSTRACT), + ENDER_PEARL(80, PROJECTILE_ABSTRACT), + EGG(79, PROJECTILE_ABSTRACT), + POTION(82, PROJECTILE_ABSTRACT), + EXPERIENCE_BOTTLE(81, PROJECTILE_ABSTRACT), + + // Vehicles + MINECART_ABSTRACT(-1, ENTITY), + CHESTED_MINECART_ABSTRACT(-1, MINECART_ABSTRACT), + CHEST_MINECART(43, CHESTED_MINECART_ABSTRACT), + HOPPER_MINECART(46, CHESTED_MINECART_ABSTRACT), + MINECART(42, MINECART_ABSTRACT), + FURNACE_MINECART(45, MINECART_ABSTRACT), + COMMAND_BLOCK_MINECART(44, MINECART_ABSTRACT), + TNT_MINECART(48, MINECART_ABSTRACT), + SPAWNER_MINECART(47, MINECART_ABSTRACT), + BOAT(6, ENTITY); + + private static final EntityType[] TYPES; + + private final int id; + private final EntityType parent; + + Entity20w14infiniteTypes(int id) { + this.id = id; + this.parent = null; + } + + Entity20w14infiniteTypes(int id, EntityType parent) { + this.id = id; + this.parent = parent; + } + + @Override + public int getId() { + return id; + } + + @Override + public EntityType getParent() { + return parent; + } + + @Override + public String identifier() { + throw new UnsupportedOperationException(); + } + + @Override + public boolean isAbstractType() { + return this.id != -1; + } + + static { + List types = new ArrayList<>(); + for (Entity20w14infiniteTypes type : values()) { + if (type.id != -1) { + types.add(type); + } + } + + types.sort(Comparator.comparingInt(Entity20w14infiniteTypes::getId)); + TYPES = types.toArray(new EntityType[0]); + } + + public static EntityType getTypeFromId(int typeId) { + EntityType type; + if (typeId < 0 || typeId >= TYPES.length || (type = TYPES[typeId]) == null) { + ViaLegacy.getPlatform().getLogger().severe("Could not find 1.15 type id " + typeId); + return ENTITY; + } + return type; + } +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/snapshot/protocol1_16to20w14infinite/metadata/MetadataRewriter1_16to20w14infinite.java b/src/main/java/net/raphimc/vialegacy/protocols/snapshot/protocol1_16to20w14infinite/metadata/MetadataRewriter1_16to20w14infinite.java new file mode 100644 index 0000000..5772c24 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/snapshot/protocol1_16to20w14infinite/metadata/MetadataRewriter1_16to20w14infinite.java @@ -0,0 +1,56 @@ +package net.raphimc.vialegacy.protocols.snapshot.protocol1_16to20w14infinite.metadata; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.minecraft.entities.Entity1_16Types; +import com.viaversion.viaversion.api.minecraft.entities.EntityType; +import com.viaversion.viaversion.api.minecraft.metadata.Metadata; +import com.viaversion.viaversion.api.minecraft.metadata.types.MetaType1_14; +import com.viaversion.viaversion.api.type.types.Particle; +import com.viaversion.viaversion.rewriter.EntityRewriter; +import net.raphimc.vialegacy.protocols.snapshot.protocol1_16to20w14infinite.Protocol1_16to20w14infinite; + +import java.util.List; + +public class MetadataRewriter1_16to20w14infinite extends EntityRewriter { + + public MetadataRewriter1_16to20w14infinite(Protocol1_16to20w14infinite protocol) { + super(protocol); + mapEntityType(Entity20w14infiniteTypes.ZOMBIE_PIGMAN, Entity1_16Types.ZOMBIFIED_PIGLIN); + mapTypes(Entity20w14infiniteTypes.values(), Entity1_16Types.class); + } + + @Override + public EntityType typeFromId(int type) { + return Entity1_16Types.getTypeFromId(type); + } + + @Override + public void handleMetadata(int entityId, EntityType type, Metadata metadata, List metadatas, UserConnection connection) throws Exception { + if (metadata.metaType() == MetaType1_14.Slot) { + metadata.setValue(this.protocol.getItemRewriter().handleItemToClient(metadata.value())); + } else if (metadata.metaType() == MetaType1_14.BlockID) { + int data = (int) metadata.getValue(); + metadata.setValue(protocol.getMappingData().getNewBlockStateId(data)); + } else if (metadata.metaType() == MetaType1_14.PARTICLE) { + rewriteParticle((Particle) metadata.getValue()); + } + + if (type == null) return; + + if (type.isOrHasParent(Entity1_16Types.MINECART_ABSTRACT) + && metadata.id() == 10) { + // Convert to new block id + int data = (int) metadata.getValue(); + metadata.setValue(protocol.getMappingData().getNewBlockStateId(data)); + } + + if (type.isOrHasParent(Entity1_16Types.ABSTRACT_ARROW)) { + if (metadata.id() == 8) { + metadatas.remove(metadata); + } else if (metadata.id() > 8) { + metadata.setId(metadata.id() - 1); + } + } + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/snapshot/protocol1_16to20w14infinite/packets/BlockItemPackets20w14infinite.java b/src/main/java/net/raphimc/vialegacy/protocols/snapshot/protocol1_16to20w14infinite/packets/BlockItemPackets20w14infinite.java new file mode 100644 index 0000000..cca822a --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/snapshot/protocol1_16to20w14infinite/packets/BlockItemPackets20w14infinite.java @@ -0,0 +1,108 @@ +package net.raphimc.vialegacy.protocols.snapshot.protocol1_16to20w14infinite.packets; + +import com.viaversion.viabackwards.api.rewriters.ItemRewriter; +import com.viaversion.viaversion.api.minecraft.chunks.Chunk; +import com.viaversion.viaversion.api.minecraft.chunks.ChunkSection; +import com.viaversion.viaversion.api.protocol.remapper.PacketRemapper; +import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.libs.opennbt.tag.builtin.*; +import com.viaversion.viaversion.protocols.protocol1_15to1_14_4.types.Chunk1_15Type; +import com.viaversion.viaversion.protocols.protocol1_16to1_15_2.ServerboundPackets1_16; +import com.viaversion.viaversion.protocols.protocol1_16to1_15_2.types.Chunk1_16Type; +import com.viaversion.viaversion.rewriter.BlockRewriter; +import com.viaversion.viaversion.util.CompactArrayUtil; +import net.raphimc.vialegacy.protocols.snapshot.protocol1_16to20w14infinite.ClientboundPackets20w14infinite; +import net.raphimc.vialegacy.protocols.snapshot.protocol1_16to20w14infinite.Protocol1_16to20w14infinite; +import net.raphimc.vialegacy.protocols.snapshot.protocol1_16to20w14infinite.data.BiomeData20w14infinite; + +import java.util.Map; + +public class BlockItemPackets20w14infinite extends ItemRewriter { + + public BlockItemPackets20w14infinite(Protocol1_16to20w14infinite protocol) { + super(protocol); + } + + @Override + protected void registerPackets() { + this.registerSetCooldown(ClientboundPackets20w14infinite.COOLDOWN); + this.registerWindowItems(ClientboundPackets20w14infinite.WINDOW_ITEMS, Type.FLAT_VAR_INT_ITEM_ARRAY); + this.registerSetSlot(ClientboundPackets20w14infinite.SET_SLOT, Type.FLAT_VAR_INT_ITEM); + this.registerTradeList(ClientboundPackets20w14infinite.TRADE_LIST); + this.registerAdvancements(ClientboundPackets20w14infinite.ADVANCEMENTS, Type.FLAT_VAR_INT_ITEM); + this.registerSpawnParticle(ClientboundPackets20w14infinite.SPAWN_PARTICLE, Type.FLAT_VAR_INT_ITEM, Type.DOUBLE); + this.registerClickWindow(ServerboundPackets1_16.CLICK_WINDOW, Type.FLAT_VAR_INT_ITEM); + this.registerCreativeInvAction(ServerboundPackets1_16.CREATIVE_INVENTORY_ACTION, Type.FLAT_VAR_INT_ITEM); + final BlockRewriter blockRewriter = new BlockRewriter(this.protocol, Type.POSITION1_14); + blockRewriter.registerBlockAction(ClientboundPackets20w14infinite.BLOCK_ACTION); + blockRewriter.registerBlockChange(ClientboundPackets20w14infinite.BLOCK_CHANGE); + blockRewriter.registerMultiBlockChange(ClientboundPackets20w14infinite.MULTI_BLOCK_CHANGE); + blockRewriter.registerAcknowledgePlayerDigging(ClientboundPackets20w14infinite.ACKNOWLEDGE_PLAYER_DIGGING); + blockRewriter.registerEffect(ClientboundPackets20w14infinite.EFFECT, 1010, 2001); + + protocol.registerClientbound(ClientboundPackets20w14infinite.UPDATE_LIGHT, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.VAR_INT); // x + map(Type.VAR_INT); // y + handler(wrapper -> wrapper.write(Type.BOOLEAN, true)); // Take neighbour's light into account as well + } + }); + protocol.registerClientbound(ClientboundPackets20w14infinite.CHUNK_DATA, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + Chunk chunk = wrapper.read(new Chunk1_15Type()); + wrapper.write(new Chunk1_16Type(), chunk); + + chunk.setIgnoreOldLightData(chunk.isFullChunk()); + + for (int s = 0; s < chunk.getSections().length; s++) { + ChunkSection section = chunk.getSections()[s]; + if (section == null) continue; + for (int i = 0; i < section.getPaletteSize(); i++) { + int old = section.getPaletteEntry(i); + section.setPaletteEntry(i, protocol.getMappingData().getNewBlockStateId(old)); + } + } + + if (chunk.getBiomeData() != null) { + for (int i = 0; i < chunk.getBiomeData().length; i++) { + if (!BiomeData20w14infinite.isValid(chunk.getBiomeData()[i])) { + chunk.getBiomeData()[i] = 1; // plains + } + } + } + + CompoundTag heightMaps = chunk.getHeightMap(); + for (Map.Entry heightMapTag : heightMaps) { + LongArrayTag heightMap = (LongArrayTag) heightMapTag.getValue(); + int[] heightMapData = new int[256]; + CompactArrayUtil.iterateCompactArray(9, heightMapData.length, heightMap.getValue(), (i, v) -> heightMapData[i] = v); + heightMap.setValue(CompactArrayUtil.createCompactArrayWithPadding(9, heightMapData.length, i -> heightMapData[i])); + } + }); + } + }); + protocol.registerClientbound(ClientboundPackets20w14infinite.ENTITY_EQUIPMENT, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.VAR_INT); // 0 - Entity ID + + handler(wrapper -> { + int slot = wrapper.read(Type.VAR_INT); + wrapper.write(Type.BYTE, (byte) slot); + handleItemToClient(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM)); + }); + } + }); + + protocol.registerServerbound(ServerboundPackets1_16.EDIT_BOOK, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> handleItemToServer(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM))); + } + }); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/snapshot/protocol1_16to20w14infinite/packets/EntityPackets20w14infinite.java b/src/main/java/net/raphimc/vialegacy/protocols/snapshot/protocol1_16to20w14infinite/packets/EntityPackets20w14infinite.java new file mode 100644 index 0000000..31aac8d --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/snapshot/protocol1_16to20w14infinite/packets/EntityPackets20w14infinite.java @@ -0,0 +1,170 @@ +package net.raphimc.vialegacy.protocols.snapshot.protocol1_16to20w14infinite.packets; + +import com.viaversion.viaversion.api.Via; +import com.viaversion.viaversion.api.minecraft.entities.Entity1_16Types; +import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; +import com.viaversion.viaversion.api.protocol.remapper.PacketHandler; +import com.viaversion.viaversion.api.protocol.remapper.PacketRemapper; +import com.viaversion.viaversion.api.type.Type; +import com.viaversion.viaversion.api.type.types.version.Types1_14; +import com.viaversion.viaversion.protocols.protocol1_16to1_15_2.ClientboundPackets1_16; +import com.viaversion.viaversion.protocols.protocol1_16to1_15_2.Protocol1_16To1_15_2; +import com.viaversion.viaversion.protocols.protocol1_16to1_15_2.packets.EntityPackets; +import net.raphimc.vialegacy.ViaLegacy; +import net.raphimc.vialegacy.protocols.snapshot.protocol1_16to20w14infinite.ClientboundPackets20w14infinite; +import net.raphimc.vialegacy.protocols.snapshot.protocol1_16to20w14infinite.Protocol1_16to20w14infinite; +import net.raphimc.vialegacy.protocols.snapshot.protocol1_16to20w14infinite.metadata.MetadataRewriter1_16to20w14infinite; + +import java.util.UUID; + +public class EntityPackets20w14infinite { + + private static final PacketHandler DIMENSION_HANDLER = wrapper -> { + int dimension = wrapper.read(Type.INT); + String dimensionType; + String dimensionName; + switch (dimension) { + case -1: + dimensionName = dimensionType = "minecraft:the_nether"; + break; + case 0: + dimensionName = dimensionType = "minecraft:overworld"; + break; + case 1: + dimensionName = dimensionType = "minecraft:the_end"; + break; + default: + dimensionType = "minecraft:overworld"; + dimensionName = dimensionType + dimension; + } + + wrapper.write(Type.STRING, dimensionType); // dimension type + wrapper.write(Type.STRING, dimensionName); // dimension + }; + private static final String[] WORLD_NAMES = {"minecraft:overworld", "minecraft:the_nether", "minecraft:the_end"}; + + public static void register(Protocol1_16to20w14infinite protocol) { + MetadataRewriter1_16to20w14infinite metadataRewriter = protocol.get(MetadataRewriter1_16to20w14infinite.class); + metadataRewriter.registerTrackerWithData(ClientboundPackets20w14infinite.SPAWN_ENTITY, Entity1_16Types.FALLING_BLOCK); + metadataRewriter.registerTracker(ClientboundPackets20w14infinite.SPAWN_MOB); + metadataRewriter.registerTracker(ClientboundPackets20w14infinite.SPAWN_PLAYER, Entity1_16Types.PLAYER); + metadataRewriter.registerMetadataRewriter(ClientboundPackets20w14infinite.ENTITY_METADATA, Types1_14.METADATA_LIST); + metadataRewriter.registerRemoveEntities(ClientboundPackets20w14infinite.DESTROY_ENTITIES); + + // Spawn lightning -> Spawn entity + protocol.registerClientbound(ClientboundPackets20w14infinite.SPAWN_GLOBAL_ENTITY, ClientboundPackets1_16.SPAWN_ENTITY, new PacketRemapper() { + @Override + public void registerMap() { + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper packetWrapper) throws Exception { + int entityId = packetWrapper.passthrough(Type.VAR_INT); // entity id + packetWrapper.user().getEntityTracker(Protocol1_16to20w14infinite.class).addEntity(entityId, Entity1_16Types.LIGHTNING_BOLT); + + packetWrapper.write(Type.UUID, UUID.randomUUID()); // uuid + packetWrapper.write(Type.VAR_INT, Entity1_16Types.LIGHTNING_BOLT.getId()); // entity type + + packetWrapper.read(Type.BYTE); // remove type + + packetWrapper.passthrough(Type.DOUBLE); // x + packetWrapper.passthrough(Type.DOUBLE); // y + packetWrapper.passthrough(Type.DOUBLE); // z + packetWrapper.write(Type.BYTE, (byte) 0); // yaw + packetWrapper.write(Type.BYTE, (byte) 0); // pitch + packetWrapper.write(Type.INT, 0); // data + packetWrapper.write(Type.SHORT, (short) 0); // velocity + packetWrapper.write(Type.SHORT, (short) 0); // velocity + packetWrapper.write(Type.SHORT, (short) 0); // velocity + } + }); + } + }); + protocol.registerClientbound(ClientboundPackets20w14infinite.RESPAWN, new PacketRemapper() { + @Override + public void registerMap() { + handler(DIMENSION_HANDLER); + map(Type.LONG); // Seed + map(Type.UNSIGNED_BYTE); // Gamemode + handler(wrapper -> { + wrapper.write(Type.BYTE, (byte) -1); // Previous gamemode, set to none + + String levelType = wrapper.read(Type.STRING); + wrapper.write(Type.BOOLEAN, false); // debug + wrapper.write(Type.BOOLEAN, levelType.equals("flat")); + wrapper.write(Type.BOOLEAN, true); // keep all playerdata + }); + } + }); + protocol.registerClientbound(ClientboundPackets20w14infinite.JOIN_GAME, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.INT); // Entity ID + map(Type.UNSIGNED_BYTE); // Gamemode + handler(wrapper -> { + wrapper.write(Type.BYTE, (byte) -1); // Previous gamemode, set to none + wrapper.write(Type.STRING_ARRAY, WORLD_NAMES); // World list - only used for command completion + wrapper.write(Type.NBT, EntityPackets.DIMENSIONS_TAG); // Dimension registry + }); + handler(DIMENSION_HANDLER); // Dimension + map(Type.LONG); // Seed + map(Type.UNSIGNED_BYTE); // Max players + handler(wrapper -> { + wrapper.user().getEntityTracker(Protocol1_16to20w14infinite.class).addEntity(wrapper.get(Type.INT, 0), Entity1_16Types.PLAYER); + + final String type = wrapper.read(Type.STRING);// level type + wrapper.passthrough(Type.VAR_INT); // View distance + wrapper.passthrough(Type.BOOLEAN); // Reduced debug info + wrapper.passthrough(Type.BOOLEAN); // Show death screen + + wrapper.write(Type.BOOLEAN, false); // Debug + wrapper.write(Type.BOOLEAN, type.equals("flat")); + }); + } + }); + protocol.registerClientbound(ClientboundPackets20w14infinite.ENTITY_PROPERTIES, new PacketRemapper() { + @Override + public void registerMap() { + handler(wrapper -> { + wrapper.passthrough(Type.VAR_INT); + int size = wrapper.passthrough(Type.INT); + int actualSize = size; + for (int i = 0; i < size; i++) { + // Attributes have been renamed and are now namespaced identifiers + String key = wrapper.read(Type.STRING); + String attributeIdentifier = Via.getManager().getProtocolManager().getProtocol(Protocol1_16To1_15_2.class).getMappingData().getAttributeMappings().get(key); + if (attributeIdentifier == null) { + attributeIdentifier = "minecraft:" + key; + if (!com.viaversion.viaversion.protocols.protocol1_13to1_12_2.data.MappingData.isValid1_13Channel(attributeIdentifier)) { + if (!Via.getConfig().isSuppressConversionWarnings()) { + ViaLegacy.getPlatform().getLogger().warning("Invalid attribute: " + key); + } + actualSize--; + wrapper.read(Type.DOUBLE); + int modifierSize = wrapper.read(Type.VAR_INT); + for (int j = 0; j < modifierSize; j++) { + wrapper.read(Type.UUID); + wrapper.read(Type.DOUBLE); + wrapper.read(Type.BYTE); + } + continue; + } + } + + wrapper.write(Type.STRING, attributeIdentifier); + + wrapper.passthrough(Type.DOUBLE); + int modifierSize = wrapper.passthrough(Type.VAR_INT); + for (int j = 0; j < modifierSize; j++) { + wrapper.passthrough(Type.UUID); + wrapper.passthrough(Type.DOUBLE); + wrapper.passthrough(Type.BYTE); + } + } + if (size != actualSize) { + wrapper.set(Type.INT, 0, actualSize); + } + }); + } + }); + } +} diff --git a/src/main/java/net/raphimc/vialegacy/protocols/snapshot/protocol3D_Sharewareto1_14/Protocol3D_Sharewareto1_14.java b/src/main/java/net/raphimc/vialegacy/protocols/snapshot/protocol3D_Sharewareto1_14/Protocol3D_Sharewareto1_14.java new file mode 100644 index 0000000..c925db5 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/protocols/snapshot/protocol3D_Sharewareto1_14/Protocol3D_Sharewareto1_14.java @@ -0,0 +1,21 @@ +package net.raphimc.vialegacy.protocols.snapshot.protocol3D_Sharewareto1_14; + +import com.viaversion.viabackwards.api.BackwardsProtocol; +import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.ClientboundPackets1_14; +import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.ServerboundPackets1_14; +import net.raphimc.vialegacy.protocols.snapshot.protocol1_14to3D_Shareware.ClientboundPackets3D_Shareware; +import net.raphimc.vialegacy.protocols.snapshot.protocol1_14to3D_Shareware.ServerboundPackets3D_Shareware; + +public class Protocol3D_Sharewareto1_14 extends BackwardsProtocol { + + public Protocol3D_Sharewareto1_14() { + super(ClientboundPackets1_14.class, ClientboundPackets3D_Shareware.class, ServerboundPackets1_14.class, ServerboundPackets3D_Shareware.class); + } + + @Override + protected void registerPackets() { + this.cancelClientbound(ClientboundPackets1_14.UPDATE_VIEW_POSITION); + this.cancelClientbound(ClientboundPackets1_14.ACKNOWLEDGE_PLAYER_DIGGING); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/util/BlockFaceUtils.java b/src/main/java/net/raphimc/vialegacy/util/BlockFaceUtils.java new file mode 100644 index 0000000..4ee2f1e --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/util/BlockFaceUtils.java @@ -0,0 +1,25 @@ +package net.raphimc.vialegacy.util; + +import com.viaversion.viaversion.api.minecraft.BlockFace; + +public class BlockFaceUtils { + + public static BlockFace getFace(final int direction) { + switch (direction) { + case 0: + return BlockFace.BOTTOM; + default: + case 1: + return BlockFace.TOP; + case 2: + return BlockFace.NORTH; + case 3: + return BlockFace.SOUTH; + case 4: + return BlockFace.WEST; + case 5: + return BlockFace.EAST; + } + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/util/ChunkCoordSpiral.java b/src/main/java/net/raphimc/vialegacy/util/ChunkCoordSpiral.java new file mode 100644 index 0000000..0e25577 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/util/ChunkCoordSpiral.java @@ -0,0 +1,86 @@ +package net.raphimc.vialegacy.util; + +import net.raphimc.vialegacy.api.ChunkCoord; + +import java.util.*; + +public class ChunkCoordSpiral implements Iterable { + + private final ChunkCoord center; + private final ChunkCoord lowerBound; + private final ChunkCoord upperBound; + private final int step; + + private boolean returnCenter = true; + + public ChunkCoordSpiral(ChunkCoord center, ChunkCoord lowerBound, ChunkCoord upperBound, int step) { + this.center = center; + this.lowerBound = lowerBound; + this.upperBound = upperBound; + this.step = step; + } + + public ChunkCoordSpiral(ChunkCoord center, ChunkCoord radius, int step) { + this(center, new ChunkCoord(center.chunkX - radius.chunkX, center.chunkZ - radius.chunkZ), new ChunkCoord(center.chunkX + radius.chunkX, center.chunkZ + radius.chunkZ), step); + } + + public ChunkCoordSpiral(ChunkCoord center, ChunkCoord radius) { + this(center, radius, 1); + } + + @Override + public Iterator iterator() { + return new Iterator() { + int x = center.chunkX; + int z = center.chunkZ; + + float n = 1; + int floorN = 1; + int i = 0; + int j = 0; + + @Override + public boolean hasNext() { + return returnCenter || x >= lowerBound.chunkX && x <= upperBound.chunkX && z >= lowerBound.chunkZ && z <= upperBound.chunkZ; + } + + @Override + public ChunkCoord next() { + if (returnCenter) { + returnCenter = false; + return new ChunkCoord(x, z); + } + + floorN = (int) Math.floor(n); + if (j < floorN) { + switch (i % 4) { + case 0: + z += step; + break; + case 1: + x += step; + break; + case 2: + z -= step; + break; + case 3: + x -= step; + break; + } + j++; + return new ChunkCoord(x, z); + } + j = 0; + n += 0.5; + i++; + return next(); + } + }; + } + + @Override + public Spliterator spliterator() { + return Spliterators.spliteratorUnknownSize(this.iterator(), Spliterator.ORDERED); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/util/ItemBackwardsMappings.java b/src/main/java/net/raphimc/vialegacy/util/ItemBackwardsMappings.java new file mode 100644 index 0000000..86bbbb0 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/util/ItemBackwardsMappings.java @@ -0,0 +1,60 @@ +package net.raphimc.vialegacy.util; + +import com.viaversion.viabackwards.api.data.BackwardsMappings; +import com.viaversion.viaversion.api.data.*; +import com.viaversion.viaversion.libs.fastutil.objects.Object2IntMap; +import com.viaversion.viaversion.libs.gson.JsonElement; +import com.viaversion.viaversion.libs.gson.JsonObject; +import com.viaversion.viaversion.util.Int2IntBiHashMap; + +import java.util.Map; + +public class ItemBackwardsMappings extends BackwardsMappings { + + public ItemBackwardsMappings(String oldVersion, String newVersion) { + super(oldVersion, newVersion, null, true); + this.loadItems = true; + } + + @Override + public void load() { + this.getLogger().info("Loading " + this.oldVersion + " -> " + this.newVersion + " mappings..."); + JsonObject diffmapping = this.hasDiffFile ? this.loadDiffFile() : null; + JsonObject oldMappings = MappingDataLoader.loadData("mapping-" + this.oldVersion + ".json", true); + JsonObject newMappings = MappingDataLoader.loadData("mapping-" + this.newVersion + ".json", true); + this.blockMappings = this.loadFromObject(oldMappings, newMappings, diffmapping, "blocks"); + this.blockStateMappings = this.loadFromObject(oldMappings, newMappings, diffmapping, "blockstates"); + this.blockEntityMappings = this.loadFromArray(oldMappings, newMappings, diffmapping, "blockentities"); + this.soundMappings = this.loadFromArray(oldMappings, newMappings, diffmapping, "sounds"); + this.statisticsMappings = this.loadFromArray(oldMappings, newMappings, diffmapping, "statistics"); + Mappings particles = this.loadFromArray(oldMappings, newMappings, diffmapping, "particles"); + if (particles != null) { + particleMappings = new ParticleMappings(oldMappings.getAsJsonArray("particles"), newMappings.getAsJsonArray("particles"), particles); + } + + if (this.loadItems && newMappings.has("items")) { + this.itemMappings = new Int2IntBiHashMap(); + this.itemMappings.defaultReturnValue(-1); + final JsonObject oldItems = oldMappings.getAsJsonObject("items"); + final JsonObject newItems = newMappings.getAsJsonObject("items"); + final JsonObject diffItems = diffmapping != null ? diffmapping.getAsJsonObject("items") : null; + + final Object2IntMap newIdentifierMap = MappingDataLoader.indexedObjectToMap(newItems); + for (Map.Entry entry : oldItems.entrySet()) { + if (!newIdentifierMap.containsKey((entry.getValue()).getAsString())) { + if (diffItems == null || !diffItems.has(entry.getValue().getAsString())) continue; + newItems.add(String.valueOf(Integer.MAX_VALUE - Integer.parseInt(entry.getKey())), entry.getValue()); + } + } + + MappingDataLoader.mapIdentifiers(this.itemMappings, oldItems, newItems, diffItems, true); + } + + if (diffmapping != null && diffmapping.has("tags")) { + throw new IllegalStateException("I hope this doesn't get executed"); + } + + this.loadExtras(oldMappings, newMappings, diffmapping); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/util/PreNettyPacketType.java b/src/main/java/net/raphimc/vialegacy/util/PreNettyPacketType.java new file mode 100644 index 0000000..c3a023e --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/util/PreNettyPacketType.java @@ -0,0 +1,12 @@ +package net.raphimc.vialegacy.util; + +import com.viaversion.viaversion.api.connection.UserConnection; +import io.netty.buffer.ByteBuf; + +import java.util.function.BiConsumer; + +public interface PreNettyPacketType { + + BiConsumer getPacketReader(); + +} diff --git a/src/main/java/net/raphimc/vialegacy/util/PreNettySplitter.java b/src/main/java/net/raphimc/vialegacy/util/PreNettySplitter.java new file mode 100644 index 0000000..c8be777 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/util/PreNettySplitter.java @@ -0,0 +1,28 @@ +package net.raphimc.vialegacy.util; + +import com.viaversion.viaversion.api.connection.StoredObject; +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.Protocol; + +import java.util.function.IntFunction; + +public class PreNettySplitter extends StoredObject { + + private final IntFunction packetTypeSupplier; + private final Class> protocolClass; + + public PreNettySplitter(UserConnection user, Class> protocolClass, IntFunction packetTypeSupplier) { + super(user); + this.protocolClass = protocolClass; + this.packetTypeSupplier = packetTypeSupplier; + } + + public PreNettyPacketType getPacketType(final int packetId) { + return this.packetTypeSupplier.apply(packetId); + } + + public String getProtocolName() { + return this.protocolClass.getSimpleName(); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/util/PreNettyTypes.java b/src/main/java/net/raphimc/vialegacy/util/PreNettyTypes.java new file mode 100644 index 0000000..c3620bc --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/util/PreNettyTypes.java @@ -0,0 +1,227 @@ +package net.raphimc.vialegacy.util; + +import io.netty.buffer.ByteBuf; +import net.raphimc.vialegacy.protocols.release.protocol1_3_1_2to1_2_4_5.data.NbtItemList; + +public class PreNettyTypes { + + public static void readString(final ByteBuf buffer) { + short s = buffer.readShort(); + for (int i = 0; i < s; i++) buffer.readShort(); + } + + public static void readUTF(final ByteBuf buffer) { + int l = buffer.readUnsignedShort(); + for (int i = 0; i < l; i++) buffer.readByte(); + } + + public static void readString64(final ByteBuf buffer) { + for (int i = 0; i < 64; i++) buffer.readByte(); + } + + public static void readItemStack1_3_1(final ByteBuf buffer) { + short s = buffer.readShort(); + if (s >= 0) { + buffer.readByte(); + buffer.readShort(); + readTag(buffer); + } + } + + public static void readItemStack1_0(final ByteBuf buffer) { + short s = buffer.readShort(); + if (s >= 0) { + buffer.readByte(); + buffer.readShort(); + if (NbtItemList.hasNbt(s)) { + readTag(buffer); + } + } + } + + public static void readItemStackb1_2(final ByteBuf buffer) { + short s = buffer.readShort(); + if (s >= 0) { + buffer.readByte(); + buffer.readShort(); + } + } + + public static void readItemStackb1_1(final ByteBuf buffer) { + short s = buffer.readShort(); + if (s >= 0) { + buffer.readByte(); + buffer.readByte(); + } + } + + public static void readByteArray(final ByteBuf buffer) { + short s = buffer.readShort(); + for (int i = 0; i < s; i++) buffer.readByte(); + } + + public static void readByteArray1024(final ByteBuf buffer) { + for (int i = 0; i < 1024; i++) buffer.readByte(); + } + + public static void readTag(final ByteBuf buffer) { + int s = buffer.readShort(); + for (int i = 0; i < s; i++) buffer.readByte(); + } + + public static void readEntityMetadata1_4_4(final ByteBuf buffer) { + for (byte b = buffer.readByte(); b != 127; b = buffer.readByte()) { + int i = (b & 224) >> 5; + switch (i) { + case 0: + buffer.readByte(); + break; + case 1: + buffer.readShort(); + break; + case 2: + buffer.readInt(); + break; + case 3: + buffer.readFloat(); + break; + case 4: + readString(buffer); + break; + case 5: + readItemStack1_3_1(buffer); + break; + case 6: + buffer.readInt(); + buffer.readInt(); + buffer.readInt(); + } + } + } + + public static void readEntityMetadata1_4_2(final ByteBuf buffer) { + for (byte b = buffer.readByte(); b != 127; b = buffer.readByte()) { + int i = (b & 224) >> 5; + switch (i) { + case 0: + buffer.readByte(); + break; + case 1: + buffer.readShort(); + break; + case 2: + buffer.readInt(); + break; + case 3: + buffer.readFloat(); + break; + case 4: + readString(buffer); + break; + case 5: + short x = buffer.readShort(); + if (x > -1) { + buffer.readByte(); + buffer.readShort(); + } + break; + case 6: + buffer.readInt(); + buffer.readInt(); + buffer.readInt(); + } + } + } + + public static void readEntityMetadatab1_5(final ByteBuf buffer) { + for (byte b = buffer.readByte(); b != 127; b = buffer.readByte()) { + int i = (b & 224) >> 5; + switch (i) { + case 0: + buffer.readByte(); + break; + case 1: + buffer.readShort(); + break; + case 2: + buffer.readInt(); + break; + case 3: + buffer.readFloat(); + break; + case 4: + readString(buffer); + break; + case 5: + buffer.readShort(); + buffer.readByte(); + buffer.readShort(); + break; + case 6: + buffer.readInt(); + buffer.readInt(); + buffer.readInt(); + } + } + } + + public static void readEntityMetadatab1_3(final ByteBuf buffer) { + for (byte b = buffer.readByte(); b != 127; b = buffer.readByte()) { + int i = (b & 224) >> 5; + switch (i) { + case 0: + buffer.readByte(); + break; + case 1: + buffer.readShort(); + break; + case 2: + buffer.readInt(); + break; + case 3: + buffer.readFloat(); + break; + case 4: + readUTF(buffer); + break; + case 5: + buffer.readShort(); + buffer.readByte(); + buffer.readShort(); + break; + case 6: + buffer.readInt(); + buffer.readInt(); + buffer.readInt(); + } + } + } + + public static void readEntityMetadatab1_2(final ByteBuf buffer) { + for (byte b = buffer.readByte(); b != 127; b = buffer.readByte()) { + int i = (b & 224) >> 5; + switch (i) { + case 0: + buffer.readByte(); + break; + case 1: + buffer.readShort(); + break; + case 2: + buffer.readInt(); + break; + case 3: + buffer.readFloat(); + break; + case 4: + readUTF(buffer); + break; + case 5: + buffer.readShort(); + buffer.readByte(); + buffer.readShort(); + } + } + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/util/VersionEnum.java b/src/main/java/net/raphimc/vialegacy/util/VersionEnum.java new file mode 100644 index 0000000..b7031d1 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/util/VersionEnum.java @@ -0,0 +1,273 @@ +package net.raphimc.vialegacy.util; + +import com.viaversion.viaversion.api.connection.UserConnection; +import com.viaversion.viaversion.api.protocol.version.ProtocolVersion; +import com.viaversion.viaversion.api.protocol.version.VersionRange; + +import java.util.*; + +public enum VersionEnum { + + c0_0_15a_1(-2 << 2 | 1, "c0.0.15a-1"), // this version has no id + c0_0_16a_02(-3 << 2 | 1, "c0.0.16a-02"), + c0_0_18a_02(-4 << 2 | 1, "c0.0.18a-02"), + c0_0_19a_06(-5 << 2 | 1, "c0.0.19a-06"), + c0_0_20ac0_27(-6 << 2 | 1, "c0.0.20a-c0.27"), + c0_30cpe(-7 << 2 | 2, "c0.30 CPE"), + c0_28toc0_30(-7 << 2 | 1, "c0.28-c0.30"), + a1_0_15(-13 << 2 | 1, "a1.0.15"), + a1_0_16toa1_0_16_2(-14 << 2 | 1, "a1.0.16-a1.0.16.2"), + a1_0_17toa1_0_17_4(-27 << 2, "a1.0.17-a1.0.17.4"), + a1_1_0toa1_1_2_1(-2 << 2, "a1.1.0-a1.1.2.1"), + a1_2_0toa1_2_1_1(-3 << 2, "a1.2.0-a1.2.1.1"), + a1_2_2(-4 << 2, "a1.2.2"), + a1_2_3toa1_2_3_4(-5 << 2, "a1.2.3-a1.2.3.4"), + a1_2_3_5toa1_2_6(-6 << 2, "a1.2.3.5-a1.2.6"), + b1_0tob1_1_1(-7 << 2, "b1.0-b1.1.1"), + b1_1_2(-8 << 2 | 1, "b1.1.2"), // yes its 100% id 8 and incompatible with b1.2-b1.2.2 + b1_2_0tob1_2_2(-8 << 2, "b1.2-b1.2.2"), + b1_3tob1_3_1(-9 << 2, "b1.3-b1.3.1"), + b1_4tob1_4_1(-10 << 2, "b1.4-b1.4.1"), + b1_5tob1_5_2(-11 << 2, "b1.5-b1.5.2"), + b1_6tob1_6_6(-13 << 2, "b1.6-b1.6.6"), + b1_7tob1_7_3(-14 << 2, "b1.7-b1.7.3"), + b1_8tob1_8_1(-17 << 2, "b1.8-b1.8.1"), + r1_0_0tor1_0_1(-22 << 2, "1.0.0-1.0.1", new VersionRange("1.0", 0, 1)), + r1_1(-23 << 2, "1.1"), + r1_2_1tor1_2_3(-28 << 2, "1.2.1-1.2.3", new VersionRange("1.2", 1, 3)), + r1_2_4tor1_2_5(-29 << 2, "1.2.4-1.2.5", new VersionRange("1.2", 4, 5)), + r1_3_1tor1_3_2(-39 << 2, "1.3.1-1.3.2", new VersionRange("1.3", 1, 2)), + r1_4_2(-47 << 2, "1.4.2"), + r1_4_4tor1_4_5(-49 << 2, "1.4.4-1.4.5", new VersionRange("1.4", 4, 5)), + r1_4_6tor1_4_7(-51 << 2, "1.4.6-1.4.7", new VersionRange("1.4", 6, 7)), + r1_5tor1_5_1(-60 << 2, "1.5-1.5.1"), + r1_5_2(-61 << 2, "1.5.2"), + r1_6_1(-73 << 2, "1.6.1"), + r1_6_2(-74 << 2, "1.6.2"), + r1_6_3(-77 << 2, "1.6.3"), + r1_6_4(-78 << 2, "1.6.4"), + r1_7_2tor1_7_5(ProtocolVersion.v1_7_1), + r1_7_6tor1_7_10(ProtocolVersion.v1_7_6), + r1_8(ProtocolVersion.v1_8), + r1_9(ProtocolVersion.v1_9), + r1_9_1(ProtocolVersion.v1_9_1), + r1_9_2(ProtocolVersion.v1_9_2), + r1_9_3tor1_9_4(ProtocolVersion.v1_9_3), + r1_10(ProtocolVersion.v1_10), + r1_11(ProtocolVersion.v1_11), + r1_11_1to1_11_2(ProtocolVersion.v1_11_1), + r1_12(ProtocolVersion.v1_12), + r1_12_1(ProtocolVersion.v1_12_1), + r1_12_2(ProtocolVersion.v1_12_2), + r1_13(ProtocolVersion.v1_13), + r1_13_1(ProtocolVersion.v1_13_1), + r1_13_2(ProtocolVersion.v1_13_2), + s3d_shareware(1, "3D Shareware"), + r1_14(ProtocolVersion.v1_14), + r1_14_1(ProtocolVersion.v1_14_1), + r1_14_2(ProtocolVersion.v1_14_2), + r1_14_3(ProtocolVersion.v1_14_3), + r1_14_4(ProtocolVersion.v1_14_4), + r1_15(ProtocolVersion.v1_15), + r1_15_1(ProtocolVersion.v1_15_1), + r1_15_2(ProtocolVersion.v1_15_2), + s20w14infinite(709, "20w14infinite"), + r1_16(ProtocolVersion.v1_16), + r1_16_1(ProtocolVersion.v1_16_1), + sCombatTest8c(803, "Combat Test 8c"), + r1_16_2(ProtocolVersion.v1_16_2), + r1_16_3(ProtocolVersion.v1_16_3), + r1_16_4tor1_16_5(ProtocolVersion.v1_16_4), + r1_17(ProtocolVersion.v1_17), + r1_17_1(ProtocolVersion.v1_17_1), + r1_18tor1_18_1(ProtocolVersion.v1_18), + r1_18_2(ProtocolVersion.v1_18_2), + r1_19(ProtocolVersion.v1_19), + r1_19_1tor1_19_2(ProtocolVersion.v1_19_1), + r1_19_3(ProtocolVersion.v1_19_3), + + // + UNKNOWN(ProtocolVersion.unknown), // Not in Registry + ; + + + private static final Map VERSION_REGISTRY = new HashMap<>(); + public static final List RENDER_VERSIONS = new ArrayList<>(); + public static final List LEGACY_VERSIONS = new ArrayList<>(); + public static final List OFFICIAL_SUPPORTED_PROTOCOLS = new ArrayList<>(); + + static { + for (VersionEnum version : VersionEnum.values()) { + if (version == UNKNOWN) continue; + VERSION_REGISTRY.put(version.getProtocol(), version); + } + for (VersionEnum version : VersionEnum.getAllVersions()) { + if (version.isOlderThan(VersionEnum.r1_7_2tor1_7_5)) { + LEGACY_VERSIONS.add(version); + } + } + for (VersionEnum version : VersionEnum.getAllVersions()) { + if (version.isNewerThan(VersionEnum.r1_6_4) && version != VersionEnum.s3d_shareware && version != VersionEnum.s20w14infinite && version != VersionEnum.sCombatTest8c) { + OFFICIAL_SUPPORTED_PROTOCOLS.add(version); + } + } + + RENDER_VERSIONS.add(r1_19_3); + RENDER_VERSIONS.add(r1_19_1tor1_19_2); + RENDER_VERSIONS.add(r1_19); + RENDER_VERSIONS.add(r1_18_2); + RENDER_VERSIONS.add(r1_18tor1_18_1); + RENDER_VERSIONS.add(r1_17_1); + RENDER_VERSIONS.add(r1_17); + RENDER_VERSIONS.add(r1_16_4tor1_16_5); + RENDER_VERSIONS.add(r1_16_3); + RENDER_VERSIONS.add(r1_16_2); + RENDER_VERSIONS.add(r1_16_1); + RENDER_VERSIONS.add(r1_16); + RENDER_VERSIONS.add(r1_15_2); + RENDER_VERSIONS.add(r1_15_1); + RENDER_VERSIONS.add(r1_15); + RENDER_VERSIONS.add(r1_14_4); + RENDER_VERSIONS.add(r1_14_3); + RENDER_VERSIONS.add(r1_14_2); + RENDER_VERSIONS.add(r1_14_1); + RENDER_VERSIONS.add(r1_14); + RENDER_VERSIONS.add(r1_13_2); + RENDER_VERSIONS.add(r1_13_1); + RENDER_VERSIONS.add(r1_13); + RENDER_VERSIONS.add(r1_12_2); + RENDER_VERSIONS.add(r1_12_1); + RENDER_VERSIONS.add(r1_12); + RENDER_VERSIONS.add(r1_11_1to1_11_2); + RENDER_VERSIONS.add(r1_11); + RENDER_VERSIONS.add(r1_10); + RENDER_VERSIONS.add(r1_9_3tor1_9_4); + RENDER_VERSIONS.add(r1_9_2); + RENDER_VERSIONS.add(r1_9_1); + RENDER_VERSIONS.add(r1_9); + RENDER_VERSIONS.add(r1_8); + RENDER_VERSIONS.add(r1_7_6tor1_7_10); + RENDER_VERSIONS.add(r1_7_2tor1_7_5); + RENDER_VERSIONS.add(r1_6_4); +// RENDER_VERSIONS.add(r1_6_3); + RENDER_VERSIONS.add(r1_6_2); + RENDER_VERSIONS.add(r1_6_1); + RENDER_VERSIONS.add(r1_5_2); + RENDER_VERSIONS.add(r1_5tor1_5_1); + RENDER_VERSIONS.add(r1_4_6tor1_4_7); + RENDER_VERSIONS.add(r1_4_4tor1_4_5); + RENDER_VERSIONS.add(r1_4_2); + RENDER_VERSIONS.add(r1_3_1tor1_3_2); + RENDER_VERSIONS.add(r1_2_4tor1_2_5); + RENDER_VERSIONS.add(r1_2_1tor1_2_3); + RENDER_VERSIONS.add(r1_1); + RENDER_VERSIONS.add(r1_0_0tor1_0_1); + RENDER_VERSIONS.add(b1_8tob1_8_1); + RENDER_VERSIONS.add(b1_7tob1_7_3); + RENDER_VERSIONS.add(b1_6tob1_6_6); + RENDER_VERSIONS.add(b1_5tob1_5_2); + RENDER_VERSIONS.add(b1_4tob1_4_1); + RENDER_VERSIONS.add(b1_3tob1_3_1); + RENDER_VERSIONS.add(b1_2_0tob1_2_2); + RENDER_VERSIONS.add(b1_1_2); + RENDER_VERSIONS.add(b1_0tob1_1_1); + RENDER_VERSIONS.add(a1_2_3_5toa1_2_6); + RENDER_VERSIONS.add(a1_2_3toa1_2_3_4); + RENDER_VERSIONS.add(a1_2_2); + RENDER_VERSIONS.add(a1_2_0toa1_2_1_1); + RENDER_VERSIONS.add(a1_1_0toa1_1_2_1); + RENDER_VERSIONS.add(a1_0_17toa1_0_17_4); + RENDER_VERSIONS.add(a1_0_16toa1_0_16_2); + RENDER_VERSIONS.add(a1_0_15); + RENDER_VERSIONS.add(c0_28toc0_30); + RENDER_VERSIONS.add(c0_0_20ac0_27); + RENDER_VERSIONS.add(c0_0_19a_06); + RENDER_VERSIONS.add(c0_0_18a_02); + RENDER_VERSIONS.add(c0_0_16a_02); + RENDER_VERSIONS.add(c0_0_15a_1); + RENDER_VERSIONS.add(sCombatTest8c); + RENDER_VERSIONS.add(s20w14infinite); + RENDER_VERSIONS.add(s3d_shareware); + RENDER_VERSIONS.add(c0_30cpe); + } + + public static void init() { + } + + public static VersionEnum fromProtocolVersion(final ProtocolVersion protocolVersion) { + if (!protocolVersion.isKnown()) return UNKNOWN; + return VERSION_REGISTRY.getOrDefault(protocolVersion, UNKNOWN); + } + + public static VersionEnum fromProtocolId(final int protocolId) { + return fromProtocolVersion(ProtocolVersion.getProtocol(protocolId)); + } + + public static VersionEnum fromUserConnection(final UserConnection userConnection) { + return fromUserConnection(userConnection, true); + } + + public static VersionEnum fromUserConnection(final UserConnection userConnection, final boolean serverProtocol) { + return fromProtocolId(serverProtocol ? userConnection.getProtocolInfo().getServerProtocolVersion() : userConnection.getProtocolInfo().getProtocolVersion()); + } + + public static Collection getAllVersions() { + return VERSION_REGISTRY.values(); + } + + + private final ProtocolVersion protocolVersion; + + VersionEnum(final int version, final String name) { + this(ProtocolVersion.register(version, name)); + } + + VersionEnum(final int version, final String name, final VersionRange versionRange) { + this(ProtocolVersion.register(version, name, versionRange)); + } + + VersionEnum(final ProtocolVersion protocolVersion) { + this.protocolVersion = protocolVersion; + } + + public ProtocolVersion getProtocol() { + return this.protocolVersion; + } + + public String getName() { + return this.protocolVersion.getName(); + } + + public int getVersion() { + return this.protocolVersion.getVersion(); + } + + public int getOriginalVersion() { + return this.protocolVersion.getOriginalVersion(); + } + + public boolean isOlderThan(final VersionEnum other) { + return this.ordinal() < other.ordinal(); + } + + public boolean isOlderThanOrEqualTo(final VersionEnum other) { + return this.ordinal() <= other.ordinal(); + } + + public boolean isNewerThan(final VersionEnum other) { + return this.ordinal() > other.ordinal(); + } + + public boolean isNewerThanOrEqualTo(final VersionEnum other) { + return this.ordinal() >= other.ordinal(); + } + + public boolean isBetweenInclusive(final VersionEnum min, final VersionEnum max) { + return this.isNewerThanOrEqualTo(min) && this.isOlderThanOrEqualTo(max); + } + + public boolean isBetweenExclusive(final VersionEnum min, final VersionEnum max) { + return this.isNewerThan(min) && this.isOlderThan(max); + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/util/ViaStringTagReader1_11_2.java b/src/main/java/net/raphimc/vialegacy/util/ViaStringTagReader1_11_2.java new file mode 100644 index 0000000..3215d36 --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/util/ViaStringTagReader1_11_2.java @@ -0,0 +1,422 @@ +package net.raphimc.vialegacy.util; + +import com.google.common.base.Splitter; +import com.google.common.collect.Iterables; +import com.google.common.collect.Lists; +import com.viaversion.viaversion.libs.opennbt.tag.builtin.*; + +import java.util.Stack; +import java.util.regex.Pattern; + +@Deprecated // Replace with mcstructs +public class ViaStringTagReader1_11_2 { + + private static final Pattern INT_ARRAY_MATCHER = Pattern.compile("\\[[-+\\d|,\\s]+\\]"); + + public static CompoundTag getTagFromJson(String jsonString) throws RuntimeException { + jsonString = jsonString.trim(); + + if (!jsonString.startsWith("{")) { + throw new RuntimeException("Invalid tag encountered, expected '{' as first char."); + } else if (topTagsCount(jsonString) != 1) { + throw new RuntimeException("Encountered multiple top tags, only one expected"); + } else { + return (CompoundTag) nameValueToNBT("tag", jsonString).parse(); + } + } + + static int topTagsCount(String str) throws RuntimeException { + int i = 0; + boolean flag = false; + Stack stack = new Stack<>(); + + for (int j = 0; j < str.length(); ++j) { + char c0 = str.charAt(j); + + if (c0 == 34) { + if (isCharEscaped(str, j)) { + if (!flag) { + throw new RuntimeException("Illegal use of \\\": " + str); + } + } else { + flag = !flag; + } + } else if (!flag) { + if (c0 != 123 && c0 != 91) { + if (c0 == 125 && (stack.isEmpty() || stack.pop() != 123)) { + throw new RuntimeException("Unbalanced curly brackets {}: " + str); + } + + if (c0 == 93 && (stack.isEmpty() || stack.pop() != 91)) { + throw new RuntimeException("Unbalanced square brackets []: " + str); + } + } else { + if (stack.isEmpty()) { + ++i; + } + + stack.push(c0); + } + } + } + + if (flag) { + throw new RuntimeException("Unbalanced quotation: " + str); + } else if (!stack.isEmpty()) { + throw new RuntimeException("Unbalanced brackets: " + str); + } else { + if (i == 0 && !str.isEmpty()) { + i = 1; + } + + return i; + } + } + + static ViaStringTagReader1_11_2.Any joinStrToNBT(String... args) throws RuntimeException { + return nameValueToNBT(args[0], args[1]); + } + + static ViaStringTagReader1_11_2.Any nameValueToNBT(String key, String value) throws RuntimeException { + value = value.trim(); + + if (value.startsWith("{")) { + value = value.substring(1, value.length() - 1); + ViaStringTagReader1_11_2.Compound jsontonbt$compound; + String s1; + + for (jsontonbt$compound = new ViaStringTagReader1_11_2.Compound(key); value.length() > 0; value = value.substring(s1.length() + 1)) { + s1 = nextNameValuePair(value, true); + + if (s1.length() > 0) { + jsontonbt$compound.tagList.add(getTagFromNameValue(s1, false)); + } + + if (value.length() < s1.length() + 1) { + break; + } + + char c1 = value.charAt(s1.length()); + + if (c1 != 44 && c1 != 123 && c1 != 125 && c1 != 91 && c1 != 93) { + throw new RuntimeException("Unexpected token '" + c1 + "' at: " + value.substring(s1.length())); + } + } + + return jsontonbt$compound; + } else if (value.startsWith("[") && !INT_ARRAY_MATCHER.matcher(value).matches()) { + value = value.substring(1, value.length() - 1); + ViaStringTagReader1_11_2.List jsontonbt$list; + String s; + + for (jsontonbt$list = new ViaStringTagReader1_11_2.List(key); value.length() > 0; value = value.substring(s.length() + 1)) { + s = nextNameValuePair(value, false); + + if (s.length() > 0) { + jsontonbt$list.tagList.add(getTagFromNameValue(s, true)); + } + + if (value.length() < s.length() + 1) { + break; + } + + char c0 = value.charAt(s.length()); + + if (c0 != 44 && c0 != 123 && c0 != 125 && c0 != 91 && c0 != 93) { + throw new RuntimeException("Unexpected token '" + c0 + "' at: " + value.substring(s.length())); + } + } + + return jsontonbt$list; + } else { + return new ViaStringTagReader1_11_2.Primitive(key, value); + } + } + + private static ViaStringTagReader1_11_2.Any getTagFromNameValue(String str, boolean isArray) throws RuntimeException { + String s = locateName(str, isArray); + String s1 = locateValue(str, isArray); + return joinStrToNBT(s, s1); + } + + private static String nextNameValuePair(String str, boolean isCompound) throws RuntimeException { + int i = getNextCharIndex(str, ':'); + int j = getNextCharIndex(str, ','); + + if (isCompound) { + if (i == -1) { + throw new RuntimeException("Unable to locate name/value separator for string: " + str); + } + + if (j != -1 && j < i) { + throw new RuntimeException("Name error at: " + str); + } + } else if (i == -1 || i > j) { + i = -1; + } + + return locateValueAt(str, i); + } + + private static String locateValueAt(String str, int index) throws RuntimeException { + Stack stack = new Stack<>(); + int i = index + 1; + boolean flag = false; + boolean flag1 = false; + boolean flag2 = false; + + for (int j = 0; i < str.length(); ++i) { + char c0 = str.charAt(i); + + if (c0 == 34) { + if (isCharEscaped(str, i)) { + if (!flag) { + throw new RuntimeException("Illegal use of \\\": " + str); + } + } else { + flag = !flag; + + if (flag && !flag2) { + flag1 = true; + } + + if (!flag) { + j = i; + } + } + } else if (!flag) { + if (c0 != 123 && c0 != 91) { + if (c0 == 125 && (stack.isEmpty() || stack.pop() != 123)) { + throw new RuntimeException("Unbalanced curly brackets {}: " + str); + } + + if (c0 == 93 && (stack.isEmpty() || stack.pop() != 91)) { + throw new RuntimeException("Unbalanced square brackets []: " + str); + } + + if (c0 == 44 && stack.isEmpty()) { + return str.substring(0, i); + } + } else { + stack.push(c0); + } + } + + if (!Character.isWhitespace(c0)) { + if (!flag && flag1 && j != i) { + return str.substring(0, j + 1); + } + + flag2 = true; + } + } + + return str.substring(0, i); + } + + private static String locateName(String str, boolean isArray) throws RuntimeException { + if (isArray) { + str = str.trim(); + + if (str.startsWith("{") || str.startsWith("[")) { + return ""; + } + } + + int i = getNextCharIndex(str, ':'); + + if (i == -1) { + if (isArray) { + return ""; + } else { + throw new RuntimeException("Unable to locate name/value separator for string: " + str); + } + } else { + return str.substring(0, i).trim(); + } + } + + private static String locateValue(String str, boolean isArray) throws RuntimeException { + if (isArray) { + str = str.trim(); + + if (str.startsWith("{") || str.startsWith("[")) { + return str; + } + } + + int i = getNextCharIndex(str, ':'); + + if (i == -1) { + if (isArray) { + return str; + } else { + throw new RuntimeException("Unable to locate name/value separator for string: " + str); + } + } else { + return str.substring(i + 1).trim(); + } + } + + private static int getNextCharIndex(String str, char targetChar) { + int i = 0; + + for (boolean flag = true; i < str.length(); ++i) { + char c0 = str.charAt(i); + + if (c0 == 34) { + if (!isCharEscaped(str, i)) { + flag = !flag; + } + } else if (flag) { + if (c0 == targetChar) { + return i; + } + + if (c0 == 123 || c0 == 91) { + return -1; + } + } + } + + return -1; + } + + private static boolean isCharEscaped(String str, int index) { + return index > 0 && str.charAt(index - 1) == 92 && !isCharEscaped(str, index - 1); + } + + abstract static class Any { + protected String json; + + public abstract Tag parse() throws RuntimeException; + } + + static class Compound extends ViaStringTagReader1_11_2.Any { + protected java.util.List tagList = Lists.newArrayList(); + + public Compound(String jsonIn) { + this.json = jsonIn; + } + + public Tag parse() throws RuntimeException { + CompoundTag nbttagcompound = new CompoundTag(); + + for (ViaStringTagReader1_11_2.Any jsontonbt$any : this.tagList) { + nbttagcompound.put(jsontonbt$any.json, jsontonbt$any.parse()); + } + + return nbttagcompound; + } + } + + static class List extends ViaStringTagReader1_11_2.Any { + protected java.util.List tagList = Lists.newArrayList(); + + public List(String json) { + this.json = json; + } + + public Tag parse() throws RuntimeException { + ListTag nbttaglist = new ListTag(); + + for (ViaStringTagReader1_11_2.Any jsontonbt$any : this.tagList) { + nbttaglist.add(jsontonbt$any.parse()); + } + + return nbttaglist; + } + } + + static class Primitive extends ViaStringTagReader1_11_2.Any { + private static final Pattern DOUBLE = Pattern.compile("[-+]?[0-9]*\\.?[0-9]+[d|D]"); + private static final Pattern FLOAT = Pattern.compile("[-+]?[0-9]*\\.?[0-9]+[f|F]"); + private static final Pattern BYTE = Pattern.compile("[-+]?[0-9]+[b|B]"); + private static final Pattern LONG = Pattern.compile("[-+]?[0-9]+[l|L]"); + private static final Pattern SHORT = Pattern.compile("[-+]?[0-9]+[s|S]"); + private static final Pattern INTEGER = Pattern.compile("[-+]?[0-9]+"); + private static final Pattern DOUBLE_UNTYPED = Pattern.compile("[-+]?[0-9]*\\.?[0-9]+"); + private static final Splitter SPLITTER = Splitter.on(',').omitEmptyStrings(); + protected String jsonValue; + + public Primitive(String jsonIn, String valueIn) { + this.json = jsonIn; + this.jsonValue = valueIn; + } + + public Tag parse() throws RuntimeException { + try { + if (DOUBLE.matcher(this.jsonValue).matches()) { + return new DoubleTag(Double.parseDouble(this.jsonValue.substring(0, this.jsonValue.length() - 1))); + } + + if (FLOAT.matcher(this.jsonValue).matches()) { + return new FloatTag(Float.parseFloat(this.jsonValue.substring(0, this.jsonValue.length() - 1))); + } + + if (BYTE.matcher(this.jsonValue).matches()) { + return new ByteTag(Byte.parseByte(this.jsonValue.substring(0, this.jsonValue.length() - 1))); + } + + if (LONG.matcher(this.jsonValue).matches()) { + return new LongTag(Long.parseLong(this.jsonValue.substring(0, this.jsonValue.length() - 1))); + } + + if (SHORT.matcher(this.jsonValue).matches()) { + return new ShortTag(Short.parseShort(this.jsonValue.substring(0, this.jsonValue.length() - 1))); + } + + if (INTEGER.matcher(this.jsonValue).matches()) { + return new IntTag(Integer.parseInt(this.jsonValue)); + } + + if (DOUBLE_UNTYPED.matcher(this.jsonValue).matches()) { + return new DoubleTag(Double.parseDouble(this.jsonValue)); + } + + if ("true".equalsIgnoreCase(this.jsonValue) || "false".equalsIgnoreCase(this.jsonValue)) { + return new ByteTag((byte) (Boolean.parseBoolean(this.jsonValue) ? 1 : 0)); + } + } catch (NumberFormatException var6) { + this.jsonValue = this.jsonValue.replaceAll("\\\\\"", "\""); + return new StringTag(this.jsonValue); + } + + if (this.jsonValue.startsWith("[") && this.jsonValue.endsWith("]")) { + String s = this.jsonValue.substring(1, this.jsonValue.length() - 1); + String[] astring = Iterables.toArray(SPLITTER.split(s), String.class); + + try { + int[] aint = new int[astring.length]; + + for (int j = 0; j < astring.length; ++j) { + aint[j] = Integer.parseInt(astring[j].trim()); + } + + return new IntArrayTag(aint); + } catch (NumberFormatException var5) { + return new StringTag(this.jsonValue); + } + } else { + if (this.jsonValue.startsWith("\"") && this.jsonValue.endsWith("\"")) { + this.jsonValue = this.jsonValue.substring(1, this.jsonValue.length() - 1); + } + + this.jsonValue = this.jsonValue.replaceAll("\\\\\"", "\""); + StringBuilder stringbuilder = new StringBuilder(); + + for (int i = 0; i < this.jsonValue.length(); ++i) { + if (i < this.jsonValue.length() - 1 && this.jsonValue.charAt(i) == 92 && this.jsonValue.charAt(i + 1) == 92) { + stringbuilder.append('\\'); + ++i; + } else { + stringbuilder.append(this.jsonValue.charAt(i)); + } + } + + return new StringTag(stringbuilder.toString()); + } + } + } + +} diff --git a/src/main/java/net/raphimc/vialegacy/util/ViaStringTagReader1_12_2.java b/src/main/java/net/raphimc/vialegacy/util/ViaStringTagReader1_12_2.java new file mode 100644 index 0000000..823363a --- /dev/null +++ b/src/main/java/net/raphimc/vialegacy/util/ViaStringTagReader1_12_2.java @@ -0,0 +1,408 @@ +package net.raphimc.vialegacy.util; + + +import com.viaversion.viaversion.libs.opennbt.tag.TagRegistry; +import com.viaversion.viaversion.libs.opennbt.tag.builtin.*; + +import java.util.ArrayList; +import java.util.List; +import java.util.regex.Pattern; + +@Deprecated // Replace with mcstructs +public class ViaStringTagReader1_12_2 { + + private static final Pattern DOUBLE_PATTERN_IMPLICIT = Pattern.compile("[-+]?(?:[0-9]+[.]|[0-9]*[.][0-9]+)(?:e[-+]?[0-9]+)?", Pattern.CASE_INSENSITIVE); + private static final Pattern DOUBLE_PATTERN = Pattern.compile("[-+]?(?:[0-9]+[.]?|[0-9]*[.][0-9]+)(?:e[-+]?[0-9]+)?d", Pattern.CASE_INSENSITIVE); + private static final Pattern FLOAT_PATTERN = Pattern.compile("[-+]?(?:[0-9]+[.]?|[0-9]*[.][0-9]+)(?:e[-+]?[0-9]+)?f", Pattern.CASE_INSENSITIVE); + private static final Pattern BYTE_PATTERN = Pattern.compile("[-+]?(?:0|[1-9][0-9]*)b", Pattern.CASE_INSENSITIVE); + private static final Pattern LONG_PATTERN = Pattern.compile("[-+]?(?:0|[1-9][0-9]*)l", Pattern.CASE_INSENSITIVE); + private static final Pattern SHORT_PATTERN = Pattern.compile("[-+]?(?:0|[1-9][0-9]*)s", Pattern.CASE_INSENSITIVE); + private static final Pattern INT_PATTERN = Pattern.compile("[-+]?(?:0|[1-9][0-9]*)"); + private final String JSON_TAG; + private int currentPosition; + + private ViaStringTagReader1_12_2(String jsonTag) { + this.JSON_TAG = jsonTag; + } + + public static CompoundTag getTagFromJson(String jsonString) throws NBTException { + return (new ViaStringTagReader1_12_2(jsonString)).readCompound(); + } + + private CompoundTag readCompound() throws NBTException { + CompoundTag nbttagcompound = this.parseCompound(); + this.skipWhitespace(); + + if (this.canRead()) { + ++this.currentPosition; + throw this.makeError("Trailing data found"); + } else { + return nbttagcompound; + } + } + + private String readString() throws NBTException { + this.skipWhitespace(); + + if (!this.canRead()) { + throw this.makeError("Expected key"); + } else { + return this.peek() == '"' ? this.readQuotedString() : this.readUnquotedString(); + } + } + + private NBTException makeError(String message) { + return new NBTException(message, this.JSON_TAG, this.currentPosition); + } + + private Tag parseTagPrimitive() throws NBTException { + this.skipWhitespace(); + + if (this.peek() == '"') { + return new StringTag(this.readQuotedString()); + } else { + String s = this.readUnquotedString(); + + if (s.isEmpty()) { + throw this.makeError("Expected value"); + } else { + return this.parsePrimitive(s); + } + } + } + + private Tag parsePrimitive(String input) { + try { + if (FLOAT_PATTERN.matcher(input).matches()) { + return new FloatTag(Float.parseFloat(input.substring(0, input.length() - 1))); + } + + if (BYTE_PATTERN.matcher(input).matches()) { + return new ByteTag(Byte.parseByte(input.substring(0, input.length() - 1))); + } + + if (LONG_PATTERN.matcher(input).matches()) { + return new LongTag(Long.parseLong(input.substring(0, input.length() - 1))); + } + + if (SHORT_PATTERN.matcher(input).matches()) { + return new ShortTag(Short.parseShort(input.substring(0, input.length() - 1))); + } + + if (INT_PATTERN.matcher(input).matches()) { + return new IntTag(Integer.parseInt(input)); + } + + if (DOUBLE_PATTERN.matcher(input).matches()) { + return new DoubleTag(Double.parseDouble(input.substring(0, input.length() - 1))); + } + + if (DOUBLE_PATTERN_IMPLICIT.matcher(input).matches()) { + return new DoubleTag(Double.parseDouble(input)); + } + + if ("true".equalsIgnoreCase(input)) { + return new ByteTag((byte) 1); + } + + if ("false".equalsIgnoreCase(input)) { + return new ByteTag((byte) 0); + } + } catch (NumberFormatException ignored) { + } + + return new StringTag(input); + } + + private String readQuotedString() throws NBTException { + int i = ++this.currentPosition; + StringBuilder stringbuilder = null; + boolean flag = false; + + while (this.canRead()) { + char c0 = this.read(); + + if (flag) { + if (c0 != '\\' && c0 != '"') { + throw this.makeError("Invalid escape of '" + c0 + "'"); + } + + flag = false; + } else { + if (c0 == '\\') { + flag = true; + + if (stringbuilder == null) { + stringbuilder = new StringBuilder(this.JSON_TAG.substring(i, this.currentPosition - 1)); + } + + continue; + } + + if (c0 == '"') { + return stringbuilder == null ? this.JSON_TAG.substring(i, this.currentPosition - 1) : stringbuilder.toString(); + } + } + + if (stringbuilder != null) { + stringbuilder.append(c0); + } + } + + throw this.makeError("Missing termination quote"); + } + + private String readUnquotedString() { + int i = this.currentPosition; + + while (this.canRead() && this.isAllowedInUnquotedString(this.peek())) { + this.currentPosition++; + } + + return this.JSON_TAG.substring(i, this.currentPosition); + } + + private Tag parseTag() throws NBTException { + this.skipWhitespace(); + + if (!this.canRead()) { + throw this.makeError("Expected value"); + } else { + char c0 = this.peek(); + + if (c0 == '{') { + return this.parseCompound(); + } else { + return c0 == '[' ? this.parseTagArray() : this.parseTagPrimitive(); + } + } + } + + private Tag parseTagArray() throws NBTException { + return this.canRead(2) && this.peek(1) != '"' && this.peek(2) == ';' ? this.parseTagPrimitiveArray() : this.parseListTag(); + } + + private CompoundTag parseCompound() throws NBTException { + this.expect('{'); + CompoundTag nbttagcompound = new CompoundTag(); + this.skipWhitespace(); + + while (this.canRead() && this.peek() != '}') { + String key = this.readString(); + + if (key.isEmpty()) { + throw this.makeError("Expected non-empty key"); + } + + this.expect(':'); + Tag tag = this.parseTag(); + nbttagcompound.put(key, tag); + + if (!this.readComma()) { + break; + } + + if (!this.canRead()) { + throw this.makeError("Expected key"); + } + } + + this.expect('}'); + return nbttagcompound; + } + + private Tag parseListTag() throws NBTException { + this.expect('['); + this.skipWhitespace(); + + if (!this.canRead()) { + throw this.makeError("Expected value"); + } else { + ListTag nbttaglist = new ListTag(); + int i = -1; + + while (this.peek() != ']') { + Tag nbtbase = this.parseTag(); + int j = TagRegistry.getIdFor(nbtbase.getClass()); + + if (i < 0) { + i = j; + } else if (j != i) { + throw this.makeError("Unable to insert " + TagRegistry.getClassFor(j).getSimpleName() + " into ListTag of type " + TagRegistry.getClassFor(i).getSimpleName()); + } + + nbttaglist.add(nbtbase); + + if (!this.readComma()) { + break; + } + + if (!this.canRead()) { + throw this.makeError("Expected value"); + } + } + + this.expect(']'); + return nbttaglist; + } + } + + private Tag parseTagPrimitiveArray() throws NBTException { + this.expect('['); + char c0 = this.read(); + this.read(); + this.skipWhitespace(); + + if (!this.canRead()) { + throw this.makeError("Expected value"); + } else if (c0 == 'B') { + return new ByteArrayTag(toByteArray(this.readArray((byte) 7, (byte) 1))); + } else if (c0 == 'L') { + return new LongArrayTag(toLongArray(this.readArray((byte) 12, (byte) 4))); + } else if (c0 == 'I') { + return new IntArrayTag(toIntArray(this.readArray((byte) 11, (byte) 3))); + } else { + throw this.makeError("Invalid array type '" + c0 + "' found"); + } + } + + private static byte[] toByteArray(List list) { + byte[] bs = new byte[list.size()]; + + for (int i = 0; i < list.size(); ++i) { + Byte byte_ = list.get(i); + bs[i] = byte_ == null ? 0 : byte_; + } + + return bs; + } + + private static long[] toLongArray(List list) { + long[] ls = new long[list.size()]; + + for (int i = 0; i < list.size(); ++i) { + Long long_ = list.get(i); + ls[i] = long_ == null ? 0L : long_; + } + + return ls; + } + + private static int[] toIntArray(List list) { + int[] is = new int[list.size()]; + + for (int i = 0; i < list.size(); ++i) { + Integer integer = list.get(i); + is[i] = integer == null ? 0 : integer; + } + + return is; + } + + private List readArray(byte b, byte c) throws NBTException { + List list = new ArrayList<>(); + + while (true) { + if (this.peek() != ']') { + Tag nbtbase = this.parseTag(); + int i = TagRegistry.getIdFor(nbtbase.getClass()); + + if (i != c) { + throw this.makeError("Unable to insert " + TagRegistry.getClassFor(i).getSimpleName() + " into " + TagRegistry.getClassFor(b).getSimpleName()); + } + + if (c == 1) { + list.add((T) ((ByteTag) nbtbase).getValue()); + } else if (c == 4) { + list.add((T) ((LongTag) nbtbase).getValue()); + } else { + list.add((T) ((IntTag) nbtbase).getValue()); + } + + if (this.readComma()) { + if (!this.canRead()) { + throw this.makeError("Expected value"); + } + + continue; + } + } + + this.expect(']'); + return list; + } + } + + private void skipWhitespace() { + while (this.canRead() && Character.isWhitespace(this.peek())) { + ++this.currentPosition; + } + } + + private boolean readComma() { + this.skipWhitespace(); + + if (this.canRead() && this.peek() == ',') { + ++this.currentPosition; + this.skipWhitespace(); + return true; + } else { + return false; + } + } + + private void expect(char expectedChar) throws NBTException { + this.skipWhitespace(); + boolean flag = this.canRead(); + + if (flag && this.peek() == expectedChar) { + ++this.currentPosition; + } else { + throw new NBTException("Expected '" + expectedChar + "' but got '" + (flag ? this.peek() : "") + "'", this.JSON_TAG, this.currentPosition + 1); + } + } + + private boolean isAllowedInUnquotedString(char c) { + return c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c >= 'a' && c <= 'z' || c == '_' || c == '-' || c == '.' || c == '+'; + } + + private boolean canRead(int offset) { + return this.currentPosition + offset < this.JSON_TAG.length(); + } + + private boolean canRead() { + return this.canRead(0); + } + + private char peek(int offset) { + return this.JSON_TAG.charAt(this.currentPosition + offset); + } + + private char peek() { + return this.peek(0); + } + + private char read() { + return this.JSON_TAG.charAt(this.currentPosition++); + } + + public static final class NBTException extends Exception { + public NBTException(String message, String jsonTag, int position) { + super(message + " at: " + generate(jsonTag, position)); + } + + private static String generate(String jsonTag, int position) { + StringBuilder stringbuilder = new StringBuilder(); + int i = Math.min(jsonTag.length(), position); + + if (i > 35) { + stringbuilder.append("..."); + } + + stringbuilder.append(jsonTag, Math.max(0, i - 35), i); + stringbuilder.append("<--[HERE]"); + return stringbuilder.toString(); + } + } + +} diff --git a/src/main/resources/assets/viabackwards/data/mapping-1.14to3D_Shareware.json b/src/main/resources/assets/viabackwards/data/mapping-1.14to3D_Shareware.json new file mode 100644 index 0000000..52545fb --- /dev/null +++ b/src/main/resources/assets/viabackwards/data/mapping-1.14to3D_Shareware.json @@ -0,0 +1,23 @@ +{ + "items": { + "minecraft:red_key": { + "id": "minecraft:tripwire_hook", + "name": "3D Shareware Red Key" + }, + "minecraft:blue_key": { + "id": "minecraft:tripwire_hook", + "name": "3D Shareware Blue Key" + }, + "minecraft:yellow_key": { + "id": "minecraft:tripwire_hook", + "name": "3D Shareware Yellow Key" + }, + "minecraft:3d": { + "id": "minecraft:golden_carrot", + "name": "3D Shareware 3D" + } + }, + "sounds": { + "awesome_intro": "entity.dragon_fireball.explode" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/viabackwards/data/mapping-1.16to20w14infinite.json b/src/main/resources/assets/viabackwards/data/mapping-1.16to20w14infinite.json new file mode 100644 index 0000000..5c740e6 --- /dev/null +++ b/src/main/resources/assets/viabackwards/data/mapping-1.16to20w14infinite.json @@ -0,0 +1,137 @@ +{ + "blockstates": { + "minecraft:soul_fire_torch": "minecraft:soul_torch", + "minecraft:soul_fire_wall_torch[facing=north]": "minecraft:soul_wall_torch[facing=north]", + "minecraft:soul_fire_wall_torch[facing=south]": "minecraft:soul_wall_torch[facing=south]", + "minecraft:soul_fire_wall_torch[facing=west]": "minecraft:soul_wall_torch[facing=west]", + "minecraft:soul_fire_wall_torch[facing=east]": "minecraft:soul_wall_torch[facing=east]", + "minecraft:netherite_stairs[facing=north,half=top,shape=straight,waterlogged=true]": "minecraft:blackstone_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "minecraft:netherite_stairs[facing=north,half=top,shape=straight,waterlogged=false]": "minecraft:blackstone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "minecraft:netherite_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]": "minecraft:blackstone_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "minecraft:netherite_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]": "minecraft:blackstone_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "minecraft:netherite_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]": "minecraft:blackstone_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "minecraft:netherite_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]": "minecraft:blackstone_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "minecraft:netherite_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]": "minecraft:blackstone_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "minecraft:netherite_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]": "minecraft:blackstone_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "minecraft:netherite_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]": "minecraft:blackstone_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "minecraft:netherite_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]": "minecraft:blackstone_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "minecraft:netherite_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]": "minecraft:blackstone_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "minecraft:netherite_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]": "minecraft:blackstone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "minecraft:netherite_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:blackstone_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "minecraft:netherite_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:blackstone_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "minecraft:netherite_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:blackstone_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "minecraft:netherite_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:blackstone_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "minecraft:netherite_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:blackstone_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "minecraft:netherite_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:blackstone_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "minecraft:netherite_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:blackstone_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "minecraft:netherite_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:blackstone_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "minecraft:netherite_stairs[facing=south,half=top,shape=straight,waterlogged=true]": "minecraft:blackstone_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "minecraft:netherite_stairs[facing=south,half=top,shape=straight,waterlogged=false]": "minecraft:blackstone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "minecraft:netherite_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]": "minecraft:blackstone_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "minecraft:netherite_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]": "minecraft:blackstone_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "minecraft:netherite_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]": "minecraft:blackstone_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "minecraft:netherite_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]": "minecraft:blackstone_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "minecraft:netherite_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]": "minecraft:blackstone_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "minecraft:netherite_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]": "minecraft:blackstone_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "minecraft:netherite_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]": "minecraft:blackstone_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "minecraft:netherite_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]": "minecraft:blackstone_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "minecraft:netherite_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]": "minecraft:blackstone_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "minecraft:netherite_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]": "minecraft:blackstone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "minecraft:netherite_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:blackstone_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "minecraft:netherite_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:blackstone_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "minecraft:netherite_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:blackstone_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "minecraft:netherite_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:blackstone_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "minecraft:netherite_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:blackstone_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "minecraft:netherite_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:blackstone_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "minecraft:netherite_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:blackstone_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "minecraft:netherite_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:blackstone_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "minecraft:netherite_stairs[facing=west,half=top,shape=straight,waterlogged=true]": "minecraft:blackstone_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "minecraft:netherite_stairs[facing=west,half=top,shape=straight,waterlogged=false]": "minecraft:blackstone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "minecraft:netherite_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]": "minecraft:blackstone_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "minecraft:netherite_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]": "minecraft:blackstone_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "minecraft:netherite_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]": "minecraft:blackstone_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "minecraft:netherite_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]": "minecraft:blackstone_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "minecraft:netherite_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]": "minecraft:blackstone_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "minecraft:netherite_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]": "minecraft:blackstone_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "minecraft:netherite_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]": "minecraft:blackstone_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "minecraft:netherite_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]": "minecraft:blackstone_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "minecraft:netherite_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]": "minecraft:blackstone_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "minecraft:netherite_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]": "minecraft:blackstone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "minecraft:netherite_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:blackstone_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "minecraft:netherite_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:blackstone_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "minecraft:netherite_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:blackstone_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "minecraft:netherite_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:blackstone_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "minecraft:netherite_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:blackstone_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "minecraft:netherite_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:blackstone_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "minecraft:netherite_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:blackstone_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "minecraft:netherite_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:blackstone_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "minecraft:netherite_stairs[facing=east,half=top,shape=straight,waterlogged=true]": "minecraft:blackstone_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "minecraft:netherite_stairs[facing=east,half=top,shape=straight,waterlogged=false]": "minecraft:blackstone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "minecraft:netherite_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]": "minecraft:blackstone_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "minecraft:netherite_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]": "minecraft:blackstone_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "minecraft:netherite_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]": "minecraft:blackstone_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "minecraft:netherite_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]": "minecraft:blackstone_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "minecraft:netherite_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]": "minecraft:blackstone_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "minecraft:netherite_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]": "minecraft:blackstone_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "minecraft:netherite_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]": "minecraft:blackstone_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "minecraft:netherite_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]": "minecraft:blackstone_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "minecraft:netherite_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]": "minecraft:blackstone_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "minecraft:netherite_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]": "minecraft:blackstone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "minecraft:netherite_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]": "minecraft:blackstone_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "minecraft:netherite_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]": "minecraft:blackstone_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "minecraft:netherite_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]": "minecraft:blackstone_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "minecraft:netherite_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]": "minecraft:blackstone_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "minecraft:netherite_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]": "minecraft:blackstone_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "minecraft:netherite_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]": "minecraft:blackstone_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "minecraft:netherite_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]": "minecraft:blackstone_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "minecraft:netherite_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]": "minecraft:blackstone_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "minecraft:cursor": "minecraft:lime_concrete", + "minecraft:zone": "minecraft:moving_piston[facing=north,type=normal]", + "minecraft:ant[facing=north]": "minecraft:magenta_glazed_terracotta[facing=south]", + "minecraft:ant[facing=south]": "minecraft:magenta_glazed_terracotta[facing=north]", + "minecraft:ant[facing=west]": "minecraft:magenta_glazed_terracotta[facing=east]", + "minecraft:ant[facing=east]": "minecraft:magenta_glazed_terracotta[facing=west]", + "minecraft:neither_portal[axis=x]": "minecraft:nether_portal[axis=x]", + "minecraft:neither_portal[axis=z]": "minecraft:nether_portal[axis=z]", + "minecraft:soul_fire_lantern[hanging=true]": "minecraft:soul_lantern[hanging=true]", + "minecraft:soul_fire_lantern[hanging=false]": "minecraft:soul_lantern[hanging=false]", + "minecraft:book_box[facing=north]": "minecraft:bookshelf", + "minecraft:book_box[facing=south]": "minecraft:bookshelf", + "minecraft:book_box[facing=west]": "minecraft:bookshelf", + "minecraft:book_box[facing=east]": "minecraft:bookshelf" + }, + "items": { + "minecraft:soul_fire_torch": { + "id": "minecraft:soul_torch", + "name": "20w14infinite Soul Fire Torch" + }, + "minecraft:soul_fire_lantern": { + "id": "minecraft:soul_lantern", + "name": "20w14infinite Soul Fire Latern" + }, + "minecraft:netherite_stairs": { + "id": "minecraft:blackstone_stairs", + "name": "20w14infinite Netherite Stairs" + }, + "minecraft:book_box": { + "id": "minecraft:bookshelf", + "name": "20w14infinite Box of Infinite Books" + }, + "minecraft:footprint": { + "id": "minecraft:gray_stained_glass_pane", + "name": "20w14infinite Footprint" + }, + "minecraft:cursor": { + "id": "minecraft:lime_concrete", + "name": "20w14infinite Cursor" + }, + "minecraft:fine_item": { + "id": "minecraft:paper", + "name": "20w14infinite Fine Item" + } + }, + "sounds": { + "music.nether": "", + "nothingtoseeheremovealong:awesome_intro": "entity.dragon_fireball.explode" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/vialegacy/vialegacy.yml b/src/main/resources/assets/vialegacy/vialegacy.yml new file mode 100644 index 0000000..2fcd892 --- /dev/null +++ b/src/main/resources/assets/vialegacy/vialegacy.yml @@ -0,0 +1,28 @@ +# +# Calculate 1.7.10 OnGround field dynamically. Requires a bit of extra caching +dynamic-onground: true +# +# Ignores incoming plugin channel messages of 1.8+ clients with channel names longer than 16 characters +# CraftBukkit had this limit hardcoded until 1.8 +ignore-long-1_8-channel-names: true +# +# Load <= 1.7.2 player skull skins +legacy-skull-loading: true +# +# Load <= 1.6.4 skins. (Adds max 500ms delay to player spawn packets) +legacy-skin-loading: false +# +# Emulate sounds for <= 1.2.5 +sound-emulation: true +# +# Calculate <= 1.1 biomes. Requires a lot of extra calculations +old-biomes: true +# +# Remap <= 1.1 biomes based on color +remap-based-on-color: true +# +# Classic chunk loading range +classic-chunk-range: 10 +# +# How many chunks should be sent to the client per movement tick (-1 for auto) +chunks-per-tick: -1 diff --git a/src/main/resources/assets/viaversion/data/mapping-20w14infinite.json b/src/main/resources/assets/viaversion/data/mapping-20w14infinite.json new file mode 100644 index 0000000..2296d97 --- /dev/null +++ b/src/main/resources/assets/viaversion/data/mapping-20w14infinite.json @@ -0,0 +1,18630 @@ +{ + "blockstates": { + "0": "minecraft:air", + "1": "minecraft:soul_fire_torch", + "2": "minecraft:brown_mushroom", + "3": "minecraft:end_stone", + "4": "minecraft:yellow_carpet", + "5": "minecraft:orange_glazed_terracotta[facing=north]", + "6": "minecraft:orange_glazed_terracotta[facing=south]", + "7": "minecraft:orange_glazed_terracotta[facing=west]", + "8": "minecraft:orange_glazed_terracotta[facing=east]", + "9": "minecraft:tube_coral[waterlogged=true]", + "10": "minecraft:tube_coral[waterlogged=false]", + "11": "minecraft:light_weighted_pressure_plate[power=0]", + "12": "minecraft:light_weighted_pressure_plate[power=1]", + "13": "minecraft:light_weighted_pressure_plate[power=2]", + "14": "minecraft:light_weighted_pressure_plate[power=3]", + "15": "minecraft:light_weighted_pressure_plate[power=4]", + "16": "minecraft:light_weighted_pressure_plate[power=5]", + "17": "minecraft:light_weighted_pressure_plate[power=6]", + "18": "minecraft:light_weighted_pressure_plate[power=7]", + "19": "minecraft:light_weighted_pressure_plate[power=8]", + "20": "minecraft:light_weighted_pressure_plate[power=9]", + "21": "minecraft:light_weighted_pressure_plate[power=10]", + "22": "minecraft:light_weighted_pressure_plate[power=11]", + "23": "minecraft:light_weighted_pressure_plate[power=12]", + "24": "minecraft:light_weighted_pressure_plate[power=13]", + "25": "minecraft:light_weighted_pressure_plate[power=14]", + "26": "minecraft:light_weighted_pressure_plate[power=15]", + "27": "minecraft:structure_block[mode=save]", + "28": "minecraft:structure_block[mode=load]", + "29": "minecraft:structure_block[mode=corner]", + "30": "minecraft:structure_block[mode=data]", + "31": "minecraft:warped_wall_sign[facing=north,waterlogged=true]", + "32": "minecraft:warped_wall_sign[facing=north,waterlogged=false]", + "33": "minecraft:warped_wall_sign[facing=south,waterlogged=true]", + "34": "minecraft:warped_wall_sign[facing=south,waterlogged=false]", + "35": "minecraft:warped_wall_sign[facing=west,waterlogged=true]", + "36": "minecraft:warped_wall_sign[facing=west,waterlogged=false]", + "37": "minecraft:warped_wall_sign[facing=east,waterlogged=true]", + "38": "minecraft:warped_wall_sign[facing=east,waterlogged=false]", + "39": "minecraft:granite_wall[east=none,north=none,south=none,up=true,waterlogged=true,west=none]", + "40": "minecraft:granite_wall[east=none,north=none,south=none,up=true,waterlogged=true,west=low]", + "41": "minecraft:granite_wall[east=none,north=none,south=none,up=true,waterlogged=true,west=tall]", + "42": "minecraft:granite_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=none]", + "43": "minecraft:granite_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=low]", + "44": "minecraft:granite_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=tall]", + "45": "minecraft:granite_wall[east=none,north=none,south=none,up=false,waterlogged=true,west=none]", + "46": "minecraft:granite_wall[east=none,north=none,south=none,up=false,waterlogged=true,west=low]", + "47": "minecraft:granite_wall[east=none,north=none,south=none,up=false,waterlogged=true,west=tall]", + "48": "minecraft:granite_wall[east=none,north=none,south=none,up=false,waterlogged=false,west=none]", + "49": "minecraft:granite_wall[east=none,north=none,south=none,up=false,waterlogged=false,west=low]", + "50": "minecraft:granite_wall[east=none,north=none,south=none,up=false,waterlogged=false,west=tall]", + "51": "minecraft:granite_wall[east=none,north=none,south=low,up=true,waterlogged=true,west=none]", + "52": "minecraft:granite_wall[east=none,north=none,south=low,up=true,waterlogged=true,west=low]", + "53": "minecraft:granite_wall[east=none,north=none,south=low,up=true,waterlogged=true,west=tall]", + "54": "minecraft:granite_wall[east=none,north=none,south=low,up=true,waterlogged=false,west=none]", + "55": "minecraft:granite_wall[east=none,north=none,south=low,up=true,waterlogged=false,west=low]", + "56": "minecraft:granite_wall[east=none,north=none,south=low,up=true,waterlogged=false,west=tall]", + "57": "minecraft:granite_wall[east=none,north=none,south=low,up=false,waterlogged=true,west=none]", + "58": "minecraft:granite_wall[east=none,north=none,south=low,up=false,waterlogged=true,west=low]", + "59": "minecraft:granite_wall[east=none,north=none,south=low,up=false,waterlogged=true,west=tall]", + "60": "minecraft:granite_wall[east=none,north=none,south=low,up=false,waterlogged=false,west=none]", + "61": "minecraft:granite_wall[east=none,north=none,south=low,up=false,waterlogged=false,west=low]", + "62": "minecraft:granite_wall[east=none,north=none,south=low,up=false,waterlogged=false,west=tall]", + "63": "minecraft:granite_wall[east=none,north=none,south=tall,up=true,waterlogged=true,west=none]", + "64": "minecraft:granite_wall[east=none,north=none,south=tall,up=true,waterlogged=true,west=low]", + "65": "minecraft:granite_wall[east=none,north=none,south=tall,up=true,waterlogged=true,west=tall]", + "66": "minecraft:granite_wall[east=none,north=none,south=tall,up=true,waterlogged=false,west=none]", + "67": "minecraft:granite_wall[east=none,north=none,south=tall,up=true,waterlogged=false,west=low]", + "68": "minecraft:granite_wall[east=none,north=none,south=tall,up=true,waterlogged=false,west=tall]", + "69": "minecraft:granite_wall[east=none,north=none,south=tall,up=false,waterlogged=true,west=none]", + "70": "minecraft:granite_wall[east=none,north=none,south=tall,up=false,waterlogged=true,west=low]", + "71": "minecraft:granite_wall[east=none,north=none,south=tall,up=false,waterlogged=true,west=tall]", + "72": "minecraft:granite_wall[east=none,north=none,south=tall,up=false,waterlogged=false,west=none]", + "73": "minecraft:granite_wall[east=none,north=none,south=tall,up=false,waterlogged=false,west=low]", + "74": "minecraft:granite_wall[east=none,north=none,south=tall,up=false,waterlogged=false,west=tall]", + "75": "minecraft:granite_wall[east=none,north=low,south=none,up=true,waterlogged=true,west=none]", + "76": "minecraft:granite_wall[east=none,north=low,south=none,up=true,waterlogged=true,west=low]", + "77": "minecraft:granite_wall[east=none,north=low,south=none,up=true,waterlogged=true,west=tall]", + "78": "minecraft:granite_wall[east=none,north=low,south=none,up=true,waterlogged=false,west=none]", + "79": "minecraft:granite_wall[east=none,north=low,south=none,up=true,waterlogged=false,west=low]", + "80": "minecraft:granite_wall[east=none,north=low,south=none,up=true,waterlogged=false,west=tall]", + "81": "minecraft:granite_wall[east=none,north=low,south=none,up=false,waterlogged=true,west=none]", + "82": "minecraft:granite_wall[east=none,north=low,south=none,up=false,waterlogged=true,west=low]", + "83": "minecraft:granite_wall[east=none,north=low,south=none,up=false,waterlogged=true,west=tall]", + "84": "minecraft:granite_wall[east=none,north=low,south=none,up=false,waterlogged=false,west=none]", + "85": "minecraft:granite_wall[east=none,north=low,south=none,up=false,waterlogged=false,west=low]", + "86": "minecraft:granite_wall[east=none,north=low,south=none,up=false,waterlogged=false,west=tall]", + "87": "minecraft:granite_wall[east=none,north=low,south=low,up=true,waterlogged=true,west=none]", + "88": "minecraft:granite_wall[east=none,north=low,south=low,up=true,waterlogged=true,west=low]", + "89": "minecraft:granite_wall[east=none,north=low,south=low,up=true,waterlogged=true,west=tall]", + "90": "minecraft:granite_wall[east=none,north=low,south=low,up=true,waterlogged=false,west=none]", + "91": "minecraft:granite_wall[east=none,north=low,south=low,up=true,waterlogged=false,west=low]", + "92": "minecraft:granite_wall[east=none,north=low,south=low,up=true,waterlogged=false,west=tall]", + "93": "minecraft:granite_wall[east=none,north=low,south=low,up=false,waterlogged=true,west=none]", + "94": "minecraft:granite_wall[east=none,north=low,south=low,up=false,waterlogged=true,west=low]", + "95": "minecraft:granite_wall[east=none,north=low,south=low,up=false,waterlogged=true,west=tall]", + "96": "minecraft:granite_wall[east=none,north=low,south=low,up=false,waterlogged=false,west=none]", + "97": "minecraft:granite_wall[east=none,north=low,south=low,up=false,waterlogged=false,west=low]", + "98": "minecraft:granite_wall[east=none,north=low,south=low,up=false,waterlogged=false,west=tall]", + "99": "minecraft:granite_wall[east=none,north=low,south=tall,up=true,waterlogged=true,west=none]", + "100": "minecraft:granite_wall[east=none,north=low,south=tall,up=true,waterlogged=true,west=low]", + "101": "minecraft:granite_wall[east=none,north=low,south=tall,up=true,waterlogged=true,west=tall]", + "102": "minecraft:granite_wall[east=none,north=low,south=tall,up=true,waterlogged=false,west=none]", + "103": "minecraft:granite_wall[east=none,north=low,south=tall,up=true,waterlogged=false,west=low]", + "104": "minecraft:granite_wall[east=none,north=low,south=tall,up=true,waterlogged=false,west=tall]", + "105": "minecraft:granite_wall[east=none,north=low,south=tall,up=false,waterlogged=true,west=none]", + "106": "minecraft:granite_wall[east=none,north=low,south=tall,up=false,waterlogged=true,west=low]", + "107": "minecraft:granite_wall[east=none,north=low,south=tall,up=false,waterlogged=true,west=tall]", + "108": "minecraft:granite_wall[east=none,north=low,south=tall,up=false,waterlogged=false,west=none]", + "109": "minecraft:granite_wall[east=none,north=low,south=tall,up=false,waterlogged=false,west=low]", + "110": "minecraft:granite_wall[east=none,north=low,south=tall,up=false,waterlogged=false,west=tall]", + "111": "minecraft:granite_wall[east=none,north=tall,south=none,up=true,waterlogged=true,west=none]", + "112": "minecraft:granite_wall[east=none,north=tall,south=none,up=true,waterlogged=true,west=low]", + "113": "minecraft:granite_wall[east=none,north=tall,south=none,up=true,waterlogged=true,west=tall]", + "114": "minecraft:granite_wall[east=none,north=tall,south=none,up=true,waterlogged=false,west=none]", + "115": "minecraft:granite_wall[east=none,north=tall,south=none,up=true,waterlogged=false,west=low]", + "116": "minecraft:granite_wall[east=none,north=tall,south=none,up=true,waterlogged=false,west=tall]", + "117": "minecraft:granite_wall[east=none,north=tall,south=none,up=false,waterlogged=true,west=none]", + "118": "minecraft:granite_wall[east=none,north=tall,south=none,up=false,waterlogged=true,west=low]", + "119": "minecraft:granite_wall[east=none,north=tall,south=none,up=false,waterlogged=true,west=tall]", + "120": "minecraft:granite_wall[east=none,north=tall,south=none,up=false,waterlogged=false,west=none]", + "121": "minecraft:granite_wall[east=none,north=tall,south=none,up=false,waterlogged=false,west=low]", + "122": "minecraft:granite_wall[east=none,north=tall,south=none,up=false,waterlogged=false,west=tall]", + "123": "minecraft:granite_wall[east=none,north=tall,south=low,up=true,waterlogged=true,west=none]", + "124": "minecraft:granite_wall[east=none,north=tall,south=low,up=true,waterlogged=true,west=low]", + "125": "minecraft:granite_wall[east=none,north=tall,south=low,up=true,waterlogged=true,west=tall]", + "126": "minecraft:granite_wall[east=none,north=tall,south=low,up=true,waterlogged=false,west=none]", + "127": "minecraft:granite_wall[east=none,north=tall,south=low,up=true,waterlogged=false,west=low]", + "128": "minecraft:granite_wall[east=none,north=tall,south=low,up=true,waterlogged=false,west=tall]", + "129": "minecraft:granite_wall[east=none,north=tall,south=low,up=false,waterlogged=true,west=none]", + "130": "minecraft:granite_wall[east=none,north=tall,south=low,up=false,waterlogged=true,west=low]", + "131": "minecraft:granite_wall[east=none,north=tall,south=low,up=false,waterlogged=true,west=tall]", + "132": "minecraft:granite_wall[east=none,north=tall,south=low,up=false,waterlogged=false,west=none]", + "133": "minecraft:granite_wall[east=none,north=tall,south=low,up=false,waterlogged=false,west=low]", + "134": "minecraft:granite_wall[east=none,north=tall,south=low,up=false,waterlogged=false,west=tall]", + "135": "minecraft:granite_wall[east=none,north=tall,south=tall,up=true,waterlogged=true,west=none]", + "136": "minecraft:granite_wall[east=none,north=tall,south=tall,up=true,waterlogged=true,west=low]", + "137": "minecraft:granite_wall[east=none,north=tall,south=tall,up=true,waterlogged=true,west=tall]", + "138": "minecraft:granite_wall[east=none,north=tall,south=tall,up=true,waterlogged=false,west=none]", + "139": "minecraft:granite_wall[east=none,north=tall,south=tall,up=true,waterlogged=false,west=low]", + "140": "minecraft:granite_wall[east=none,north=tall,south=tall,up=true,waterlogged=false,west=tall]", + "141": "minecraft:granite_wall[east=none,north=tall,south=tall,up=false,waterlogged=true,west=none]", + "142": "minecraft:granite_wall[east=none,north=tall,south=tall,up=false,waterlogged=true,west=low]", + "143": "minecraft:granite_wall[east=none,north=tall,south=tall,up=false,waterlogged=true,west=tall]", + "144": "minecraft:granite_wall[east=none,north=tall,south=tall,up=false,waterlogged=false,west=none]", + "145": "minecraft:granite_wall[east=none,north=tall,south=tall,up=false,waterlogged=false,west=low]", + "146": "minecraft:granite_wall[east=none,north=tall,south=tall,up=false,waterlogged=false,west=tall]", + "147": "minecraft:granite_wall[east=low,north=none,south=none,up=true,waterlogged=true,west=none]", + "148": "minecraft:granite_wall[east=low,north=none,south=none,up=true,waterlogged=true,west=low]", + "149": "minecraft:granite_wall[east=low,north=none,south=none,up=true,waterlogged=true,west=tall]", + "150": "minecraft:granite_wall[east=low,north=none,south=none,up=true,waterlogged=false,west=none]", + "151": "minecraft:granite_wall[east=low,north=none,south=none,up=true,waterlogged=false,west=low]", + "152": "minecraft:granite_wall[east=low,north=none,south=none,up=true,waterlogged=false,west=tall]", + "153": "minecraft:granite_wall[east=low,north=none,south=none,up=false,waterlogged=true,west=none]", + "154": "minecraft:granite_wall[east=low,north=none,south=none,up=false,waterlogged=true,west=low]", + "155": "minecraft:granite_wall[east=low,north=none,south=none,up=false,waterlogged=true,west=tall]", + "156": "minecraft:granite_wall[east=low,north=none,south=none,up=false,waterlogged=false,west=none]", + "157": "minecraft:granite_wall[east=low,north=none,south=none,up=false,waterlogged=false,west=low]", + "158": "minecraft:granite_wall[east=low,north=none,south=none,up=false,waterlogged=false,west=tall]", + "159": "minecraft:granite_wall[east=low,north=none,south=low,up=true,waterlogged=true,west=none]", + "160": "minecraft:granite_wall[east=low,north=none,south=low,up=true,waterlogged=true,west=low]", + "161": "minecraft:granite_wall[east=low,north=none,south=low,up=true,waterlogged=true,west=tall]", + "162": "minecraft:granite_wall[east=low,north=none,south=low,up=true,waterlogged=false,west=none]", + "163": "minecraft:granite_wall[east=low,north=none,south=low,up=true,waterlogged=false,west=low]", + "164": "minecraft:granite_wall[east=low,north=none,south=low,up=true,waterlogged=false,west=tall]", + "165": "minecraft:granite_wall[east=low,north=none,south=low,up=false,waterlogged=true,west=none]", + "166": "minecraft:granite_wall[east=low,north=none,south=low,up=false,waterlogged=true,west=low]", + "167": "minecraft:granite_wall[east=low,north=none,south=low,up=false,waterlogged=true,west=tall]", + "168": "minecraft:granite_wall[east=low,north=none,south=low,up=false,waterlogged=false,west=none]", + "169": "minecraft:granite_wall[east=low,north=none,south=low,up=false,waterlogged=false,west=low]", + "170": "minecraft:granite_wall[east=low,north=none,south=low,up=false,waterlogged=false,west=tall]", + "171": "minecraft:granite_wall[east=low,north=none,south=tall,up=true,waterlogged=true,west=none]", + "172": "minecraft:granite_wall[east=low,north=none,south=tall,up=true,waterlogged=true,west=low]", + "173": "minecraft:granite_wall[east=low,north=none,south=tall,up=true,waterlogged=true,west=tall]", + "174": "minecraft:granite_wall[east=low,north=none,south=tall,up=true,waterlogged=false,west=none]", + "175": "minecraft:granite_wall[east=low,north=none,south=tall,up=true,waterlogged=false,west=low]", + "176": "minecraft:granite_wall[east=low,north=none,south=tall,up=true,waterlogged=false,west=tall]", + "177": "minecraft:granite_wall[east=low,north=none,south=tall,up=false,waterlogged=true,west=none]", + "178": "minecraft:granite_wall[east=low,north=none,south=tall,up=false,waterlogged=true,west=low]", + "179": "minecraft:granite_wall[east=low,north=none,south=tall,up=false,waterlogged=true,west=tall]", + "180": "minecraft:granite_wall[east=low,north=none,south=tall,up=false,waterlogged=false,west=none]", + "181": "minecraft:granite_wall[east=low,north=none,south=tall,up=false,waterlogged=false,west=low]", + "182": "minecraft:granite_wall[east=low,north=none,south=tall,up=false,waterlogged=false,west=tall]", + "183": "minecraft:granite_wall[east=low,north=low,south=none,up=true,waterlogged=true,west=none]", + "184": "minecraft:granite_wall[east=low,north=low,south=none,up=true,waterlogged=true,west=low]", + "185": "minecraft:granite_wall[east=low,north=low,south=none,up=true,waterlogged=true,west=tall]", + "186": "minecraft:granite_wall[east=low,north=low,south=none,up=true,waterlogged=false,west=none]", + "187": "minecraft:granite_wall[east=low,north=low,south=none,up=true,waterlogged=false,west=low]", + "188": "minecraft:granite_wall[east=low,north=low,south=none,up=true,waterlogged=false,west=tall]", + "189": "minecraft:granite_wall[east=low,north=low,south=none,up=false,waterlogged=true,west=none]", + "190": "minecraft:granite_wall[east=low,north=low,south=none,up=false,waterlogged=true,west=low]", + "191": "minecraft:granite_wall[east=low,north=low,south=none,up=false,waterlogged=true,west=tall]", + "192": "minecraft:granite_wall[east=low,north=low,south=none,up=false,waterlogged=false,west=none]", + "193": "minecraft:granite_wall[east=low,north=low,south=none,up=false,waterlogged=false,west=low]", + "194": "minecraft:granite_wall[east=low,north=low,south=none,up=false,waterlogged=false,west=tall]", + "195": "minecraft:granite_wall[east=low,north=low,south=low,up=true,waterlogged=true,west=none]", + "196": "minecraft:granite_wall[east=low,north=low,south=low,up=true,waterlogged=true,west=low]", + "197": "minecraft:granite_wall[east=low,north=low,south=low,up=true,waterlogged=true,west=tall]", + "198": "minecraft:granite_wall[east=low,north=low,south=low,up=true,waterlogged=false,west=none]", + "199": "minecraft:granite_wall[east=low,north=low,south=low,up=true,waterlogged=false,west=low]", + "200": "minecraft:granite_wall[east=low,north=low,south=low,up=true,waterlogged=false,west=tall]", + "201": "minecraft:granite_wall[east=low,north=low,south=low,up=false,waterlogged=true,west=none]", + "202": "minecraft:granite_wall[east=low,north=low,south=low,up=false,waterlogged=true,west=low]", + "203": "minecraft:granite_wall[east=low,north=low,south=low,up=false,waterlogged=true,west=tall]", + "204": "minecraft:granite_wall[east=low,north=low,south=low,up=false,waterlogged=false,west=none]", + "205": "minecraft:granite_wall[east=low,north=low,south=low,up=false,waterlogged=false,west=low]", + "206": "minecraft:granite_wall[east=low,north=low,south=low,up=false,waterlogged=false,west=tall]", + "207": "minecraft:granite_wall[east=low,north=low,south=tall,up=true,waterlogged=true,west=none]", + "208": "minecraft:granite_wall[east=low,north=low,south=tall,up=true,waterlogged=true,west=low]", + "209": "minecraft:granite_wall[east=low,north=low,south=tall,up=true,waterlogged=true,west=tall]", + "210": "minecraft:granite_wall[east=low,north=low,south=tall,up=true,waterlogged=false,west=none]", + "211": "minecraft:granite_wall[east=low,north=low,south=tall,up=true,waterlogged=false,west=low]", + "212": "minecraft:granite_wall[east=low,north=low,south=tall,up=true,waterlogged=false,west=tall]", + "213": "minecraft:granite_wall[east=low,north=low,south=tall,up=false,waterlogged=true,west=none]", + "214": "minecraft:granite_wall[east=low,north=low,south=tall,up=false,waterlogged=true,west=low]", + "215": "minecraft:granite_wall[east=low,north=low,south=tall,up=false,waterlogged=true,west=tall]", + "216": "minecraft:granite_wall[east=low,north=low,south=tall,up=false,waterlogged=false,west=none]", + "217": "minecraft:granite_wall[east=low,north=low,south=tall,up=false,waterlogged=false,west=low]", + "218": "minecraft:granite_wall[east=low,north=low,south=tall,up=false,waterlogged=false,west=tall]", + "219": "minecraft:granite_wall[east=low,north=tall,south=none,up=true,waterlogged=true,west=none]", + "220": "minecraft:granite_wall[east=low,north=tall,south=none,up=true,waterlogged=true,west=low]", + "221": "minecraft:granite_wall[east=low,north=tall,south=none,up=true,waterlogged=true,west=tall]", + "222": "minecraft:granite_wall[east=low,north=tall,south=none,up=true,waterlogged=false,west=none]", + "223": "minecraft:granite_wall[east=low,north=tall,south=none,up=true,waterlogged=false,west=low]", + "224": "minecraft:granite_wall[east=low,north=tall,south=none,up=true,waterlogged=false,west=tall]", + "225": "minecraft:granite_wall[east=low,north=tall,south=none,up=false,waterlogged=true,west=none]", + "226": "minecraft:granite_wall[east=low,north=tall,south=none,up=false,waterlogged=true,west=low]", + "227": "minecraft:granite_wall[east=low,north=tall,south=none,up=false,waterlogged=true,west=tall]", + "228": "minecraft:granite_wall[east=low,north=tall,south=none,up=false,waterlogged=false,west=none]", + "229": "minecraft:granite_wall[east=low,north=tall,south=none,up=false,waterlogged=false,west=low]", + "230": "minecraft:granite_wall[east=low,north=tall,south=none,up=false,waterlogged=false,west=tall]", + "231": "minecraft:granite_wall[east=low,north=tall,south=low,up=true,waterlogged=true,west=none]", + "232": "minecraft:granite_wall[east=low,north=tall,south=low,up=true,waterlogged=true,west=low]", + "233": "minecraft:granite_wall[east=low,north=tall,south=low,up=true,waterlogged=true,west=tall]", + "234": "minecraft:granite_wall[east=low,north=tall,south=low,up=true,waterlogged=false,west=none]", + "235": "minecraft:granite_wall[east=low,north=tall,south=low,up=true,waterlogged=false,west=low]", + "236": "minecraft:granite_wall[east=low,north=tall,south=low,up=true,waterlogged=false,west=tall]", + "237": "minecraft:granite_wall[east=low,north=tall,south=low,up=false,waterlogged=true,west=none]", + "238": "minecraft:granite_wall[east=low,north=tall,south=low,up=false,waterlogged=true,west=low]", + "239": "minecraft:granite_wall[east=low,north=tall,south=low,up=false,waterlogged=true,west=tall]", + "240": "minecraft:granite_wall[east=low,north=tall,south=low,up=false,waterlogged=false,west=none]", + "241": "minecraft:granite_wall[east=low,north=tall,south=low,up=false,waterlogged=false,west=low]", + "242": "minecraft:granite_wall[east=low,north=tall,south=low,up=false,waterlogged=false,west=tall]", + "243": "minecraft:granite_wall[east=low,north=tall,south=tall,up=true,waterlogged=true,west=none]", + "244": "minecraft:granite_wall[east=low,north=tall,south=tall,up=true,waterlogged=true,west=low]", + "245": "minecraft:granite_wall[east=low,north=tall,south=tall,up=true,waterlogged=true,west=tall]", + "246": "minecraft:granite_wall[east=low,north=tall,south=tall,up=true,waterlogged=false,west=none]", + "247": "minecraft:granite_wall[east=low,north=tall,south=tall,up=true,waterlogged=false,west=low]", + "248": "minecraft:granite_wall[east=low,north=tall,south=tall,up=true,waterlogged=false,west=tall]", + "249": "minecraft:granite_wall[east=low,north=tall,south=tall,up=false,waterlogged=true,west=none]", + "250": "minecraft:granite_wall[east=low,north=tall,south=tall,up=false,waterlogged=true,west=low]", + "251": "minecraft:granite_wall[east=low,north=tall,south=tall,up=false,waterlogged=true,west=tall]", + "252": "minecraft:granite_wall[east=low,north=tall,south=tall,up=false,waterlogged=false,west=none]", + "253": "minecraft:granite_wall[east=low,north=tall,south=tall,up=false,waterlogged=false,west=low]", + "254": "minecraft:granite_wall[east=low,north=tall,south=tall,up=false,waterlogged=false,west=tall]", + "255": "minecraft:granite_wall[east=tall,north=none,south=none,up=true,waterlogged=true,west=none]", + "256": "minecraft:granite_wall[east=tall,north=none,south=none,up=true,waterlogged=true,west=low]", + "257": "minecraft:granite_wall[east=tall,north=none,south=none,up=true,waterlogged=true,west=tall]", + "258": "minecraft:granite_wall[east=tall,north=none,south=none,up=true,waterlogged=false,west=none]", + "259": "minecraft:granite_wall[east=tall,north=none,south=none,up=true,waterlogged=false,west=low]", + "260": "minecraft:granite_wall[east=tall,north=none,south=none,up=true,waterlogged=false,west=tall]", + "261": "minecraft:granite_wall[east=tall,north=none,south=none,up=false,waterlogged=true,west=none]", + "262": "minecraft:granite_wall[east=tall,north=none,south=none,up=false,waterlogged=true,west=low]", + "263": "minecraft:granite_wall[east=tall,north=none,south=none,up=false,waterlogged=true,west=tall]", + "264": "minecraft:granite_wall[east=tall,north=none,south=none,up=false,waterlogged=false,west=none]", + "265": "minecraft:granite_wall[east=tall,north=none,south=none,up=false,waterlogged=false,west=low]", + "266": "minecraft:granite_wall[east=tall,north=none,south=none,up=false,waterlogged=false,west=tall]", + "267": "minecraft:granite_wall[east=tall,north=none,south=low,up=true,waterlogged=true,west=none]", + "268": "minecraft:granite_wall[east=tall,north=none,south=low,up=true,waterlogged=true,west=low]", + "269": "minecraft:granite_wall[east=tall,north=none,south=low,up=true,waterlogged=true,west=tall]", + "270": "minecraft:granite_wall[east=tall,north=none,south=low,up=true,waterlogged=false,west=none]", + "271": "minecraft:granite_wall[east=tall,north=none,south=low,up=true,waterlogged=false,west=low]", + "272": "minecraft:granite_wall[east=tall,north=none,south=low,up=true,waterlogged=false,west=tall]", + "273": "minecraft:granite_wall[east=tall,north=none,south=low,up=false,waterlogged=true,west=none]", + "274": "minecraft:granite_wall[east=tall,north=none,south=low,up=false,waterlogged=true,west=low]", + "275": "minecraft:granite_wall[east=tall,north=none,south=low,up=false,waterlogged=true,west=tall]", + "276": "minecraft:granite_wall[east=tall,north=none,south=low,up=false,waterlogged=false,west=none]", + "277": "minecraft:granite_wall[east=tall,north=none,south=low,up=false,waterlogged=false,west=low]", + "278": "minecraft:granite_wall[east=tall,north=none,south=low,up=false,waterlogged=false,west=tall]", + "279": "minecraft:granite_wall[east=tall,north=none,south=tall,up=true,waterlogged=true,west=none]", + "280": "minecraft:granite_wall[east=tall,north=none,south=tall,up=true,waterlogged=true,west=low]", + "281": "minecraft:granite_wall[east=tall,north=none,south=tall,up=true,waterlogged=true,west=tall]", + "282": "minecraft:granite_wall[east=tall,north=none,south=tall,up=true,waterlogged=false,west=none]", + "283": "minecraft:granite_wall[east=tall,north=none,south=tall,up=true,waterlogged=false,west=low]", + "284": "minecraft:granite_wall[east=tall,north=none,south=tall,up=true,waterlogged=false,west=tall]", + "285": "minecraft:granite_wall[east=tall,north=none,south=tall,up=false,waterlogged=true,west=none]", + "286": "minecraft:granite_wall[east=tall,north=none,south=tall,up=false,waterlogged=true,west=low]", + "287": "minecraft:granite_wall[east=tall,north=none,south=tall,up=false,waterlogged=true,west=tall]", + "288": "minecraft:granite_wall[east=tall,north=none,south=tall,up=false,waterlogged=false,west=none]", + "289": "minecraft:granite_wall[east=tall,north=none,south=tall,up=false,waterlogged=false,west=low]", + "290": "minecraft:granite_wall[east=tall,north=none,south=tall,up=false,waterlogged=false,west=tall]", + "291": "minecraft:granite_wall[east=tall,north=low,south=none,up=true,waterlogged=true,west=none]", + "292": "minecraft:granite_wall[east=tall,north=low,south=none,up=true,waterlogged=true,west=low]", + "293": "minecraft:granite_wall[east=tall,north=low,south=none,up=true,waterlogged=true,west=tall]", + "294": "minecraft:granite_wall[east=tall,north=low,south=none,up=true,waterlogged=false,west=none]", + "295": "minecraft:granite_wall[east=tall,north=low,south=none,up=true,waterlogged=false,west=low]", + "296": "minecraft:granite_wall[east=tall,north=low,south=none,up=true,waterlogged=false,west=tall]", + "297": "minecraft:granite_wall[east=tall,north=low,south=none,up=false,waterlogged=true,west=none]", + "298": "minecraft:granite_wall[east=tall,north=low,south=none,up=false,waterlogged=true,west=low]", + "299": "minecraft:granite_wall[east=tall,north=low,south=none,up=false,waterlogged=true,west=tall]", + "300": "minecraft:granite_wall[east=tall,north=low,south=none,up=false,waterlogged=false,west=none]", + "301": "minecraft:granite_wall[east=tall,north=low,south=none,up=false,waterlogged=false,west=low]", + "302": "minecraft:granite_wall[east=tall,north=low,south=none,up=false,waterlogged=false,west=tall]", + "303": "minecraft:granite_wall[east=tall,north=low,south=low,up=true,waterlogged=true,west=none]", + "304": "minecraft:granite_wall[east=tall,north=low,south=low,up=true,waterlogged=true,west=low]", + "305": "minecraft:granite_wall[east=tall,north=low,south=low,up=true,waterlogged=true,west=tall]", + "306": "minecraft:granite_wall[east=tall,north=low,south=low,up=true,waterlogged=false,west=none]", + "307": "minecraft:granite_wall[east=tall,north=low,south=low,up=true,waterlogged=false,west=low]", + "308": "minecraft:granite_wall[east=tall,north=low,south=low,up=true,waterlogged=false,west=tall]", + "309": "minecraft:granite_wall[east=tall,north=low,south=low,up=false,waterlogged=true,west=none]", + "310": "minecraft:granite_wall[east=tall,north=low,south=low,up=false,waterlogged=true,west=low]", + "311": "minecraft:granite_wall[east=tall,north=low,south=low,up=false,waterlogged=true,west=tall]", + "312": "minecraft:granite_wall[east=tall,north=low,south=low,up=false,waterlogged=false,west=none]", + "313": "minecraft:granite_wall[east=tall,north=low,south=low,up=false,waterlogged=false,west=low]", + "314": "minecraft:granite_wall[east=tall,north=low,south=low,up=false,waterlogged=false,west=tall]", + "315": "minecraft:granite_wall[east=tall,north=low,south=tall,up=true,waterlogged=true,west=none]", + "316": "minecraft:granite_wall[east=tall,north=low,south=tall,up=true,waterlogged=true,west=low]", + "317": "minecraft:granite_wall[east=tall,north=low,south=tall,up=true,waterlogged=true,west=tall]", + "318": "minecraft:granite_wall[east=tall,north=low,south=tall,up=true,waterlogged=false,west=none]", + "319": "minecraft:granite_wall[east=tall,north=low,south=tall,up=true,waterlogged=false,west=low]", + "320": "minecraft:granite_wall[east=tall,north=low,south=tall,up=true,waterlogged=false,west=tall]", + "321": "minecraft:granite_wall[east=tall,north=low,south=tall,up=false,waterlogged=true,west=none]", + "322": "minecraft:granite_wall[east=tall,north=low,south=tall,up=false,waterlogged=true,west=low]", + "323": "minecraft:granite_wall[east=tall,north=low,south=tall,up=false,waterlogged=true,west=tall]", + "324": "minecraft:granite_wall[east=tall,north=low,south=tall,up=false,waterlogged=false,west=none]", + "325": "minecraft:granite_wall[east=tall,north=low,south=tall,up=false,waterlogged=false,west=low]", + "326": "minecraft:granite_wall[east=tall,north=low,south=tall,up=false,waterlogged=false,west=tall]", + "327": "minecraft:granite_wall[east=tall,north=tall,south=none,up=true,waterlogged=true,west=none]", + "328": "minecraft:granite_wall[east=tall,north=tall,south=none,up=true,waterlogged=true,west=low]", + "329": "minecraft:granite_wall[east=tall,north=tall,south=none,up=true,waterlogged=true,west=tall]", + "330": "minecraft:granite_wall[east=tall,north=tall,south=none,up=true,waterlogged=false,west=none]", + "331": "minecraft:granite_wall[east=tall,north=tall,south=none,up=true,waterlogged=false,west=low]", + "332": "minecraft:granite_wall[east=tall,north=tall,south=none,up=true,waterlogged=false,west=tall]", + "333": "minecraft:granite_wall[east=tall,north=tall,south=none,up=false,waterlogged=true,west=none]", + "334": "minecraft:granite_wall[east=tall,north=tall,south=none,up=false,waterlogged=true,west=low]", + "335": "minecraft:granite_wall[east=tall,north=tall,south=none,up=false,waterlogged=true,west=tall]", + "336": "minecraft:granite_wall[east=tall,north=tall,south=none,up=false,waterlogged=false,west=none]", + "337": "minecraft:granite_wall[east=tall,north=tall,south=none,up=false,waterlogged=false,west=low]", + "338": "minecraft:granite_wall[east=tall,north=tall,south=none,up=false,waterlogged=false,west=tall]", + "339": "minecraft:granite_wall[east=tall,north=tall,south=low,up=true,waterlogged=true,west=none]", + "340": "minecraft:granite_wall[east=tall,north=tall,south=low,up=true,waterlogged=true,west=low]", + "341": "minecraft:granite_wall[east=tall,north=tall,south=low,up=true,waterlogged=true,west=tall]", + "342": "minecraft:granite_wall[east=tall,north=tall,south=low,up=true,waterlogged=false,west=none]", + "343": "minecraft:granite_wall[east=tall,north=tall,south=low,up=true,waterlogged=false,west=low]", + "344": "minecraft:granite_wall[east=tall,north=tall,south=low,up=true,waterlogged=false,west=tall]", + "345": "minecraft:granite_wall[east=tall,north=tall,south=low,up=false,waterlogged=true,west=none]", + "346": "minecraft:granite_wall[east=tall,north=tall,south=low,up=false,waterlogged=true,west=low]", + "347": "minecraft:granite_wall[east=tall,north=tall,south=low,up=false,waterlogged=true,west=tall]", + "348": "minecraft:granite_wall[east=tall,north=tall,south=low,up=false,waterlogged=false,west=none]", + "349": "minecraft:granite_wall[east=tall,north=tall,south=low,up=false,waterlogged=false,west=low]", + "350": "minecraft:granite_wall[east=tall,north=tall,south=low,up=false,waterlogged=false,west=tall]", + "351": "minecraft:granite_wall[east=tall,north=tall,south=tall,up=true,waterlogged=true,west=none]", + "352": "minecraft:granite_wall[east=tall,north=tall,south=tall,up=true,waterlogged=true,west=low]", + "353": "minecraft:granite_wall[east=tall,north=tall,south=tall,up=true,waterlogged=true,west=tall]", + "354": "minecraft:granite_wall[east=tall,north=tall,south=tall,up=true,waterlogged=false,west=none]", + "355": "minecraft:granite_wall[east=tall,north=tall,south=tall,up=true,waterlogged=false,west=low]", + "356": "minecraft:granite_wall[east=tall,north=tall,south=tall,up=true,waterlogged=false,west=tall]", + "357": "minecraft:granite_wall[east=tall,north=tall,south=tall,up=false,waterlogged=true,west=none]", + "358": "minecraft:granite_wall[east=tall,north=tall,south=tall,up=false,waterlogged=true,west=low]", + "359": "minecraft:granite_wall[east=tall,north=tall,south=tall,up=false,waterlogged=true,west=tall]", + "360": "minecraft:granite_wall[east=tall,north=tall,south=tall,up=false,waterlogged=false,west=none]", + "361": "minecraft:granite_wall[east=tall,north=tall,south=tall,up=false,waterlogged=false,west=low]", + "362": "minecraft:granite_wall[east=tall,north=tall,south=tall,up=false,waterlogged=false,west=tall]", + "363": "minecraft:stone_brick_wall[east=none,north=none,south=none,up=true,waterlogged=true,west=none]", + "364": "minecraft:stone_brick_wall[east=none,north=none,south=none,up=true,waterlogged=true,west=low]", + "365": "minecraft:stone_brick_wall[east=none,north=none,south=none,up=true,waterlogged=true,west=tall]", + "366": "minecraft:stone_brick_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=none]", + "367": "minecraft:stone_brick_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=low]", + "368": "minecraft:stone_brick_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=tall]", + "369": "minecraft:stone_brick_wall[east=none,north=none,south=none,up=false,waterlogged=true,west=none]", + "370": "minecraft:stone_brick_wall[east=none,north=none,south=none,up=false,waterlogged=true,west=low]", + "371": "minecraft:stone_brick_wall[east=none,north=none,south=none,up=false,waterlogged=true,west=tall]", + "372": "minecraft:stone_brick_wall[east=none,north=none,south=none,up=false,waterlogged=false,west=none]", + "373": "minecraft:stone_brick_wall[east=none,north=none,south=none,up=false,waterlogged=false,west=low]", + "374": "minecraft:stone_brick_wall[east=none,north=none,south=none,up=false,waterlogged=false,west=tall]", + "375": "minecraft:stone_brick_wall[east=none,north=none,south=low,up=true,waterlogged=true,west=none]", + "376": "minecraft:stone_brick_wall[east=none,north=none,south=low,up=true,waterlogged=true,west=low]", + "377": "minecraft:stone_brick_wall[east=none,north=none,south=low,up=true,waterlogged=true,west=tall]", + "378": "minecraft:stone_brick_wall[east=none,north=none,south=low,up=true,waterlogged=false,west=none]", + "379": "minecraft:stone_brick_wall[east=none,north=none,south=low,up=true,waterlogged=false,west=low]", + "380": "minecraft:stone_brick_wall[east=none,north=none,south=low,up=true,waterlogged=false,west=tall]", + "381": "minecraft:stone_brick_wall[east=none,north=none,south=low,up=false,waterlogged=true,west=none]", + "382": "minecraft:stone_brick_wall[east=none,north=none,south=low,up=false,waterlogged=true,west=low]", + "383": "minecraft:stone_brick_wall[east=none,north=none,south=low,up=false,waterlogged=true,west=tall]", + "384": "minecraft:stone_brick_wall[east=none,north=none,south=low,up=false,waterlogged=false,west=none]", + "385": "minecraft:stone_brick_wall[east=none,north=none,south=low,up=false,waterlogged=false,west=low]", + "386": "minecraft:stone_brick_wall[east=none,north=none,south=low,up=false,waterlogged=false,west=tall]", + "387": "minecraft:stone_brick_wall[east=none,north=none,south=tall,up=true,waterlogged=true,west=none]", + "388": "minecraft:stone_brick_wall[east=none,north=none,south=tall,up=true,waterlogged=true,west=low]", + "389": "minecraft:stone_brick_wall[east=none,north=none,south=tall,up=true,waterlogged=true,west=tall]", + "390": "minecraft:stone_brick_wall[east=none,north=none,south=tall,up=true,waterlogged=false,west=none]", + "391": "minecraft:stone_brick_wall[east=none,north=none,south=tall,up=true,waterlogged=false,west=low]", + "392": "minecraft:stone_brick_wall[east=none,north=none,south=tall,up=true,waterlogged=false,west=tall]", + "393": "minecraft:stone_brick_wall[east=none,north=none,south=tall,up=false,waterlogged=true,west=none]", + "394": "minecraft:stone_brick_wall[east=none,north=none,south=tall,up=false,waterlogged=true,west=low]", + "395": "minecraft:stone_brick_wall[east=none,north=none,south=tall,up=false,waterlogged=true,west=tall]", + "396": "minecraft:stone_brick_wall[east=none,north=none,south=tall,up=false,waterlogged=false,west=none]", + "397": "minecraft:stone_brick_wall[east=none,north=none,south=tall,up=false,waterlogged=false,west=low]", + "398": "minecraft:stone_brick_wall[east=none,north=none,south=tall,up=false,waterlogged=false,west=tall]", + "399": "minecraft:stone_brick_wall[east=none,north=low,south=none,up=true,waterlogged=true,west=none]", + "400": "minecraft:stone_brick_wall[east=none,north=low,south=none,up=true,waterlogged=true,west=low]", + "401": "minecraft:stone_brick_wall[east=none,north=low,south=none,up=true,waterlogged=true,west=tall]", + "402": "minecraft:stone_brick_wall[east=none,north=low,south=none,up=true,waterlogged=false,west=none]", + "403": "minecraft:stone_brick_wall[east=none,north=low,south=none,up=true,waterlogged=false,west=low]", + "404": "minecraft:stone_brick_wall[east=none,north=low,south=none,up=true,waterlogged=false,west=tall]", + "405": "minecraft:stone_brick_wall[east=none,north=low,south=none,up=false,waterlogged=true,west=none]", + "406": "minecraft:stone_brick_wall[east=none,north=low,south=none,up=false,waterlogged=true,west=low]", + "407": "minecraft:stone_brick_wall[east=none,north=low,south=none,up=false,waterlogged=true,west=tall]", + "408": "minecraft:stone_brick_wall[east=none,north=low,south=none,up=false,waterlogged=false,west=none]", + "409": "minecraft:stone_brick_wall[east=none,north=low,south=none,up=false,waterlogged=false,west=low]", + "410": "minecraft:stone_brick_wall[east=none,north=low,south=none,up=false,waterlogged=false,west=tall]", + "411": "minecraft:stone_brick_wall[east=none,north=low,south=low,up=true,waterlogged=true,west=none]", + "412": "minecraft:stone_brick_wall[east=none,north=low,south=low,up=true,waterlogged=true,west=low]", + "413": "minecraft:stone_brick_wall[east=none,north=low,south=low,up=true,waterlogged=true,west=tall]", + "414": "minecraft:stone_brick_wall[east=none,north=low,south=low,up=true,waterlogged=false,west=none]", + "415": "minecraft:stone_brick_wall[east=none,north=low,south=low,up=true,waterlogged=false,west=low]", + "416": "minecraft:stone_brick_wall[east=none,north=low,south=low,up=true,waterlogged=false,west=tall]", + "417": "minecraft:stone_brick_wall[east=none,north=low,south=low,up=false,waterlogged=true,west=none]", + "418": "minecraft:stone_brick_wall[east=none,north=low,south=low,up=false,waterlogged=true,west=low]", + "419": "minecraft:stone_brick_wall[east=none,north=low,south=low,up=false,waterlogged=true,west=tall]", + "420": "minecraft:stone_brick_wall[east=none,north=low,south=low,up=false,waterlogged=false,west=none]", + "421": "minecraft:stone_brick_wall[east=none,north=low,south=low,up=false,waterlogged=false,west=low]", + "422": "minecraft:stone_brick_wall[east=none,north=low,south=low,up=false,waterlogged=false,west=tall]", + "423": "minecraft:stone_brick_wall[east=none,north=low,south=tall,up=true,waterlogged=true,west=none]", + "424": "minecraft:stone_brick_wall[east=none,north=low,south=tall,up=true,waterlogged=true,west=low]", + "425": "minecraft:stone_brick_wall[east=none,north=low,south=tall,up=true,waterlogged=true,west=tall]", + "426": "minecraft:stone_brick_wall[east=none,north=low,south=tall,up=true,waterlogged=false,west=none]", + "427": "minecraft:stone_brick_wall[east=none,north=low,south=tall,up=true,waterlogged=false,west=low]", + "428": "minecraft:stone_brick_wall[east=none,north=low,south=tall,up=true,waterlogged=false,west=tall]", + "429": "minecraft:stone_brick_wall[east=none,north=low,south=tall,up=false,waterlogged=true,west=none]", + "430": "minecraft:stone_brick_wall[east=none,north=low,south=tall,up=false,waterlogged=true,west=low]", + "431": "minecraft:stone_brick_wall[east=none,north=low,south=tall,up=false,waterlogged=true,west=tall]", + "432": "minecraft:stone_brick_wall[east=none,north=low,south=tall,up=false,waterlogged=false,west=none]", + "433": "minecraft:stone_brick_wall[east=none,north=low,south=tall,up=false,waterlogged=false,west=low]", + "434": "minecraft:stone_brick_wall[east=none,north=low,south=tall,up=false,waterlogged=false,west=tall]", + "435": "minecraft:stone_brick_wall[east=none,north=tall,south=none,up=true,waterlogged=true,west=none]", + "436": "minecraft:stone_brick_wall[east=none,north=tall,south=none,up=true,waterlogged=true,west=low]", + "437": "minecraft:stone_brick_wall[east=none,north=tall,south=none,up=true,waterlogged=true,west=tall]", + "438": "minecraft:stone_brick_wall[east=none,north=tall,south=none,up=true,waterlogged=false,west=none]", + "439": "minecraft:stone_brick_wall[east=none,north=tall,south=none,up=true,waterlogged=false,west=low]", + "440": "minecraft:stone_brick_wall[east=none,north=tall,south=none,up=true,waterlogged=false,west=tall]", + "441": "minecraft:stone_brick_wall[east=none,north=tall,south=none,up=false,waterlogged=true,west=none]", + "442": "minecraft:stone_brick_wall[east=none,north=tall,south=none,up=false,waterlogged=true,west=low]", + "443": "minecraft:stone_brick_wall[east=none,north=tall,south=none,up=false,waterlogged=true,west=tall]", + "444": "minecraft:stone_brick_wall[east=none,north=tall,south=none,up=false,waterlogged=false,west=none]", + "445": "minecraft:stone_brick_wall[east=none,north=tall,south=none,up=false,waterlogged=false,west=low]", + "446": "minecraft:stone_brick_wall[east=none,north=tall,south=none,up=false,waterlogged=false,west=tall]", + "447": "minecraft:stone_brick_wall[east=none,north=tall,south=low,up=true,waterlogged=true,west=none]", + "448": "minecraft:stone_brick_wall[east=none,north=tall,south=low,up=true,waterlogged=true,west=low]", + "449": "minecraft:stone_brick_wall[east=none,north=tall,south=low,up=true,waterlogged=true,west=tall]", + "450": "minecraft:stone_brick_wall[east=none,north=tall,south=low,up=true,waterlogged=false,west=none]", + "451": "minecraft:stone_brick_wall[east=none,north=tall,south=low,up=true,waterlogged=false,west=low]", + "452": "minecraft:stone_brick_wall[east=none,north=tall,south=low,up=true,waterlogged=false,west=tall]", + "453": "minecraft:stone_brick_wall[east=none,north=tall,south=low,up=false,waterlogged=true,west=none]", + "454": "minecraft:stone_brick_wall[east=none,north=tall,south=low,up=false,waterlogged=true,west=low]", + "455": "minecraft:stone_brick_wall[east=none,north=tall,south=low,up=false,waterlogged=true,west=tall]", + "456": "minecraft:stone_brick_wall[east=none,north=tall,south=low,up=false,waterlogged=false,west=none]", + "457": "minecraft:stone_brick_wall[east=none,north=tall,south=low,up=false,waterlogged=false,west=low]", + "458": "minecraft:stone_brick_wall[east=none,north=tall,south=low,up=false,waterlogged=false,west=tall]", + "459": "minecraft:stone_brick_wall[east=none,north=tall,south=tall,up=true,waterlogged=true,west=none]", + "460": "minecraft:stone_brick_wall[east=none,north=tall,south=tall,up=true,waterlogged=true,west=low]", + "461": "minecraft:stone_brick_wall[east=none,north=tall,south=tall,up=true,waterlogged=true,west=tall]", + "462": "minecraft:stone_brick_wall[east=none,north=tall,south=tall,up=true,waterlogged=false,west=none]", + "463": "minecraft:stone_brick_wall[east=none,north=tall,south=tall,up=true,waterlogged=false,west=low]", + "464": "minecraft:stone_brick_wall[east=none,north=tall,south=tall,up=true,waterlogged=false,west=tall]", + "465": "minecraft:stone_brick_wall[east=none,north=tall,south=tall,up=false,waterlogged=true,west=none]", + "466": "minecraft:stone_brick_wall[east=none,north=tall,south=tall,up=false,waterlogged=true,west=low]", + "467": "minecraft:stone_brick_wall[east=none,north=tall,south=tall,up=false,waterlogged=true,west=tall]", + "468": "minecraft:stone_brick_wall[east=none,north=tall,south=tall,up=false,waterlogged=false,west=none]", + "469": "minecraft:stone_brick_wall[east=none,north=tall,south=tall,up=false,waterlogged=false,west=low]", + "470": "minecraft:stone_brick_wall[east=none,north=tall,south=tall,up=false,waterlogged=false,west=tall]", + "471": "minecraft:stone_brick_wall[east=low,north=none,south=none,up=true,waterlogged=true,west=none]", + "472": "minecraft:stone_brick_wall[east=low,north=none,south=none,up=true,waterlogged=true,west=low]", + "473": "minecraft:stone_brick_wall[east=low,north=none,south=none,up=true,waterlogged=true,west=tall]", + "474": "minecraft:stone_brick_wall[east=low,north=none,south=none,up=true,waterlogged=false,west=none]", + "475": "minecraft:stone_brick_wall[east=low,north=none,south=none,up=true,waterlogged=false,west=low]", + "476": "minecraft:stone_brick_wall[east=low,north=none,south=none,up=true,waterlogged=false,west=tall]", + "477": "minecraft:stone_brick_wall[east=low,north=none,south=none,up=false,waterlogged=true,west=none]", + "478": "minecraft:stone_brick_wall[east=low,north=none,south=none,up=false,waterlogged=true,west=low]", + "479": "minecraft:stone_brick_wall[east=low,north=none,south=none,up=false,waterlogged=true,west=tall]", + "480": "minecraft:stone_brick_wall[east=low,north=none,south=none,up=false,waterlogged=false,west=none]", + "481": "minecraft:stone_brick_wall[east=low,north=none,south=none,up=false,waterlogged=false,west=low]", + "482": "minecraft:stone_brick_wall[east=low,north=none,south=none,up=false,waterlogged=false,west=tall]", + "483": "minecraft:stone_brick_wall[east=low,north=none,south=low,up=true,waterlogged=true,west=none]", + "484": "minecraft:stone_brick_wall[east=low,north=none,south=low,up=true,waterlogged=true,west=low]", + "485": "minecraft:stone_brick_wall[east=low,north=none,south=low,up=true,waterlogged=true,west=tall]", + "486": "minecraft:stone_brick_wall[east=low,north=none,south=low,up=true,waterlogged=false,west=none]", + "487": "minecraft:stone_brick_wall[east=low,north=none,south=low,up=true,waterlogged=false,west=low]", + "488": "minecraft:stone_brick_wall[east=low,north=none,south=low,up=true,waterlogged=false,west=tall]", + "489": "minecraft:stone_brick_wall[east=low,north=none,south=low,up=false,waterlogged=true,west=none]", + "490": "minecraft:stone_brick_wall[east=low,north=none,south=low,up=false,waterlogged=true,west=low]", + "491": "minecraft:stone_brick_wall[east=low,north=none,south=low,up=false,waterlogged=true,west=tall]", + "492": "minecraft:stone_brick_wall[east=low,north=none,south=low,up=false,waterlogged=false,west=none]", + "493": "minecraft:stone_brick_wall[east=low,north=none,south=low,up=false,waterlogged=false,west=low]", + "494": "minecraft:stone_brick_wall[east=low,north=none,south=low,up=false,waterlogged=false,west=tall]", + "495": "minecraft:stone_brick_wall[east=low,north=none,south=tall,up=true,waterlogged=true,west=none]", + "496": "minecraft:stone_brick_wall[east=low,north=none,south=tall,up=true,waterlogged=true,west=low]", + "497": "minecraft:stone_brick_wall[east=low,north=none,south=tall,up=true,waterlogged=true,west=tall]", + "498": "minecraft:stone_brick_wall[east=low,north=none,south=tall,up=true,waterlogged=false,west=none]", + "499": "minecraft:stone_brick_wall[east=low,north=none,south=tall,up=true,waterlogged=false,west=low]", + "500": "minecraft:stone_brick_wall[east=low,north=none,south=tall,up=true,waterlogged=false,west=tall]", + "501": "minecraft:stone_brick_wall[east=low,north=none,south=tall,up=false,waterlogged=true,west=none]", + "502": "minecraft:stone_brick_wall[east=low,north=none,south=tall,up=false,waterlogged=true,west=low]", + "503": "minecraft:stone_brick_wall[east=low,north=none,south=tall,up=false,waterlogged=true,west=tall]", + "504": "minecraft:stone_brick_wall[east=low,north=none,south=tall,up=false,waterlogged=false,west=none]", + "505": "minecraft:stone_brick_wall[east=low,north=none,south=tall,up=false,waterlogged=false,west=low]", + "506": "minecraft:stone_brick_wall[east=low,north=none,south=tall,up=false,waterlogged=false,west=tall]", + "507": "minecraft:stone_brick_wall[east=low,north=low,south=none,up=true,waterlogged=true,west=none]", + "508": "minecraft:stone_brick_wall[east=low,north=low,south=none,up=true,waterlogged=true,west=low]", + "509": "minecraft:stone_brick_wall[east=low,north=low,south=none,up=true,waterlogged=true,west=tall]", + "510": "minecraft:stone_brick_wall[east=low,north=low,south=none,up=true,waterlogged=false,west=none]", + "511": "minecraft:stone_brick_wall[east=low,north=low,south=none,up=true,waterlogged=false,west=low]", + "512": "minecraft:stone_brick_wall[east=low,north=low,south=none,up=true,waterlogged=false,west=tall]", + "513": "minecraft:stone_brick_wall[east=low,north=low,south=none,up=false,waterlogged=true,west=none]", + "514": "minecraft:stone_brick_wall[east=low,north=low,south=none,up=false,waterlogged=true,west=low]", + "515": "minecraft:stone_brick_wall[east=low,north=low,south=none,up=false,waterlogged=true,west=tall]", + "516": "minecraft:stone_brick_wall[east=low,north=low,south=none,up=false,waterlogged=false,west=none]", + "517": "minecraft:stone_brick_wall[east=low,north=low,south=none,up=false,waterlogged=false,west=low]", + "518": "minecraft:stone_brick_wall[east=low,north=low,south=none,up=false,waterlogged=false,west=tall]", + "519": "minecraft:stone_brick_wall[east=low,north=low,south=low,up=true,waterlogged=true,west=none]", + "520": "minecraft:stone_brick_wall[east=low,north=low,south=low,up=true,waterlogged=true,west=low]", + "521": "minecraft:stone_brick_wall[east=low,north=low,south=low,up=true,waterlogged=true,west=tall]", + "522": "minecraft:stone_brick_wall[east=low,north=low,south=low,up=true,waterlogged=false,west=none]", + "523": "minecraft:stone_brick_wall[east=low,north=low,south=low,up=true,waterlogged=false,west=low]", + "524": "minecraft:stone_brick_wall[east=low,north=low,south=low,up=true,waterlogged=false,west=tall]", + "525": "minecraft:stone_brick_wall[east=low,north=low,south=low,up=false,waterlogged=true,west=none]", + "526": "minecraft:stone_brick_wall[east=low,north=low,south=low,up=false,waterlogged=true,west=low]", + "527": "minecraft:stone_brick_wall[east=low,north=low,south=low,up=false,waterlogged=true,west=tall]", + "528": "minecraft:stone_brick_wall[east=low,north=low,south=low,up=false,waterlogged=false,west=none]", + "529": "minecraft:stone_brick_wall[east=low,north=low,south=low,up=false,waterlogged=false,west=low]", + "530": "minecraft:stone_brick_wall[east=low,north=low,south=low,up=false,waterlogged=false,west=tall]", + "531": "minecraft:stone_brick_wall[east=low,north=low,south=tall,up=true,waterlogged=true,west=none]", + "532": "minecraft:stone_brick_wall[east=low,north=low,south=tall,up=true,waterlogged=true,west=low]", + "533": "minecraft:stone_brick_wall[east=low,north=low,south=tall,up=true,waterlogged=true,west=tall]", + "534": "minecraft:stone_brick_wall[east=low,north=low,south=tall,up=true,waterlogged=false,west=none]", + "535": "minecraft:stone_brick_wall[east=low,north=low,south=tall,up=true,waterlogged=false,west=low]", + "536": "minecraft:stone_brick_wall[east=low,north=low,south=tall,up=true,waterlogged=false,west=tall]", + "537": "minecraft:stone_brick_wall[east=low,north=low,south=tall,up=false,waterlogged=true,west=none]", + "538": "minecraft:stone_brick_wall[east=low,north=low,south=tall,up=false,waterlogged=true,west=low]", + "539": "minecraft:stone_brick_wall[east=low,north=low,south=tall,up=false,waterlogged=true,west=tall]", + "540": "minecraft:stone_brick_wall[east=low,north=low,south=tall,up=false,waterlogged=false,west=none]", + "541": "minecraft:stone_brick_wall[east=low,north=low,south=tall,up=false,waterlogged=false,west=low]", + "542": "minecraft:stone_brick_wall[east=low,north=low,south=tall,up=false,waterlogged=false,west=tall]", + "543": "minecraft:stone_brick_wall[east=low,north=tall,south=none,up=true,waterlogged=true,west=none]", + "544": "minecraft:stone_brick_wall[east=low,north=tall,south=none,up=true,waterlogged=true,west=low]", + "545": "minecraft:stone_brick_wall[east=low,north=tall,south=none,up=true,waterlogged=true,west=tall]", + "546": "minecraft:stone_brick_wall[east=low,north=tall,south=none,up=true,waterlogged=false,west=none]", + "547": "minecraft:stone_brick_wall[east=low,north=tall,south=none,up=true,waterlogged=false,west=low]", + "548": "minecraft:stone_brick_wall[east=low,north=tall,south=none,up=true,waterlogged=false,west=tall]", + "549": "minecraft:stone_brick_wall[east=low,north=tall,south=none,up=false,waterlogged=true,west=none]", + "550": "minecraft:stone_brick_wall[east=low,north=tall,south=none,up=false,waterlogged=true,west=low]", + "551": "minecraft:stone_brick_wall[east=low,north=tall,south=none,up=false,waterlogged=true,west=tall]", + "552": "minecraft:stone_brick_wall[east=low,north=tall,south=none,up=false,waterlogged=false,west=none]", + "553": "minecraft:stone_brick_wall[east=low,north=tall,south=none,up=false,waterlogged=false,west=low]", + "554": "minecraft:stone_brick_wall[east=low,north=tall,south=none,up=false,waterlogged=false,west=tall]", + "555": "minecraft:stone_brick_wall[east=low,north=tall,south=low,up=true,waterlogged=true,west=none]", + "556": "minecraft:stone_brick_wall[east=low,north=tall,south=low,up=true,waterlogged=true,west=low]", + "557": "minecraft:stone_brick_wall[east=low,north=tall,south=low,up=true,waterlogged=true,west=tall]", + "558": "minecraft:stone_brick_wall[east=low,north=tall,south=low,up=true,waterlogged=false,west=none]", + "559": "minecraft:stone_brick_wall[east=low,north=tall,south=low,up=true,waterlogged=false,west=low]", + "560": "minecraft:stone_brick_wall[east=low,north=tall,south=low,up=true,waterlogged=false,west=tall]", + "561": "minecraft:stone_brick_wall[east=low,north=tall,south=low,up=false,waterlogged=true,west=none]", + "562": "minecraft:stone_brick_wall[east=low,north=tall,south=low,up=false,waterlogged=true,west=low]", + "563": "minecraft:stone_brick_wall[east=low,north=tall,south=low,up=false,waterlogged=true,west=tall]", + "564": "minecraft:stone_brick_wall[east=low,north=tall,south=low,up=false,waterlogged=false,west=none]", + "565": "minecraft:stone_brick_wall[east=low,north=tall,south=low,up=false,waterlogged=false,west=low]", + "566": "minecraft:stone_brick_wall[east=low,north=tall,south=low,up=false,waterlogged=false,west=tall]", + "567": "minecraft:stone_brick_wall[east=low,north=tall,south=tall,up=true,waterlogged=true,west=none]", + "568": "minecraft:stone_brick_wall[east=low,north=tall,south=tall,up=true,waterlogged=true,west=low]", + "569": "minecraft:stone_brick_wall[east=low,north=tall,south=tall,up=true,waterlogged=true,west=tall]", + "570": "minecraft:stone_brick_wall[east=low,north=tall,south=tall,up=true,waterlogged=false,west=none]", + "571": "minecraft:stone_brick_wall[east=low,north=tall,south=tall,up=true,waterlogged=false,west=low]", + "572": "minecraft:stone_brick_wall[east=low,north=tall,south=tall,up=true,waterlogged=false,west=tall]", + "573": "minecraft:stone_brick_wall[east=low,north=tall,south=tall,up=false,waterlogged=true,west=none]", + "574": "minecraft:stone_brick_wall[east=low,north=tall,south=tall,up=false,waterlogged=true,west=low]", + "575": "minecraft:stone_brick_wall[east=low,north=tall,south=tall,up=false,waterlogged=true,west=tall]", + "576": "minecraft:stone_brick_wall[east=low,north=tall,south=tall,up=false,waterlogged=false,west=none]", + "577": "minecraft:stone_brick_wall[east=low,north=tall,south=tall,up=false,waterlogged=false,west=low]", + "578": "minecraft:stone_brick_wall[east=low,north=tall,south=tall,up=false,waterlogged=false,west=tall]", + "579": "minecraft:stone_brick_wall[east=tall,north=none,south=none,up=true,waterlogged=true,west=none]", + "580": "minecraft:stone_brick_wall[east=tall,north=none,south=none,up=true,waterlogged=true,west=low]", + "581": "minecraft:stone_brick_wall[east=tall,north=none,south=none,up=true,waterlogged=true,west=tall]", + "582": "minecraft:stone_brick_wall[east=tall,north=none,south=none,up=true,waterlogged=false,west=none]", + "583": "minecraft:stone_brick_wall[east=tall,north=none,south=none,up=true,waterlogged=false,west=low]", + "584": "minecraft:stone_brick_wall[east=tall,north=none,south=none,up=true,waterlogged=false,west=tall]", + "585": "minecraft:stone_brick_wall[east=tall,north=none,south=none,up=false,waterlogged=true,west=none]", + "586": "minecraft:stone_brick_wall[east=tall,north=none,south=none,up=false,waterlogged=true,west=low]", + "587": "minecraft:stone_brick_wall[east=tall,north=none,south=none,up=false,waterlogged=true,west=tall]", + "588": "minecraft:stone_brick_wall[east=tall,north=none,south=none,up=false,waterlogged=false,west=none]", + "589": "minecraft:stone_brick_wall[east=tall,north=none,south=none,up=false,waterlogged=false,west=low]", + "590": "minecraft:stone_brick_wall[east=tall,north=none,south=none,up=false,waterlogged=false,west=tall]", + "591": "minecraft:stone_brick_wall[east=tall,north=none,south=low,up=true,waterlogged=true,west=none]", + "592": "minecraft:stone_brick_wall[east=tall,north=none,south=low,up=true,waterlogged=true,west=low]", + "593": "minecraft:stone_brick_wall[east=tall,north=none,south=low,up=true,waterlogged=true,west=tall]", + "594": "minecraft:stone_brick_wall[east=tall,north=none,south=low,up=true,waterlogged=false,west=none]", + "595": "minecraft:stone_brick_wall[east=tall,north=none,south=low,up=true,waterlogged=false,west=low]", + "596": "minecraft:stone_brick_wall[east=tall,north=none,south=low,up=true,waterlogged=false,west=tall]", + "597": "minecraft:stone_brick_wall[east=tall,north=none,south=low,up=false,waterlogged=true,west=none]", + "598": "minecraft:stone_brick_wall[east=tall,north=none,south=low,up=false,waterlogged=true,west=low]", + "599": "minecraft:stone_brick_wall[east=tall,north=none,south=low,up=false,waterlogged=true,west=tall]", + "600": "minecraft:stone_brick_wall[east=tall,north=none,south=low,up=false,waterlogged=false,west=none]", + "601": "minecraft:stone_brick_wall[east=tall,north=none,south=low,up=false,waterlogged=false,west=low]", + "602": "minecraft:stone_brick_wall[east=tall,north=none,south=low,up=false,waterlogged=false,west=tall]", + "603": "minecraft:stone_brick_wall[east=tall,north=none,south=tall,up=true,waterlogged=true,west=none]", + "604": "minecraft:stone_brick_wall[east=tall,north=none,south=tall,up=true,waterlogged=true,west=low]", + "605": "minecraft:stone_brick_wall[east=tall,north=none,south=tall,up=true,waterlogged=true,west=tall]", + "606": "minecraft:stone_brick_wall[east=tall,north=none,south=tall,up=true,waterlogged=false,west=none]", + "607": "minecraft:stone_brick_wall[east=tall,north=none,south=tall,up=true,waterlogged=false,west=low]", + "608": "minecraft:stone_brick_wall[east=tall,north=none,south=tall,up=true,waterlogged=false,west=tall]", + "609": "minecraft:stone_brick_wall[east=tall,north=none,south=tall,up=false,waterlogged=true,west=none]", + "610": "minecraft:stone_brick_wall[east=tall,north=none,south=tall,up=false,waterlogged=true,west=low]", + "611": "minecraft:stone_brick_wall[east=tall,north=none,south=tall,up=false,waterlogged=true,west=tall]", + "612": "minecraft:stone_brick_wall[east=tall,north=none,south=tall,up=false,waterlogged=false,west=none]", + "613": "minecraft:stone_brick_wall[east=tall,north=none,south=tall,up=false,waterlogged=false,west=low]", + "614": "minecraft:stone_brick_wall[east=tall,north=none,south=tall,up=false,waterlogged=false,west=tall]", + "615": "minecraft:stone_brick_wall[east=tall,north=low,south=none,up=true,waterlogged=true,west=none]", + "616": "minecraft:stone_brick_wall[east=tall,north=low,south=none,up=true,waterlogged=true,west=low]", + "617": "minecraft:stone_brick_wall[east=tall,north=low,south=none,up=true,waterlogged=true,west=tall]", + "618": "minecraft:stone_brick_wall[east=tall,north=low,south=none,up=true,waterlogged=false,west=none]", + "619": "minecraft:stone_brick_wall[east=tall,north=low,south=none,up=true,waterlogged=false,west=low]", + "620": "minecraft:stone_brick_wall[east=tall,north=low,south=none,up=true,waterlogged=false,west=tall]", + "621": "minecraft:stone_brick_wall[east=tall,north=low,south=none,up=false,waterlogged=true,west=none]", + "622": "minecraft:stone_brick_wall[east=tall,north=low,south=none,up=false,waterlogged=true,west=low]", + "623": "minecraft:stone_brick_wall[east=tall,north=low,south=none,up=false,waterlogged=true,west=tall]", + "624": "minecraft:stone_brick_wall[east=tall,north=low,south=none,up=false,waterlogged=false,west=none]", + "625": "minecraft:stone_brick_wall[east=tall,north=low,south=none,up=false,waterlogged=false,west=low]", + "626": "minecraft:stone_brick_wall[east=tall,north=low,south=none,up=false,waterlogged=false,west=tall]", + "627": "minecraft:stone_brick_wall[east=tall,north=low,south=low,up=true,waterlogged=true,west=none]", + "628": "minecraft:stone_brick_wall[east=tall,north=low,south=low,up=true,waterlogged=true,west=low]", + "629": "minecraft:stone_brick_wall[east=tall,north=low,south=low,up=true,waterlogged=true,west=tall]", + "630": "minecraft:stone_brick_wall[east=tall,north=low,south=low,up=true,waterlogged=false,west=none]", + "631": "minecraft:stone_brick_wall[east=tall,north=low,south=low,up=true,waterlogged=false,west=low]", + "632": "minecraft:stone_brick_wall[east=tall,north=low,south=low,up=true,waterlogged=false,west=tall]", + "633": "minecraft:stone_brick_wall[east=tall,north=low,south=low,up=false,waterlogged=true,west=none]", + "634": "minecraft:stone_brick_wall[east=tall,north=low,south=low,up=false,waterlogged=true,west=low]", + "635": "minecraft:stone_brick_wall[east=tall,north=low,south=low,up=false,waterlogged=true,west=tall]", + "636": "minecraft:stone_brick_wall[east=tall,north=low,south=low,up=false,waterlogged=false,west=none]", + "637": "minecraft:stone_brick_wall[east=tall,north=low,south=low,up=false,waterlogged=false,west=low]", + "638": "minecraft:stone_brick_wall[east=tall,north=low,south=low,up=false,waterlogged=false,west=tall]", + "639": "minecraft:stone_brick_wall[east=tall,north=low,south=tall,up=true,waterlogged=true,west=none]", + "640": "minecraft:stone_brick_wall[east=tall,north=low,south=tall,up=true,waterlogged=true,west=low]", + "641": "minecraft:stone_brick_wall[east=tall,north=low,south=tall,up=true,waterlogged=true,west=tall]", + "642": "minecraft:stone_brick_wall[east=tall,north=low,south=tall,up=true,waterlogged=false,west=none]", + "643": "minecraft:stone_brick_wall[east=tall,north=low,south=tall,up=true,waterlogged=false,west=low]", + "644": "minecraft:stone_brick_wall[east=tall,north=low,south=tall,up=true,waterlogged=false,west=tall]", + "645": "minecraft:stone_brick_wall[east=tall,north=low,south=tall,up=false,waterlogged=true,west=none]", + "646": "minecraft:stone_brick_wall[east=tall,north=low,south=tall,up=false,waterlogged=true,west=low]", + "647": "minecraft:stone_brick_wall[east=tall,north=low,south=tall,up=false,waterlogged=true,west=tall]", + "648": "minecraft:stone_brick_wall[east=tall,north=low,south=tall,up=false,waterlogged=false,west=none]", + "649": "minecraft:stone_brick_wall[east=tall,north=low,south=tall,up=false,waterlogged=false,west=low]", + "650": "minecraft:stone_brick_wall[east=tall,north=low,south=tall,up=false,waterlogged=false,west=tall]", + "651": "minecraft:stone_brick_wall[east=tall,north=tall,south=none,up=true,waterlogged=true,west=none]", + "652": "minecraft:stone_brick_wall[east=tall,north=tall,south=none,up=true,waterlogged=true,west=low]", + "653": "minecraft:stone_brick_wall[east=tall,north=tall,south=none,up=true,waterlogged=true,west=tall]", + "654": "minecraft:stone_brick_wall[east=tall,north=tall,south=none,up=true,waterlogged=false,west=none]", + "655": "minecraft:stone_brick_wall[east=tall,north=tall,south=none,up=true,waterlogged=false,west=low]", + "656": "minecraft:stone_brick_wall[east=tall,north=tall,south=none,up=true,waterlogged=false,west=tall]", + "657": "minecraft:stone_brick_wall[east=tall,north=tall,south=none,up=false,waterlogged=true,west=none]", + "658": "minecraft:stone_brick_wall[east=tall,north=tall,south=none,up=false,waterlogged=true,west=low]", + "659": "minecraft:stone_brick_wall[east=tall,north=tall,south=none,up=false,waterlogged=true,west=tall]", + "660": "minecraft:stone_brick_wall[east=tall,north=tall,south=none,up=false,waterlogged=false,west=none]", + "661": "minecraft:stone_brick_wall[east=tall,north=tall,south=none,up=false,waterlogged=false,west=low]", + "662": "minecraft:stone_brick_wall[east=tall,north=tall,south=none,up=false,waterlogged=false,west=tall]", + "663": "minecraft:stone_brick_wall[east=tall,north=tall,south=low,up=true,waterlogged=true,west=none]", + "664": "minecraft:stone_brick_wall[east=tall,north=tall,south=low,up=true,waterlogged=true,west=low]", + "665": "minecraft:stone_brick_wall[east=tall,north=tall,south=low,up=true,waterlogged=true,west=tall]", + "666": "minecraft:stone_brick_wall[east=tall,north=tall,south=low,up=true,waterlogged=false,west=none]", + "667": "minecraft:stone_brick_wall[east=tall,north=tall,south=low,up=true,waterlogged=false,west=low]", + "668": "minecraft:stone_brick_wall[east=tall,north=tall,south=low,up=true,waterlogged=false,west=tall]", + "669": "minecraft:stone_brick_wall[east=tall,north=tall,south=low,up=false,waterlogged=true,west=none]", + "670": "minecraft:stone_brick_wall[east=tall,north=tall,south=low,up=false,waterlogged=true,west=low]", + "671": "minecraft:stone_brick_wall[east=tall,north=tall,south=low,up=false,waterlogged=true,west=tall]", + "672": "minecraft:stone_brick_wall[east=tall,north=tall,south=low,up=false,waterlogged=false,west=none]", + "673": "minecraft:stone_brick_wall[east=tall,north=tall,south=low,up=false,waterlogged=false,west=low]", + "674": "minecraft:stone_brick_wall[east=tall,north=tall,south=low,up=false,waterlogged=false,west=tall]", + "675": "minecraft:stone_brick_wall[east=tall,north=tall,south=tall,up=true,waterlogged=true,west=none]", + "676": "minecraft:stone_brick_wall[east=tall,north=tall,south=tall,up=true,waterlogged=true,west=low]", + "677": "minecraft:stone_brick_wall[east=tall,north=tall,south=tall,up=true,waterlogged=true,west=tall]", + "678": "minecraft:stone_brick_wall[east=tall,north=tall,south=tall,up=true,waterlogged=false,west=none]", + "679": "minecraft:stone_brick_wall[east=tall,north=tall,south=tall,up=true,waterlogged=false,west=low]", + "680": "minecraft:stone_brick_wall[east=tall,north=tall,south=tall,up=true,waterlogged=false,west=tall]", + "681": "minecraft:stone_brick_wall[east=tall,north=tall,south=tall,up=false,waterlogged=true,west=none]", + "682": "minecraft:stone_brick_wall[east=tall,north=tall,south=tall,up=false,waterlogged=true,west=low]", + "683": "minecraft:stone_brick_wall[east=tall,north=tall,south=tall,up=false,waterlogged=true,west=tall]", + "684": "minecraft:stone_brick_wall[east=tall,north=tall,south=tall,up=false,waterlogged=false,west=none]", + "685": "minecraft:stone_brick_wall[east=tall,north=tall,south=tall,up=false,waterlogged=false,west=low]", + "686": "minecraft:stone_brick_wall[east=tall,north=tall,south=tall,up=false,waterlogged=false,west=tall]", + "687": "minecraft:end_portal_frame[eye=true,facing=north]", + "688": "minecraft:end_portal_frame[eye=true,facing=south]", + "689": "minecraft:end_portal_frame[eye=true,facing=west]", + "690": "minecraft:end_portal_frame[eye=true,facing=east]", + "691": "minecraft:end_portal_frame[eye=false,facing=north]", + "692": "minecraft:end_portal_frame[eye=false,facing=south]", + "693": "minecraft:end_portal_frame[eye=false,facing=west]", + "694": "minecraft:end_portal_frame[eye=false,facing=east]", + "695": "minecraft:magenta_glazed_terracotta[facing=north]", + "696": "minecraft:magenta_glazed_terracotta[facing=south]", + "697": "minecraft:magenta_glazed_terracotta[facing=west]", + "698": "minecraft:magenta_glazed_terracotta[facing=east]", + "699": "minecraft:glass", + "700": "minecraft:sponge", + "701": "minecraft:polished_basalt[axis=x]", + "702": "minecraft:polished_basalt[axis=y]", + "703": "minecraft:polished_basalt[axis=z]", + "704": "minecraft:dragon_egg", + "705": "minecraft:light_blue_carpet", + "706": "minecraft:white_glazed_terracotta[facing=north]", + "707": "minecraft:white_glazed_terracotta[facing=south]", + "708": "minecraft:white_glazed_terracotta[facing=west]", + "709": "minecraft:white_glazed_terracotta[facing=east]", + "710": "minecraft:black_shulker_box[facing=north]", + "711": "minecraft:black_shulker_box[facing=east]", + "712": "minecraft:black_shulker_box[facing=south]", + "713": "minecraft:black_shulker_box[facing=west]", + "714": "minecraft:black_shulker_box[facing=up]", + "715": "minecraft:black_shulker_box[facing=down]", + "716": "minecraft:lime_carpet", + "717": "minecraft:gold_block", + "718": "minecraft:glowstone", + "719": "minecraft:basalt[axis=x]", + "720": "minecraft:basalt[axis=y]", + "721": "minecraft:basalt[axis=z]", + "722": "minecraft:cobblestone_slab[type=top,waterlogged=true]", + "723": "minecraft:cobblestone_slab[type=top,waterlogged=false]", + "724": "minecraft:cobblestone_slab[type=bottom,waterlogged=true]", + "725": "minecraft:cobblestone_slab[type=bottom,waterlogged=false]", + "726": "minecraft:cobblestone_slab[type=double,waterlogged=true]", + "727": "minecraft:cobblestone_slab[type=double,waterlogged=false]", + "728": "minecraft:magenta_carpet", + "729": "minecraft:composter[level=0]", + "730": "minecraft:composter[level=1]", + "731": "minecraft:composter[level=2]", + "732": "minecraft:composter[level=3]", + "733": "minecraft:composter[level=4]", + "734": "minecraft:composter[level=5]", + "735": "minecraft:composter[level=6]", + "736": "minecraft:composter[level=7]", + "737": "minecraft:composter[level=8]", + "738": "minecraft:wither_rose", + "739": "minecraft:light_blue_glazed_terracotta[facing=north]", + "740": "minecraft:light_blue_glazed_terracotta[facing=south]", + "741": "minecraft:light_blue_glazed_terracotta[facing=west]", + "742": "minecraft:light_blue_glazed_terracotta[facing=east]", + "743": "minecraft:warped_sign[rotation=0,waterlogged=true]", + "744": "minecraft:warped_sign[rotation=0,waterlogged=false]", + "745": "minecraft:warped_sign[rotation=1,waterlogged=true]", + "746": "minecraft:warped_sign[rotation=1,waterlogged=false]", + "747": "minecraft:warped_sign[rotation=2,waterlogged=true]", + "748": "minecraft:warped_sign[rotation=2,waterlogged=false]", + "749": "minecraft:warped_sign[rotation=3,waterlogged=true]", + "750": "minecraft:warped_sign[rotation=3,waterlogged=false]", + "751": "minecraft:warped_sign[rotation=4,waterlogged=true]", + "752": "minecraft:warped_sign[rotation=4,waterlogged=false]", + "753": "minecraft:warped_sign[rotation=5,waterlogged=true]", + "754": "minecraft:warped_sign[rotation=5,waterlogged=false]", + "755": "minecraft:warped_sign[rotation=6,waterlogged=true]", + "756": "minecraft:warped_sign[rotation=6,waterlogged=false]", + "757": "minecraft:warped_sign[rotation=7,waterlogged=true]", + "758": "minecraft:warped_sign[rotation=7,waterlogged=false]", + "759": "minecraft:warped_sign[rotation=8,waterlogged=true]", + "760": "minecraft:warped_sign[rotation=8,waterlogged=false]", + "761": "minecraft:warped_sign[rotation=9,waterlogged=true]", + "762": "minecraft:warped_sign[rotation=9,waterlogged=false]", + "763": "minecraft:warped_sign[rotation=10,waterlogged=true]", + "764": "minecraft:warped_sign[rotation=10,waterlogged=false]", + "765": "minecraft:warped_sign[rotation=11,waterlogged=true]", + "766": "minecraft:warped_sign[rotation=11,waterlogged=false]", + "767": "minecraft:warped_sign[rotation=12,waterlogged=true]", + "768": "minecraft:warped_sign[rotation=12,waterlogged=false]", + "769": "minecraft:warped_sign[rotation=13,waterlogged=true]", + "770": "minecraft:warped_sign[rotation=13,waterlogged=false]", + "771": "minecraft:warped_sign[rotation=14,waterlogged=true]", + "772": "minecraft:warped_sign[rotation=14,waterlogged=false]", + "773": "minecraft:warped_sign[rotation=15,waterlogged=true]", + "774": "minecraft:warped_sign[rotation=15,waterlogged=false]", + "775": "minecraft:jigsaw[orientation=down_east]", + "776": "minecraft:jigsaw[orientation=down_north]", + "777": "minecraft:jigsaw[orientation=down_south]", + "778": "minecraft:jigsaw[orientation=down_west]", + "779": "minecraft:jigsaw[orientation=up_east]", + "780": "minecraft:jigsaw[orientation=up_north]", + "781": "minecraft:jigsaw[orientation=up_south]", + "782": "minecraft:jigsaw[orientation=up_west]", + "783": "minecraft:jigsaw[orientation=west_up]", + "784": "minecraft:jigsaw[orientation=east_up]", + "785": "minecraft:jigsaw[orientation=north_up]", + "786": "minecraft:jigsaw[orientation=south_up]", + "787": "minecraft:crimson_wall_sign[facing=north,waterlogged=true]", + "788": "minecraft:crimson_wall_sign[facing=north,waterlogged=false]", + "789": "minecraft:crimson_wall_sign[facing=south,waterlogged=true]", + "790": "minecraft:crimson_wall_sign[facing=south,waterlogged=false]", + "791": "minecraft:crimson_wall_sign[facing=west,waterlogged=true]", + "792": "minecraft:crimson_wall_sign[facing=west,waterlogged=false]", + "793": "minecraft:crimson_wall_sign[facing=east,waterlogged=true]", + "794": "minecraft:crimson_wall_sign[facing=east,waterlogged=false]", + "795": "minecraft:brick_slab[type=top,waterlogged=true]", + "796": "minecraft:brick_slab[type=top,waterlogged=false]", + "797": "minecraft:brick_slab[type=bottom,waterlogged=true]", + "798": "minecraft:brick_slab[type=bottom,waterlogged=false]", + "799": "minecraft:brick_slab[type=double,waterlogged=true]", + "800": "minecraft:brick_slab[type=double,waterlogged=false]", + "801": "minecraft:red_mushroom", + "802": "minecraft:soul_fire_wall_torch[facing=north]", + "803": "minecraft:soul_fire_wall_torch[facing=south]", + "804": "minecraft:soul_fire_wall_torch[facing=west]", + "805": "minecraft:soul_fire_wall_torch[facing=east]", + "806": "minecraft:nether_portal[axis=x]", + "807": "minecraft:nether_portal[axis=z]", + "808": "minecraft:iron_block", + "809": "minecraft:cornflower", + "810": "minecraft:lily_of_the_valley", + "811": "minecraft:petrified_oak_slab[type=top,waterlogged=true]", + "812": "minecraft:petrified_oak_slab[type=top,waterlogged=false]", + "813": "minecraft:petrified_oak_slab[type=bottom,waterlogged=true]", + "814": "minecraft:petrified_oak_slab[type=bottom,waterlogged=false]", + "815": "minecraft:petrified_oak_slab[type=double,waterlogged=true]", + "816": "minecraft:petrified_oak_slab[type=double,waterlogged=false]", + "817": "minecraft:cut_sandstone_slab[type=top,waterlogged=true]", + "818": "minecraft:cut_sandstone_slab[type=top,waterlogged=false]", + "819": "minecraft:cut_sandstone_slab[type=bottom,waterlogged=true]", + "820": "minecraft:cut_sandstone_slab[type=bottom,waterlogged=false]", + "821": "minecraft:cut_sandstone_slab[type=double,waterlogged=true]", + "822": "minecraft:cut_sandstone_slab[type=double,waterlogged=false]", + "823": "minecraft:dark_oak_slab[type=top,waterlogged=true]", + "824": "minecraft:dark_oak_slab[type=top,waterlogged=false]", + "825": "minecraft:dark_oak_slab[type=bottom,waterlogged=true]", + "826": "minecraft:dark_oak_slab[type=bottom,waterlogged=false]", + "827": "minecraft:dark_oak_slab[type=double,waterlogged=true]", + "828": "minecraft:dark_oak_slab[type=double,waterlogged=false]", + "829": "minecraft:stone_slab[type=top,waterlogged=true]", + "830": "minecraft:stone_slab[type=top,waterlogged=false]", + "831": "minecraft:stone_slab[type=bottom,waterlogged=true]", + "832": "minecraft:stone_slab[type=bottom,waterlogged=false]", + "833": "minecraft:stone_slab[type=double,waterlogged=true]", + "834": "minecraft:stone_slab[type=double,waterlogged=false]", + "835": "minecraft:sandstone_slab[type=top,waterlogged=true]", + "836": "minecraft:sandstone_slab[type=top,waterlogged=false]", + "837": "minecraft:sandstone_slab[type=bottom,waterlogged=true]", + "838": "minecraft:sandstone_slab[type=bottom,waterlogged=false]", + "839": "minecraft:sandstone_slab[type=double,waterlogged=true]", + "840": "minecraft:sandstone_slab[type=double,waterlogged=false]", + "841": "minecraft:smooth_stone_slab[type=top,waterlogged=true]", + "842": "minecraft:smooth_stone_slab[type=top,waterlogged=false]", + "843": "minecraft:smooth_stone_slab[type=bottom,waterlogged=true]", + "844": "minecraft:smooth_stone_slab[type=bottom,waterlogged=false]", + "845": "minecraft:smooth_stone_slab[type=double,waterlogged=true]", + "846": "minecraft:smooth_stone_slab[type=double,waterlogged=false]", + "847": "minecraft:sandstone_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "848": "minecraft:sandstone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "849": "minecraft:sandstone_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "850": "minecraft:sandstone_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "851": "minecraft:sandstone_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "852": "minecraft:sandstone_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "853": "minecraft:sandstone_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "854": "minecraft:sandstone_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "855": "minecraft:sandstone_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "856": "minecraft:sandstone_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "857": "minecraft:sandstone_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "858": "minecraft:sandstone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "859": "minecraft:sandstone_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "860": "minecraft:sandstone_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "861": "minecraft:sandstone_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "862": "minecraft:sandstone_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "863": "minecraft:sandstone_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "864": "minecraft:sandstone_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "865": "minecraft:sandstone_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "866": "minecraft:sandstone_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "867": "minecraft:sandstone_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "868": "minecraft:sandstone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "869": "minecraft:sandstone_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "870": "minecraft:sandstone_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "871": "minecraft:sandstone_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "872": "minecraft:sandstone_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "873": "minecraft:sandstone_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "874": "minecraft:sandstone_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "875": "minecraft:sandstone_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "876": "minecraft:sandstone_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "877": "minecraft:sandstone_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "878": "minecraft:sandstone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "879": "minecraft:sandstone_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "880": "minecraft:sandstone_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "881": "minecraft:sandstone_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "882": "minecraft:sandstone_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "883": "minecraft:sandstone_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "884": "minecraft:sandstone_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "885": "minecraft:sandstone_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "886": "minecraft:sandstone_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "887": "minecraft:sandstone_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "888": "minecraft:sandstone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "889": "minecraft:sandstone_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "890": "minecraft:sandstone_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "891": "minecraft:sandstone_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "892": "minecraft:sandstone_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "893": "minecraft:sandstone_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "894": "minecraft:sandstone_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "895": "minecraft:sandstone_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "896": "minecraft:sandstone_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "897": "minecraft:sandstone_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "898": "minecraft:sandstone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "899": "minecraft:sandstone_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "900": "minecraft:sandstone_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "901": "minecraft:sandstone_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "902": "minecraft:sandstone_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "903": "minecraft:sandstone_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "904": "minecraft:sandstone_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "905": "minecraft:sandstone_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "906": "minecraft:sandstone_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "907": "minecraft:sandstone_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "908": "minecraft:sandstone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "909": "minecraft:sandstone_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "910": "minecraft:sandstone_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "911": "minecraft:sandstone_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "912": "minecraft:sandstone_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "913": "minecraft:sandstone_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "914": "minecraft:sandstone_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "915": "minecraft:sandstone_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "916": "minecraft:sandstone_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "917": "minecraft:sandstone_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "918": "minecraft:sandstone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "919": "minecraft:sandstone_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "920": "minecraft:sandstone_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "921": "minecraft:sandstone_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "922": "minecraft:sandstone_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "923": "minecraft:sandstone_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "924": "minecraft:sandstone_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "925": "minecraft:sandstone_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "926": "minecraft:sandstone_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "927": "minecraft:light_gray_carpet", + "928": "minecraft:dispenser[facing=north,triggered=true]", + "929": "minecraft:dispenser[facing=north,triggered=false]", + "930": "minecraft:dispenser[facing=east,triggered=true]", + "931": "minecraft:dispenser[facing=east,triggered=false]", + "932": "minecraft:dispenser[facing=south,triggered=true]", + "933": "minecraft:dispenser[facing=south,triggered=false]", + "934": "minecraft:dispenser[facing=west,triggered=true]", + "935": "minecraft:dispenser[facing=west,triggered=false]", + "936": "minecraft:dispenser[facing=up,triggered=true]", + "937": "minecraft:dispenser[facing=up,triggered=false]", + "938": "minecraft:dispenser[facing=down,triggered=true]", + "939": "minecraft:dispenser[facing=down,triggered=false]", + "940": "minecraft:bee_nest[facing=north,honey_level=0]", + "941": "minecraft:bee_nest[facing=north,honey_level=1]", + "942": "minecraft:bee_nest[facing=north,honey_level=2]", + "943": "minecraft:bee_nest[facing=north,honey_level=3]", + "944": "minecraft:bee_nest[facing=north,honey_level=4]", + "945": "minecraft:bee_nest[facing=north,honey_level=5]", + "946": "minecraft:bee_nest[facing=south,honey_level=0]", + "947": "minecraft:bee_nest[facing=south,honey_level=1]", + "948": "minecraft:bee_nest[facing=south,honey_level=2]", + "949": "minecraft:bee_nest[facing=south,honey_level=3]", + "950": "minecraft:bee_nest[facing=south,honey_level=4]", + "951": "minecraft:bee_nest[facing=south,honey_level=5]", + "952": "minecraft:bee_nest[facing=west,honey_level=0]", + "953": "minecraft:bee_nest[facing=west,honey_level=1]", + "954": "minecraft:bee_nest[facing=west,honey_level=2]", + "955": "minecraft:bee_nest[facing=west,honey_level=3]", + "956": "minecraft:bee_nest[facing=west,honey_level=4]", + "957": "minecraft:bee_nest[facing=west,honey_level=5]", + "958": "minecraft:bee_nest[facing=east,honey_level=0]", + "959": "minecraft:bee_nest[facing=east,honey_level=1]", + "960": "minecraft:bee_nest[facing=east,honey_level=2]", + "961": "minecraft:bee_nest[facing=east,honey_level=3]", + "962": "minecraft:bee_nest[facing=east,honey_level=4]", + "963": "minecraft:bee_nest[facing=east,honey_level=5]", + "964": "minecraft:white_carpet", + "965": "minecraft:crimson_sign[rotation=0,waterlogged=true]", + "966": "minecraft:crimson_sign[rotation=0,waterlogged=false]", + "967": "minecraft:crimson_sign[rotation=1,waterlogged=true]", + "968": "minecraft:crimson_sign[rotation=1,waterlogged=false]", + "969": "minecraft:crimson_sign[rotation=2,waterlogged=true]", + "970": "minecraft:crimson_sign[rotation=2,waterlogged=false]", + "971": "minecraft:crimson_sign[rotation=3,waterlogged=true]", + "972": "minecraft:crimson_sign[rotation=3,waterlogged=false]", + "973": "minecraft:crimson_sign[rotation=4,waterlogged=true]", + "974": "minecraft:crimson_sign[rotation=4,waterlogged=false]", + "975": "minecraft:crimson_sign[rotation=5,waterlogged=true]", + "976": "minecraft:crimson_sign[rotation=5,waterlogged=false]", + "977": "minecraft:crimson_sign[rotation=6,waterlogged=true]", + "978": "minecraft:crimson_sign[rotation=6,waterlogged=false]", + "979": "minecraft:crimson_sign[rotation=7,waterlogged=true]", + "980": "minecraft:crimson_sign[rotation=7,waterlogged=false]", + "981": "minecraft:crimson_sign[rotation=8,waterlogged=true]", + "982": "minecraft:crimson_sign[rotation=8,waterlogged=false]", + "983": "minecraft:crimson_sign[rotation=9,waterlogged=true]", + "984": "minecraft:crimson_sign[rotation=9,waterlogged=false]", + "985": "minecraft:crimson_sign[rotation=10,waterlogged=true]", + "986": "minecraft:crimson_sign[rotation=10,waterlogged=false]", + "987": "minecraft:crimson_sign[rotation=11,waterlogged=true]", + "988": "minecraft:crimson_sign[rotation=11,waterlogged=false]", + "989": "minecraft:crimson_sign[rotation=12,waterlogged=true]", + "990": "minecraft:crimson_sign[rotation=12,waterlogged=false]", + "991": "minecraft:crimson_sign[rotation=13,waterlogged=true]", + "992": "minecraft:crimson_sign[rotation=13,waterlogged=false]", + "993": "minecraft:crimson_sign[rotation=14,waterlogged=true]", + "994": "minecraft:crimson_sign[rotation=14,waterlogged=false]", + "995": "minecraft:crimson_sign[rotation=15,waterlogged=true]", + "996": "minecraft:crimson_sign[rotation=15,waterlogged=false]", + "997": "minecraft:red_nether_brick_wall[east=none,north=none,south=none,up=true,waterlogged=true,west=none]", + "998": "minecraft:red_nether_brick_wall[east=none,north=none,south=none,up=true,waterlogged=true,west=low]", + "999": "minecraft:red_nether_brick_wall[east=none,north=none,south=none,up=true,waterlogged=true,west=tall]", + "1000": "minecraft:red_nether_brick_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=none]", + "1001": "minecraft:red_nether_brick_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=low]", + "1002": "minecraft:red_nether_brick_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=tall]", + "1003": "minecraft:red_nether_brick_wall[east=none,north=none,south=none,up=false,waterlogged=true,west=none]", + "1004": "minecraft:red_nether_brick_wall[east=none,north=none,south=none,up=false,waterlogged=true,west=low]", + "1005": "minecraft:red_nether_brick_wall[east=none,north=none,south=none,up=false,waterlogged=true,west=tall]", + "1006": "minecraft:red_nether_brick_wall[east=none,north=none,south=none,up=false,waterlogged=false,west=none]", + "1007": "minecraft:red_nether_brick_wall[east=none,north=none,south=none,up=false,waterlogged=false,west=low]", + "1008": "minecraft:red_nether_brick_wall[east=none,north=none,south=none,up=false,waterlogged=false,west=tall]", + "1009": "minecraft:red_nether_brick_wall[east=none,north=none,south=low,up=true,waterlogged=true,west=none]", + "1010": "minecraft:red_nether_brick_wall[east=none,north=none,south=low,up=true,waterlogged=true,west=low]", + "1011": "minecraft:red_nether_brick_wall[east=none,north=none,south=low,up=true,waterlogged=true,west=tall]", + "1012": "minecraft:red_nether_brick_wall[east=none,north=none,south=low,up=true,waterlogged=false,west=none]", + "1013": "minecraft:red_nether_brick_wall[east=none,north=none,south=low,up=true,waterlogged=false,west=low]", + "1014": "minecraft:red_nether_brick_wall[east=none,north=none,south=low,up=true,waterlogged=false,west=tall]", + "1015": "minecraft:red_nether_brick_wall[east=none,north=none,south=low,up=false,waterlogged=true,west=none]", + "1016": "minecraft:red_nether_brick_wall[east=none,north=none,south=low,up=false,waterlogged=true,west=low]", + "1017": "minecraft:red_nether_brick_wall[east=none,north=none,south=low,up=false,waterlogged=true,west=tall]", + "1018": "minecraft:red_nether_brick_wall[east=none,north=none,south=low,up=false,waterlogged=false,west=none]", + "1019": "minecraft:red_nether_brick_wall[east=none,north=none,south=low,up=false,waterlogged=false,west=low]", + "1020": "minecraft:red_nether_brick_wall[east=none,north=none,south=low,up=false,waterlogged=false,west=tall]", + "1021": "minecraft:red_nether_brick_wall[east=none,north=none,south=tall,up=true,waterlogged=true,west=none]", + "1022": "minecraft:red_nether_brick_wall[east=none,north=none,south=tall,up=true,waterlogged=true,west=low]", + "1023": "minecraft:red_nether_brick_wall[east=none,north=none,south=tall,up=true,waterlogged=true,west=tall]", + "1024": "minecraft:red_nether_brick_wall[east=none,north=none,south=tall,up=true,waterlogged=false,west=none]", + "1025": "minecraft:red_nether_brick_wall[east=none,north=none,south=tall,up=true,waterlogged=false,west=low]", + "1026": "minecraft:red_nether_brick_wall[east=none,north=none,south=tall,up=true,waterlogged=false,west=tall]", + "1027": "minecraft:red_nether_brick_wall[east=none,north=none,south=tall,up=false,waterlogged=true,west=none]", + "1028": "minecraft:red_nether_brick_wall[east=none,north=none,south=tall,up=false,waterlogged=true,west=low]", + "1029": "minecraft:red_nether_brick_wall[east=none,north=none,south=tall,up=false,waterlogged=true,west=tall]", + "1030": "minecraft:red_nether_brick_wall[east=none,north=none,south=tall,up=false,waterlogged=false,west=none]", + "1031": "minecraft:red_nether_brick_wall[east=none,north=none,south=tall,up=false,waterlogged=false,west=low]", + "1032": "minecraft:red_nether_brick_wall[east=none,north=none,south=tall,up=false,waterlogged=false,west=tall]", + "1033": "minecraft:red_nether_brick_wall[east=none,north=low,south=none,up=true,waterlogged=true,west=none]", + "1034": "minecraft:red_nether_brick_wall[east=none,north=low,south=none,up=true,waterlogged=true,west=low]", + "1035": "minecraft:red_nether_brick_wall[east=none,north=low,south=none,up=true,waterlogged=true,west=tall]", + "1036": "minecraft:red_nether_brick_wall[east=none,north=low,south=none,up=true,waterlogged=false,west=none]", + "1037": "minecraft:red_nether_brick_wall[east=none,north=low,south=none,up=true,waterlogged=false,west=low]", + "1038": "minecraft:red_nether_brick_wall[east=none,north=low,south=none,up=true,waterlogged=false,west=tall]", + "1039": "minecraft:red_nether_brick_wall[east=none,north=low,south=none,up=false,waterlogged=true,west=none]", + "1040": "minecraft:red_nether_brick_wall[east=none,north=low,south=none,up=false,waterlogged=true,west=low]", + "1041": "minecraft:red_nether_brick_wall[east=none,north=low,south=none,up=false,waterlogged=true,west=tall]", + "1042": "minecraft:red_nether_brick_wall[east=none,north=low,south=none,up=false,waterlogged=false,west=none]", + "1043": "minecraft:red_nether_brick_wall[east=none,north=low,south=none,up=false,waterlogged=false,west=low]", + "1044": "minecraft:red_nether_brick_wall[east=none,north=low,south=none,up=false,waterlogged=false,west=tall]", + "1045": "minecraft:red_nether_brick_wall[east=none,north=low,south=low,up=true,waterlogged=true,west=none]", + "1046": "minecraft:red_nether_brick_wall[east=none,north=low,south=low,up=true,waterlogged=true,west=low]", + "1047": "minecraft:red_nether_brick_wall[east=none,north=low,south=low,up=true,waterlogged=true,west=tall]", + "1048": "minecraft:red_nether_brick_wall[east=none,north=low,south=low,up=true,waterlogged=false,west=none]", + "1049": "minecraft:red_nether_brick_wall[east=none,north=low,south=low,up=true,waterlogged=false,west=low]", + "1050": "minecraft:red_nether_brick_wall[east=none,north=low,south=low,up=true,waterlogged=false,west=tall]", + "1051": "minecraft:red_nether_brick_wall[east=none,north=low,south=low,up=false,waterlogged=true,west=none]", + "1052": "minecraft:red_nether_brick_wall[east=none,north=low,south=low,up=false,waterlogged=true,west=low]", + "1053": "minecraft:red_nether_brick_wall[east=none,north=low,south=low,up=false,waterlogged=true,west=tall]", + "1054": "minecraft:red_nether_brick_wall[east=none,north=low,south=low,up=false,waterlogged=false,west=none]", + "1055": "minecraft:red_nether_brick_wall[east=none,north=low,south=low,up=false,waterlogged=false,west=low]", + "1056": "minecraft:red_nether_brick_wall[east=none,north=low,south=low,up=false,waterlogged=false,west=tall]", + "1057": "minecraft:red_nether_brick_wall[east=none,north=low,south=tall,up=true,waterlogged=true,west=none]", + "1058": "minecraft:red_nether_brick_wall[east=none,north=low,south=tall,up=true,waterlogged=true,west=low]", + "1059": "minecraft:red_nether_brick_wall[east=none,north=low,south=tall,up=true,waterlogged=true,west=tall]", + "1060": "minecraft:red_nether_brick_wall[east=none,north=low,south=tall,up=true,waterlogged=false,west=none]", + "1061": "minecraft:red_nether_brick_wall[east=none,north=low,south=tall,up=true,waterlogged=false,west=low]", + "1062": "minecraft:red_nether_brick_wall[east=none,north=low,south=tall,up=true,waterlogged=false,west=tall]", + "1063": "minecraft:red_nether_brick_wall[east=none,north=low,south=tall,up=false,waterlogged=true,west=none]", + "1064": "minecraft:red_nether_brick_wall[east=none,north=low,south=tall,up=false,waterlogged=true,west=low]", + "1065": "minecraft:red_nether_brick_wall[east=none,north=low,south=tall,up=false,waterlogged=true,west=tall]", + "1066": "minecraft:red_nether_brick_wall[east=none,north=low,south=tall,up=false,waterlogged=false,west=none]", + "1067": "minecraft:red_nether_brick_wall[east=none,north=low,south=tall,up=false,waterlogged=false,west=low]", + "1068": "minecraft:red_nether_brick_wall[east=none,north=low,south=tall,up=false,waterlogged=false,west=tall]", + "1069": "minecraft:red_nether_brick_wall[east=none,north=tall,south=none,up=true,waterlogged=true,west=none]", + "1070": "minecraft:red_nether_brick_wall[east=none,north=tall,south=none,up=true,waterlogged=true,west=low]", + "1071": "minecraft:red_nether_brick_wall[east=none,north=tall,south=none,up=true,waterlogged=true,west=tall]", + "1072": "minecraft:red_nether_brick_wall[east=none,north=tall,south=none,up=true,waterlogged=false,west=none]", + "1073": "minecraft:red_nether_brick_wall[east=none,north=tall,south=none,up=true,waterlogged=false,west=low]", + "1074": "minecraft:red_nether_brick_wall[east=none,north=tall,south=none,up=true,waterlogged=false,west=tall]", + "1075": "minecraft:red_nether_brick_wall[east=none,north=tall,south=none,up=false,waterlogged=true,west=none]", + "1076": "minecraft:red_nether_brick_wall[east=none,north=tall,south=none,up=false,waterlogged=true,west=low]", + "1077": "minecraft:red_nether_brick_wall[east=none,north=tall,south=none,up=false,waterlogged=true,west=tall]", + "1078": "minecraft:red_nether_brick_wall[east=none,north=tall,south=none,up=false,waterlogged=false,west=none]", + "1079": "minecraft:red_nether_brick_wall[east=none,north=tall,south=none,up=false,waterlogged=false,west=low]", + "1080": "minecraft:red_nether_brick_wall[east=none,north=tall,south=none,up=false,waterlogged=false,west=tall]", + "1081": "minecraft:red_nether_brick_wall[east=none,north=tall,south=low,up=true,waterlogged=true,west=none]", + "1082": "minecraft:red_nether_brick_wall[east=none,north=tall,south=low,up=true,waterlogged=true,west=low]", + "1083": "minecraft:red_nether_brick_wall[east=none,north=tall,south=low,up=true,waterlogged=true,west=tall]", + "1084": "minecraft:red_nether_brick_wall[east=none,north=tall,south=low,up=true,waterlogged=false,west=none]", + "1085": "minecraft:red_nether_brick_wall[east=none,north=tall,south=low,up=true,waterlogged=false,west=low]", + "1086": "minecraft:red_nether_brick_wall[east=none,north=tall,south=low,up=true,waterlogged=false,west=tall]", + "1087": "minecraft:red_nether_brick_wall[east=none,north=tall,south=low,up=false,waterlogged=true,west=none]", + "1088": "minecraft:red_nether_brick_wall[east=none,north=tall,south=low,up=false,waterlogged=true,west=low]", + "1089": "minecraft:red_nether_brick_wall[east=none,north=tall,south=low,up=false,waterlogged=true,west=tall]", + "1090": "minecraft:red_nether_brick_wall[east=none,north=tall,south=low,up=false,waterlogged=false,west=none]", + "1091": "minecraft:red_nether_brick_wall[east=none,north=tall,south=low,up=false,waterlogged=false,west=low]", + "1092": "minecraft:red_nether_brick_wall[east=none,north=tall,south=low,up=false,waterlogged=false,west=tall]", + "1093": "minecraft:red_nether_brick_wall[east=none,north=tall,south=tall,up=true,waterlogged=true,west=none]", + "1094": "minecraft:red_nether_brick_wall[east=none,north=tall,south=tall,up=true,waterlogged=true,west=low]", + "1095": "minecraft:red_nether_brick_wall[east=none,north=tall,south=tall,up=true,waterlogged=true,west=tall]", + "1096": "minecraft:red_nether_brick_wall[east=none,north=tall,south=tall,up=true,waterlogged=false,west=none]", + "1097": "minecraft:red_nether_brick_wall[east=none,north=tall,south=tall,up=true,waterlogged=false,west=low]", + "1098": "minecraft:red_nether_brick_wall[east=none,north=tall,south=tall,up=true,waterlogged=false,west=tall]", + "1099": "minecraft:red_nether_brick_wall[east=none,north=tall,south=tall,up=false,waterlogged=true,west=none]", + "1100": "minecraft:red_nether_brick_wall[east=none,north=tall,south=tall,up=false,waterlogged=true,west=low]", + "1101": "minecraft:red_nether_brick_wall[east=none,north=tall,south=tall,up=false,waterlogged=true,west=tall]", + "1102": "minecraft:red_nether_brick_wall[east=none,north=tall,south=tall,up=false,waterlogged=false,west=none]", + "1103": "minecraft:red_nether_brick_wall[east=none,north=tall,south=tall,up=false,waterlogged=false,west=low]", + "1104": "minecraft:red_nether_brick_wall[east=none,north=tall,south=tall,up=false,waterlogged=false,west=tall]", + "1105": "minecraft:red_nether_brick_wall[east=low,north=none,south=none,up=true,waterlogged=true,west=none]", + "1106": "minecraft:red_nether_brick_wall[east=low,north=none,south=none,up=true,waterlogged=true,west=low]", + "1107": "minecraft:red_nether_brick_wall[east=low,north=none,south=none,up=true,waterlogged=true,west=tall]", + "1108": "minecraft:red_nether_brick_wall[east=low,north=none,south=none,up=true,waterlogged=false,west=none]", + "1109": "minecraft:red_nether_brick_wall[east=low,north=none,south=none,up=true,waterlogged=false,west=low]", + "1110": "minecraft:red_nether_brick_wall[east=low,north=none,south=none,up=true,waterlogged=false,west=tall]", + "1111": "minecraft:red_nether_brick_wall[east=low,north=none,south=none,up=false,waterlogged=true,west=none]", + "1112": "minecraft:red_nether_brick_wall[east=low,north=none,south=none,up=false,waterlogged=true,west=low]", + "1113": "minecraft:red_nether_brick_wall[east=low,north=none,south=none,up=false,waterlogged=true,west=tall]", + "1114": "minecraft:red_nether_brick_wall[east=low,north=none,south=none,up=false,waterlogged=false,west=none]", + "1115": "minecraft:red_nether_brick_wall[east=low,north=none,south=none,up=false,waterlogged=false,west=low]", + "1116": "minecraft:red_nether_brick_wall[east=low,north=none,south=none,up=false,waterlogged=false,west=tall]", + "1117": "minecraft:red_nether_brick_wall[east=low,north=none,south=low,up=true,waterlogged=true,west=none]", + "1118": "minecraft:red_nether_brick_wall[east=low,north=none,south=low,up=true,waterlogged=true,west=low]", + "1119": "minecraft:red_nether_brick_wall[east=low,north=none,south=low,up=true,waterlogged=true,west=tall]", + "1120": "minecraft:red_nether_brick_wall[east=low,north=none,south=low,up=true,waterlogged=false,west=none]", + "1121": "minecraft:red_nether_brick_wall[east=low,north=none,south=low,up=true,waterlogged=false,west=low]", + "1122": "minecraft:red_nether_brick_wall[east=low,north=none,south=low,up=true,waterlogged=false,west=tall]", + "1123": "minecraft:red_nether_brick_wall[east=low,north=none,south=low,up=false,waterlogged=true,west=none]", + "1124": "minecraft:red_nether_brick_wall[east=low,north=none,south=low,up=false,waterlogged=true,west=low]", + "1125": "minecraft:red_nether_brick_wall[east=low,north=none,south=low,up=false,waterlogged=true,west=tall]", + "1126": "minecraft:red_nether_brick_wall[east=low,north=none,south=low,up=false,waterlogged=false,west=none]", + "1127": "minecraft:red_nether_brick_wall[east=low,north=none,south=low,up=false,waterlogged=false,west=low]", + "1128": "minecraft:red_nether_brick_wall[east=low,north=none,south=low,up=false,waterlogged=false,west=tall]", + "1129": "minecraft:red_nether_brick_wall[east=low,north=none,south=tall,up=true,waterlogged=true,west=none]", + "1130": "minecraft:red_nether_brick_wall[east=low,north=none,south=tall,up=true,waterlogged=true,west=low]", + "1131": "minecraft:red_nether_brick_wall[east=low,north=none,south=tall,up=true,waterlogged=true,west=tall]", + "1132": "minecraft:red_nether_brick_wall[east=low,north=none,south=tall,up=true,waterlogged=false,west=none]", + "1133": "minecraft:red_nether_brick_wall[east=low,north=none,south=tall,up=true,waterlogged=false,west=low]", + "1134": "minecraft:red_nether_brick_wall[east=low,north=none,south=tall,up=true,waterlogged=false,west=tall]", + "1135": "minecraft:red_nether_brick_wall[east=low,north=none,south=tall,up=false,waterlogged=true,west=none]", + "1136": "minecraft:red_nether_brick_wall[east=low,north=none,south=tall,up=false,waterlogged=true,west=low]", + "1137": "minecraft:red_nether_brick_wall[east=low,north=none,south=tall,up=false,waterlogged=true,west=tall]", + "1138": "minecraft:red_nether_brick_wall[east=low,north=none,south=tall,up=false,waterlogged=false,west=none]", + "1139": "minecraft:red_nether_brick_wall[east=low,north=none,south=tall,up=false,waterlogged=false,west=low]", + "1140": "minecraft:red_nether_brick_wall[east=low,north=none,south=tall,up=false,waterlogged=false,west=tall]", + "1141": "minecraft:red_nether_brick_wall[east=low,north=low,south=none,up=true,waterlogged=true,west=none]", + "1142": "minecraft:red_nether_brick_wall[east=low,north=low,south=none,up=true,waterlogged=true,west=low]", + "1143": "minecraft:red_nether_brick_wall[east=low,north=low,south=none,up=true,waterlogged=true,west=tall]", + "1144": "minecraft:red_nether_brick_wall[east=low,north=low,south=none,up=true,waterlogged=false,west=none]", + "1145": "minecraft:red_nether_brick_wall[east=low,north=low,south=none,up=true,waterlogged=false,west=low]", + "1146": "minecraft:red_nether_brick_wall[east=low,north=low,south=none,up=true,waterlogged=false,west=tall]", + "1147": "minecraft:red_nether_brick_wall[east=low,north=low,south=none,up=false,waterlogged=true,west=none]", + "1148": "minecraft:red_nether_brick_wall[east=low,north=low,south=none,up=false,waterlogged=true,west=low]", + "1149": "minecraft:red_nether_brick_wall[east=low,north=low,south=none,up=false,waterlogged=true,west=tall]", + "1150": "minecraft:red_nether_brick_wall[east=low,north=low,south=none,up=false,waterlogged=false,west=none]", + "1151": "minecraft:red_nether_brick_wall[east=low,north=low,south=none,up=false,waterlogged=false,west=low]", + "1152": "minecraft:red_nether_brick_wall[east=low,north=low,south=none,up=false,waterlogged=false,west=tall]", + "1153": "minecraft:red_nether_brick_wall[east=low,north=low,south=low,up=true,waterlogged=true,west=none]", + "1154": "minecraft:red_nether_brick_wall[east=low,north=low,south=low,up=true,waterlogged=true,west=low]", + "1155": "minecraft:red_nether_brick_wall[east=low,north=low,south=low,up=true,waterlogged=true,west=tall]", + "1156": "minecraft:red_nether_brick_wall[east=low,north=low,south=low,up=true,waterlogged=false,west=none]", + "1157": "minecraft:red_nether_brick_wall[east=low,north=low,south=low,up=true,waterlogged=false,west=low]", + "1158": "minecraft:red_nether_brick_wall[east=low,north=low,south=low,up=true,waterlogged=false,west=tall]", + "1159": "minecraft:red_nether_brick_wall[east=low,north=low,south=low,up=false,waterlogged=true,west=none]", + "1160": "minecraft:red_nether_brick_wall[east=low,north=low,south=low,up=false,waterlogged=true,west=low]", + "1161": "minecraft:red_nether_brick_wall[east=low,north=low,south=low,up=false,waterlogged=true,west=tall]", + "1162": "minecraft:red_nether_brick_wall[east=low,north=low,south=low,up=false,waterlogged=false,west=none]", + "1163": "minecraft:red_nether_brick_wall[east=low,north=low,south=low,up=false,waterlogged=false,west=low]", + "1164": "minecraft:red_nether_brick_wall[east=low,north=low,south=low,up=false,waterlogged=false,west=tall]", + "1165": "minecraft:red_nether_brick_wall[east=low,north=low,south=tall,up=true,waterlogged=true,west=none]", + "1166": "minecraft:red_nether_brick_wall[east=low,north=low,south=tall,up=true,waterlogged=true,west=low]", + "1167": "minecraft:red_nether_brick_wall[east=low,north=low,south=tall,up=true,waterlogged=true,west=tall]", + "1168": "minecraft:red_nether_brick_wall[east=low,north=low,south=tall,up=true,waterlogged=false,west=none]", + "1169": "minecraft:red_nether_brick_wall[east=low,north=low,south=tall,up=true,waterlogged=false,west=low]", + "1170": "minecraft:red_nether_brick_wall[east=low,north=low,south=tall,up=true,waterlogged=false,west=tall]", + "1171": "minecraft:red_nether_brick_wall[east=low,north=low,south=tall,up=false,waterlogged=true,west=none]", + "1172": "minecraft:red_nether_brick_wall[east=low,north=low,south=tall,up=false,waterlogged=true,west=low]", + "1173": "minecraft:red_nether_brick_wall[east=low,north=low,south=tall,up=false,waterlogged=true,west=tall]", + "1174": "minecraft:red_nether_brick_wall[east=low,north=low,south=tall,up=false,waterlogged=false,west=none]", + "1175": "minecraft:red_nether_brick_wall[east=low,north=low,south=tall,up=false,waterlogged=false,west=low]", + "1176": "minecraft:red_nether_brick_wall[east=low,north=low,south=tall,up=false,waterlogged=false,west=tall]", + "1177": "minecraft:red_nether_brick_wall[east=low,north=tall,south=none,up=true,waterlogged=true,west=none]", + "1178": "minecraft:red_nether_brick_wall[east=low,north=tall,south=none,up=true,waterlogged=true,west=low]", + "1179": "minecraft:red_nether_brick_wall[east=low,north=tall,south=none,up=true,waterlogged=true,west=tall]", + "1180": "minecraft:red_nether_brick_wall[east=low,north=tall,south=none,up=true,waterlogged=false,west=none]", + "1181": "minecraft:red_nether_brick_wall[east=low,north=tall,south=none,up=true,waterlogged=false,west=low]", + "1182": "minecraft:red_nether_brick_wall[east=low,north=tall,south=none,up=true,waterlogged=false,west=tall]", + "1183": "minecraft:red_nether_brick_wall[east=low,north=tall,south=none,up=false,waterlogged=true,west=none]", + "1184": "minecraft:red_nether_brick_wall[east=low,north=tall,south=none,up=false,waterlogged=true,west=low]", + "1185": "minecraft:red_nether_brick_wall[east=low,north=tall,south=none,up=false,waterlogged=true,west=tall]", + "1186": "minecraft:red_nether_brick_wall[east=low,north=tall,south=none,up=false,waterlogged=false,west=none]", + "1187": "minecraft:red_nether_brick_wall[east=low,north=tall,south=none,up=false,waterlogged=false,west=low]", + "1188": "minecraft:red_nether_brick_wall[east=low,north=tall,south=none,up=false,waterlogged=false,west=tall]", + "1189": "minecraft:red_nether_brick_wall[east=low,north=tall,south=low,up=true,waterlogged=true,west=none]", + "1190": "minecraft:red_nether_brick_wall[east=low,north=tall,south=low,up=true,waterlogged=true,west=low]", + "1191": "minecraft:red_nether_brick_wall[east=low,north=tall,south=low,up=true,waterlogged=true,west=tall]", + "1192": "minecraft:red_nether_brick_wall[east=low,north=tall,south=low,up=true,waterlogged=false,west=none]", + "1193": "minecraft:red_nether_brick_wall[east=low,north=tall,south=low,up=true,waterlogged=false,west=low]", + "1194": "minecraft:red_nether_brick_wall[east=low,north=tall,south=low,up=true,waterlogged=false,west=tall]", + "1195": "minecraft:red_nether_brick_wall[east=low,north=tall,south=low,up=false,waterlogged=true,west=none]", + "1196": "minecraft:red_nether_brick_wall[east=low,north=tall,south=low,up=false,waterlogged=true,west=low]", + "1197": "minecraft:red_nether_brick_wall[east=low,north=tall,south=low,up=false,waterlogged=true,west=tall]", + "1198": "minecraft:red_nether_brick_wall[east=low,north=tall,south=low,up=false,waterlogged=false,west=none]", + "1199": "minecraft:red_nether_brick_wall[east=low,north=tall,south=low,up=false,waterlogged=false,west=low]", + "1200": "minecraft:red_nether_brick_wall[east=low,north=tall,south=low,up=false,waterlogged=false,west=tall]", + "1201": "minecraft:red_nether_brick_wall[east=low,north=tall,south=tall,up=true,waterlogged=true,west=none]", + "1202": "minecraft:red_nether_brick_wall[east=low,north=tall,south=tall,up=true,waterlogged=true,west=low]", + "1203": "minecraft:red_nether_brick_wall[east=low,north=tall,south=tall,up=true,waterlogged=true,west=tall]", + "1204": "minecraft:red_nether_brick_wall[east=low,north=tall,south=tall,up=true,waterlogged=false,west=none]", + "1205": "minecraft:red_nether_brick_wall[east=low,north=tall,south=tall,up=true,waterlogged=false,west=low]", + "1206": "minecraft:red_nether_brick_wall[east=low,north=tall,south=tall,up=true,waterlogged=false,west=tall]", + "1207": "minecraft:red_nether_brick_wall[east=low,north=tall,south=tall,up=false,waterlogged=true,west=none]", + "1208": "minecraft:red_nether_brick_wall[east=low,north=tall,south=tall,up=false,waterlogged=true,west=low]", + "1209": "minecraft:red_nether_brick_wall[east=low,north=tall,south=tall,up=false,waterlogged=true,west=tall]", + "1210": "minecraft:red_nether_brick_wall[east=low,north=tall,south=tall,up=false,waterlogged=false,west=none]", + "1211": "minecraft:red_nether_brick_wall[east=low,north=tall,south=tall,up=false,waterlogged=false,west=low]", + "1212": "minecraft:red_nether_brick_wall[east=low,north=tall,south=tall,up=false,waterlogged=false,west=tall]", + "1213": "minecraft:red_nether_brick_wall[east=tall,north=none,south=none,up=true,waterlogged=true,west=none]", + "1214": "minecraft:red_nether_brick_wall[east=tall,north=none,south=none,up=true,waterlogged=true,west=low]", + "1215": "minecraft:red_nether_brick_wall[east=tall,north=none,south=none,up=true,waterlogged=true,west=tall]", + "1216": "minecraft:red_nether_brick_wall[east=tall,north=none,south=none,up=true,waterlogged=false,west=none]", + "1217": "minecraft:red_nether_brick_wall[east=tall,north=none,south=none,up=true,waterlogged=false,west=low]", + "1218": "minecraft:red_nether_brick_wall[east=tall,north=none,south=none,up=true,waterlogged=false,west=tall]", + "1219": "minecraft:red_nether_brick_wall[east=tall,north=none,south=none,up=false,waterlogged=true,west=none]", + "1220": "minecraft:red_nether_brick_wall[east=tall,north=none,south=none,up=false,waterlogged=true,west=low]", + "1221": "minecraft:red_nether_brick_wall[east=tall,north=none,south=none,up=false,waterlogged=true,west=tall]", + "1222": "minecraft:red_nether_brick_wall[east=tall,north=none,south=none,up=false,waterlogged=false,west=none]", + "1223": "minecraft:red_nether_brick_wall[east=tall,north=none,south=none,up=false,waterlogged=false,west=low]", + "1224": "minecraft:red_nether_brick_wall[east=tall,north=none,south=none,up=false,waterlogged=false,west=tall]", + "1225": "minecraft:red_nether_brick_wall[east=tall,north=none,south=low,up=true,waterlogged=true,west=none]", + "1226": "minecraft:red_nether_brick_wall[east=tall,north=none,south=low,up=true,waterlogged=true,west=low]", + "1227": "minecraft:red_nether_brick_wall[east=tall,north=none,south=low,up=true,waterlogged=true,west=tall]", + "1228": "minecraft:red_nether_brick_wall[east=tall,north=none,south=low,up=true,waterlogged=false,west=none]", + "1229": "minecraft:red_nether_brick_wall[east=tall,north=none,south=low,up=true,waterlogged=false,west=low]", + "1230": "minecraft:red_nether_brick_wall[east=tall,north=none,south=low,up=true,waterlogged=false,west=tall]", + "1231": "minecraft:red_nether_brick_wall[east=tall,north=none,south=low,up=false,waterlogged=true,west=none]", + "1232": "minecraft:red_nether_brick_wall[east=tall,north=none,south=low,up=false,waterlogged=true,west=low]", + "1233": "minecraft:red_nether_brick_wall[east=tall,north=none,south=low,up=false,waterlogged=true,west=tall]", + "1234": "minecraft:red_nether_brick_wall[east=tall,north=none,south=low,up=false,waterlogged=false,west=none]", + "1235": "minecraft:red_nether_brick_wall[east=tall,north=none,south=low,up=false,waterlogged=false,west=low]", + "1236": "minecraft:red_nether_brick_wall[east=tall,north=none,south=low,up=false,waterlogged=false,west=tall]", + "1237": "minecraft:red_nether_brick_wall[east=tall,north=none,south=tall,up=true,waterlogged=true,west=none]", + "1238": "minecraft:red_nether_brick_wall[east=tall,north=none,south=tall,up=true,waterlogged=true,west=low]", + "1239": "minecraft:red_nether_brick_wall[east=tall,north=none,south=tall,up=true,waterlogged=true,west=tall]", + "1240": "minecraft:red_nether_brick_wall[east=tall,north=none,south=tall,up=true,waterlogged=false,west=none]", + "1241": "minecraft:red_nether_brick_wall[east=tall,north=none,south=tall,up=true,waterlogged=false,west=low]", + "1242": "minecraft:red_nether_brick_wall[east=tall,north=none,south=tall,up=true,waterlogged=false,west=tall]", + "1243": "minecraft:red_nether_brick_wall[east=tall,north=none,south=tall,up=false,waterlogged=true,west=none]", + "1244": "minecraft:red_nether_brick_wall[east=tall,north=none,south=tall,up=false,waterlogged=true,west=low]", + "1245": "minecraft:red_nether_brick_wall[east=tall,north=none,south=tall,up=false,waterlogged=true,west=tall]", + "1246": "minecraft:red_nether_brick_wall[east=tall,north=none,south=tall,up=false,waterlogged=false,west=none]", + "1247": "minecraft:red_nether_brick_wall[east=tall,north=none,south=tall,up=false,waterlogged=false,west=low]", + "1248": "minecraft:red_nether_brick_wall[east=tall,north=none,south=tall,up=false,waterlogged=false,west=tall]", + "1249": "minecraft:red_nether_brick_wall[east=tall,north=low,south=none,up=true,waterlogged=true,west=none]", + "1250": "minecraft:red_nether_brick_wall[east=tall,north=low,south=none,up=true,waterlogged=true,west=low]", + "1251": "minecraft:red_nether_brick_wall[east=tall,north=low,south=none,up=true,waterlogged=true,west=tall]", + "1252": "minecraft:red_nether_brick_wall[east=tall,north=low,south=none,up=true,waterlogged=false,west=none]", + "1253": "minecraft:red_nether_brick_wall[east=tall,north=low,south=none,up=true,waterlogged=false,west=low]", + "1254": "minecraft:red_nether_brick_wall[east=tall,north=low,south=none,up=true,waterlogged=false,west=tall]", + "1255": "minecraft:red_nether_brick_wall[east=tall,north=low,south=none,up=false,waterlogged=true,west=none]", + "1256": "minecraft:red_nether_brick_wall[east=tall,north=low,south=none,up=false,waterlogged=true,west=low]", + "1257": "minecraft:red_nether_brick_wall[east=tall,north=low,south=none,up=false,waterlogged=true,west=tall]", + "1258": "minecraft:red_nether_brick_wall[east=tall,north=low,south=none,up=false,waterlogged=false,west=none]", + "1259": "minecraft:red_nether_brick_wall[east=tall,north=low,south=none,up=false,waterlogged=false,west=low]", + "1260": "minecraft:red_nether_brick_wall[east=tall,north=low,south=none,up=false,waterlogged=false,west=tall]", + "1261": "minecraft:red_nether_brick_wall[east=tall,north=low,south=low,up=true,waterlogged=true,west=none]", + "1262": "minecraft:red_nether_brick_wall[east=tall,north=low,south=low,up=true,waterlogged=true,west=low]", + "1263": "minecraft:red_nether_brick_wall[east=tall,north=low,south=low,up=true,waterlogged=true,west=tall]", + "1264": "minecraft:red_nether_brick_wall[east=tall,north=low,south=low,up=true,waterlogged=false,west=none]", + "1265": "minecraft:red_nether_brick_wall[east=tall,north=low,south=low,up=true,waterlogged=false,west=low]", + "1266": "minecraft:red_nether_brick_wall[east=tall,north=low,south=low,up=true,waterlogged=false,west=tall]", + "1267": "minecraft:red_nether_brick_wall[east=tall,north=low,south=low,up=false,waterlogged=true,west=none]", + "1268": "minecraft:red_nether_brick_wall[east=tall,north=low,south=low,up=false,waterlogged=true,west=low]", + "1269": "minecraft:red_nether_brick_wall[east=tall,north=low,south=low,up=false,waterlogged=true,west=tall]", + "1270": "minecraft:red_nether_brick_wall[east=tall,north=low,south=low,up=false,waterlogged=false,west=none]", + "1271": "minecraft:red_nether_brick_wall[east=tall,north=low,south=low,up=false,waterlogged=false,west=low]", + "1272": "minecraft:red_nether_brick_wall[east=tall,north=low,south=low,up=false,waterlogged=false,west=tall]", + "1273": "minecraft:red_nether_brick_wall[east=tall,north=low,south=tall,up=true,waterlogged=true,west=none]", + "1274": "minecraft:red_nether_brick_wall[east=tall,north=low,south=tall,up=true,waterlogged=true,west=low]", + "1275": "minecraft:red_nether_brick_wall[east=tall,north=low,south=tall,up=true,waterlogged=true,west=tall]", + "1276": "minecraft:red_nether_brick_wall[east=tall,north=low,south=tall,up=true,waterlogged=false,west=none]", + "1277": "minecraft:red_nether_brick_wall[east=tall,north=low,south=tall,up=true,waterlogged=false,west=low]", + "1278": "minecraft:red_nether_brick_wall[east=tall,north=low,south=tall,up=true,waterlogged=false,west=tall]", + "1279": "minecraft:red_nether_brick_wall[east=tall,north=low,south=tall,up=false,waterlogged=true,west=none]", + "1280": "minecraft:red_nether_brick_wall[east=tall,north=low,south=tall,up=false,waterlogged=true,west=low]", + "1281": "minecraft:red_nether_brick_wall[east=tall,north=low,south=tall,up=false,waterlogged=true,west=tall]", + "1282": "minecraft:red_nether_brick_wall[east=tall,north=low,south=tall,up=false,waterlogged=false,west=none]", + "1283": "minecraft:red_nether_brick_wall[east=tall,north=low,south=tall,up=false,waterlogged=false,west=low]", + "1284": "minecraft:red_nether_brick_wall[east=tall,north=low,south=tall,up=false,waterlogged=false,west=tall]", + "1285": "minecraft:red_nether_brick_wall[east=tall,north=tall,south=none,up=true,waterlogged=true,west=none]", + "1286": "minecraft:red_nether_brick_wall[east=tall,north=tall,south=none,up=true,waterlogged=true,west=low]", + "1287": "minecraft:red_nether_brick_wall[east=tall,north=tall,south=none,up=true,waterlogged=true,west=tall]", + "1288": "minecraft:red_nether_brick_wall[east=tall,north=tall,south=none,up=true,waterlogged=false,west=none]", + "1289": "minecraft:red_nether_brick_wall[east=tall,north=tall,south=none,up=true,waterlogged=false,west=low]", + "1290": "minecraft:red_nether_brick_wall[east=tall,north=tall,south=none,up=true,waterlogged=false,west=tall]", + "1291": "minecraft:red_nether_brick_wall[east=tall,north=tall,south=none,up=false,waterlogged=true,west=none]", + "1292": "minecraft:red_nether_brick_wall[east=tall,north=tall,south=none,up=false,waterlogged=true,west=low]", + "1293": "minecraft:red_nether_brick_wall[east=tall,north=tall,south=none,up=false,waterlogged=true,west=tall]", + "1294": "minecraft:red_nether_brick_wall[east=tall,north=tall,south=none,up=false,waterlogged=false,west=none]", + "1295": "minecraft:red_nether_brick_wall[east=tall,north=tall,south=none,up=false,waterlogged=false,west=low]", + "1296": "minecraft:red_nether_brick_wall[east=tall,north=tall,south=none,up=false,waterlogged=false,west=tall]", + "1297": "minecraft:red_nether_brick_wall[east=tall,north=tall,south=low,up=true,waterlogged=true,west=none]", + "1298": "minecraft:red_nether_brick_wall[east=tall,north=tall,south=low,up=true,waterlogged=true,west=low]", + "1299": "minecraft:red_nether_brick_wall[east=tall,north=tall,south=low,up=true,waterlogged=true,west=tall]", + "1300": "minecraft:red_nether_brick_wall[east=tall,north=tall,south=low,up=true,waterlogged=false,west=none]", + "1301": "minecraft:red_nether_brick_wall[east=tall,north=tall,south=low,up=true,waterlogged=false,west=low]", + "1302": "minecraft:red_nether_brick_wall[east=tall,north=tall,south=low,up=true,waterlogged=false,west=tall]", + "1303": "minecraft:red_nether_brick_wall[east=tall,north=tall,south=low,up=false,waterlogged=true,west=none]", + "1304": "minecraft:red_nether_brick_wall[east=tall,north=tall,south=low,up=false,waterlogged=true,west=low]", + "1305": "minecraft:red_nether_brick_wall[east=tall,north=tall,south=low,up=false,waterlogged=true,west=tall]", + "1306": "minecraft:red_nether_brick_wall[east=tall,north=tall,south=low,up=false,waterlogged=false,west=none]", + "1307": "minecraft:red_nether_brick_wall[east=tall,north=tall,south=low,up=false,waterlogged=false,west=low]", + "1308": "minecraft:red_nether_brick_wall[east=tall,north=tall,south=low,up=false,waterlogged=false,west=tall]", + "1309": "minecraft:red_nether_brick_wall[east=tall,north=tall,south=tall,up=true,waterlogged=true,west=none]", + "1310": "minecraft:red_nether_brick_wall[east=tall,north=tall,south=tall,up=true,waterlogged=true,west=low]", + "1311": "minecraft:red_nether_brick_wall[east=tall,north=tall,south=tall,up=true,waterlogged=true,west=tall]", + "1312": "minecraft:red_nether_brick_wall[east=tall,north=tall,south=tall,up=true,waterlogged=false,west=none]", + "1313": "minecraft:red_nether_brick_wall[east=tall,north=tall,south=tall,up=true,waterlogged=false,west=low]", + "1314": "minecraft:red_nether_brick_wall[east=tall,north=tall,south=tall,up=true,waterlogged=false,west=tall]", + "1315": "minecraft:red_nether_brick_wall[east=tall,north=tall,south=tall,up=false,waterlogged=true,west=none]", + "1316": "minecraft:red_nether_brick_wall[east=tall,north=tall,south=tall,up=false,waterlogged=true,west=low]", + "1317": "minecraft:red_nether_brick_wall[east=tall,north=tall,south=tall,up=false,waterlogged=true,west=tall]", + "1318": "minecraft:red_nether_brick_wall[east=tall,north=tall,south=tall,up=false,waterlogged=false,west=none]", + "1319": "minecraft:red_nether_brick_wall[east=tall,north=tall,south=tall,up=false,waterlogged=false,west=low]", + "1320": "minecraft:red_nether_brick_wall[east=tall,north=tall,south=tall,up=false,waterlogged=false,west=tall]", + "1321": "minecraft:brewing_stand[has_bottle_0=true,has_bottle_1=true,has_bottle_2=true]", + "1322": "minecraft:brewing_stand[has_bottle_0=true,has_bottle_1=true,has_bottle_2=false]", + "1323": "minecraft:brewing_stand[has_bottle_0=true,has_bottle_1=false,has_bottle_2=true]", + "1324": "minecraft:brewing_stand[has_bottle_0=true,has_bottle_1=false,has_bottle_2=false]", + "1325": "minecraft:brewing_stand[has_bottle_0=false,has_bottle_1=true,has_bottle_2=true]", + "1326": "minecraft:brewing_stand[has_bottle_0=false,has_bottle_1=true,has_bottle_2=false]", + "1327": "minecraft:brewing_stand[has_bottle_0=false,has_bottle_1=false,has_bottle_2=true]", + "1328": "minecraft:brewing_stand[has_bottle_0=false,has_bottle_1=false,has_bottle_2=false]", + "1329": "minecraft:horn_coral[waterlogged=true]", + "1330": "minecraft:horn_coral[waterlogged=false]", + "1331": "minecraft:tnt[unstable=true]", + "1332": "minecraft:tnt[unstable=false]", + "1333": "minecraft:dragon_wall_head[facing=north]", + "1334": "minecraft:dragon_wall_head[facing=south]", + "1335": "minecraft:dragon_wall_head[facing=west]", + "1336": "minecraft:dragon_wall_head[facing=east]", + "1337": "minecraft:pink_glazed_terracotta[facing=north]", + "1338": "minecraft:pink_glazed_terracotta[facing=south]", + "1339": "minecraft:pink_glazed_terracotta[facing=west]", + "1340": "minecraft:pink_glazed_terracotta[facing=east]", + "1341": "minecraft:yellow_glazed_terracotta[facing=north]", + "1342": "minecraft:yellow_glazed_terracotta[facing=south]", + "1343": "minecraft:yellow_glazed_terracotta[facing=west]", + "1344": "minecraft:yellow_glazed_terracotta[facing=east]", + "1345": "minecraft:netherrack", + "1346": "minecraft:soul_soil", + "1347": "minecraft:brick_wall[east=none,north=none,south=none,up=true,waterlogged=true,west=none]", + "1348": "minecraft:brick_wall[east=none,north=none,south=none,up=true,waterlogged=true,west=low]", + "1349": "minecraft:brick_wall[east=none,north=none,south=none,up=true,waterlogged=true,west=tall]", + "1350": "minecraft:brick_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=none]", + "1351": "minecraft:brick_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=low]", + "1352": "minecraft:brick_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=tall]", + "1353": "minecraft:brick_wall[east=none,north=none,south=none,up=false,waterlogged=true,west=none]", + "1354": "minecraft:brick_wall[east=none,north=none,south=none,up=false,waterlogged=true,west=low]", + "1355": "minecraft:brick_wall[east=none,north=none,south=none,up=false,waterlogged=true,west=tall]", + "1356": "minecraft:brick_wall[east=none,north=none,south=none,up=false,waterlogged=false,west=none]", + "1357": "minecraft:brick_wall[east=none,north=none,south=none,up=false,waterlogged=false,west=low]", + "1358": "minecraft:brick_wall[east=none,north=none,south=none,up=false,waterlogged=false,west=tall]", + "1359": "minecraft:brick_wall[east=none,north=none,south=low,up=true,waterlogged=true,west=none]", + "1360": "minecraft:brick_wall[east=none,north=none,south=low,up=true,waterlogged=true,west=low]", + "1361": "minecraft:brick_wall[east=none,north=none,south=low,up=true,waterlogged=true,west=tall]", + "1362": "minecraft:brick_wall[east=none,north=none,south=low,up=true,waterlogged=false,west=none]", + "1363": "minecraft:brick_wall[east=none,north=none,south=low,up=true,waterlogged=false,west=low]", + "1364": "minecraft:brick_wall[east=none,north=none,south=low,up=true,waterlogged=false,west=tall]", + "1365": "minecraft:brick_wall[east=none,north=none,south=low,up=false,waterlogged=true,west=none]", + "1366": "minecraft:brick_wall[east=none,north=none,south=low,up=false,waterlogged=true,west=low]", + "1367": "minecraft:brick_wall[east=none,north=none,south=low,up=false,waterlogged=true,west=tall]", + "1368": "minecraft:brick_wall[east=none,north=none,south=low,up=false,waterlogged=false,west=none]", + "1369": "minecraft:brick_wall[east=none,north=none,south=low,up=false,waterlogged=false,west=low]", + "1370": "minecraft:brick_wall[east=none,north=none,south=low,up=false,waterlogged=false,west=tall]", + "1371": "minecraft:brick_wall[east=none,north=none,south=tall,up=true,waterlogged=true,west=none]", + "1372": "minecraft:brick_wall[east=none,north=none,south=tall,up=true,waterlogged=true,west=low]", + "1373": "minecraft:brick_wall[east=none,north=none,south=tall,up=true,waterlogged=true,west=tall]", + "1374": "minecraft:brick_wall[east=none,north=none,south=tall,up=true,waterlogged=false,west=none]", + "1375": "minecraft:brick_wall[east=none,north=none,south=tall,up=true,waterlogged=false,west=low]", + "1376": "minecraft:brick_wall[east=none,north=none,south=tall,up=true,waterlogged=false,west=tall]", + "1377": "minecraft:brick_wall[east=none,north=none,south=tall,up=false,waterlogged=true,west=none]", + "1378": "minecraft:brick_wall[east=none,north=none,south=tall,up=false,waterlogged=true,west=low]", + "1379": "minecraft:brick_wall[east=none,north=none,south=tall,up=false,waterlogged=true,west=tall]", + "1380": "minecraft:brick_wall[east=none,north=none,south=tall,up=false,waterlogged=false,west=none]", + "1381": "minecraft:brick_wall[east=none,north=none,south=tall,up=false,waterlogged=false,west=low]", + "1382": "minecraft:brick_wall[east=none,north=none,south=tall,up=false,waterlogged=false,west=tall]", + "1383": "minecraft:brick_wall[east=none,north=low,south=none,up=true,waterlogged=true,west=none]", + "1384": "minecraft:brick_wall[east=none,north=low,south=none,up=true,waterlogged=true,west=low]", + "1385": "minecraft:brick_wall[east=none,north=low,south=none,up=true,waterlogged=true,west=tall]", + "1386": "minecraft:brick_wall[east=none,north=low,south=none,up=true,waterlogged=false,west=none]", + "1387": "minecraft:brick_wall[east=none,north=low,south=none,up=true,waterlogged=false,west=low]", + "1388": "minecraft:brick_wall[east=none,north=low,south=none,up=true,waterlogged=false,west=tall]", + "1389": "minecraft:brick_wall[east=none,north=low,south=none,up=false,waterlogged=true,west=none]", + "1390": "minecraft:brick_wall[east=none,north=low,south=none,up=false,waterlogged=true,west=low]", + "1391": "minecraft:brick_wall[east=none,north=low,south=none,up=false,waterlogged=true,west=tall]", + "1392": "minecraft:brick_wall[east=none,north=low,south=none,up=false,waterlogged=false,west=none]", + "1393": "minecraft:brick_wall[east=none,north=low,south=none,up=false,waterlogged=false,west=low]", + "1394": "minecraft:brick_wall[east=none,north=low,south=none,up=false,waterlogged=false,west=tall]", + "1395": "minecraft:brick_wall[east=none,north=low,south=low,up=true,waterlogged=true,west=none]", + "1396": "minecraft:brick_wall[east=none,north=low,south=low,up=true,waterlogged=true,west=low]", + "1397": "minecraft:brick_wall[east=none,north=low,south=low,up=true,waterlogged=true,west=tall]", + "1398": "minecraft:brick_wall[east=none,north=low,south=low,up=true,waterlogged=false,west=none]", + "1399": "minecraft:brick_wall[east=none,north=low,south=low,up=true,waterlogged=false,west=low]", + "1400": "minecraft:brick_wall[east=none,north=low,south=low,up=true,waterlogged=false,west=tall]", + "1401": "minecraft:brick_wall[east=none,north=low,south=low,up=false,waterlogged=true,west=none]", + "1402": "minecraft:brick_wall[east=none,north=low,south=low,up=false,waterlogged=true,west=low]", + "1403": "minecraft:brick_wall[east=none,north=low,south=low,up=false,waterlogged=true,west=tall]", + "1404": "minecraft:brick_wall[east=none,north=low,south=low,up=false,waterlogged=false,west=none]", + "1405": "minecraft:brick_wall[east=none,north=low,south=low,up=false,waterlogged=false,west=low]", + "1406": "minecraft:brick_wall[east=none,north=low,south=low,up=false,waterlogged=false,west=tall]", + "1407": "minecraft:brick_wall[east=none,north=low,south=tall,up=true,waterlogged=true,west=none]", + "1408": "minecraft:brick_wall[east=none,north=low,south=tall,up=true,waterlogged=true,west=low]", + "1409": "minecraft:brick_wall[east=none,north=low,south=tall,up=true,waterlogged=true,west=tall]", + "1410": "minecraft:brick_wall[east=none,north=low,south=tall,up=true,waterlogged=false,west=none]", + "1411": "minecraft:brick_wall[east=none,north=low,south=tall,up=true,waterlogged=false,west=low]", + "1412": "minecraft:brick_wall[east=none,north=low,south=tall,up=true,waterlogged=false,west=tall]", + "1413": "minecraft:brick_wall[east=none,north=low,south=tall,up=false,waterlogged=true,west=none]", + "1414": "minecraft:brick_wall[east=none,north=low,south=tall,up=false,waterlogged=true,west=low]", + "1415": "minecraft:brick_wall[east=none,north=low,south=tall,up=false,waterlogged=true,west=tall]", + "1416": "minecraft:brick_wall[east=none,north=low,south=tall,up=false,waterlogged=false,west=none]", + "1417": "minecraft:brick_wall[east=none,north=low,south=tall,up=false,waterlogged=false,west=low]", + "1418": "minecraft:brick_wall[east=none,north=low,south=tall,up=false,waterlogged=false,west=tall]", + "1419": "minecraft:brick_wall[east=none,north=tall,south=none,up=true,waterlogged=true,west=none]", + "1420": "minecraft:brick_wall[east=none,north=tall,south=none,up=true,waterlogged=true,west=low]", + "1421": "minecraft:brick_wall[east=none,north=tall,south=none,up=true,waterlogged=true,west=tall]", + "1422": "minecraft:brick_wall[east=none,north=tall,south=none,up=true,waterlogged=false,west=none]", + "1423": "minecraft:brick_wall[east=none,north=tall,south=none,up=true,waterlogged=false,west=low]", + "1424": "minecraft:brick_wall[east=none,north=tall,south=none,up=true,waterlogged=false,west=tall]", + "1425": "minecraft:brick_wall[east=none,north=tall,south=none,up=false,waterlogged=true,west=none]", + "1426": "minecraft:brick_wall[east=none,north=tall,south=none,up=false,waterlogged=true,west=low]", + "1427": "minecraft:brick_wall[east=none,north=tall,south=none,up=false,waterlogged=true,west=tall]", + "1428": "minecraft:brick_wall[east=none,north=tall,south=none,up=false,waterlogged=false,west=none]", + "1429": "minecraft:brick_wall[east=none,north=tall,south=none,up=false,waterlogged=false,west=low]", + "1430": "minecraft:brick_wall[east=none,north=tall,south=none,up=false,waterlogged=false,west=tall]", + "1431": "minecraft:brick_wall[east=none,north=tall,south=low,up=true,waterlogged=true,west=none]", + "1432": "minecraft:brick_wall[east=none,north=tall,south=low,up=true,waterlogged=true,west=low]", + "1433": "minecraft:brick_wall[east=none,north=tall,south=low,up=true,waterlogged=true,west=tall]", + "1434": "minecraft:brick_wall[east=none,north=tall,south=low,up=true,waterlogged=false,west=none]", + "1435": "minecraft:brick_wall[east=none,north=tall,south=low,up=true,waterlogged=false,west=low]", + "1436": "minecraft:brick_wall[east=none,north=tall,south=low,up=true,waterlogged=false,west=tall]", + "1437": "minecraft:brick_wall[east=none,north=tall,south=low,up=false,waterlogged=true,west=none]", + "1438": "minecraft:brick_wall[east=none,north=tall,south=low,up=false,waterlogged=true,west=low]", + "1439": "minecraft:brick_wall[east=none,north=tall,south=low,up=false,waterlogged=true,west=tall]", + "1440": "minecraft:brick_wall[east=none,north=tall,south=low,up=false,waterlogged=false,west=none]", + "1441": "minecraft:brick_wall[east=none,north=tall,south=low,up=false,waterlogged=false,west=low]", + "1442": "minecraft:brick_wall[east=none,north=tall,south=low,up=false,waterlogged=false,west=tall]", + "1443": "minecraft:brick_wall[east=none,north=tall,south=tall,up=true,waterlogged=true,west=none]", + "1444": "minecraft:brick_wall[east=none,north=tall,south=tall,up=true,waterlogged=true,west=low]", + "1445": "minecraft:brick_wall[east=none,north=tall,south=tall,up=true,waterlogged=true,west=tall]", + "1446": "minecraft:brick_wall[east=none,north=tall,south=tall,up=true,waterlogged=false,west=none]", + "1447": "minecraft:brick_wall[east=none,north=tall,south=tall,up=true,waterlogged=false,west=low]", + "1448": "minecraft:brick_wall[east=none,north=tall,south=tall,up=true,waterlogged=false,west=tall]", + "1449": "minecraft:brick_wall[east=none,north=tall,south=tall,up=false,waterlogged=true,west=none]", + "1450": "minecraft:brick_wall[east=none,north=tall,south=tall,up=false,waterlogged=true,west=low]", + "1451": "minecraft:brick_wall[east=none,north=tall,south=tall,up=false,waterlogged=true,west=tall]", + "1452": "minecraft:brick_wall[east=none,north=tall,south=tall,up=false,waterlogged=false,west=none]", + "1453": "minecraft:brick_wall[east=none,north=tall,south=tall,up=false,waterlogged=false,west=low]", + "1454": "minecraft:brick_wall[east=none,north=tall,south=tall,up=false,waterlogged=false,west=tall]", + "1455": "minecraft:brick_wall[east=low,north=none,south=none,up=true,waterlogged=true,west=none]", + "1456": "minecraft:brick_wall[east=low,north=none,south=none,up=true,waterlogged=true,west=low]", + "1457": "minecraft:brick_wall[east=low,north=none,south=none,up=true,waterlogged=true,west=tall]", + "1458": "minecraft:brick_wall[east=low,north=none,south=none,up=true,waterlogged=false,west=none]", + "1459": "minecraft:brick_wall[east=low,north=none,south=none,up=true,waterlogged=false,west=low]", + "1460": "minecraft:brick_wall[east=low,north=none,south=none,up=true,waterlogged=false,west=tall]", + "1461": "minecraft:brick_wall[east=low,north=none,south=none,up=false,waterlogged=true,west=none]", + "1462": "minecraft:brick_wall[east=low,north=none,south=none,up=false,waterlogged=true,west=low]", + "1463": "minecraft:brick_wall[east=low,north=none,south=none,up=false,waterlogged=true,west=tall]", + "1464": "minecraft:brick_wall[east=low,north=none,south=none,up=false,waterlogged=false,west=none]", + "1465": "minecraft:brick_wall[east=low,north=none,south=none,up=false,waterlogged=false,west=low]", + "1466": "minecraft:brick_wall[east=low,north=none,south=none,up=false,waterlogged=false,west=tall]", + "1467": "minecraft:brick_wall[east=low,north=none,south=low,up=true,waterlogged=true,west=none]", + "1468": "minecraft:brick_wall[east=low,north=none,south=low,up=true,waterlogged=true,west=low]", + "1469": "minecraft:brick_wall[east=low,north=none,south=low,up=true,waterlogged=true,west=tall]", + "1470": "minecraft:brick_wall[east=low,north=none,south=low,up=true,waterlogged=false,west=none]", + "1471": "minecraft:brick_wall[east=low,north=none,south=low,up=true,waterlogged=false,west=low]", + "1472": "minecraft:brick_wall[east=low,north=none,south=low,up=true,waterlogged=false,west=tall]", + "1473": "minecraft:brick_wall[east=low,north=none,south=low,up=false,waterlogged=true,west=none]", + "1474": "minecraft:brick_wall[east=low,north=none,south=low,up=false,waterlogged=true,west=low]", + "1475": "minecraft:brick_wall[east=low,north=none,south=low,up=false,waterlogged=true,west=tall]", + "1476": "minecraft:brick_wall[east=low,north=none,south=low,up=false,waterlogged=false,west=none]", + "1477": "minecraft:brick_wall[east=low,north=none,south=low,up=false,waterlogged=false,west=low]", + "1478": "minecraft:brick_wall[east=low,north=none,south=low,up=false,waterlogged=false,west=tall]", + "1479": "minecraft:brick_wall[east=low,north=none,south=tall,up=true,waterlogged=true,west=none]", + "1480": "minecraft:brick_wall[east=low,north=none,south=tall,up=true,waterlogged=true,west=low]", + "1481": "minecraft:brick_wall[east=low,north=none,south=tall,up=true,waterlogged=true,west=tall]", + "1482": "minecraft:brick_wall[east=low,north=none,south=tall,up=true,waterlogged=false,west=none]", + "1483": "minecraft:brick_wall[east=low,north=none,south=tall,up=true,waterlogged=false,west=low]", + "1484": "minecraft:brick_wall[east=low,north=none,south=tall,up=true,waterlogged=false,west=tall]", + "1485": "minecraft:brick_wall[east=low,north=none,south=tall,up=false,waterlogged=true,west=none]", + "1486": "minecraft:brick_wall[east=low,north=none,south=tall,up=false,waterlogged=true,west=low]", + "1487": "minecraft:brick_wall[east=low,north=none,south=tall,up=false,waterlogged=true,west=tall]", + "1488": "minecraft:brick_wall[east=low,north=none,south=tall,up=false,waterlogged=false,west=none]", + "1489": "minecraft:brick_wall[east=low,north=none,south=tall,up=false,waterlogged=false,west=low]", + "1490": "minecraft:brick_wall[east=low,north=none,south=tall,up=false,waterlogged=false,west=tall]", + "1491": "minecraft:brick_wall[east=low,north=low,south=none,up=true,waterlogged=true,west=none]", + "1492": "minecraft:brick_wall[east=low,north=low,south=none,up=true,waterlogged=true,west=low]", + "1493": "minecraft:brick_wall[east=low,north=low,south=none,up=true,waterlogged=true,west=tall]", + "1494": "minecraft:brick_wall[east=low,north=low,south=none,up=true,waterlogged=false,west=none]", + "1495": "minecraft:brick_wall[east=low,north=low,south=none,up=true,waterlogged=false,west=low]", + "1496": "minecraft:brick_wall[east=low,north=low,south=none,up=true,waterlogged=false,west=tall]", + "1497": "minecraft:brick_wall[east=low,north=low,south=none,up=false,waterlogged=true,west=none]", + "1498": "minecraft:brick_wall[east=low,north=low,south=none,up=false,waterlogged=true,west=low]", + "1499": "minecraft:brick_wall[east=low,north=low,south=none,up=false,waterlogged=true,west=tall]", + "1500": "minecraft:brick_wall[east=low,north=low,south=none,up=false,waterlogged=false,west=none]", + "1501": "minecraft:brick_wall[east=low,north=low,south=none,up=false,waterlogged=false,west=low]", + "1502": "minecraft:brick_wall[east=low,north=low,south=none,up=false,waterlogged=false,west=tall]", + "1503": "minecraft:brick_wall[east=low,north=low,south=low,up=true,waterlogged=true,west=none]", + "1504": "minecraft:brick_wall[east=low,north=low,south=low,up=true,waterlogged=true,west=low]", + "1505": "minecraft:brick_wall[east=low,north=low,south=low,up=true,waterlogged=true,west=tall]", + "1506": "minecraft:brick_wall[east=low,north=low,south=low,up=true,waterlogged=false,west=none]", + "1507": "minecraft:brick_wall[east=low,north=low,south=low,up=true,waterlogged=false,west=low]", + "1508": "minecraft:brick_wall[east=low,north=low,south=low,up=true,waterlogged=false,west=tall]", + "1509": "minecraft:brick_wall[east=low,north=low,south=low,up=false,waterlogged=true,west=none]", + "1510": "minecraft:brick_wall[east=low,north=low,south=low,up=false,waterlogged=true,west=low]", + "1511": "minecraft:brick_wall[east=low,north=low,south=low,up=false,waterlogged=true,west=tall]", + "1512": "minecraft:brick_wall[east=low,north=low,south=low,up=false,waterlogged=false,west=none]", + "1513": "minecraft:brick_wall[east=low,north=low,south=low,up=false,waterlogged=false,west=low]", + "1514": "minecraft:brick_wall[east=low,north=low,south=low,up=false,waterlogged=false,west=tall]", + "1515": "minecraft:brick_wall[east=low,north=low,south=tall,up=true,waterlogged=true,west=none]", + "1516": "minecraft:brick_wall[east=low,north=low,south=tall,up=true,waterlogged=true,west=low]", + "1517": "minecraft:brick_wall[east=low,north=low,south=tall,up=true,waterlogged=true,west=tall]", + "1518": "minecraft:brick_wall[east=low,north=low,south=tall,up=true,waterlogged=false,west=none]", + "1519": "minecraft:brick_wall[east=low,north=low,south=tall,up=true,waterlogged=false,west=low]", + "1520": "minecraft:brick_wall[east=low,north=low,south=tall,up=true,waterlogged=false,west=tall]", + "1521": "minecraft:brick_wall[east=low,north=low,south=tall,up=false,waterlogged=true,west=none]", + "1522": "minecraft:brick_wall[east=low,north=low,south=tall,up=false,waterlogged=true,west=low]", + "1523": "minecraft:brick_wall[east=low,north=low,south=tall,up=false,waterlogged=true,west=tall]", + "1524": "minecraft:brick_wall[east=low,north=low,south=tall,up=false,waterlogged=false,west=none]", + "1525": "minecraft:brick_wall[east=low,north=low,south=tall,up=false,waterlogged=false,west=low]", + "1526": "minecraft:brick_wall[east=low,north=low,south=tall,up=false,waterlogged=false,west=tall]", + "1527": "minecraft:brick_wall[east=low,north=tall,south=none,up=true,waterlogged=true,west=none]", + "1528": "minecraft:brick_wall[east=low,north=tall,south=none,up=true,waterlogged=true,west=low]", + "1529": "minecraft:brick_wall[east=low,north=tall,south=none,up=true,waterlogged=true,west=tall]", + "1530": "minecraft:brick_wall[east=low,north=tall,south=none,up=true,waterlogged=false,west=none]", + "1531": "minecraft:brick_wall[east=low,north=tall,south=none,up=true,waterlogged=false,west=low]", + "1532": "minecraft:brick_wall[east=low,north=tall,south=none,up=true,waterlogged=false,west=tall]", + "1533": "minecraft:brick_wall[east=low,north=tall,south=none,up=false,waterlogged=true,west=none]", + "1534": "minecraft:brick_wall[east=low,north=tall,south=none,up=false,waterlogged=true,west=low]", + "1535": "minecraft:brick_wall[east=low,north=tall,south=none,up=false,waterlogged=true,west=tall]", + "1536": "minecraft:brick_wall[east=low,north=tall,south=none,up=false,waterlogged=false,west=none]", + "1537": "minecraft:brick_wall[east=low,north=tall,south=none,up=false,waterlogged=false,west=low]", + "1538": "minecraft:brick_wall[east=low,north=tall,south=none,up=false,waterlogged=false,west=tall]", + "1539": "minecraft:brick_wall[east=low,north=tall,south=low,up=true,waterlogged=true,west=none]", + "1540": "minecraft:brick_wall[east=low,north=tall,south=low,up=true,waterlogged=true,west=low]", + "1541": "minecraft:brick_wall[east=low,north=tall,south=low,up=true,waterlogged=true,west=tall]", + "1542": "minecraft:brick_wall[east=low,north=tall,south=low,up=true,waterlogged=false,west=none]", + "1543": "minecraft:brick_wall[east=low,north=tall,south=low,up=true,waterlogged=false,west=low]", + "1544": "minecraft:brick_wall[east=low,north=tall,south=low,up=true,waterlogged=false,west=tall]", + "1545": "minecraft:brick_wall[east=low,north=tall,south=low,up=false,waterlogged=true,west=none]", + "1546": "minecraft:brick_wall[east=low,north=tall,south=low,up=false,waterlogged=true,west=low]", + "1547": "minecraft:brick_wall[east=low,north=tall,south=low,up=false,waterlogged=true,west=tall]", + "1548": "minecraft:brick_wall[east=low,north=tall,south=low,up=false,waterlogged=false,west=none]", + "1549": "minecraft:brick_wall[east=low,north=tall,south=low,up=false,waterlogged=false,west=low]", + "1550": "minecraft:brick_wall[east=low,north=tall,south=low,up=false,waterlogged=false,west=tall]", + "1551": "minecraft:brick_wall[east=low,north=tall,south=tall,up=true,waterlogged=true,west=none]", + "1552": "minecraft:brick_wall[east=low,north=tall,south=tall,up=true,waterlogged=true,west=low]", + "1553": "minecraft:brick_wall[east=low,north=tall,south=tall,up=true,waterlogged=true,west=tall]", + "1554": "minecraft:brick_wall[east=low,north=tall,south=tall,up=true,waterlogged=false,west=none]", + "1555": "minecraft:brick_wall[east=low,north=tall,south=tall,up=true,waterlogged=false,west=low]", + "1556": "minecraft:brick_wall[east=low,north=tall,south=tall,up=true,waterlogged=false,west=tall]", + "1557": "minecraft:brick_wall[east=low,north=tall,south=tall,up=false,waterlogged=true,west=none]", + "1558": "minecraft:brick_wall[east=low,north=tall,south=tall,up=false,waterlogged=true,west=low]", + "1559": "minecraft:brick_wall[east=low,north=tall,south=tall,up=false,waterlogged=true,west=tall]", + "1560": "minecraft:brick_wall[east=low,north=tall,south=tall,up=false,waterlogged=false,west=none]", + "1561": "minecraft:brick_wall[east=low,north=tall,south=tall,up=false,waterlogged=false,west=low]", + "1562": "minecraft:brick_wall[east=low,north=tall,south=tall,up=false,waterlogged=false,west=tall]", + "1563": "minecraft:brick_wall[east=tall,north=none,south=none,up=true,waterlogged=true,west=none]", + "1564": "minecraft:brick_wall[east=tall,north=none,south=none,up=true,waterlogged=true,west=low]", + "1565": "minecraft:brick_wall[east=tall,north=none,south=none,up=true,waterlogged=true,west=tall]", + "1566": "minecraft:brick_wall[east=tall,north=none,south=none,up=true,waterlogged=false,west=none]", + "1567": "minecraft:brick_wall[east=tall,north=none,south=none,up=true,waterlogged=false,west=low]", + "1568": "minecraft:brick_wall[east=tall,north=none,south=none,up=true,waterlogged=false,west=tall]", + "1569": "minecraft:brick_wall[east=tall,north=none,south=none,up=false,waterlogged=true,west=none]", + "1570": "minecraft:brick_wall[east=tall,north=none,south=none,up=false,waterlogged=true,west=low]", + "1571": "minecraft:brick_wall[east=tall,north=none,south=none,up=false,waterlogged=true,west=tall]", + "1572": "minecraft:brick_wall[east=tall,north=none,south=none,up=false,waterlogged=false,west=none]", + "1573": "minecraft:brick_wall[east=tall,north=none,south=none,up=false,waterlogged=false,west=low]", + "1574": "minecraft:brick_wall[east=tall,north=none,south=none,up=false,waterlogged=false,west=tall]", + "1575": "minecraft:brick_wall[east=tall,north=none,south=low,up=true,waterlogged=true,west=none]", + "1576": "minecraft:brick_wall[east=tall,north=none,south=low,up=true,waterlogged=true,west=low]", + "1577": "minecraft:brick_wall[east=tall,north=none,south=low,up=true,waterlogged=true,west=tall]", + "1578": "minecraft:brick_wall[east=tall,north=none,south=low,up=true,waterlogged=false,west=none]", + "1579": "minecraft:brick_wall[east=tall,north=none,south=low,up=true,waterlogged=false,west=low]", + "1580": "minecraft:brick_wall[east=tall,north=none,south=low,up=true,waterlogged=false,west=tall]", + "1581": "minecraft:brick_wall[east=tall,north=none,south=low,up=false,waterlogged=true,west=none]", + "1582": "minecraft:brick_wall[east=tall,north=none,south=low,up=false,waterlogged=true,west=low]", + "1583": "minecraft:brick_wall[east=tall,north=none,south=low,up=false,waterlogged=true,west=tall]", + "1584": "minecraft:brick_wall[east=tall,north=none,south=low,up=false,waterlogged=false,west=none]", + "1585": "minecraft:brick_wall[east=tall,north=none,south=low,up=false,waterlogged=false,west=low]", + "1586": "minecraft:brick_wall[east=tall,north=none,south=low,up=false,waterlogged=false,west=tall]", + "1587": "minecraft:brick_wall[east=tall,north=none,south=tall,up=true,waterlogged=true,west=none]", + "1588": "minecraft:brick_wall[east=tall,north=none,south=tall,up=true,waterlogged=true,west=low]", + "1589": "minecraft:brick_wall[east=tall,north=none,south=tall,up=true,waterlogged=true,west=tall]", + "1590": "minecraft:brick_wall[east=tall,north=none,south=tall,up=true,waterlogged=false,west=none]", + "1591": "minecraft:brick_wall[east=tall,north=none,south=tall,up=true,waterlogged=false,west=low]", + "1592": "minecraft:brick_wall[east=tall,north=none,south=tall,up=true,waterlogged=false,west=tall]", + "1593": "minecraft:brick_wall[east=tall,north=none,south=tall,up=false,waterlogged=true,west=none]", + "1594": "minecraft:brick_wall[east=tall,north=none,south=tall,up=false,waterlogged=true,west=low]", + "1595": "minecraft:brick_wall[east=tall,north=none,south=tall,up=false,waterlogged=true,west=tall]", + "1596": "minecraft:brick_wall[east=tall,north=none,south=tall,up=false,waterlogged=false,west=none]", + "1597": "minecraft:brick_wall[east=tall,north=none,south=tall,up=false,waterlogged=false,west=low]", + "1598": "minecraft:brick_wall[east=tall,north=none,south=tall,up=false,waterlogged=false,west=tall]", + "1599": "minecraft:brick_wall[east=tall,north=low,south=none,up=true,waterlogged=true,west=none]", + "1600": "minecraft:brick_wall[east=tall,north=low,south=none,up=true,waterlogged=true,west=low]", + "1601": "minecraft:brick_wall[east=tall,north=low,south=none,up=true,waterlogged=true,west=tall]", + "1602": "minecraft:brick_wall[east=tall,north=low,south=none,up=true,waterlogged=false,west=none]", + "1603": "minecraft:brick_wall[east=tall,north=low,south=none,up=true,waterlogged=false,west=low]", + "1604": "minecraft:brick_wall[east=tall,north=low,south=none,up=true,waterlogged=false,west=tall]", + "1605": "minecraft:brick_wall[east=tall,north=low,south=none,up=false,waterlogged=true,west=none]", + "1606": "minecraft:brick_wall[east=tall,north=low,south=none,up=false,waterlogged=true,west=low]", + "1607": "minecraft:brick_wall[east=tall,north=low,south=none,up=false,waterlogged=true,west=tall]", + "1608": "minecraft:brick_wall[east=tall,north=low,south=none,up=false,waterlogged=false,west=none]", + "1609": "minecraft:brick_wall[east=tall,north=low,south=none,up=false,waterlogged=false,west=low]", + "1610": "minecraft:brick_wall[east=tall,north=low,south=none,up=false,waterlogged=false,west=tall]", + "1611": "minecraft:brick_wall[east=tall,north=low,south=low,up=true,waterlogged=true,west=none]", + "1612": "minecraft:brick_wall[east=tall,north=low,south=low,up=true,waterlogged=true,west=low]", + "1613": "minecraft:brick_wall[east=tall,north=low,south=low,up=true,waterlogged=true,west=tall]", + "1614": "minecraft:brick_wall[east=tall,north=low,south=low,up=true,waterlogged=false,west=none]", + "1615": "minecraft:brick_wall[east=tall,north=low,south=low,up=true,waterlogged=false,west=low]", + "1616": "minecraft:brick_wall[east=tall,north=low,south=low,up=true,waterlogged=false,west=tall]", + "1617": "minecraft:brick_wall[east=tall,north=low,south=low,up=false,waterlogged=true,west=none]", + "1618": "minecraft:brick_wall[east=tall,north=low,south=low,up=false,waterlogged=true,west=low]", + "1619": "minecraft:brick_wall[east=tall,north=low,south=low,up=false,waterlogged=true,west=tall]", + "1620": "minecraft:brick_wall[east=tall,north=low,south=low,up=false,waterlogged=false,west=none]", + "1621": "minecraft:brick_wall[east=tall,north=low,south=low,up=false,waterlogged=false,west=low]", + "1622": "minecraft:brick_wall[east=tall,north=low,south=low,up=false,waterlogged=false,west=tall]", + "1623": "minecraft:brick_wall[east=tall,north=low,south=tall,up=true,waterlogged=true,west=none]", + "1624": "minecraft:brick_wall[east=tall,north=low,south=tall,up=true,waterlogged=true,west=low]", + "1625": "minecraft:brick_wall[east=tall,north=low,south=tall,up=true,waterlogged=true,west=tall]", + "1626": "minecraft:brick_wall[east=tall,north=low,south=tall,up=true,waterlogged=false,west=none]", + "1627": "minecraft:brick_wall[east=tall,north=low,south=tall,up=true,waterlogged=false,west=low]", + "1628": "minecraft:brick_wall[east=tall,north=low,south=tall,up=true,waterlogged=false,west=tall]", + "1629": "minecraft:brick_wall[east=tall,north=low,south=tall,up=false,waterlogged=true,west=none]", + "1630": "minecraft:brick_wall[east=tall,north=low,south=tall,up=false,waterlogged=true,west=low]", + "1631": "minecraft:brick_wall[east=tall,north=low,south=tall,up=false,waterlogged=true,west=tall]", + "1632": "minecraft:brick_wall[east=tall,north=low,south=tall,up=false,waterlogged=false,west=none]", + "1633": "minecraft:brick_wall[east=tall,north=low,south=tall,up=false,waterlogged=false,west=low]", + "1634": "minecraft:brick_wall[east=tall,north=low,south=tall,up=false,waterlogged=false,west=tall]", + "1635": "minecraft:brick_wall[east=tall,north=tall,south=none,up=true,waterlogged=true,west=none]", + "1636": "minecraft:brick_wall[east=tall,north=tall,south=none,up=true,waterlogged=true,west=low]", + "1637": "minecraft:brick_wall[east=tall,north=tall,south=none,up=true,waterlogged=true,west=tall]", + "1638": "minecraft:brick_wall[east=tall,north=tall,south=none,up=true,waterlogged=false,west=none]", + "1639": "minecraft:brick_wall[east=tall,north=tall,south=none,up=true,waterlogged=false,west=low]", + "1640": "minecraft:brick_wall[east=tall,north=tall,south=none,up=true,waterlogged=false,west=tall]", + "1641": "minecraft:brick_wall[east=tall,north=tall,south=none,up=false,waterlogged=true,west=none]", + "1642": "minecraft:brick_wall[east=tall,north=tall,south=none,up=false,waterlogged=true,west=low]", + "1643": "minecraft:brick_wall[east=tall,north=tall,south=none,up=false,waterlogged=true,west=tall]", + "1644": "minecraft:brick_wall[east=tall,north=tall,south=none,up=false,waterlogged=false,west=none]", + "1645": "minecraft:brick_wall[east=tall,north=tall,south=none,up=false,waterlogged=false,west=low]", + "1646": "minecraft:brick_wall[east=tall,north=tall,south=none,up=false,waterlogged=false,west=tall]", + "1647": "minecraft:brick_wall[east=tall,north=tall,south=low,up=true,waterlogged=true,west=none]", + "1648": "minecraft:brick_wall[east=tall,north=tall,south=low,up=true,waterlogged=true,west=low]", + "1649": "minecraft:brick_wall[east=tall,north=tall,south=low,up=true,waterlogged=true,west=tall]", + "1650": "minecraft:brick_wall[east=tall,north=tall,south=low,up=true,waterlogged=false,west=none]", + "1651": "minecraft:brick_wall[east=tall,north=tall,south=low,up=true,waterlogged=false,west=low]", + "1652": "minecraft:brick_wall[east=tall,north=tall,south=low,up=true,waterlogged=false,west=tall]", + "1653": "minecraft:brick_wall[east=tall,north=tall,south=low,up=false,waterlogged=true,west=none]", + "1654": "minecraft:brick_wall[east=tall,north=tall,south=low,up=false,waterlogged=true,west=low]", + "1655": "minecraft:brick_wall[east=tall,north=tall,south=low,up=false,waterlogged=true,west=tall]", + "1656": "minecraft:brick_wall[east=tall,north=tall,south=low,up=false,waterlogged=false,west=none]", + "1657": "minecraft:brick_wall[east=tall,north=tall,south=low,up=false,waterlogged=false,west=low]", + "1658": "minecraft:brick_wall[east=tall,north=tall,south=low,up=false,waterlogged=false,west=tall]", + "1659": "minecraft:brick_wall[east=tall,north=tall,south=tall,up=true,waterlogged=true,west=none]", + "1660": "minecraft:brick_wall[east=tall,north=tall,south=tall,up=true,waterlogged=true,west=low]", + "1661": "minecraft:brick_wall[east=tall,north=tall,south=tall,up=true,waterlogged=true,west=tall]", + "1662": "minecraft:brick_wall[east=tall,north=tall,south=tall,up=true,waterlogged=false,west=none]", + "1663": "minecraft:brick_wall[east=tall,north=tall,south=tall,up=true,waterlogged=false,west=low]", + "1664": "minecraft:brick_wall[east=tall,north=tall,south=tall,up=true,waterlogged=false,west=tall]", + "1665": "minecraft:brick_wall[east=tall,north=tall,south=tall,up=false,waterlogged=true,west=none]", + "1666": "minecraft:brick_wall[east=tall,north=tall,south=tall,up=false,waterlogged=true,west=low]", + "1667": "minecraft:brick_wall[east=tall,north=tall,south=tall,up=false,waterlogged=true,west=tall]", + "1668": "minecraft:brick_wall[east=tall,north=tall,south=tall,up=false,waterlogged=false,west=none]", + "1669": "minecraft:brick_wall[east=tall,north=tall,south=tall,up=false,waterlogged=false,west=low]", + "1670": "minecraft:brick_wall[east=tall,north=tall,south=tall,up=false,waterlogged=false,west=tall]", + "1671": "minecraft:brown_shulker_box[facing=north]", + "1672": "minecraft:brown_shulker_box[facing=east]", + "1673": "minecraft:brown_shulker_box[facing=south]", + "1674": "minecraft:brown_shulker_box[facing=west]", + "1675": "minecraft:brown_shulker_box[facing=up]", + "1676": "minecraft:brown_shulker_box[facing=down]", + "1677": "minecraft:scaffolding[bottom=true,distance=0,waterlogged=true]", + "1678": "minecraft:scaffolding[bottom=true,distance=0,waterlogged=false]", + "1679": "minecraft:scaffolding[bottom=true,distance=1,waterlogged=true]", + "1680": "minecraft:scaffolding[bottom=true,distance=1,waterlogged=false]", + "1681": "minecraft:scaffolding[bottom=true,distance=2,waterlogged=true]", + "1682": "minecraft:scaffolding[bottom=true,distance=2,waterlogged=false]", + "1683": "minecraft:scaffolding[bottom=true,distance=3,waterlogged=true]", + "1684": "minecraft:scaffolding[bottom=true,distance=3,waterlogged=false]", + "1685": "minecraft:scaffolding[bottom=true,distance=4,waterlogged=true]", + "1686": "minecraft:scaffolding[bottom=true,distance=4,waterlogged=false]", + "1687": "minecraft:scaffolding[bottom=true,distance=5,waterlogged=true]", + "1688": "minecraft:scaffolding[bottom=true,distance=5,waterlogged=false]", + "1689": "minecraft:scaffolding[bottom=true,distance=6,waterlogged=true]", + "1690": "minecraft:scaffolding[bottom=true,distance=6,waterlogged=false]", + "1691": "minecraft:scaffolding[bottom=true,distance=7,waterlogged=true]", + "1692": "minecraft:scaffolding[bottom=true,distance=7,waterlogged=false]", + "1693": "minecraft:scaffolding[bottom=false,distance=0,waterlogged=true]", + "1694": "minecraft:scaffolding[bottom=false,distance=0,waterlogged=false]", + "1695": "minecraft:scaffolding[bottom=false,distance=1,waterlogged=true]", + "1696": "minecraft:scaffolding[bottom=false,distance=1,waterlogged=false]", + "1697": "minecraft:scaffolding[bottom=false,distance=2,waterlogged=true]", + "1698": "minecraft:scaffolding[bottom=false,distance=2,waterlogged=false]", + "1699": "minecraft:scaffolding[bottom=false,distance=3,waterlogged=true]", + "1700": "minecraft:scaffolding[bottom=false,distance=3,waterlogged=false]", + "1701": "minecraft:scaffolding[bottom=false,distance=4,waterlogged=true]", + "1702": "minecraft:scaffolding[bottom=false,distance=4,waterlogged=false]", + "1703": "minecraft:scaffolding[bottom=false,distance=5,waterlogged=true]", + "1704": "minecraft:scaffolding[bottom=false,distance=5,waterlogged=false]", + "1705": "minecraft:scaffolding[bottom=false,distance=6,waterlogged=true]", + "1706": "minecraft:scaffolding[bottom=false,distance=6,waterlogged=false]", + "1707": "minecraft:scaffolding[bottom=false,distance=7,waterlogged=true]", + "1708": "minecraft:scaffolding[bottom=false,distance=7,waterlogged=false]", + "1709": "minecraft:red_shulker_box[facing=north]", + "1710": "minecraft:red_shulker_box[facing=east]", + "1711": "minecraft:red_shulker_box[facing=south]", + "1712": "minecraft:red_shulker_box[facing=west]", + "1713": "minecraft:red_shulker_box[facing=up]", + "1714": "minecraft:red_shulker_box[facing=down]", + "1715": "minecraft:pink_carpet", + "1716": "minecraft:jungle_leaves[distance=1,persistent=true]", + "1717": "minecraft:jungle_leaves[distance=1,persistent=false]", + "1718": "minecraft:jungle_leaves[distance=2,persistent=true]", + "1719": "minecraft:jungle_leaves[distance=2,persistent=false]", + "1720": "minecraft:jungle_leaves[distance=3,persistent=true]", + "1721": "minecraft:jungle_leaves[distance=3,persistent=false]", + "1722": "minecraft:jungle_leaves[distance=4,persistent=true]", + "1723": "minecraft:jungle_leaves[distance=4,persistent=false]", + "1724": "minecraft:jungle_leaves[distance=5,persistent=true]", + "1725": "minecraft:jungle_leaves[distance=5,persistent=false]", + "1726": "minecraft:jungle_leaves[distance=6,persistent=true]", + "1727": "minecraft:jungle_leaves[distance=6,persistent=false]", + "1728": "minecraft:jungle_leaves[distance=7,persistent=true]", + "1729": "minecraft:jungle_leaves[distance=7,persistent=false]", + "1730": "minecraft:purple_carpet", + "1731": "minecraft:dark_oak_leaves[distance=1,persistent=true]", + "1732": "minecraft:dark_oak_leaves[distance=1,persistent=false]", + "1733": "minecraft:dark_oak_leaves[distance=2,persistent=true]", + "1734": "minecraft:dark_oak_leaves[distance=2,persistent=false]", + "1735": "minecraft:dark_oak_leaves[distance=3,persistent=true]", + "1736": "minecraft:dark_oak_leaves[distance=3,persistent=false]", + "1737": "minecraft:dark_oak_leaves[distance=4,persistent=true]", + "1738": "minecraft:dark_oak_leaves[distance=4,persistent=false]", + "1739": "minecraft:dark_oak_leaves[distance=5,persistent=true]", + "1740": "minecraft:dark_oak_leaves[distance=5,persistent=false]", + "1741": "minecraft:dark_oak_leaves[distance=6,persistent=true]", + "1742": "minecraft:dark_oak_leaves[distance=6,persistent=false]", + "1743": "minecraft:dark_oak_leaves[distance=7,persistent=true]", + "1744": "minecraft:dark_oak_leaves[distance=7,persistent=false]", + "1745": "minecraft:redstone_lamp[lit=true]", + "1746": "minecraft:redstone_lamp[lit=false]", + "1747": "minecraft:dead_brain_coral_fan[waterlogged=true]", + "1748": "minecraft:dead_brain_coral_fan[waterlogged=false]", + "1749": "minecraft:ender_chest[facing=north,waterlogged=true]", + "1750": "minecraft:ender_chest[facing=north,waterlogged=false]", + "1751": "minecraft:ender_chest[facing=south,waterlogged=true]", + "1752": "minecraft:ender_chest[facing=south,waterlogged=false]", + "1753": "minecraft:ender_chest[facing=west,waterlogged=true]", + "1754": "minecraft:ender_chest[facing=west,waterlogged=false]", + "1755": "minecraft:ender_chest[facing=east,waterlogged=true]", + "1756": "minecraft:ender_chest[facing=east,waterlogged=false]", + "1757": "minecraft:end_stone_brick_wall[east=none,north=none,south=none,up=true,waterlogged=true,west=none]", + "1758": "minecraft:end_stone_brick_wall[east=none,north=none,south=none,up=true,waterlogged=true,west=low]", + "1759": "minecraft:end_stone_brick_wall[east=none,north=none,south=none,up=true,waterlogged=true,west=tall]", + "1760": "minecraft:end_stone_brick_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=none]", + "1761": "minecraft:end_stone_brick_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=low]", + "1762": "minecraft:end_stone_brick_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=tall]", + "1763": "minecraft:end_stone_brick_wall[east=none,north=none,south=none,up=false,waterlogged=true,west=none]", + "1764": "minecraft:end_stone_brick_wall[east=none,north=none,south=none,up=false,waterlogged=true,west=low]", + "1765": "minecraft:end_stone_brick_wall[east=none,north=none,south=none,up=false,waterlogged=true,west=tall]", + "1766": "minecraft:end_stone_brick_wall[east=none,north=none,south=none,up=false,waterlogged=false,west=none]", + "1767": "minecraft:end_stone_brick_wall[east=none,north=none,south=none,up=false,waterlogged=false,west=low]", + "1768": "minecraft:end_stone_brick_wall[east=none,north=none,south=none,up=false,waterlogged=false,west=tall]", + "1769": "minecraft:end_stone_brick_wall[east=none,north=none,south=low,up=true,waterlogged=true,west=none]", + "1770": "minecraft:end_stone_brick_wall[east=none,north=none,south=low,up=true,waterlogged=true,west=low]", + "1771": "minecraft:end_stone_brick_wall[east=none,north=none,south=low,up=true,waterlogged=true,west=tall]", + "1772": "minecraft:end_stone_brick_wall[east=none,north=none,south=low,up=true,waterlogged=false,west=none]", + "1773": "minecraft:end_stone_brick_wall[east=none,north=none,south=low,up=true,waterlogged=false,west=low]", + "1774": "minecraft:end_stone_brick_wall[east=none,north=none,south=low,up=true,waterlogged=false,west=tall]", + "1775": "minecraft:end_stone_brick_wall[east=none,north=none,south=low,up=false,waterlogged=true,west=none]", + "1776": "minecraft:end_stone_brick_wall[east=none,north=none,south=low,up=false,waterlogged=true,west=low]", + "1777": "minecraft:end_stone_brick_wall[east=none,north=none,south=low,up=false,waterlogged=true,west=tall]", + "1778": "minecraft:end_stone_brick_wall[east=none,north=none,south=low,up=false,waterlogged=false,west=none]", + "1779": "minecraft:end_stone_brick_wall[east=none,north=none,south=low,up=false,waterlogged=false,west=low]", + "1780": "minecraft:end_stone_brick_wall[east=none,north=none,south=low,up=false,waterlogged=false,west=tall]", + "1781": "minecraft:end_stone_brick_wall[east=none,north=none,south=tall,up=true,waterlogged=true,west=none]", + "1782": "minecraft:end_stone_brick_wall[east=none,north=none,south=tall,up=true,waterlogged=true,west=low]", + "1783": "minecraft:end_stone_brick_wall[east=none,north=none,south=tall,up=true,waterlogged=true,west=tall]", + "1784": "minecraft:end_stone_brick_wall[east=none,north=none,south=tall,up=true,waterlogged=false,west=none]", + "1785": "minecraft:end_stone_brick_wall[east=none,north=none,south=tall,up=true,waterlogged=false,west=low]", + "1786": "minecraft:end_stone_brick_wall[east=none,north=none,south=tall,up=true,waterlogged=false,west=tall]", + "1787": "minecraft:end_stone_brick_wall[east=none,north=none,south=tall,up=false,waterlogged=true,west=none]", + "1788": "minecraft:end_stone_brick_wall[east=none,north=none,south=tall,up=false,waterlogged=true,west=low]", + "1789": "minecraft:end_stone_brick_wall[east=none,north=none,south=tall,up=false,waterlogged=true,west=tall]", + "1790": "minecraft:end_stone_brick_wall[east=none,north=none,south=tall,up=false,waterlogged=false,west=none]", + "1791": "minecraft:end_stone_brick_wall[east=none,north=none,south=tall,up=false,waterlogged=false,west=low]", + "1792": "minecraft:end_stone_brick_wall[east=none,north=none,south=tall,up=false,waterlogged=false,west=tall]", + "1793": "minecraft:end_stone_brick_wall[east=none,north=low,south=none,up=true,waterlogged=true,west=none]", + "1794": "minecraft:end_stone_brick_wall[east=none,north=low,south=none,up=true,waterlogged=true,west=low]", + "1795": "minecraft:end_stone_brick_wall[east=none,north=low,south=none,up=true,waterlogged=true,west=tall]", + "1796": "minecraft:end_stone_brick_wall[east=none,north=low,south=none,up=true,waterlogged=false,west=none]", + "1797": "minecraft:end_stone_brick_wall[east=none,north=low,south=none,up=true,waterlogged=false,west=low]", + "1798": "minecraft:end_stone_brick_wall[east=none,north=low,south=none,up=true,waterlogged=false,west=tall]", + "1799": "minecraft:end_stone_brick_wall[east=none,north=low,south=none,up=false,waterlogged=true,west=none]", + "1800": "minecraft:end_stone_brick_wall[east=none,north=low,south=none,up=false,waterlogged=true,west=low]", + "1801": "minecraft:end_stone_brick_wall[east=none,north=low,south=none,up=false,waterlogged=true,west=tall]", + "1802": "minecraft:end_stone_brick_wall[east=none,north=low,south=none,up=false,waterlogged=false,west=none]", + "1803": "minecraft:end_stone_brick_wall[east=none,north=low,south=none,up=false,waterlogged=false,west=low]", + "1804": "minecraft:end_stone_brick_wall[east=none,north=low,south=none,up=false,waterlogged=false,west=tall]", + "1805": "minecraft:end_stone_brick_wall[east=none,north=low,south=low,up=true,waterlogged=true,west=none]", + "1806": "minecraft:end_stone_brick_wall[east=none,north=low,south=low,up=true,waterlogged=true,west=low]", + "1807": "minecraft:end_stone_brick_wall[east=none,north=low,south=low,up=true,waterlogged=true,west=tall]", + "1808": "minecraft:end_stone_brick_wall[east=none,north=low,south=low,up=true,waterlogged=false,west=none]", + "1809": "minecraft:end_stone_brick_wall[east=none,north=low,south=low,up=true,waterlogged=false,west=low]", + "1810": "minecraft:end_stone_brick_wall[east=none,north=low,south=low,up=true,waterlogged=false,west=tall]", + "1811": "minecraft:end_stone_brick_wall[east=none,north=low,south=low,up=false,waterlogged=true,west=none]", + "1812": "minecraft:end_stone_brick_wall[east=none,north=low,south=low,up=false,waterlogged=true,west=low]", + "1813": "minecraft:end_stone_brick_wall[east=none,north=low,south=low,up=false,waterlogged=true,west=tall]", + "1814": "minecraft:end_stone_brick_wall[east=none,north=low,south=low,up=false,waterlogged=false,west=none]", + "1815": "minecraft:end_stone_brick_wall[east=none,north=low,south=low,up=false,waterlogged=false,west=low]", + "1816": "minecraft:end_stone_brick_wall[east=none,north=low,south=low,up=false,waterlogged=false,west=tall]", + "1817": "minecraft:end_stone_brick_wall[east=none,north=low,south=tall,up=true,waterlogged=true,west=none]", + "1818": "minecraft:end_stone_brick_wall[east=none,north=low,south=tall,up=true,waterlogged=true,west=low]", + "1819": "minecraft:end_stone_brick_wall[east=none,north=low,south=tall,up=true,waterlogged=true,west=tall]", + "1820": "minecraft:end_stone_brick_wall[east=none,north=low,south=tall,up=true,waterlogged=false,west=none]", + "1821": "minecraft:end_stone_brick_wall[east=none,north=low,south=tall,up=true,waterlogged=false,west=low]", + "1822": "minecraft:end_stone_brick_wall[east=none,north=low,south=tall,up=true,waterlogged=false,west=tall]", + "1823": "minecraft:end_stone_brick_wall[east=none,north=low,south=tall,up=false,waterlogged=true,west=none]", + "1824": "minecraft:end_stone_brick_wall[east=none,north=low,south=tall,up=false,waterlogged=true,west=low]", + "1825": "minecraft:end_stone_brick_wall[east=none,north=low,south=tall,up=false,waterlogged=true,west=tall]", + "1826": "minecraft:end_stone_brick_wall[east=none,north=low,south=tall,up=false,waterlogged=false,west=none]", + "1827": "minecraft:end_stone_brick_wall[east=none,north=low,south=tall,up=false,waterlogged=false,west=low]", + "1828": "minecraft:end_stone_brick_wall[east=none,north=low,south=tall,up=false,waterlogged=false,west=tall]", + "1829": "minecraft:end_stone_brick_wall[east=none,north=tall,south=none,up=true,waterlogged=true,west=none]", + "1830": "minecraft:end_stone_brick_wall[east=none,north=tall,south=none,up=true,waterlogged=true,west=low]", + "1831": "minecraft:end_stone_brick_wall[east=none,north=tall,south=none,up=true,waterlogged=true,west=tall]", + "1832": "minecraft:end_stone_brick_wall[east=none,north=tall,south=none,up=true,waterlogged=false,west=none]", + "1833": "minecraft:end_stone_brick_wall[east=none,north=tall,south=none,up=true,waterlogged=false,west=low]", + "1834": "minecraft:end_stone_brick_wall[east=none,north=tall,south=none,up=true,waterlogged=false,west=tall]", + "1835": "minecraft:end_stone_brick_wall[east=none,north=tall,south=none,up=false,waterlogged=true,west=none]", + "1836": "minecraft:end_stone_brick_wall[east=none,north=tall,south=none,up=false,waterlogged=true,west=low]", + "1837": "minecraft:end_stone_brick_wall[east=none,north=tall,south=none,up=false,waterlogged=true,west=tall]", + "1838": "minecraft:end_stone_brick_wall[east=none,north=tall,south=none,up=false,waterlogged=false,west=none]", + "1839": "minecraft:end_stone_brick_wall[east=none,north=tall,south=none,up=false,waterlogged=false,west=low]", + "1840": "minecraft:end_stone_brick_wall[east=none,north=tall,south=none,up=false,waterlogged=false,west=tall]", + "1841": "minecraft:end_stone_brick_wall[east=none,north=tall,south=low,up=true,waterlogged=true,west=none]", + "1842": "minecraft:end_stone_brick_wall[east=none,north=tall,south=low,up=true,waterlogged=true,west=low]", + "1843": "minecraft:end_stone_brick_wall[east=none,north=tall,south=low,up=true,waterlogged=true,west=tall]", + "1844": "minecraft:end_stone_brick_wall[east=none,north=tall,south=low,up=true,waterlogged=false,west=none]", + "1845": "minecraft:end_stone_brick_wall[east=none,north=tall,south=low,up=true,waterlogged=false,west=low]", + "1846": "minecraft:end_stone_brick_wall[east=none,north=tall,south=low,up=true,waterlogged=false,west=tall]", + "1847": "minecraft:end_stone_brick_wall[east=none,north=tall,south=low,up=false,waterlogged=true,west=none]", + "1848": "minecraft:end_stone_brick_wall[east=none,north=tall,south=low,up=false,waterlogged=true,west=low]", + "1849": "minecraft:end_stone_brick_wall[east=none,north=tall,south=low,up=false,waterlogged=true,west=tall]", + "1850": "minecraft:end_stone_brick_wall[east=none,north=tall,south=low,up=false,waterlogged=false,west=none]", + "1851": "minecraft:end_stone_brick_wall[east=none,north=tall,south=low,up=false,waterlogged=false,west=low]", + "1852": "minecraft:end_stone_brick_wall[east=none,north=tall,south=low,up=false,waterlogged=false,west=tall]", + "1853": "minecraft:end_stone_brick_wall[east=none,north=tall,south=tall,up=true,waterlogged=true,west=none]", + "1854": "minecraft:end_stone_brick_wall[east=none,north=tall,south=tall,up=true,waterlogged=true,west=low]", + "1855": "minecraft:end_stone_brick_wall[east=none,north=tall,south=tall,up=true,waterlogged=true,west=tall]", + "1856": "minecraft:end_stone_brick_wall[east=none,north=tall,south=tall,up=true,waterlogged=false,west=none]", + "1857": "minecraft:end_stone_brick_wall[east=none,north=tall,south=tall,up=true,waterlogged=false,west=low]", + "1858": "minecraft:end_stone_brick_wall[east=none,north=tall,south=tall,up=true,waterlogged=false,west=tall]", + "1859": "minecraft:end_stone_brick_wall[east=none,north=tall,south=tall,up=false,waterlogged=true,west=none]", + "1860": "minecraft:end_stone_brick_wall[east=none,north=tall,south=tall,up=false,waterlogged=true,west=low]", + "1861": "minecraft:end_stone_brick_wall[east=none,north=tall,south=tall,up=false,waterlogged=true,west=tall]", + "1862": "minecraft:end_stone_brick_wall[east=none,north=tall,south=tall,up=false,waterlogged=false,west=none]", + "1863": "minecraft:end_stone_brick_wall[east=none,north=tall,south=tall,up=false,waterlogged=false,west=low]", + "1864": "minecraft:end_stone_brick_wall[east=none,north=tall,south=tall,up=false,waterlogged=false,west=tall]", + "1865": "minecraft:end_stone_brick_wall[east=low,north=none,south=none,up=true,waterlogged=true,west=none]", + "1866": "minecraft:end_stone_brick_wall[east=low,north=none,south=none,up=true,waterlogged=true,west=low]", + "1867": "minecraft:end_stone_brick_wall[east=low,north=none,south=none,up=true,waterlogged=true,west=tall]", + "1868": "minecraft:end_stone_brick_wall[east=low,north=none,south=none,up=true,waterlogged=false,west=none]", + "1869": "minecraft:end_stone_brick_wall[east=low,north=none,south=none,up=true,waterlogged=false,west=low]", + "1870": "minecraft:end_stone_brick_wall[east=low,north=none,south=none,up=true,waterlogged=false,west=tall]", + "1871": "minecraft:end_stone_brick_wall[east=low,north=none,south=none,up=false,waterlogged=true,west=none]", + "1872": "minecraft:end_stone_brick_wall[east=low,north=none,south=none,up=false,waterlogged=true,west=low]", + "1873": "minecraft:end_stone_brick_wall[east=low,north=none,south=none,up=false,waterlogged=true,west=tall]", + "1874": "minecraft:end_stone_brick_wall[east=low,north=none,south=none,up=false,waterlogged=false,west=none]", + "1875": "minecraft:end_stone_brick_wall[east=low,north=none,south=none,up=false,waterlogged=false,west=low]", + "1876": "minecraft:end_stone_brick_wall[east=low,north=none,south=none,up=false,waterlogged=false,west=tall]", + "1877": "minecraft:end_stone_brick_wall[east=low,north=none,south=low,up=true,waterlogged=true,west=none]", + "1878": "minecraft:end_stone_brick_wall[east=low,north=none,south=low,up=true,waterlogged=true,west=low]", + "1879": "minecraft:end_stone_brick_wall[east=low,north=none,south=low,up=true,waterlogged=true,west=tall]", + "1880": "minecraft:end_stone_brick_wall[east=low,north=none,south=low,up=true,waterlogged=false,west=none]", + "1881": "minecraft:end_stone_brick_wall[east=low,north=none,south=low,up=true,waterlogged=false,west=low]", + "1882": "minecraft:end_stone_brick_wall[east=low,north=none,south=low,up=true,waterlogged=false,west=tall]", + "1883": "minecraft:end_stone_brick_wall[east=low,north=none,south=low,up=false,waterlogged=true,west=none]", + "1884": "minecraft:end_stone_brick_wall[east=low,north=none,south=low,up=false,waterlogged=true,west=low]", + "1885": "minecraft:end_stone_brick_wall[east=low,north=none,south=low,up=false,waterlogged=true,west=tall]", + "1886": "minecraft:end_stone_brick_wall[east=low,north=none,south=low,up=false,waterlogged=false,west=none]", + "1887": "minecraft:end_stone_brick_wall[east=low,north=none,south=low,up=false,waterlogged=false,west=low]", + "1888": "minecraft:end_stone_brick_wall[east=low,north=none,south=low,up=false,waterlogged=false,west=tall]", + "1889": "minecraft:end_stone_brick_wall[east=low,north=none,south=tall,up=true,waterlogged=true,west=none]", + "1890": "minecraft:end_stone_brick_wall[east=low,north=none,south=tall,up=true,waterlogged=true,west=low]", + "1891": "minecraft:end_stone_brick_wall[east=low,north=none,south=tall,up=true,waterlogged=true,west=tall]", + "1892": "minecraft:end_stone_brick_wall[east=low,north=none,south=tall,up=true,waterlogged=false,west=none]", + "1893": "minecraft:end_stone_brick_wall[east=low,north=none,south=tall,up=true,waterlogged=false,west=low]", + "1894": "minecraft:end_stone_brick_wall[east=low,north=none,south=tall,up=true,waterlogged=false,west=tall]", + "1895": "minecraft:end_stone_brick_wall[east=low,north=none,south=tall,up=false,waterlogged=true,west=none]", + "1896": "minecraft:end_stone_brick_wall[east=low,north=none,south=tall,up=false,waterlogged=true,west=low]", + "1897": "minecraft:end_stone_brick_wall[east=low,north=none,south=tall,up=false,waterlogged=true,west=tall]", + "1898": "minecraft:end_stone_brick_wall[east=low,north=none,south=tall,up=false,waterlogged=false,west=none]", + "1899": "minecraft:end_stone_brick_wall[east=low,north=none,south=tall,up=false,waterlogged=false,west=low]", + "1900": "minecraft:end_stone_brick_wall[east=low,north=none,south=tall,up=false,waterlogged=false,west=tall]", + "1901": "minecraft:end_stone_brick_wall[east=low,north=low,south=none,up=true,waterlogged=true,west=none]", + "1902": "minecraft:end_stone_brick_wall[east=low,north=low,south=none,up=true,waterlogged=true,west=low]", + "1903": "minecraft:end_stone_brick_wall[east=low,north=low,south=none,up=true,waterlogged=true,west=tall]", + "1904": "minecraft:end_stone_brick_wall[east=low,north=low,south=none,up=true,waterlogged=false,west=none]", + "1905": "minecraft:end_stone_brick_wall[east=low,north=low,south=none,up=true,waterlogged=false,west=low]", + "1906": "minecraft:end_stone_brick_wall[east=low,north=low,south=none,up=true,waterlogged=false,west=tall]", + "1907": "minecraft:end_stone_brick_wall[east=low,north=low,south=none,up=false,waterlogged=true,west=none]", + "1908": "minecraft:end_stone_brick_wall[east=low,north=low,south=none,up=false,waterlogged=true,west=low]", + "1909": "minecraft:end_stone_brick_wall[east=low,north=low,south=none,up=false,waterlogged=true,west=tall]", + "1910": "minecraft:end_stone_brick_wall[east=low,north=low,south=none,up=false,waterlogged=false,west=none]", + "1911": "minecraft:end_stone_brick_wall[east=low,north=low,south=none,up=false,waterlogged=false,west=low]", + "1912": "minecraft:end_stone_brick_wall[east=low,north=low,south=none,up=false,waterlogged=false,west=tall]", + "1913": "minecraft:end_stone_brick_wall[east=low,north=low,south=low,up=true,waterlogged=true,west=none]", + "1914": "minecraft:end_stone_brick_wall[east=low,north=low,south=low,up=true,waterlogged=true,west=low]", + "1915": "minecraft:end_stone_brick_wall[east=low,north=low,south=low,up=true,waterlogged=true,west=tall]", + "1916": "minecraft:end_stone_brick_wall[east=low,north=low,south=low,up=true,waterlogged=false,west=none]", + "1917": "minecraft:end_stone_brick_wall[east=low,north=low,south=low,up=true,waterlogged=false,west=low]", + "1918": "minecraft:end_stone_brick_wall[east=low,north=low,south=low,up=true,waterlogged=false,west=tall]", + "1919": "minecraft:end_stone_brick_wall[east=low,north=low,south=low,up=false,waterlogged=true,west=none]", + "1920": "minecraft:end_stone_brick_wall[east=low,north=low,south=low,up=false,waterlogged=true,west=low]", + "1921": "minecraft:end_stone_brick_wall[east=low,north=low,south=low,up=false,waterlogged=true,west=tall]", + "1922": "minecraft:end_stone_brick_wall[east=low,north=low,south=low,up=false,waterlogged=false,west=none]", + "1923": "minecraft:end_stone_brick_wall[east=low,north=low,south=low,up=false,waterlogged=false,west=low]", + "1924": "minecraft:end_stone_brick_wall[east=low,north=low,south=low,up=false,waterlogged=false,west=tall]", + "1925": "minecraft:end_stone_brick_wall[east=low,north=low,south=tall,up=true,waterlogged=true,west=none]", + "1926": "minecraft:end_stone_brick_wall[east=low,north=low,south=tall,up=true,waterlogged=true,west=low]", + "1927": "minecraft:end_stone_brick_wall[east=low,north=low,south=tall,up=true,waterlogged=true,west=tall]", + "1928": "minecraft:end_stone_brick_wall[east=low,north=low,south=tall,up=true,waterlogged=false,west=none]", + "1929": "minecraft:end_stone_brick_wall[east=low,north=low,south=tall,up=true,waterlogged=false,west=low]", + "1930": "minecraft:end_stone_brick_wall[east=low,north=low,south=tall,up=true,waterlogged=false,west=tall]", + "1931": "minecraft:end_stone_brick_wall[east=low,north=low,south=tall,up=false,waterlogged=true,west=none]", + "1932": "minecraft:end_stone_brick_wall[east=low,north=low,south=tall,up=false,waterlogged=true,west=low]", + "1933": "minecraft:end_stone_brick_wall[east=low,north=low,south=tall,up=false,waterlogged=true,west=tall]", + "1934": "minecraft:end_stone_brick_wall[east=low,north=low,south=tall,up=false,waterlogged=false,west=none]", + "1935": "minecraft:end_stone_brick_wall[east=low,north=low,south=tall,up=false,waterlogged=false,west=low]", + "1936": "minecraft:end_stone_brick_wall[east=low,north=low,south=tall,up=false,waterlogged=false,west=tall]", + "1937": "minecraft:end_stone_brick_wall[east=low,north=tall,south=none,up=true,waterlogged=true,west=none]", + "1938": "minecraft:end_stone_brick_wall[east=low,north=tall,south=none,up=true,waterlogged=true,west=low]", + "1939": "minecraft:end_stone_brick_wall[east=low,north=tall,south=none,up=true,waterlogged=true,west=tall]", + "1940": "minecraft:end_stone_brick_wall[east=low,north=tall,south=none,up=true,waterlogged=false,west=none]", + "1941": "minecraft:end_stone_brick_wall[east=low,north=tall,south=none,up=true,waterlogged=false,west=low]", + "1942": "minecraft:end_stone_brick_wall[east=low,north=tall,south=none,up=true,waterlogged=false,west=tall]", + "1943": "minecraft:end_stone_brick_wall[east=low,north=tall,south=none,up=false,waterlogged=true,west=none]", + "1944": "minecraft:end_stone_brick_wall[east=low,north=tall,south=none,up=false,waterlogged=true,west=low]", + "1945": "minecraft:end_stone_brick_wall[east=low,north=tall,south=none,up=false,waterlogged=true,west=tall]", + "1946": "minecraft:end_stone_brick_wall[east=low,north=tall,south=none,up=false,waterlogged=false,west=none]", + "1947": "minecraft:end_stone_brick_wall[east=low,north=tall,south=none,up=false,waterlogged=false,west=low]", + "1948": "minecraft:end_stone_brick_wall[east=low,north=tall,south=none,up=false,waterlogged=false,west=tall]", + "1949": "minecraft:end_stone_brick_wall[east=low,north=tall,south=low,up=true,waterlogged=true,west=none]", + "1950": "minecraft:end_stone_brick_wall[east=low,north=tall,south=low,up=true,waterlogged=true,west=low]", + "1951": "minecraft:end_stone_brick_wall[east=low,north=tall,south=low,up=true,waterlogged=true,west=tall]", + "1952": "minecraft:end_stone_brick_wall[east=low,north=tall,south=low,up=true,waterlogged=false,west=none]", + "1953": "minecraft:end_stone_brick_wall[east=low,north=tall,south=low,up=true,waterlogged=false,west=low]", + "1954": "minecraft:end_stone_brick_wall[east=low,north=tall,south=low,up=true,waterlogged=false,west=tall]", + "1955": "minecraft:end_stone_brick_wall[east=low,north=tall,south=low,up=false,waterlogged=true,west=none]", + "1956": "minecraft:end_stone_brick_wall[east=low,north=tall,south=low,up=false,waterlogged=true,west=low]", + "1957": "minecraft:end_stone_brick_wall[east=low,north=tall,south=low,up=false,waterlogged=true,west=tall]", + "1958": "minecraft:end_stone_brick_wall[east=low,north=tall,south=low,up=false,waterlogged=false,west=none]", + "1959": "minecraft:end_stone_brick_wall[east=low,north=tall,south=low,up=false,waterlogged=false,west=low]", + "1960": "minecraft:end_stone_brick_wall[east=low,north=tall,south=low,up=false,waterlogged=false,west=tall]", + "1961": "minecraft:end_stone_brick_wall[east=low,north=tall,south=tall,up=true,waterlogged=true,west=none]", + "1962": "minecraft:end_stone_brick_wall[east=low,north=tall,south=tall,up=true,waterlogged=true,west=low]", + "1963": "minecraft:end_stone_brick_wall[east=low,north=tall,south=tall,up=true,waterlogged=true,west=tall]", + "1964": "minecraft:end_stone_brick_wall[east=low,north=tall,south=tall,up=true,waterlogged=false,west=none]", + "1965": "minecraft:end_stone_brick_wall[east=low,north=tall,south=tall,up=true,waterlogged=false,west=low]", + "1966": "minecraft:end_stone_brick_wall[east=low,north=tall,south=tall,up=true,waterlogged=false,west=tall]", + "1967": "minecraft:end_stone_brick_wall[east=low,north=tall,south=tall,up=false,waterlogged=true,west=none]", + "1968": "minecraft:end_stone_brick_wall[east=low,north=tall,south=tall,up=false,waterlogged=true,west=low]", + "1969": "minecraft:end_stone_brick_wall[east=low,north=tall,south=tall,up=false,waterlogged=true,west=tall]", + "1970": "minecraft:end_stone_brick_wall[east=low,north=tall,south=tall,up=false,waterlogged=false,west=none]", + "1971": "minecraft:end_stone_brick_wall[east=low,north=tall,south=tall,up=false,waterlogged=false,west=low]", + "1972": "minecraft:end_stone_brick_wall[east=low,north=tall,south=tall,up=false,waterlogged=false,west=tall]", + "1973": "minecraft:end_stone_brick_wall[east=tall,north=none,south=none,up=true,waterlogged=true,west=none]", + "1974": "minecraft:end_stone_brick_wall[east=tall,north=none,south=none,up=true,waterlogged=true,west=low]", + "1975": "minecraft:end_stone_brick_wall[east=tall,north=none,south=none,up=true,waterlogged=true,west=tall]", + "1976": "minecraft:end_stone_brick_wall[east=tall,north=none,south=none,up=true,waterlogged=false,west=none]", + "1977": "minecraft:end_stone_brick_wall[east=tall,north=none,south=none,up=true,waterlogged=false,west=low]", + "1978": "minecraft:end_stone_brick_wall[east=tall,north=none,south=none,up=true,waterlogged=false,west=tall]", + "1979": "minecraft:end_stone_brick_wall[east=tall,north=none,south=none,up=false,waterlogged=true,west=none]", + "1980": "minecraft:end_stone_brick_wall[east=tall,north=none,south=none,up=false,waterlogged=true,west=low]", + "1981": "minecraft:end_stone_brick_wall[east=tall,north=none,south=none,up=false,waterlogged=true,west=tall]", + "1982": "minecraft:end_stone_brick_wall[east=tall,north=none,south=none,up=false,waterlogged=false,west=none]", + "1983": "minecraft:end_stone_brick_wall[east=tall,north=none,south=none,up=false,waterlogged=false,west=low]", + "1984": "minecraft:end_stone_brick_wall[east=tall,north=none,south=none,up=false,waterlogged=false,west=tall]", + "1985": "minecraft:end_stone_brick_wall[east=tall,north=none,south=low,up=true,waterlogged=true,west=none]", + "1986": "minecraft:end_stone_brick_wall[east=tall,north=none,south=low,up=true,waterlogged=true,west=low]", + "1987": "minecraft:end_stone_brick_wall[east=tall,north=none,south=low,up=true,waterlogged=true,west=tall]", + "1988": "minecraft:end_stone_brick_wall[east=tall,north=none,south=low,up=true,waterlogged=false,west=none]", + "1989": "minecraft:end_stone_brick_wall[east=tall,north=none,south=low,up=true,waterlogged=false,west=low]", + "1990": "minecraft:end_stone_brick_wall[east=tall,north=none,south=low,up=true,waterlogged=false,west=tall]", + "1991": "minecraft:end_stone_brick_wall[east=tall,north=none,south=low,up=false,waterlogged=true,west=none]", + "1992": "minecraft:end_stone_brick_wall[east=tall,north=none,south=low,up=false,waterlogged=true,west=low]", + "1993": "minecraft:end_stone_brick_wall[east=tall,north=none,south=low,up=false,waterlogged=true,west=tall]", + "1994": "minecraft:end_stone_brick_wall[east=tall,north=none,south=low,up=false,waterlogged=false,west=none]", + "1995": "minecraft:end_stone_brick_wall[east=tall,north=none,south=low,up=false,waterlogged=false,west=low]", + "1996": "minecraft:end_stone_brick_wall[east=tall,north=none,south=low,up=false,waterlogged=false,west=tall]", + "1997": "minecraft:end_stone_brick_wall[east=tall,north=none,south=tall,up=true,waterlogged=true,west=none]", + "1998": "minecraft:end_stone_brick_wall[east=tall,north=none,south=tall,up=true,waterlogged=true,west=low]", + "1999": "minecraft:end_stone_brick_wall[east=tall,north=none,south=tall,up=true,waterlogged=true,west=tall]", + "2000": "minecraft:end_stone_brick_wall[east=tall,north=none,south=tall,up=true,waterlogged=false,west=none]", + "2001": "minecraft:end_stone_brick_wall[east=tall,north=none,south=tall,up=true,waterlogged=false,west=low]", + "2002": "minecraft:end_stone_brick_wall[east=tall,north=none,south=tall,up=true,waterlogged=false,west=tall]", + "2003": "minecraft:end_stone_brick_wall[east=tall,north=none,south=tall,up=false,waterlogged=true,west=none]", + "2004": "minecraft:end_stone_brick_wall[east=tall,north=none,south=tall,up=false,waterlogged=true,west=low]", + "2005": "minecraft:end_stone_brick_wall[east=tall,north=none,south=tall,up=false,waterlogged=true,west=tall]", + "2006": "minecraft:end_stone_brick_wall[east=tall,north=none,south=tall,up=false,waterlogged=false,west=none]", + "2007": "minecraft:end_stone_brick_wall[east=tall,north=none,south=tall,up=false,waterlogged=false,west=low]", + "2008": "minecraft:end_stone_brick_wall[east=tall,north=none,south=tall,up=false,waterlogged=false,west=tall]", + "2009": "minecraft:end_stone_brick_wall[east=tall,north=low,south=none,up=true,waterlogged=true,west=none]", + "2010": "minecraft:end_stone_brick_wall[east=tall,north=low,south=none,up=true,waterlogged=true,west=low]", + "2011": "minecraft:end_stone_brick_wall[east=tall,north=low,south=none,up=true,waterlogged=true,west=tall]", + "2012": "minecraft:end_stone_brick_wall[east=tall,north=low,south=none,up=true,waterlogged=false,west=none]", + "2013": "minecraft:end_stone_brick_wall[east=tall,north=low,south=none,up=true,waterlogged=false,west=low]", + "2014": "minecraft:end_stone_brick_wall[east=tall,north=low,south=none,up=true,waterlogged=false,west=tall]", + "2015": "minecraft:end_stone_brick_wall[east=tall,north=low,south=none,up=false,waterlogged=true,west=none]", + "2016": "minecraft:end_stone_brick_wall[east=tall,north=low,south=none,up=false,waterlogged=true,west=low]", + "2017": "minecraft:end_stone_brick_wall[east=tall,north=low,south=none,up=false,waterlogged=true,west=tall]", + "2018": "minecraft:end_stone_brick_wall[east=tall,north=low,south=none,up=false,waterlogged=false,west=none]", + "2019": "minecraft:end_stone_brick_wall[east=tall,north=low,south=none,up=false,waterlogged=false,west=low]", + "2020": "minecraft:end_stone_brick_wall[east=tall,north=low,south=none,up=false,waterlogged=false,west=tall]", + "2021": "minecraft:end_stone_brick_wall[east=tall,north=low,south=low,up=true,waterlogged=true,west=none]", + "2022": "minecraft:end_stone_brick_wall[east=tall,north=low,south=low,up=true,waterlogged=true,west=low]", + "2023": "minecraft:end_stone_brick_wall[east=tall,north=low,south=low,up=true,waterlogged=true,west=tall]", + "2024": "minecraft:end_stone_brick_wall[east=tall,north=low,south=low,up=true,waterlogged=false,west=none]", + "2025": "minecraft:end_stone_brick_wall[east=tall,north=low,south=low,up=true,waterlogged=false,west=low]", + "2026": "minecraft:end_stone_brick_wall[east=tall,north=low,south=low,up=true,waterlogged=false,west=tall]", + "2027": "minecraft:end_stone_brick_wall[east=tall,north=low,south=low,up=false,waterlogged=true,west=none]", + "2028": "minecraft:end_stone_brick_wall[east=tall,north=low,south=low,up=false,waterlogged=true,west=low]", + "2029": "minecraft:end_stone_brick_wall[east=tall,north=low,south=low,up=false,waterlogged=true,west=tall]", + "2030": "minecraft:end_stone_brick_wall[east=tall,north=low,south=low,up=false,waterlogged=false,west=none]", + "2031": "minecraft:end_stone_brick_wall[east=tall,north=low,south=low,up=false,waterlogged=false,west=low]", + "2032": "minecraft:end_stone_brick_wall[east=tall,north=low,south=low,up=false,waterlogged=false,west=tall]", + "2033": "minecraft:end_stone_brick_wall[east=tall,north=low,south=tall,up=true,waterlogged=true,west=none]", + "2034": "minecraft:end_stone_brick_wall[east=tall,north=low,south=tall,up=true,waterlogged=true,west=low]", + "2035": "minecraft:end_stone_brick_wall[east=tall,north=low,south=tall,up=true,waterlogged=true,west=tall]", + "2036": "minecraft:end_stone_brick_wall[east=tall,north=low,south=tall,up=true,waterlogged=false,west=none]", + "2037": "minecraft:end_stone_brick_wall[east=tall,north=low,south=tall,up=true,waterlogged=false,west=low]", + "2038": "minecraft:end_stone_brick_wall[east=tall,north=low,south=tall,up=true,waterlogged=false,west=tall]", + "2039": "minecraft:end_stone_brick_wall[east=tall,north=low,south=tall,up=false,waterlogged=true,west=none]", + "2040": "minecraft:end_stone_brick_wall[east=tall,north=low,south=tall,up=false,waterlogged=true,west=low]", + "2041": "minecraft:end_stone_brick_wall[east=tall,north=low,south=tall,up=false,waterlogged=true,west=tall]", + "2042": "minecraft:end_stone_brick_wall[east=tall,north=low,south=tall,up=false,waterlogged=false,west=none]", + "2043": "minecraft:end_stone_brick_wall[east=tall,north=low,south=tall,up=false,waterlogged=false,west=low]", + "2044": "minecraft:end_stone_brick_wall[east=tall,north=low,south=tall,up=false,waterlogged=false,west=tall]", + "2045": "minecraft:end_stone_brick_wall[east=tall,north=tall,south=none,up=true,waterlogged=true,west=none]", + "2046": "minecraft:end_stone_brick_wall[east=tall,north=tall,south=none,up=true,waterlogged=true,west=low]", + "2047": "minecraft:end_stone_brick_wall[east=tall,north=tall,south=none,up=true,waterlogged=true,west=tall]", + "2048": "minecraft:end_stone_brick_wall[east=tall,north=tall,south=none,up=true,waterlogged=false,west=none]", + "2049": "minecraft:end_stone_brick_wall[east=tall,north=tall,south=none,up=true,waterlogged=false,west=low]", + "2050": "minecraft:end_stone_brick_wall[east=tall,north=tall,south=none,up=true,waterlogged=false,west=tall]", + "2051": "minecraft:end_stone_brick_wall[east=tall,north=tall,south=none,up=false,waterlogged=true,west=none]", + "2052": "minecraft:end_stone_brick_wall[east=tall,north=tall,south=none,up=false,waterlogged=true,west=low]", + "2053": "minecraft:end_stone_brick_wall[east=tall,north=tall,south=none,up=false,waterlogged=true,west=tall]", + "2054": "minecraft:end_stone_brick_wall[east=tall,north=tall,south=none,up=false,waterlogged=false,west=none]", + "2055": "minecraft:end_stone_brick_wall[east=tall,north=tall,south=none,up=false,waterlogged=false,west=low]", + "2056": "minecraft:end_stone_brick_wall[east=tall,north=tall,south=none,up=false,waterlogged=false,west=tall]", + "2057": "minecraft:end_stone_brick_wall[east=tall,north=tall,south=low,up=true,waterlogged=true,west=none]", + "2058": "minecraft:end_stone_brick_wall[east=tall,north=tall,south=low,up=true,waterlogged=true,west=low]", + "2059": "minecraft:end_stone_brick_wall[east=tall,north=tall,south=low,up=true,waterlogged=true,west=tall]", + "2060": "minecraft:end_stone_brick_wall[east=tall,north=tall,south=low,up=true,waterlogged=false,west=none]", + "2061": "minecraft:end_stone_brick_wall[east=tall,north=tall,south=low,up=true,waterlogged=false,west=low]", + "2062": "minecraft:end_stone_brick_wall[east=tall,north=tall,south=low,up=true,waterlogged=false,west=tall]", + "2063": "minecraft:end_stone_brick_wall[east=tall,north=tall,south=low,up=false,waterlogged=true,west=none]", + "2064": "minecraft:end_stone_brick_wall[east=tall,north=tall,south=low,up=false,waterlogged=true,west=low]", + "2065": "minecraft:end_stone_brick_wall[east=tall,north=tall,south=low,up=false,waterlogged=true,west=tall]", + "2066": "minecraft:end_stone_brick_wall[east=tall,north=tall,south=low,up=false,waterlogged=false,west=none]", + "2067": "minecraft:end_stone_brick_wall[east=tall,north=tall,south=low,up=false,waterlogged=false,west=low]", + "2068": "minecraft:end_stone_brick_wall[east=tall,north=tall,south=low,up=false,waterlogged=false,west=tall]", + "2069": "minecraft:end_stone_brick_wall[east=tall,north=tall,south=tall,up=true,waterlogged=true,west=none]", + "2070": "minecraft:end_stone_brick_wall[east=tall,north=tall,south=tall,up=true,waterlogged=true,west=low]", + "2071": "minecraft:end_stone_brick_wall[east=tall,north=tall,south=tall,up=true,waterlogged=true,west=tall]", + "2072": "minecraft:end_stone_brick_wall[east=tall,north=tall,south=tall,up=true,waterlogged=false,west=none]", + "2073": "minecraft:end_stone_brick_wall[east=tall,north=tall,south=tall,up=true,waterlogged=false,west=low]", + "2074": "minecraft:end_stone_brick_wall[east=tall,north=tall,south=tall,up=true,waterlogged=false,west=tall]", + "2075": "minecraft:end_stone_brick_wall[east=tall,north=tall,south=tall,up=false,waterlogged=true,west=none]", + "2076": "minecraft:end_stone_brick_wall[east=tall,north=tall,south=tall,up=false,waterlogged=true,west=low]", + "2077": "minecraft:end_stone_brick_wall[east=tall,north=tall,south=tall,up=false,waterlogged=true,west=tall]", + "2078": "minecraft:end_stone_brick_wall[east=tall,north=tall,south=tall,up=false,waterlogged=false,west=none]", + "2079": "minecraft:end_stone_brick_wall[east=tall,north=tall,south=tall,up=false,waterlogged=false,west=low]", + "2080": "minecraft:end_stone_brick_wall[east=tall,north=tall,south=tall,up=false,waterlogged=false,west=tall]", + "2081": "minecraft:nether_wart[age=0]", + "2082": "minecraft:nether_wart[age=1]", + "2083": "minecraft:nether_wart[age=2]", + "2084": "minecraft:nether_wart[age=3]", + "2085": "minecraft:dead_fire_coral[waterlogged=true]", + "2086": "minecraft:dead_fire_coral[waterlogged=false]", + "2087": "minecraft:lapis_ore", + "2088": "minecraft:nether_brick_wall[east=none,north=none,south=none,up=true,waterlogged=true,west=none]", + "2089": "minecraft:nether_brick_wall[east=none,north=none,south=none,up=true,waterlogged=true,west=low]", + "2090": "minecraft:nether_brick_wall[east=none,north=none,south=none,up=true,waterlogged=true,west=tall]", + "2091": "minecraft:nether_brick_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=none]", + "2092": "minecraft:nether_brick_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=low]", + "2093": "minecraft:nether_brick_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=tall]", + "2094": "minecraft:nether_brick_wall[east=none,north=none,south=none,up=false,waterlogged=true,west=none]", + "2095": "minecraft:nether_brick_wall[east=none,north=none,south=none,up=false,waterlogged=true,west=low]", + "2096": "minecraft:nether_brick_wall[east=none,north=none,south=none,up=false,waterlogged=true,west=tall]", + "2097": "minecraft:nether_brick_wall[east=none,north=none,south=none,up=false,waterlogged=false,west=none]", + "2098": "minecraft:nether_brick_wall[east=none,north=none,south=none,up=false,waterlogged=false,west=low]", + "2099": "minecraft:nether_brick_wall[east=none,north=none,south=none,up=false,waterlogged=false,west=tall]", + "2100": "minecraft:nether_brick_wall[east=none,north=none,south=low,up=true,waterlogged=true,west=none]", + "2101": "minecraft:nether_brick_wall[east=none,north=none,south=low,up=true,waterlogged=true,west=low]", + "2102": "minecraft:nether_brick_wall[east=none,north=none,south=low,up=true,waterlogged=true,west=tall]", + "2103": "minecraft:nether_brick_wall[east=none,north=none,south=low,up=true,waterlogged=false,west=none]", + "2104": "minecraft:nether_brick_wall[east=none,north=none,south=low,up=true,waterlogged=false,west=low]", + "2105": "minecraft:nether_brick_wall[east=none,north=none,south=low,up=true,waterlogged=false,west=tall]", + "2106": "minecraft:nether_brick_wall[east=none,north=none,south=low,up=false,waterlogged=true,west=none]", + "2107": "minecraft:nether_brick_wall[east=none,north=none,south=low,up=false,waterlogged=true,west=low]", + "2108": "minecraft:nether_brick_wall[east=none,north=none,south=low,up=false,waterlogged=true,west=tall]", + "2109": "minecraft:nether_brick_wall[east=none,north=none,south=low,up=false,waterlogged=false,west=none]", + "2110": "minecraft:nether_brick_wall[east=none,north=none,south=low,up=false,waterlogged=false,west=low]", + "2111": "minecraft:nether_brick_wall[east=none,north=none,south=low,up=false,waterlogged=false,west=tall]", + "2112": "minecraft:nether_brick_wall[east=none,north=none,south=tall,up=true,waterlogged=true,west=none]", + "2113": "minecraft:nether_brick_wall[east=none,north=none,south=tall,up=true,waterlogged=true,west=low]", + "2114": "minecraft:nether_brick_wall[east=none,north=none,south=tall,up=true,waterlogged=true,west=tall]", + "2115": "minecraft:nether_brick_wall[east=none,north=none,south=tall,up=true,waterlogged=false,west=none]", + "2116": "minecraft:nether_brick_wall[east=none,north=none,south=tall,up=true,waterlogged=false,west=low]", + "2117": "minecraft:nether_brick_wall[east=none,north=none,south=tall,up=true,waterlogged=false,west=tall]", + "2118": "minecraft:nether_brick_wall[east=none,north=none,south=tall,up=false,waterlogged=true,west=none]", + "2119": "minecraft:nether_brick_wall[east=none,north=none,south=tall,up=false,waterlogged=true,west=low]", + "2120": "minecraft:nether_brick_wall[east=none,north=none,south=tall,up=false,waterlogged=true,west=tall]", + "2121": "minecraft:nether_brick_wall[east=none,north=none,south=tall,up=false,waterlogged=false,west=none]", + "2122": "minecraft:nether_brick_wall[east=none,north=none,south=tall,up=false,waterlogged=false,west=low]", + "2123": "minecraft:nether_brick_wall[east=none,north=none,south=tall,up=false,waterlogged=false,west=tall]", + "2124": "minecraft:nether_brick_wall[east=none,north=low,south=none,up=true,waterlogged=true,west=none]", + "2125": "minecraft:nether_brick_wall[east=none,north=low,south=none,up=true,waterlogged=true,west=low]", + "2126": "minecraft:nether_brick_wall[east=none,north=low,south=none,up=true,waterlogged=true,west=tall]", + "2127": "minecraft:nether_brick_wall[east=none,north=low,south=none,up=true,waterlogged=false,west=none]", + "2128": "minecraft:nether_brick_wall[east=none,north=low,south=none,up=true,waterlogged=false,west=low]", + "2129": "minecraft:nether_brick_wall[east=none,north=low,south=none,up=true,waterlogged=false,west=tall]", + "2130": "minecraft:nether_brick_wall[east=none,north=low,south=none,up=false,waterlogged=true,west=none]", + "2131": "minecraft:nether_brick_wall[east=none,north=low,south=none,up=false,waterlogged=true,west=low]", + "2132": "minecraft:nether_brick_wall[east=none,north=low,south=none,up=false,waterlogged=true,west=tall]", + "2133": "minecraft:nether_brick_wall[east=none,north=low,south=none,up=false,waterlogged=false,west=none]", + "2134": "minecraft:nether_brick_wall[east=none,north=low,south=none,up=false,waterlogged=false,west=low]", + "2135": "minecraft:nether_brick_wall[east=none,north=low,south=none,up=false,waterlogged=false,west=tall]", + "2136": "minecraft:nether_brick_wall[east=none,north=low,south=low,up=true,waterlogged=true,west=none]", + "2137": "minecraft:nether_brick_wall[east=none,north=low,south=low,up=true,waterlogged=true,west=low]", + "2138": "minecraft:nether_brick_wall[east=none,north=low,south=low,up=true,waterlogged=true,west=tall]", + "2139": "minecraft:nether_brick_wall[east=none,north=low,south=low,up=true,waterlogged=false,west=none]", + "2140": "minecraft:nether_brick_wall[east=none,north=low,south=low,up=true,waterlogged=false,west=low]", + "2141": "minecraft:nether_brick_wall[east=none,north=low,south=low,up=true,waterlogged=false,west=tall]", + "2142": "minecraft:nether_brick_wall[east=none,north=low,south=low,up=false,waterlogged=true,west=none]", + "2143": "minecraft:nether_brick_wall[east=none,north=low,south=low,up=false,waterlogged=true,west=low]", + "2144": "minecraft:nether_brick_wall[east=none,north=low,south=low,up=false,waterlogged=true,west=tall]", + "2145": "minecraft:nether_brick_wall[east=none,north=low,south=low,up=false,waterlogged=false,west=none]", + "2146": "minecraft:nether_brick_wall[east=none,north=low,south=low,up=false,waterlogged=false,west=low]", + "2147": "minecraft:nether_brick_wall[east=none,north=low,south=low,up=false,waterlogged=false,west=tall]", + "2148": "minecraft:nether_brick_wall[east=none,north=low,south=tall,up=true,waterlogged=true,west=none]", + "2149": "minecraft:nether_brick_wall[east=none,north=low,south=tall,up=true,waterlogged=true,west=low]", + "2150": "minecraft:nether_brick_wall[east=none,north=low,south=tall,up=true,waterlogged=true,west=tall]", + "2151": "minecraft:nether_brick_wall[east=none,north=low,south=tall,up=true,waterlogged=false,west=none]", + "2152": "minecraft:nether_brick_wall[east=none,north=low,south=tall,up=true,waterlogged=false,west=low]", + "2153": "minecraft:nether_brick_wall[east=none,north=low,south=tall,up=true,waterlogged=false,west=tall]", + "2154": "minecraft:nether_brick_wall[east=none,north=low,south=tall,up=false,waterlogged=true,west=none]", + "2155": "minecraft:nether_brick_wall[east=none,north=low,south=tall,up=false,waterlogged=true,west=low]", + "2156": "minecraft:nether_brick_wall[east=none,north=low,south=tall,up=false,waterlogged=true,west=tall]", + "2157": "minecraft:nether_brick_wall[east=none,north=low,south=tall,up=false,waterlogged=false,west=none]", + "2158": "minecraft:nether_brick_wall[east=none,north=low,south=tall,up=false,waterlogged=false,west=low]", + "2159": "minecraft:nether_brick_wall[east=none,north=low,south=tall,up=false,waterlogged=false,west=tall]", + "2160": "minecraft:nether_brick_wall[east=none,north=tall,south=none,up=true,waterlogged=true,west=none]", + "2161": "minecraft:nether_brick_wall[east=none,north=tall,south=none,up=true,waterlogged=true,west=low]", + "2162": "minecraft:nether_brick_wall[east=none,north=tall,south=none,up=true,waterlogged=true,west=tall]", + "2163": "minecraft:nether_brick_wall[east=none,north=tall,south=none,up=true,waterlogged=false,west=none]", + "2164": "minecraft:nether_brick_wall[east=none,north=tall,south=none,up=true,waterlogged=false,west=low]", + "2165": "minecraft:nether_brick_wall[east=none,north=tall,south=none,up=true,waterlogged=false,west=tall]", + "2166": "minecraft:nether_brick_wall[east=none,north=tall,south=none,up=false,waterlogged=true,west=none]", + "2167": "minecraft:nether_brick_wall[east=none,north=tall,south=none,up=false,waterlogged=true,west=low]", + "2168": "minecraft:nether_brick_wall[east=none,north=tall,south=none,up=false,waterlogged=true,west=tall]", + "2169": "minecraft:nether_brick_wall[east=none,north=tall,south=none,up=false,waterlogged=false,west=none]", + "2170": "minecraft:nether_brick_wall[east=none,north=tall,south=none,up=false,waterlogged=false,west=low]", + "2171": "minecraft:nether_brick_wall[east=none,north=tall,south=none,up=false,waterlogged=false,west=tall]", + "2172": "minecraft:nether_brick_wall[east=none,north=tall,south=low,up=true,waterlogged=true,west=none]", + "2173": "minecraft:nether_brick_wall[east=none,north=tall,south=low,up=true,waterlogged=true,west=low]", + "2174": "minecraft:nether_brick_wall[east=none,north=tall,south=low,up=true,waterlogged=true,west=tall]", + "2175": "minecraft:nether_brick_wall[east=none,north=tall,south=low,up=true,waterlogged=false,west=none]", + "2176": "minecraft:nether_brick_wall[east=none,north=tall,south=low,up=true,waterlogged=false,west=low]", + "2177": "minecraft:nether_brick_wall[east=none,north=tall,south=low,up=true,waterlogged=false,west=tall]", + "2178": "minecraft:nether_brick_wall[east=none,north=tall,south=low,up=false,waterlogged=true,west=none]", + "2179": "minecraft:nether_brick_wall[east=none,north=tall,south=low,up=false,waterlogged=true,west=low]", + "2180": "minecraft:nether_brick_wall[east=none,north=tall,south=low,up=false,waterlogged=true,west=tall]", + "2181": "minecraft:nether_brick_wall[east=none,north=tall,south=low,up=false,waterlogged=false,west=none]", + "2182": "minecraft:nether_brick_wall[east=none,north=tall,south=low,up=false,waterlogged=false,west=low]", + "2183": "minecraft:nether_brick_wall[east=none,north=tall,south=low,up=false,waterlogged=false,west=tall]", + "2184": "minecraft:nether_brick_wall[east=none,north=tall,south=tall,up=true,waterlogged=true,west=none]", + "2185": "minecraft:nether_brick_wall[east=none,north=tall,south=tall,up=true,waterlogged=true,west=low]", + "2186": "minecraft:nether_brick_wall[east=none,north=tall,south=tall,up=true,waterlogged=true,west=tall]", + "2187": "minecraft:nether_brick_wall[east=none,north=tall,south=tall,up=true,waterlogged=false,west=none]", + "2188": "minecraft:nether_brick_wall[east=none,north=tall,south=tall,up=true,waterlogged=false,west=low]", + "2189": "minecraft:nether_brick_wall[east=none,north=tall,south=tall,up=true,waterlogged=false,west=tall]", + "2190": "minecraft:nether_brick_wall[east=none,north=tall,south=tall,up=false,waterlogged=true,west=none]", + "2191": "minecraft:nether_brick_wall[east=none,north=tall,south=tall,up=false,waterlogged=true,west=low]", + "2192": "minecraft:nether_brick_wall[east=none,north=tall,south=tall,up=false,waterlogged=true,west=tall]", + "2193": "minecraft:nether_brick_wall[east=none,north=tall,south=tall,up=false,waterlogged=false,west=none]", + "2194": "minecraft:nether_brick_wall[east=none,north=tall,south=tall,up=false,waterlogged=false,west=low]", + "2195": "minecraft:nether_brick_wall[east=none,north=tall,south=tall,up=false,waterlogged=false,west=tall]", + "2196": "minecraft:nether_brick_wall[east=low,north=none,south=none,up=true,waterlogged=true,west=none]", + "2197": "minecraft:nether_brick_wall[east=low,north=none,south=none,up=true,waterlogged=true,west=low]", + "2198": "minecraft:nether_brick_wall[east=low,north=none,south=none,up=true,waterlogged=true,west=tall]", + "2199": "minecraft:nether_brick_wall[east=low,north=none,south=none,up=true,waterlogged=false,west=none]", + "2200": "minecraft:nether_brick_wall[east=low,north=none,south=none,up=true,waterlogged=false,west=low]", + "2201": "minecraft:nether_brick_wall[east=low,north=none,south=none,up=true,waterlogged=false,west=tall]", + "2202": "minecraft:nether_brick_wall[east=low,north=none,south=none,up=false,waterlogged=true,west=none]", + "2203": "minecraft:nether_brick_wall[east=low,north=none,south=none,up=false,waterlogged=true,west=low]", + "2204": "minecraft:nether_brick_wall[east=low,north=none,south=none,up=false,waterlogged=true,west=tall]", + "2205": "minecraft:nether_brick_wall[east=low,north=none,south=none,up=false,waterlogged=false,west=none]", + "2206": "minecraft:nether_brick_wall[east=low,north=none,south=none,up=false,waterlogged=false,west=low]", + "2207": "minecraft:nether_brick_wall[east=low,north=none,south=none,up=false,waterlogged=false,west=tall]", + "2208": "minecraft:nether_brick_wall[east=low,north=none,south=low,up=true,waterlogged=true,west=none]", + "2209": "minecraft:nether_brick_wall[east=low,north=none,south=low,up=true,waterlogged=true,west=low]", + "2210": "minecraft:nether_brick_wall[east=low,north=none,south=low,up=true,waterlogged=true,west=tall]", + "2211": "minecraft:nether_brick_wall[east=low,north=none,south=low,up=true,waterlogged=false,west=none]", + "2212": "minecraft:nether_brick_wall[east=low,north=none,south=low,up=true,waterlogged=false,west=low]", + "2213": "minecraft:nether_brick_wall[east=low,north=none,south=low,up=true,waterlogged=false,west=tall]", + "2214": "minecraft:nether_brick_wall[east=low,north=none,south=low,up=false,waterlogged=true,west=none]", + "2215": "minecraft:nether_brick_wall[east=low,north=none,south=low,up=false,waterlogged=true,west=low]", + "2216": "minecraft:nether_brick_wall[east=low,north=none,south=low,up=false,waterlogged=true,west=tall]", + "2217": "minecraft:nether_brick_wall[east=low,north=none,south=low,up=false,waterlogged=false,west=none]", + "2218": "minecraft:nether_brick_wall[east=low,north=none,south=low,up=false,waterlogged=false,west=low]", + "2219": "minecraft:nether_brick_wall[east=low,north=none,south=low,up=false,waterlogged=false,west=tall]", + "2220": "minecraft:nether_brick_wall[east=low,north=none,south=tall,up=true,waterlogged=true,west=none]", + "2221": "minecraft:nether_brick_wall[east=low,north=none,south=tall,up=true,waterlogged=true,west=low]", + "2222": "minecraft:nether_brick_wall[east=low,north=none,south=tall,up=true,waterlogged=true,west=tall]", + "2223": "minecraft:nether_brick_wall[east=low,north=none,south=tall,up=true,waterlogged=false,west=none]", + "2224": "minecraft:nether_brick_wall[east=low,north=none,south=tall,up=true,waterlogged=false,west=low]", + "2225": "minecraft:nether_brick_wall[east=low,north=none,south=tall,up=true,waterlogged=false,west=tall]", + "2226": "minecraft:nether_brick_wall[east=low,north=none,south=tall,up=false,waterlogged=true,west=none]", + "2227": "minecraft:nether_brick_wall[east=low,north=none,south=tall,up=false,waterlogged=true,west=low]", + "2228": "minecraft:nether_brick_wall[east=low,north=none,south=tall,up=false,waterlogged=true,west=tall]", + "2229": "minecraft:nether_brick_wall[east=low,north=none,south=tall,up=false,waterlogged=false,west=none]", + "2230": "minecraft:nether_brick_wall[east=low,north=none,south=tall,up=false,waterlogged=false,west=low]", + "2231": "minecraft:nether_brick_wall[east=low,north=none,south=tall,up=false,waterlogged=false,west=tall]", + "2232": "minecraft:nether_brick_wall[east=low,north=low,south=none,up=true,waterlogged=true,west=none]", + "2233": "minecraft:nether_brick_wall[east=low,north=low,south=none,up=true,waterlogged=true,west=low]", + "2234": "minecraft:nether_brick_wall[east=low,north=low,south=none,up=true,waterlogged=true,west=tall]", + "2235": "minecraft:nether_brick_wall[east=low,north=low,south=none,up=true,waterlogged=false,west=none]", + "2236": "minecraft:nether_brick_wall[east=low,north=low,south=none,up=true,waterlogged=false,west=low]", + "2237": "minecraft:nether_brick_wall[east=low,north=low,south=none,up=true,waterlogged=false,west=tall]", + "2238": "minecraft:nether_brick_wall[east=low,north=low,south=none,up=false,waterlogged=true,west=none]", + "2239": "minecraft:nether_brick_wall[east=low,north=low,south=none,up=false,waterlogged=true,west=low]", + "2240": "minecraft:nether_brick_wall[east=low,north=low,south=none,up=false,waterlogged=true,west=tall]", + "2241": "minecraft:nether_brick_wall[east=low,north=low,south=none,up=false,waterlogged=false,west=none]", + "2242": "minecraft:nether_brick_wall[east=low,north=low,south=none,up=false,waterlogged=false,west=low]", + "2243": "minecraft:nether_brick_wall[east=low,north=low,south=none,up=false,waterlogged=false,west=tall]", + "2244": "minecraft:nether_brick_wall[east=low,north=low,south=low,up=true,waterlogged=true,west=none]", + "2245": "minecraft:nether_brick_wall[east=low,north=low,south=low,up=true,waterlogged=true,west=low]", + "2246": "minecraft:nether_brick_wall[east=low,north=low,south=low,up=true,waterlogged=true,west=tall]", + "2247": "minecraft:nether_brick_wall[east=low,north=low,south=low,up=true,waterlogged=false,west=none]", + "2248": "minecraft:nether_brick_wall[east=low,north=low,south=low,up=true,waterlogged=false,west=low]", + "2249": "minecraft:nether_brick_wall[east=low,north=low,south=low,up=true,waterlogged=false,west=tall]", + "2250": "minecraft:nether_brick_wall[east=low,north=low,south=low,up=false,waterlogged=true,west=none]", + "2251": "minecraft:nether_brick_wall[east=low,north=low,south=low,up=false,waterlogged=true,west=low]", + "2252": "minecraft:nether_brick_wall[east=low,north=low,south=low,up=false,waterlogged=true,west=tall]", + "2253": "minecraft:nether_brick_wall[east=low,north=low,south=low,up=false,waterlogged=false,west=none]", + "2254": "minecraft:nether_brick_wall[east=low,north=low,south=low,up=false,waterlogged=false,west=low]", + "2255": "minecraft:nether_brick_wall[east=low,north=low,south=low,up=false,waterlogged=false,west=tall]", + "2256": "minecraft:nether_brick_wall[east=low,north=low,south=tall,up=true,waterlogged=true,west=none]", + "2257": "minecraft:nether_brick_wall[east=low,north=low,south=tall,up=true,waterlogged=true,west=low]", + "2258": "minecraft:nether_brick_wall[east=low,north=low,south=tall,up=true,waterlogged=true,west=tall]", + "2259": "minecraft:nether_brick_wall[east=low,north=low,south=tall,up=true,waterlogged=false,west=none]", + "2260": "minecraft:nether_brick_wall[east=low,north=low,south=tall,up=true,waterlogged=false,west=low]", + "2261": "minecraft:nether_brick_wall[east=low,north=low,south=tall,up=true,waterlogged=false,west=tall]", + "2262": "minecraft:nether_brick_wall[east=low,north=low,south=tall,up=false,waterlogged=true,west=none]", + "2263": "minecraft:nether_brick_wall[east=low,north=low,south=tall,up=false,waterlogged=true,west=low]", + "2264": "minecraft:nether_brick_wall[east=low,north=low,south=tall,up=false,waterlogged=true,west=tall]", + "2265": "minecraft:nether_brick_wall[east=low,north=low,south=tall,up=false,waterlogged=false,west=none]", + "2266": "minecraft:nether_brick_wall[east=low,north=low,south=tall,up=false,waterlogged=false,west=low]", + "2267": "minecraft:nether_brick_wall[east=low,north=low,south=tall,up=false,waterlogged=false,west=tall]", + "2268": "minecraft:nether_brick_wall[east=low,north=tall,south=none,up=true,waterlogged=true,west=none]", + "2269": "minecraft:nether_brick_wall[east=low,north=tall,south=none,up=true,waterlogged=true,west=low]", + "2270": "minecraft:nether_brick_wall[east=low,north=tall,south=none,up=true,waterlogged=true,west=tall]", + "2271": "minecraft:nether_brick_wall[east=low,north=tall,south=none,up=true,waterlogged=false,west=none]", + "2272": "minecraft:nether_brick_wall[east=low,north=tall,south=none,up=true,waterlogged=false,west=low]", + "2273": "minecraft:nether_brick_wall[east=low,north=tall,south=none,up=true,waterlogged=false,west=tall]", + "2274": "minecraft:nether_brick_wall[east=low,north=tall,south=none,up=false,waterlogged=true,west=none]", + "2275": "minecraft:nether_brick_wall[east=low,north=tall,south=none,up=false,waterlogged=true,west=low]", + "2276": "minecraft:nether_brick_wall[east=low,north=tall,south=none,up=false,waterlogged=true,west=tall]", + "2277": "minecraft:nether_brick_wall[east=low,north=tall,south=none,up=false,waterlogged=false,west=none]", + "2278": "minecraft:nether_brick_wall[east=low,north=tall,south=none,up=false,waterlogged=false,west=low]", + "2279": "minecraft:nether_brick_wall[east=low,north=tall,south=none,up=false,waterlogged=false,west=tall]", + "2280": "minecraft:nether_brick_wall[east=low,north=tall,south=low,up=true,waterlogged=true,west=none]", + "2281": "minecraft:nether_brick_wall[east=low,north=tall,south=low,up=true,waterlogged=true,west=low]", + "2282": "minecraft:nether_brick_wall[east=low,north=tall,south=low,up=true,waterlogged=true,west=tall]", + "2283": "minecraft:nether_brick_wall[east=low,north=tall,south=low,up=true,waterlogged=false,west=none]", + "2284": "minecraft:nether_brick_wall[east=low,north=tall,south=low,up=true,waterlogged=false,west=low]", + "2285": "minecraft:nether_brick_wall[east=low,north=tall,south=low,up=true,waterlogged=false,west=tall]", + "2286": "minecraft:nether_brick_wall[east=low,north=tall,south=low,up=false,waterlogged=true,west=none]", + "2287": "minecraft:nether_brick_wall[east=low,north=tall,south=low,up=false,waterlogged=true,west=low]", + "2288": "minecraft:nether_brick_wall[east=low,north=tall,south=low,up=false,waterlogged=true,west=tall]", + "2289": "minecraft:nether_brick_wall[east=low,north=tall,south=low,up=false,waterlogged=false,west=none]", + "2290": "minecraft:nether_brick_wall[east=low,north=tall,south=low,up=false,waterlogged=false,west=low]", + "2291": "minecraft:nether_brick_wall[east=low,north=tall,south=low,up=false,waterlogged=false,west=tall]", + "2292": "minecraft:nether_brick_wall[east=low,north=tall,south=tall,up=true,waterlogged=true,west=none]", + "2293": "minecraft:nether_brick_wall[east=low,north=tall,south=tall,up=true,waterlogged=true,west=low]", + "2294": "minecraft:nether_brick_wall[east=low,north=tall,south=tall,up=true,waterlogged=true,west=tall]", + "2295": "minecraft:nether_brick_wall[east=low,north=tall,south=tall,up=true,waterlogged=false,west=none]", + "2296": "minecraft:nether_brick_wall[east=low,north=tall,south=tall,up=true,waterlogged=false,west=low]", + "2297": "minecraft:nether_brick_wall[east=low,north=tall,south=tall,up=true,waterlogged=false,west=tall]", + "2298": "minecraft:nether_brick_wall[east=low,north=tall,south=tall,up=false,waterlogged=true,west=none]", + "2299": "minecraft:nether_brick_wall[east=low,north=tall,south=tall,up=false,waterlogged=true,west=low]", + "2300": "minecraft:nether_brick_wall[east=low,north=tall,south=tall,up=false,waterlogged=true,west=tall]", + "2301": "minecraft:nether_brick_wall[east=low,north=tall,south=tall,up=false,waterlogged=false,west=none]", + "2302": "minecraft:nether_brick_wall[east=low,north=tall,south=tall,up=false,waterlogged=false,west=low]", + "2303": "minecraft:nether_brick_wall[east=low,north=tall,south=tall,up=false,waterlogged=false,west=tall]", + "2304": "minecraft:nether_brick_wall[east=tall,north=none,south=none,up=true,waterlogged=true,west=none]", + "2305": "minecraft:nether_brick_wall[east=tall,north=none,south=none,up=true,waterlogged=true,west=low]", + "2306": "minecraft:nether_brick_wall[east=tall,north=none,south=none,up=true,waterlogged=true,west=tall]", + "2307": "minecraft:nether_brick_wall[east=tall,north=none,south=none,up=true,waterlogged=false,west=none]", + "2308": "minecraft:nether_brick_wall[east=tall,north=none,south=none,up=true,waterlogged=false,west=low]", + "2309": "minecraft:nether_brick_wall[east=tall,north=none,south=none,up=true,waterlogged=false,west=tall]", + "2310": "minecraft:nether_brick_wall[east=tall,north=none,south=none,up=false,waterlogged=true,west=none]", + "2311": "minecraft:nether_brick_wall[east=tall,north=none,south=none,up=false,waterlogged=true,west=low]", + "2312": "minecraft:nether_brick_wall[east=tall,north=none,south=none,up=false,waterlogged=true,west=tall]", + "2313": "minecraft:nether_brick_wall[east=tall,north=none,south=none,up=false,waterlogged=false,west=none]", + "2314": "minecraft:nether_brick_wall[east=tall,north=none,south=none,up=false,waterlogged=false,west=low]", + "2315": "minecraft:nether_brick_wall[east=tall,north=none,south=none,up=false,waterlogged=false,west=tall]", + "2316": "minecraft:nether_brick_wall[east=tall,north=none,south=low,up=true,waterlogged=true,west=none]", + "2317": "minecraft:nether_brick_wall[east=tall,north=none,south=low,up=true,waterlogged=true,west=low]", + "2318": "minecraft:nether_brick_wall[east=tall,north=none,south=low,up=true,waterlogged=true,west=tall]", + "2319": "minecraft:nether_brick_wall[east=tall,north=none,south=low,up=true,waterlogged=false,west=none]", + "2320": "minecraft:nether_brick_wall[east=tall,north=none,south=low,up=true,waterlogged=false,west=low]", + "2321": "minecraft:nether_brick_wall[east=tall,north=none,south=low,up=true,waterlogged=false,west=tall]", + "2322": "minecraft:nether_brick_wall[east=tall,north=none,south=low,up=false,waterlogged=true,west=none]", + "2323": "minecraft:nether_brick_wall[east=tall,north=none,south=low,up=false,waterlogged=true,west=low]", + "2324": "minecraft:nether_brick_wall[east=tall,north=none,south=low,up=false,waterlogged=true,west=tall]", + "2325": "minecraft:nether_brick_wall[east=tall,north=none,south=low,up=false,waterlogged=false,west=none]", + "2326": "minecraft:nether_brick_wall[east=tall,north=none,south=low,up=false,waterlogged=false,west=low]", + "2327": "minecraft:nether_brick_wall[east=tall,north=none,south=low,up=false,waterlogged=false,west=tall]", + "2328": "minecraft:nether_brick_wall[east=tall,north=none,south=tall,up=true,waterlogged=true,west=none]", + "2329": "minecraft:nether_brick_wall[east=tall,north=none,south=tall,up=true,waterlogged=true,west=low]", + "2330": "minecraft:nether_brick_wall[east=tall,north=none,south=tall,up=true,waterlogged=true,west=tall]", + "2331": "minecraft:nether_brick_wall[east=tall,north=none,south=tall,up=true,waterlogged=false,west=none]", + "2332": "minecraft:nether_brick_wall[east=tall,north=none,south=tall,up=true,waterlogged=false,west=low]", + "2333": "minecraft:nether_brick_wall[east=tall,north=none,south=tall,up=true,waterlogged=false,west=tall]", + "2334": "minecraft:nether_brick_wall[east=tall,north=none,south=tall,up=false,waterlogged=true,west=none]", + "2335": "minecraft:nether_brick_wall[east=tall,north=none,south=tall,up=false,waterlogged=true,west=low]", + "2336": "minecraft:nether_brick_wall[east=tall,north=none,south=tall,up=false,waterlogged=true,west=tall]", + "2337": "minecraft:nether_brick_wall[east=tall,north=none,south=tall,up=false,waterlogged=false,west=none]", + "2338": "minecraft:nether_brick_wall[east=tall,north=none,south=tall,up=false,waterlogged=false,west=low]", + "2339": "minecraft:nether_brick_wall[east=tall,north=none,south=tall,up=false,waterlogged=false,west=tall]", + "2340": "minecraft:nether_brick_wall[east=tall,north=low,south=none,up=true,waterlogged=true,west=none]", + "2341": "minecraft:nether_brick_wall[east=tall,north=low,south=none,up=true,waterlogged=true,west=low]", + "2342": "minecraft:nether_brick_wall[east=tall,north=low,south=none,up=true,waterlogged=true,west=tall]", + "2343": "minecraft:nether_brick_wall[east=tall,north=low,south=none,up=true,waterlogged=false,west=none]", + "2344": "minecraft:nether_brick_wall[east=tall,north=low,south=none,up=true,waterlogged=false,west=low]", + "2345": "minecraft:nether_brick_wall[east=tall,north=low,south=none,up=true,waterlogged=false,west=tall]", + "2346": "minecraft:nether_brick_wall[east=tall,north=low,south=none,up=false,waterlogged=true,west=none]", + "2347": "minecraft:nether_brick_wall[east=tall,north=low,south=none,up=false,waterlogged=true,west=low]", + "2348": "minecraft:nether_brick_wall[east=tall,north=low,south=none,up=false,waterlogged=true,west=tall]", + "2349": "minecraft:nether_brick_wall[east=tall,north=low,south=none,up=false,waterlogged=false,west=none]", + "2350": "minecraft:nether_brick_wall[east=tall,north=low,south=none,up=false,waterlogged=false,west=low]", + "2351": "minecraft:nether_brick_wall[east=tall,north=low,south=none,up=false,waterlogged=false,west=tall]", + "2352": "minecraft:nether_brick_wall[east=tall,north=low,south=low,up=true,waterlogged=true,west=none]", + "2353": "minecraft:nether_brick_wall[east=tall,north=low,south=low,up=true,waterlogged=true,west=low]", + "2354": "minecraft:nether_brick_wall[east=tall,north=low,south=low,up=true,waterlogged=true,west=tall]", + "2355": "minecraft:nether_brick_wall[east=tall,north=low,south=low,up=true,waterlogged=false,west=none]", + "2356": "minecraft:nether_brick_wall[east=tall,north=low,south=low,up=true,waterlogged=false,west=low]", + "2357": "minecraft:nether_brick_wall[east=tall,north=low,south=low,up=true,waterlogged=false,west=tall]", + "2358": "minecraft:nether_brick_wall[east=tall,north=low,south=low,up=false,waterlogged=true,west=none]", + "2359": "minecraft:nether_brick_wall[east=tall,north=low,south=low,up=false,waterlogged=true,west=low]", + "2360": "minecraft:nether_brick_wall[east=tall,north=low,south=low,up=false,waterlogged=true,west=tall]", + "2361": "minecraft:nether_brick_wall[east=tall,north=low,south=low,up=false,waterlogged=false,west=none]", + "2362": "minecraft:nether_brick_wall[east=tall,north=low,south=low,up=false,waterlogged=false,west=low]", + "2363": "minecraft:nether_brick_wall[east=tall,north=low,south=low,up=false,waterlogged=false,west=tall]", + "2364": "minecraft:nether_brick_wall[east=tall,north=low,south=tall,up=true,waterlogged=true,west=none]", + "2365": "minecraft:nether_brick_wall[east=tall,north=low,south=tall,up=true,waterlogged=true,west=low]", + "2366": "minecraft:nether_brick_wall[east=tall,north=low,south=tall,up=true,waterlogged=true,west=tall]", + "2367": "minecraft:nether_brick_wall[east=tall,north=low,south=tall,up=true,waterlogged=false,west=none]", + "2368": "minecraft:nether_brick_wall[east=tall,north=low,south=tall,up=true,waterlogged=false,west=low]", + "2369": "minecraft:nether_brick_wall[east=tall,north=low,south=tall,up=true,waterlogged=false,west=tall]", + "2370": "minecraft:nether_brick_wall[east=tall,north=low,south=tall,up=false,waterlogged=true,west=none]", + "2371": "minecraft:nether_brick_wall[east=tall,north=low,south=tall,up=false,waterlogged=true,west=low]", + "2372": "minecraft:nether_brick_wall[east=tall,north=low,south=tall,up=false,waterlogged=true,west=tall]", + "2373": "minecraft:nether_brick_wall[east=tall,north=low,south=tall,up=false,waterlogged=false,west=none]", + "2374": "minecraft:nether_brick_wall[east=tall,north=low,south=tall,up=false,waterlogged=false,west=low]", + "2375": "minecraft:nether_brick_wall[east=tall,north=low,south=tall,up=false,waterlogged=false,west=tall]", + "2376": "minecraft:nether_brick_wall[east=tall,north=tall,south=none,up=true,waterlogged=true,west=none]", + "2377": "minecraft:nether_brick_wall[east=tall,north=tall,south=none,up=true,waterlogged=true,west=low]", + "2378": "minecraft:nether_brick_wall[east=tall,north=tall,south=none,up=true,waterlogged=true,west=tall]", + "2379": "minecraft:nether_brick_wall[east=tall,north=tall,south=none,up=true,waterlogged=false,west=none]", + "2380": "minecraft:nether_brick_wall[east=tall,north=tall,south=none,up=true,waterlogged=false,west=low]", + "2381": "minecraft:nether_brick_wall[east=tall,north=tall,south=none,up=true,waterlogged=false,west=tall]", + "2382": "minecraft:nether_brick_wall[east=tall,north=tall,south=none,up=false,waterlogged=true,west=none]", + "2383": "minecraft:nether_brick_wall[east=tall,north=tall,south=none,up=false,waterlogged=true,west=low]", + "2384": "minecraft:nether_brick_wall[east=tall,north=tall,south=none,up=false,waterlogged=true,west=tall]", + "2385": "minecraft:nether_brick_wall[east=tall,north=tall,south=none,up=false,waterlogged=false,west=none]", + "2386": "minecraft:nether_brick_wall[east=tall,north=tall,south=none,up=false,waterlogged=false,west=low]", + "2387": "minecraft:nether_brick_wall[east=tall,north=tall,south=none,up=false,waterlogged=false,west=tall]", + "2388": "minecraft:nether_brick_wall[east=tall,north=tall,south=low,up=true,waterlogged=true,west=none]", + "2389": "minecraft:nether_brick_wall[east=tall,north=tall,south=low,up=true,waterlogged=true,west=low]", + "2390": "minecraft:nether_brick_wall[east=tall,north=tall,south=low,up=true,waterlogged=true,west=tall]", + "2391": "minecraft:nether_brick_wall[east=tall,north=tall,south=low,up=true,waterlogged=false,west=none]", + "2392": "minecraft:nether_brick_wall[east=tall,north=tall,south=low,up=true,waterlogged=false,west=low]", + "2393": "minecraft:nether_brick_wall[east=tall,north=tall,south=low,up=true,waterlogged=false,west=tall]", + "2394": "minecraft:nether_brick_wall[east=tall,north=tall,south=low,up=false,waterlogged=true,west=none]", + "2395": "minecraft:nether_brick_wall[east=tall,north=tall,south=low,up=false,waterlogged=true,west=low]", + "2396": "minecraft:nether_brick_wall[east=tall,north=tall,south=low,up=false,waterlogged=true,west=tall]", + "2397": "minecraft:nether_brick_wall[east=tall,north=tall,south=low,up=false,waterlogged=false,west=none]", + "2398": "minecraft:nether_brick_wall[east=tall,north=tall,south=low,up=false,waterlogged=false,west=low]", + "2399": "minecraft:nether_brick_wall[east=tall,north=tall,south=low,up=false,waterlogged=false,west=tall]", + "2400": "minecraft:nether_brick_wall[east=tall,north=tall,south=tall,up=true,waterlogged=true,west=none]", + "2401": "minecraft:nether_brick_wall[east=tall,north=tall,south=tall,up=true,waterlogged=true,west=low]", + "2402": "minecraft:nether_brick_wall[east=tall,north=tall,south=tall,up=true,waterlogged=true,west=tall]", + "2403": "minecraft:nether_brick_wall[east=tall,north=tall,south=tall,up=true,waterlogged=false,west=none]", + "2404": "minecraft:nether_brick_wall[east=tall,north=tall,south=tall,up=true,waterlogged=false,west=low]", + "2405": "minecraft:nether_brick_wall[east=tall,north=tall,south=tall,up=true,waterlogged=false,west=tall]", + "2406": "minecraft:nether_brick_wall[east=tall,north=tall,south=tall,up=false,waterlogged=true,west=none]", + "2407": "minecraft:nether_brick_wall[east=tall,north=tall,south=tall,up=false,waterlogged=true,west=low]", + "2408": "minecraft:nether_brick_wall[east=tall,north=tall,south=tall,up=false,waterlogged=true,west=tall]", + "2409": "minecraft:nether_brick_wall[east=tall,north=tall,south=tall,up=false,waterlogged=false,west=none]", + "2410": "minecraft:nether_brick_wall[east=tall,north=tall,south=tall,up=false,waterlogged=false,west=low]", + "2411": "minecraft:nether_brick_wall[east=tall,north=tall,south=tall,up=false,waterlogged=false,west=tall]", + "2412": "minecraft:red_sandstone_wall[east=none,north=none,south=none,up=true,waterlogged=true,west=none]", + "2413": "minecraft:red_sandstone_wall[east=none,north=none,south=none,up=true,waterlogged=true,west=low]", + "2414": "minecraft:red_sandstone_wall[east=none,north=none,south=none,up=true,waterlogged=true,west=tall]", + "2415": "minecraft:red_sandstone_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=none]", + "2416": "minecraft:red_sandstone_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=low]", + "2417": "minecraft:red_sandstone_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=tall]", + "2418": "minecraft:red_sandstone_wall[east=none,north=none,south=none,up=false,waterlogged=true,west=none]", + "2419": "minecraft:red_sandstone_wall[east=none,north=none,south=none,up=false,waterlogged=true,west=low]", + "2420": "minecraft:red_sandstone_wall[east=none,north=none,south=none,up=false,waterlogged=true,west=tall]", + "2421": "minecraft:red_sandstone_wall[east=none,north=none,south=none,up=false,waterlogged=false,west=none]", + "2422": "minecraft:red_sandstone_wall[east=none,north=none,south=none,up=false,waterlogged=false,west=low]", + "2423": "minecraft:red_sandstone_wall[east=none,north=none,south=none,up=false,waterlogged=false,west=tall]", + "2424": "minecraft:red_sandstone_wall[east=none,north=none,south=low,up=true,waterlogged=true,west=none]", + "2425": "minecraft:red_sandstone_wall[east=none,north=none,south=low,up=true,waterlogged=true,west=low]", + "2426": "minecraft:red_sandstone_wall[east=none,north=none,south=low,up=true,waterlogged=true,west=tall]", + "2427": "minecraft:red_sandstone_wall[east=none,north=none,south=low,up=true,waterlogged=false,west=none]", + "2428": "minecraft:red_sandstone_wall[east=none,north=none,south=low,up=true,waterlogged=false,west=low]", + "2429": "minecraft:red_sandstone_wall[east=none,north=none,south=low,up=true,waterlogged=false,west=tall]", + "2430": "minecraft:red_sandstone_wall[east=none,north=none,south=low,up=false,waterlogged=true,west=none]", + "2431": "minecraft:red_sandstone_wall[east=none,north=none,south=low,up=false,waterlogged=true,west=low]", + "2432": "minecraft:red_sandstone_wall[east=none,north=none,south=low,up=false,waterlogged=true,west=tall]", + "2433": "minecraft:red_sandstone_wall[east=none,north=none,south=low,up=false,waterlogged=false,west=none]", + "2434": "minecraft:red_sandstone_wall[east=none,north=none,south=low,up=false,waterlogged=false,west=low]", + "2435": "minecraft:red_sandstone_wall[east=none,north=none,south=low,up=false,waterlogged=false,west=tall]", + "2436": "minecraft:red_sandstone_wall[east=none,north=none,south=tall,up=true,waterlogged=true,west=none]", + "2437": "minecraft:red_sandstone_wall[east=none,north=none,south=tall,up=true,waterlogged=true,west=low]", + "2438": "minecraft:red_sandstone_wall[east=none,north=none,south=tall,up=true,waterlogged=true,west=tall]", + "2439": "minecraft:red_sandstone_wall[east=none,north=none,south=tall,up=true,waterlogged=false,west=none]", + "2440": "minecraft:red_sandstone_wall[east=none,north=none,south=tall,up=true,waterlogged=false,west=low]", + "2441": "minecraft:red_sandstone_wall[east=none,north=none,south=tall,up=true,waterlogged=false,west=tall]", + "2442": "minecraft:red_sandstone_wall[east=none,north=none,south=tall,up=false,waterlogged=true,west=none]", + "2443": "minecraft:red_sandstone_wall[east=none,north=none,south=tall,up=false,waterlogged=true,west=low]", + "2444": "minecraft:red_sandstone_wall[east=none,north=none,south=tall,up=false,waterlogged=true,west=tall]", + "2445": "minecraft:red_sandstone_wall[east=none,north=none,south=tall,up=false,waterlogged=false,west=none]", + "2446": "minecraft:red_sandstone_wall[east=none,north=none,south=tall,up=false,waterlogged=false,west=low]", + "2447": "minecraft:red_sandstone_wall[east=none,north=none,south=tall,up=false,waterlogged=false,west=tall]", + "2448": "minecraft:red_sandstone_wall[east=none,north=low,south=none,up=true,waterlogged=true,west=none]", + "2449": "minecraft:red_sandstone_wall[east=none,north=low,south=none,up=true,waterlogged=true,west=low]", + "2450": "minecraft:red_sandstone_wall[east=none,north=low,south=none,up=true,waterlogged=true,west=tall]", + "2451": "minecraft:red_sandstone_wall[east=none,north=low,south=none,up=true,waterlogged=false,west=none]", + "2452": "minecraft:red_sandstone_wall[east=none,north=low,south=none,up=true,waterlogged=false,west=low]", + "2453": "minecraft:red_sandstone_wall[east=none,north=low,south=none,up=true,waterlogged=false,west=tall]", + "2454": "minecraft:red_sandstone_wall[east=none,north=low,south=none,up=false,waterlogged=true,west=none]", + "2455": "minecraft:red_sandstone_wall[east=none,north=low,south=none,up=false,waterlogged=true,west=low]", + "2456": "minecraft:red_sandstone_wall[east=none,north=low,south=none,up=false,waterlogged=true,west=tall]", + "2457": "minecraft:red_sandstone_wall[east=none,north=low,south=none,up=false,waterlogged=false,west=none]", + "2458": "minecraft:red_sandstone_wall[east=none,north=low,south=none,up=false,waterlogged=false,west=low]", + "2459": "minecraft:red_sandstone_wall[east=none,north=low,south=none,up=false,waterlogged=false,west=tall]", + "2460": "minecraft:red_sandstone_wall[east=none,north=low,south=low,up=true,waterlogged=true,west=none]", + "2461": "minecraft:red_sandstone_wall[east=none,north=low,south=low,up=true,waterlogged=true,west=low]", + "2462": "minecraft:red_sandstone_wall[east=none,north=low,south=low,up=true,waterlogged=true,west=tall]", + "2463": "minecraft:red_sandstone_wall[east=none,north=low,south=low,up=true,waterlogged=false,west=none]", + "2464": "minecraft:red_sandstone_wall[east=none,north=low,south=low,up=true,waterlogged=false,west=low]", + "2465": "minecraft:red_sandstone_wall[east=none,north=low,south=low,up=true,waterlogged=false,west=tall]", + "2466": "minecraft:red_sandstone_wall[east=none,north=low,south=low,up=false,waterlogged=true,west=none]", + "2467": "minecraft:red_sandstone_wall[east=none,north=low,south=low,up=false,waterlogged=true,west=low]", + "2468": "minecraft:red_sandstone_wall[east=none,north=low,south=low,up=false,waterlogged=true,west=tall]", + "2469": "minecraft:red_sandstone_wall[east=none,north=low,south=low,up=false,waterlogged=false,west=none]", + "2470": "minecraft:red_sandstone_wall[east=none,north=low,south=low,up=false,waterlogged=false,west=low]", + "2471": "minecraft:red_sandstone_wall[east=none,north=low,south=low,up=false,waterlogged=false,west=tall]", + "2472": "minecraft:red_sandstone_wall[east=none,north=low,south=tall,up=true,waterlogged=true,west=none]", + "2473": "minecraft:red_sandstone_wall[east=none,north=low,south=tall,up=true,waterlogged=true,west=low]", + "2474": "minecraft:red_sandstone_wall[east=none,north=low,south=tall,up=true,waterlogged=true,west=tall]", + "2475": "minecraft:red_sandstone_wall[east=none,north=low,south=tall,up=true,waterlogged=false,west=none]", + "2476": "minecraft:red_sandstone_wall[east=none,north=low,south=tall,up=true,waterlogged=false,west=low]", + "2477": "minecraft:red_sandstone_wall[east=none,north=low,south=tall,up=true,waterlogged=false,west=tall]", + "2478": "minecraft:red_sandstone_wall[east=none,north=low,south=tall,up=false,waterlogged=true,west=none]", + "2479": "minecraft:red_sandstone_wall[east=none,north=low,south=tall,up=false,waterlogged=true,west=low]", + "2480": "minecraft:red_sandstone_wall[east=none,north=low,south=tall,up=false,waterlogged=true,west=tall]", + "2481": "minecraft:red_sandstone_wall[east=none,north=low,south=tall,up=false,waterlogged=false,west=none]", + "2482": "minecraft:red_sandstone_wall[east=none,north=low,south=tall,up=false,waterlogged=false,west=low]", + "2483": "minecraft:red_sandstone_wall[east=none,north=low,south=tall,up=false,waterlogged=false,west=tall]", + "2484": "minecraft:red_sandstone_wall[east=none,north=tall,south=none,up=true,waterlogged=true,west=none]", + "2485": "minecraft:red_sandstone_wall[east=none,north=tall,south=none,up=true,waterlogged=true,west=low]", + "2486": "minecraft:red_sandstone_wall[east=none,north=tall,south=none,up=true,waterlogged=true,west=tall]", + "2487": "minecraft:red_sandstone_wall[east=none,north=tall,south=none,up=true,waterlogged=false,west=none]", + "2488": "minecraft:red_sandstone_wall[east=none,north=tall,south=none,up=true,waterlogged=false,west=low]", + "2489": "minecraft:red_sandstone_wall[east=none,north=tall,south=none,up=true,waterlogged=false,west=tall]", + "2490": "minecraft:red_sandstone_wall[east=none,north=tall,south=none,up=false,waterlogged=true,west=none]", + "2491": "minecraft:red_sandstone_wall[east=none,north=tall,south=none,up=false,waterlogged=true,west=low]", + "2492": "minecraft:red_sandstone_wall[east=none,north=tall,south=none,up=false,waterlogged=true,west=tall]", + "2493": "minecraft:red_sandstone_wall[east=none,north=tall,south=none,up=false,waterlogged=false,west=none]", + "2494": "minecraft:red_sandstone_wall[east=none,north=tall,south=none,up=false,waterlogged=false,west=low]", + "2495": "minecraft:red_sandstone_wall[east=none,north=tall,south=none,up=false,waterlogged=false,west=tall]", + "2496": "minecraft:red_sandstone_wall[east=none,north=tall,south=low,up=true,waterlogged=true,west=none]", + "2497": "minecraft:red_sandstone_wall[east=none,north=tall,south=low,up=true,waterlogged=true,west=low]", + "2498": "minecraft:red_sandstone_wall[east=none,north=tall,south=low,up=true,waterlogged=true,west=tall]", + "2499": "minecraft:red_sandstone_wall[east=none,north=tall,south=low,up=true,waterlogged=false,west=none]", + "2500": "minecraft:red_sandstone_wall[east=none,north=tall,south=low,up=true,waterlogged=false,west=low]", + "2501": "minecraft:red_sandstone_wall[east=none,north=tall,south=low,up=true,waterlogged=false,west=tall]", + "2502": "minecraft:red_sandstone_wall[east=none,north=tall,south=low,up=false,waterlogged=true,west=none]", + "2503": "minecraft:red_sandstone_wall[east=none,north=tall,south=low,up=false,waterlogged=true,west=low]", + "2504": "minecraft:red_sandstone_wall[east=none,north=tall,south=low,up=false,waterlogged=true,west=tall]", + "2505": "minecraft:red_sandstone_wall[east=none,north=tall,south=low,up=false,waterlogged=false,west=none]", + "2506": "minecraft:red_sandstone_wall[east=none,north=tall,south=low,up=false,waterlogged=false,west=low]", + "2507": "minecraft:red_sandstone_wall[east=none,north=tall,south=low,up=false,waterlogged=false,west=tall]", + "2508": "minecraft:red_sandstone_wall[east=none,north=tall,south=tall,up=true,waterlogged=true,west=none]", + "2509": "minecraft:red_sandstone_wall[east=none,north=tall,south=tall,up=true,waterlogged=true,west=low]", + "2510": "minecraft:red_sandstone_wall[east=none,north=tall,south=tall,up=true,waterlogged=true,west=tall]", + "2511": "minecraft:red_sandstone_wall[east=none,north=tall,south=tall,up=true,waterlogged=false,west=none]", + "2512": "minecraft:red_sandstone_wall[east=none,north=tall,south=tall,up=true,waterlogged=false,west=low]", + "2513": "minecraft:red_sandstone_wall[east=none,north=tall,south=tall,up=true,waterlogged=false,west=tall]", + "2514": "minecraft:red_sandstone_wall[east=none,north=tall,south=tall,up=false,waterlogged=true,west=none]", + "2515": "minecraft:red_sandstone_wall[east=none,north=tall,south=tall,up=false,waterlogged=true,west=low]", + "2516": "minecraft:red_sandstone_wall[east=none,north=tall,south=tall,up=false,waterlogged=true,west=tall]", + "2517": "minecraft:red_sandstone_wall[east=none,north=tall,south=tall,up=false,waterlogged=false,west=none]", + "2518": "minecraft:red_sandstone_wall[east=none,north=tall,south=tall,up=false,waterlogged=false,west=low]", + "2519": "minecraft:red_sandstone_wall[east=none,north=tall,south=tall,up=false,waterlogged=false,west=tall]", + "2520": "minecraft:red_sandstone_wall[east=low,north=none,south=none,up=true,waterlogged=true,west=none]", + "2521": "minecraft:red_sandstone_wall[east=low,north=none,south=none,up=true,waterlogged=true,west=low]", + "2522": "minecraft:red_sandstone_wall[east=low,north=none,south=none,up=true,waterlogged=true,west=tall]", + "2523": "minecraft:red_sandstone_wall[east=low,north=none,south=none,up=true,waterlogged=false,west=none]", + "2524": "minecraft:red_sandstone_wall[east=low,north=none,south=none,up=true,waterlogged=false,west=low]", + "2525": "minecraft:red_sandstone_wall[east=low,north=none,south=none,up=true,waterlogged=false,west=tall]", + "2526": "minecraft:red_sandstone_wall[east=low,north=none,south=none,up=false,waterlogged=true,west=none]", + "2527": "minecraft:red_sandstone_wall[east=low,north=none,south=none,up=false,waterlogged=true,west=low]", + "2528": "minecraft:red_sandstone_wall[east=low,north=none,south=none,up=false,waterlogged=true,west=tall]", + "2529": "minecraft:red_sandstone_wall[east=low,north=none,south=none,up=false,waterlogged=false,west=none]", + "2530": "minecraft:red_sandstone_wall[east=low,north=none,south=none,up=false,waterlogged=false,west=low]", + "2531": "minecraft:red_sandstone_wall[east=low,north=none,south=none,up=false,waterlogged=false,west=tall]", + "2532": "minecraft:red_sandstone_wall[east=low,north=none,south=low,up=true,waterlogged=true,west=none]", + "2533": "minecraft:red_sandstone_wall[east=low,north=none,south=low,up=true,waterlogged=true,west=low]", + "2534": "minecraft:red_sandstone_wall[east=low,north=none,south=low,up=true,waterlogged=true,west=tall]", + "2535": "minecraft:red_sandstone_wall[east=low,north=none,south=low,up=true,waterlogged=false,west=none]", + "2536": "minecraft:red_sandstone_wall[east=low,north=none,south=low,up=true,waterlogged=false,west=low]", + "2537": "minecraft:red_sandstone_wall[east=low,north=none,south=low,up=true,waterlogged=false,west=tall]", + "2538": "minecraft:red_sandstone_wall[east=low,north=none,south=low,up=false,waterlogged=true,west=none]", + "2539": "minecraft:red_sandstone_wall[east=low,north=none,south=low,up=false,waterlogged=true,west=low]", + "2540": "minecraft:red_sandstone_wall[east=low,north=none,south=low,up=false,waterlogged=true,west=tall]", + "2541": "minecraft:red_sandstone_wall[east=low,north=none,south=low,up=false,waterlogged=false,west=none]", + "2542": "minecraft:red_sandstone_wall[east=low,north=none,south=low,up=false,waterlogged=false,west=low]", + "2543": "minecraft:red_sandstone_wall[east=low,north=none,south=low,up=false,waterlogged=false,west=tall]", + "2544": "minecraft:red_sandstone_wall[east=low,north=none,south=tall,up=true,waterlogged=true,west=none]", + "2545": "minecraft:red_sandstone_wall[east=low,north=none,south=tall,up=true,waterlogged=true,west=low]", + "2546": "minecraft:red_sandstone_wall[east=low,north=none,south=tall,up=true,waterlogged=true,west=tall]", + "2547": "minecraft:red_sandstone_wall[east=low,north=none,south=tall,up=true,waterlogged=false,west=none]", + "2548": "minecraft:red_sandstone_wall[east=low,north=none,south=tall,up=true,waterlogged=false,west=low]", + "2549": "minecraft:red_sandstone_wall[east=low,north=none,south=tall,up=true,waterlogged=false,west=tall]", + "2550": "minecraft:red_sandstone_wall[east=low,north=none,south=tall,up=false,waterlogged=true,west=none]", + "2551": "minecraft:red_sandstone_wall[east=low,north=none,south=tall,up=false,waterlogged=true,west=low]", + "2552": "minecraft:red_sandstone_wall[east=low,north=none,south=tall,up=false,waterlogged=true,west=tall]", + "2553": "minecraft:red_sandstone_wall[east=low,north=none,south=tall,up=false,waterlogged=false,west=none]", + "2554": "minecraft:red_sandstone_wall[east=low,north=none,south=tall,up=false,waterlogged=false,west=low]", + "2555": "minecraft:red_sandstone_wall[east=low,north=none,south=tall,up=false,waterlogged=false,west=tall]", + "2556": "minecraft:red_sandstone_wall[east=low,north=low,south=none,up=true,waterlogged=true,west=none]", + "2557": "minecraft:red_sandstone_wall[east=low,north=low,south=none,up=true,waterlogged=true,west=low]", + "2558": "minecraft:red_sandstone_wall[east=low,north=low,south=none,up=true,waterlogged=true,west=tall]", + "2559": "minecraft:red_sandstone_wall[east=low,north=low,south=none,up=true,waterlogged=false,west=none]", + "2560": "minecraft:red_sandstone_wall[east=low,north=low,south=none,up=true,waterlogged=false,west=low]", + "2561": "minecraft:red_sandstone_wall[east=low,north=low,south=none,up=true,waterlogged=false,west=tall]", + "2562": "minecraft:red_sandstone_wall[east=low,north=low,south=none,up=false,waterlogged=true,west=none]", + "2563": "minecraft:red_sandstone_wall[east=low,north=low,south=none,up=false,waterlogged=true,west=low]", + "2564": "minecraft:red_sandstone_wall[east=low,north=low,south=none,up=false,waterlogged=true,west=tall]", + "2565": "minecraft:red_sandstone_wall[east=low,north=low,south=none,up=false,waterlogged=false,west=none]", + "2566": "minecraft:red_sandstone_wall[east=low,north=low,south=none,up=false,waterlogged=false,west=low]", + "2567": "minecraft:red_sandstone_wall[east=low,north=low,south=none,up=false,waterlogged=false,west=tall]", + "2568": "minecraft:red_sandstone_wall[east=low,north=low,south=low,up=true,waterlogged=true,west=none]", + "2569": "minecraft:red_sandstone_wall[east=low,north=low,south=low,up=true,waterlogged=true,west=low]", + "2570": "minecraft:red_sandstone_wall[east=low,north=low,south=low,up=true,waterlogged=true,west=tall]", + "2571": "minecraft:red_sandstone_wall[east=low,north=low,south=low,up=true,waterlogged=false,west=none]", + "2572": "minecraft:red_sandstone_wall[east=low,north=low,south=low,up=true,waterlogged=false,west=low]", + "2573": "minecraft:red_sandstone_wall[east=low,north=low,south=low,up=true,waterlogged=false,west=tall]", + "2574": "minecraft:red_sandstone_wall[east=low,north=low,south=low,up=false,waterlogged=true,west=none]", + "2575": "minecraft:red_sandstone_wall[east=low,north=low,south=low,up=false,waterlogged=true,west=low]", + "2576": "minecraft:red_sandstone_wall[east=low,north=low,south=low,up=false,waterlogged=true,west=tall]", + "2577": "minecraft:red_sandstone_wall[east=low,north=low,south=low,up=false,waterlogged=false,west=none]", + "2578": "minecraft:red_sandstone_wall[east=low,north=low,south=low,up=false,waterlogged=false,west=low]", + "2579": "minecraft:red_sandstone_wall[east=low,north=low,south=low,up=false,waterlogged=false,west=tall]", + "2580": "minecraft:red_sandstone_wall[east=low,north=low,south=tall,up=true,waterlogged=true,west=none]", + "2581": "minecraft:red_sandstone_wall[east=low,north=low,south=tall,up=true,waterlogged=true,west=low]", + "2582": "minecraft:red_sandstone_wall[east=low,north=low,south=tall,up=true,waterlogged=true,west=tall]", + "2583": "minecraft:red_sandstone_wall[east=low,north=low,south=tall,up=true,waterlogged=false,west=none]", + "2584": "minecraft:red_sandstone_wall[east=low,north=low,south=tall,up=true,waterlogged=false,west=low]", + "2585": "minecraft:red_sandstone_wall[east=low,north=low,south=tall,up=true,waterlogged=false,west=tall]", + "2586": "minecraft:red_sandstone_wall[east=low,north=low,south=tall,up=false,waterlogged=true,west=none]", + "2587": "minecraft:red_sandstone_wall[east=low,north=low,south=tall,up=false,waterlogged=true,west=low]", + "2588": "minecraft:red_sandstone_wall[east=low,north=low,south=tall,up=false,waterlogged=true,west=tall]", + "2589": "minecraft:red_sandstone_wall[east=low,north=low,south=tall,up=false,waterlogged=false,west=none]", + "2590": "minecraft:red_sandstone_wall[east=low,north=low,south=tall,up=false,waterlogged=false,west=low]", + "2591": "minecraft:red_sandstone_wall[east=low,north=low,south=tall,up=false,waterlogged=false,west=tall]", + "2592": "minecraft:red_sandstone_wall[east=low,north=tall,south=none,up=true,waterlogged=true,west=none]", + "2593": "minecraft:red_sandstone_wall[east=low,north=tall,south=none,up=true,waterlogged=true,west=low]", + "2594": "minecraft:red_sandstone_wall[east=low,north=tall,south=none,up=true,waterlogged=true,west=tall]", + "2595": "minecraft:red_sandstone_wall[east=low,north=tall,south=none,up=true,waterlogged=false,west=none]", + "2596": "minecraft:red_sandstone_wall[east=low,north=tall,south=none,up=true,waterlogged=false,west=low]", + "2597": "minecraft:red_sandstone_wall[east=low,north=tall,south=none,up=true,waterlogged=false,west=tall]", + "2598": "minecraft:red_sandstone_wall[east=low,north=tall,south=none,up=false,waterlogged=true,west=none]", + "2599": "minecraft:red_sandstone_wall[east=low,north=tall,south=none,up=false,waterlogged=true,west=low]", + "2600": "minecraft:red_sandstone_wall[east=low,north=tall,south=none,up=false,waterlogged=true,west=tall]", + "2601": "minecraft:red_sandstone_wall[east=low,north=tall,south=none,up=false,waterlogged=false,west=none]", + "2602": "minecraft:red_sandstone_wall[east=low,north=tall,south=none,up=false,waterlogged=false,west=low]", + "2603": "minecraft:red_sandstone_wall[east=low,north=tall,south=none,up=false,waterlogged=false,west=tall]", + "2604": "minecraft:red_sandstone_wall[east=low,north=tall,south=low,up=true,waterlogged=true,west=none]", + "2605": "minecraft:red_sandstone_wall[east=low,north=tall,south=low,up=true,waterlogged=true,west=low]", + "2606": "minecraft:red_sandstone_wall[east=low,north=tall,south=low,up=true,waterlogged=true,west=tall]", + "2607": "minecraft:red_sandstone_wall[east=low,north=tall,south=low,up=true,waterlogged=false,west=none]", + "2608": "minecraft:red_sandstone_wall[east=low,north=tall,south=low,up=true,waterlogged=false,west=low]", + "2609": "minecraft:red_sandstone_wall[east=low,north=tall,south=low,up=true,waterlogged=false,west=tall]", + "2610": "minecraft:red_sandstone_wall[east=low,north=tall,south=low,up=false,waterlogged=true,west=none]", + "2611": "minecraft:red_sandstone_wall[east=low,north=tall,south=low,up=false,waterlogged=true,west=low]", + "2612": "minecraft:red_sandstone_wall[east=low,north=tall,south=low,up=false,waterlogged=true,west=tall]", + "2613": "minecraft:red_sandstone_wall[east=low,north=tall,south=low,up=false,waterlogged=false,west=none]", + "2614": "minecraft:red_sandstone_wall[east=low,north=tall,south=low,up=false,waterlogged=false,west=low]", + "2615": "minecraft:red_sandstone_wall[east=low,north=tall,south=low,up=false,waterlogged=false,west=tall]", + "2616": "minecraft:red_sandstone_wall[east=low,north=tall,south=tall,up=true,waterlogged=true,west=none]", + "2617": "minecraft:red_sandstone_wall[east=low,north=tall,south=tall,up=true,waterlogged=true,west=low]", + "2618": "minecraft:red_sandstone_wall[east=low,north=tall,south=tall,up=true,waterlogged=true,west=tall]", + "2619": "minecraft:red_sandstone_wall[east=low,north=tall,south=tall,up=true,waterlogged=false,west=none]", + "2620": "minecraft:red_sandstone_wall[east=low,north=tall,south=tall,up=true,waterlogged=false,west=low]", + "2621": "minecraft:red_sandstone_wall[east=low,north=tall,south=tall,up=true,waterlogged=false,west=tall]", + "2622": "minecraft:red_sandstone_wall[east=low,north=tall,south=tall,up=false,waterlogged=true,west=none]", + "2623": "minecraft:red_sandstone_wall[east=low,north=tall,south=tall,up=false,waterlogged=true,west=low]", + "2624": "minecraft:red_sandstone_wall[east=low,north=tall,south=tall,up=false,waterlogged=true,west=tall]", + "2625": "minecraft:red_sandstone_wall[east=low,north=tall,south=tall,up=false,waterlogged=false,west=none]", + "2626": "minecraft:red_sandstone_wall[east=low,north=tall,south=tall,up=false,waterlogged=false,west=low]", + "2627": "minecraft:red_sandstone_wall[east=low,north=tall,south=tall,up=false,waterlogged=false,west=tall]", + "2628": "minecraft:red_sandstone_wall[east=tall,north=none,south=none,up=true,waterlogged=true,west=none]", + "2629": "minecraft:red_sandstone_wall[east=tall,north=none,south=none,up=true,waterlogged=true,west=low]", + "2630": "minecraft:red_sandstone_wall[east=tall,north=none,south=none,up=true,waterlogged=true,west=tall]", + "2631": "minecraft:red_sandstone_wall[east=tall,north=none,south=none,up=true,waterlogged=false,west=none]", + "2632": "minecraft:red_sandstone_wall[east=tall,north=none,south=none,up=true,waterlogged=false,west=low]", + "2633": "minecraft:red_sandstone_wall[east=tall,north=none,south=none,up=true,waterlogged=false,west=tall]", + "2634": "minecraft:red_sandstone_wall[east=tall,north=none,south=none,up=false,waterlogged=true,west=none]", + "2635": "minecraft:red_sandstone_wall[east=tall,north=none,south=none,up=false,waterlogged=true,west=low]", + "2636": "minecraft:red_sandstone_wall[east=tall,north=none,south=none,up=false,waterlogged=true,west=tall]", + "2637": "minecraft:red_sandstone_wall[east=tall,north=none,south=none,up=false,waterlogged=false,west=none]", + "2638": "minecraft:red_sandstone_wall[east=tall,north=none,south=none,up=false,waterlogged=false,west=low]", + "2639": "minecraft:red_sandstone_wall[east=tall,north=none,south=none,up=false,waterlogged=false,west=tall]", + "2640": "minecraft:red_sandstone_wall[east=tall,north=none,south=low,up=true,waterlogged=true,west=none]", + "2641": "minecraft:red_sandstone_wall[east=tall,north=none,south=low,up=true,waterlogged=true,west=low]", + "2642": "minecraft:red_sandstone_wall[east=tall,north=none,south=low,up=true,waterlogged=true,west=tall]", + "2643": "minecraft:red_sandstone_wall[east=tall,north=none,south=low,up=true,waterlogged=false,west=none]", + "2644": "minecraft:red_sandstone_wall[east=tall,north=none,south=low,up=true,waterlogged=false,west=low]", + "2645": "minecraft:red_sandstone_wall[east=tall,north=none,south=low,up=true,waterlogged=false,west=tall]", + "2646": "minecraft:red_sandstone_wall[east=tall,north=none,south=low,up=false,waterlogged=true,west=none]", + "2647": "minecraft:red_sandstone_wall[east=tall,north=none,south=low,up=false,waterlogged=true,west=low]", + "2648": "minecraft:red_sandstone_wall[east=tall,north=none,south=low,up=false,waterlogged=true,west=tall]", + "2649": "minecraft:red_sandstone_wall[east=tall,north=none,south=low,up=false,waterlogged=false,west=none]", + "2650": "minecraft:red_sandstone_wall[east=tall,north=none,south=low,up=false,waterlogged=false,west=low]", + "2651": "minecraft:red_sandstone_wall[east=tall,north=none,south=low,up=false,waterlogged=false,west=tall]", + "2652": "minecraft:red_sandstone_wall[east=tall,north=none,south=tall,up=true,waterlogged=true,west=none]", + "2653": "minecraft:red_sandstone_wall[east=tall,north=none,south=tall,up=true,waterlogged=true,west=low]", + "2654": "minecraft:red_sandstone_wall[east=tall,north=none,south=tall,up=true,waterlogged=true,west=tall]", + "2655": "minecraft:red_sandstone_wall[east=tall,north=none,south=tall,up=true,waterlogged=false,west=none]", + "2656": "minecraft:red_sandstone_wall[east=tall,north=none,south=tall,up=true,waterlogged=false,west=low]", + "2657": "minecraft:red_sandstone_wall[east=tall,north=none,south=tall,up=true,waterlogged=false,west=tall]", + "2658": "minecraft:red_sandstone_wall[east=tall,north=none,south=tall,up=false,waterlogged=true,west=none]", + "2659": "minecraft:red_sandstone_wall[east=tall,north=none,south=tall,up=false,waterlogged=true,west=low]", + "2660": "minecraft:red_sandstone_wall[east=tall,north=none,south=tall,up=false,waterlogged=true,west=tall]", + "2661": "minecraft:red_sandstone_wall[east=tall,north=none,south=tall,up=false,waterlogged=false,west=none]", + "2662": "minecraft:red_sandstone_wall[east=tall,north=none,south=tall,up=false,waterlogged=false,west=low]", + "2663": "minecraft:red_sandstone_wall[east=tall,north=none,south=tall,up=false,waterlogged=false,west=tall]", + "2664": "minecraft:red_sandstone_wall[east=tall,north=low,south=none,up=true,waterlogged=true,west=none]", + "2665": "minecraft:red_sandstone_wall[east=tall,north=low,south=none,up=true,waterlogged=true,west=low]", + "2666": "minecraft:red_sandstone_wall[east=tall,north=low,south=none,up=true,waterlogged=true,west=tall]", + "2667": "minecraft:red_sandstone_wall[east=tall,north=low,south=none,up=true,waterlogged=false,west=none]", + "2668": "minecraft:red_sandstone_wall[east=tall,north=low,south=none,up=true,waterlogged=false,west=low]", + "2669": "minecraft:red_sandstone_wall[east=tall,north=low,south=none,up=true,waterlogged=false,west=tall]", + "2670": "minecraft:red_sandstone_wall[east=tall,north=low,south=none,up=false,waterlogged=true,west=none]", + "2671": "minecraft:red_sandstone_wall[east=tall,north=low,south=none,up=false,waterlogged=true,west=low]", + "2672": "minecraft:red_sandstone_wall[east=tall,north=low,south=none,up=false,waterlogged=true,west=tall]", + "2673": "minecraft:red_sandstone_wall[east=tall,north=low,south=none,up=false,waterlogged=false,west=none]", + "2674": "minecraft:red_sandstone_wall[east=tall,north=low,south=none,up=false,waterlogged=false,west=low]", + "2675": "minecraft:red_sandstone_wall[east=tall,north=low,south=none,up=false,waterlogged=false,west=tall]", + "2676": "minecraft:red_sandstone_wall[east=tall,north=low,south=low,up=true,waterlogged=true,west=none]", + "2677": "minecraft:red_sandstone_wall[east=tall,north=low,south=low,up=true,waterlogged=true,west=low]", + "2678": "minecraft:red_sandstone_wall[east=tall,north=low,south=low,up=true,waterlogged=true,west=tall]", + "2679": "minecraft:red_sandstone_wall[east=tall,north=low,south=low,up=true,waterlogged=false,west=none]", + "2680": "minecraft:red_sandstone_wall[east=tall,north=low,south=low,up=true,waterlogged=false,west=low]", + "2681": "minecraft:red_sandstone_wall[east=tall,north=low,south=low,up=true,waterlogged=false,west=tall]", + "2682": "minecraft:red_sandstone_wall[east=tall,north=low,south=low,up=false,waterlogged=true,west=none]", + "2683": "minecraft:red_sandstone_wall[east=tall,north=low,south=low,up=false,waterlogged=true,west=low]", + "2684": "minecraft:red_sandstone_wall[east=tall,north=low,south=low,up=false,waterlogged=true,west=tall]", + "2685": "minecraft:red_sandstone_wall[east=tall,north=low,south=low,up=false,waterlogged=false,west=none]", + "2686": "minecraft:red_sandstone_wall[east=tall,north=low,south=low,up=false,waterlogged=false,west=low]", + "2687": "minecraft:red_sandstone_wall[east=tall,north=low,south=low,up=false,waterlogged=false,west=tall]", + "2688": "minecraft:red_sandstone_wall[east=tall,north=low,south=tall,up=true,waterlogged=true,west=none]", + "2689": "minecraft:red_sandstone_wall[east=tall,north=low,south=tall,up=true,waterlogged=true,west=low]", + "2690": "minecraft:red_sandstone_wall[east=tall,north=low,south=tall,up=true,waterlogged=true,west=tall]", + "2691": "minecraft:red_sandstone_wall[east=tall,north=low,south=tall,up=true,waterlogged=false,west=none]", + "2692": "minecraft:red_sandstone_wall[east=tall,north=low,south=tall,up=true,waterlogged=false,west=low]", + "2693": "minecraft:red_sandstone_wall[east=tall,north=low,south=tall,up=true,waterlogged=false,west=tall]", + "2694": "minecraft:red_sandstone_wall[east=tall,north=low,south=tall,up=false,waterlogged=true,west=none]", + "2695": "minecraft:red_sandstone_wall[east=tall,north=low,south=tall,up=false,waterlogged=true,west=low]", + "2696": "minecraft:red_sandstone_wall[east=tall,north=low,south=tall,up=false,waterlogged=true,west=tall]", + "2697": "minecraft:red_sandstone_wall[east=tall,north=low,south=tall,up=false,waterlogged=false,west=none]", + "2698": "minecraft:red_sandstone_wall[east=tall,north=low,south=tall,up=false,waterlogged=false,west=low]", + "2699": "minecraft:red_sandstone_wall[east=tall,north=low,south=tall,up=false,waterlogged=false,west=tall]", + "2700": "minecraft:red_sandstone_wall[east=tall,north=tall,south=none,up=true,waterlogged=true,west=none]", + "2701": "minecraft:red_sandstone_wall[east=tall,north=tall,south=none,up=true,waterlogged=true,west=low]", + "2702": "minecraft:red_sandstone_wall[east=tall,north=tall,south=none,up=true,waterlogged=true,west=tall]", + "2703": "minecraft:red_sandstone_wall[east=tall,north=tall,south=none,up=true,waterlogged=false,west=none]", + "2704": "minecraft:red_sandstone_wall[east=tall,north=tall,south=none,up=true,waterlogged=false,west=low]", + "2705": "minecraft:red_sandstone_wall[east=tall,north=tall,south=none,up=true,waterlogged=false,west=tall]", + "2706": "minecraft:red_sandstone_wall[east=tall,north=tall,south=none,up=false,waterlogged=true,west=none]", + "2707": "minecraft:red_sandstone_wall[east=tall,north=tall,south=none,up=false,waterlogged=true,west=low]", + "2708": "minecraft:red_sandstone_wall[east=tall,north=tall,south=none,up=false,waterlogged=true,west=tall]", + "2709": "minecraft:red_sandstone_wall[east=tall,north=tall,south=none,up=false,waterlogged=false,west=none]", + "2710": "minecraft:red_sandstone_wall[east=tall,north=tall,south=none,up=false,waterlogged=false,west=low]", + "2711": "minecraft:red_sandstone_wall[east=tall,north=tall,south=none,up=false,waterlogged=false,west=tall]", + "2712": "minecraft:red_sandstone_wall[east=tall,north=tall,south=low,up=true,waterlogged=true,west=none]", + "2713": "minecraft:red_sandstone_wall[east=tall,north=tall,south=low,up=true,waterlogged=true,west=low]", + "2714": "minecraft:red_sandstone_wall[east=tall,north=tall,south=low,up=true,waterlogged=true,west=tall]", + "2715": "minecraft:red_sandstone_wall[east=tall,north=tall,south=low,up=true,waterlogged=false,west=none]", + "2716": "minecraft:red_sandstone_wall[east=tall,north=tall,south=low,up=true,waterlogged=false,west=low]", + "2717": "minecraft:red_sandstone_wall[east=tall,north=tall,south=low,up=true,waterlogged=false,west=tall]", + "2718": "minecraft:red_sandstone_wall[east=tall,north=tall,south=low,up=false,waterlogged=true,west=none]", + "2719": "minecraft:red_sandstone_wall[east=tall,north=tall,south=low,up=false,waterlogged=true,west=low]", + "2720": "minecraft:red_sandstone_wall[east=tall,north=tall,south=low,up=false,waterlogged=true,west=tall]", + "2721": "minecraft:red_sandstone_wall[east=tall,north=tall,south=low,up=false,waterlogged=false,west=none]", + "2722": "minecraft:red_sandstone_wall[east=tall,north=tall,south=low,up=false,waterlogged=false,west=low]", + "2723": "minecraft:red_sandstone_wall[east=tall,north=tall,south=low,up=false,waterlogged=false,west=tall]", + "2724": "minecraft:red_sandstone_wall[east=tall,north=tall,south=tall,up=true,waterlogged=true,west=none]", + "2725": "minecraft:red_sandstone_wall[east=tall,north=tall,south=tall,up=true,waterlogged=true,west=low]", + "2726": "minecraft:red_sandstone_wall[east=tall,north=tall,south=tall,up=true,waterlogged=true,west=tall]", + "2727": "minecraft:red_sandstone_wall[east=tall,north=tall,south=tall,up=true,waterlogged=false,west=none]", + "2728": "minecraft:red_sandstone_wall[east=tall,north=tall,south=tall,up=true,waterlogged=false,west=low]", + "2729": "minecraft:red_sandstone_wall[east=tall,north=tall,south=tall,up=true,waterlogged=false,west=tall]", + "2730": "minecraft:red_sandstone_wall[east=tall,north=tall,south=tall,up=false,waterlogged=true,west=none]", + "2731": "minecraft:red_sandstone_wall[east=tall,north=tall,south=tall,up=false,waterlogged=true,west=low]", + "2732": "minecraft:red_sandstone_wall[east=tall,north=tall,south=tall,up=false,waterlogged=true,west=tall]", + "2733": "minecraft:red_sandstone_wall[east=tall,north=tall,south=tall,up=false,waterlogged=false,west=none]", + "2734": "minecraft:red_sandstone_wall[east=tall,north=tall,south=tall,up=false,waterlogged=false,west=low]", + "2735": "minecraft:red_sandstone_wall[east=tall,north=tall,south=tall,up=false,waterlogged=false,west=tall]", + "2736": "minecraft:creeper_wall_head[facing=north]", + "2737": "minecraft:creeper_wall_head[facing=south]", + "2738": "minecraft:creeper_wall_head[facing=west]", + "2739": "minecraft:creeper_wall_head[facing=east]", + "2740": "minecraft:bubble_coral[waterlogged=true]", + "2741": "minecraft:bubble_coral[waterlogged=false]", + "2742": "minecraft:chipped_anvil[facing=north]", + "2743": "minecraft:chipped_anvil[facing=south]", + "2744": "minecraft:chipped_anvil[facing=west]", + "2745": "minecraft:chipped_anvil[facing=east]", + "2746": "minecraft:chiseled_sandstone", + "2747": "minecraft:stone", + "2748": "minecraft:end_portal", + "2749": "minecraft:nether_quartz_ore", + "2750": "minecraft:quartz_block", + "2751": "minecraft:polished_granite", + "2752": "minecraft:daylight_detector[inverted=true,power=0]", + "2753": "minecraft:daylight_detector[inverted=true,power=1]", + "2754": "minecraft:daylight_detector[inverted=true,power=2]", + "2755": "minecraft:daylight_detector[inverted=true,power=3]", + "2756": "minecraft:daylight_detector[inverted=true,power=4]", + "2757": "minecraft:daylight_detector[inverted=true,power=5]", + "2758": "minecraft:daylight_detector[inverted=true,power=6]", + "2759": "minecraft:daylight_detector[inverted=true,power=7]", + "2760": "minecraft:daylight_detector[inverted=true,power=8]", + "2761": "minecraft:daylight_detector[inverted=true,power=9]", + "2762": "minecraft:daylight_detector[inverted=true,power=10]", + "2763": "minecraft:daylight_detector[inverted=true,power=11]", + "2764": "minecraft:daylight_detector[inverted=true,power=12]", + "2765": "minecraft:daylight_detector[inverted=true,power=13]", + "2766": "minecraft:daylight_detector[inverted=true,power=14]", + "2767": "minecraft:daylight_detector[inverted=true,power=15]", + "2768": "minecraft:daylight_detector[inverted=false,power=0]", + "2769": "minecraft:daylight_detector[inverted=false,power=1]", + "2770": "minecraft:daylight_detector[inverted=false,power=2]", + "2771": "minecraft:daylight_detector[inverted=false,power=3]", + "2772": "minecraft:daylight_detector[inverted=false,power=4]", + "2773": "minecraft:daylight_detector[inverted=false,power=5]", + "2774": "minecraft:daylight_detector[inverted=false,power=6]", + "2775": "minecraft:daylight_detector[inverted=false,power=7]", + "2776": "minecraft:daylight_detector[inverted=false,power=8]", + "2777": "minecraft:daylight_detector[inverted=false,power=9]", + "2778": "minecraft:daylight_detector[inverted=false,power=10]", + "2779": "minecraft:daylight_detector[inverted=false,power=11]", + "2780": "minecraft:daylight_detector[inverted=false,power=12]", + "2781": "minecraft:daylight_detector[inverted=false,power=13]", + "2782": "minecraft:daylight_detector[inverted=false,power=14]", + "2783": "minecraft:daylight_detector[inverted=false,power=15]", + "2784": "minecraft:polished_andesite", + "2785": "minecraft:trapped_chest[facing=north,type=single,waterlogged=true]", + "2786": "minecraft:trapped_chest[facing=north,type=single,waterlogged=false]", + "2787": "minecraft:trapped_chest[facing=north,type=left,waterlogged=true]", + "2788": "minecraft:trapped_chest[facing=north,type=left,waterlogged=false]", + "2789": "minecraft:trapped_chest[facing=north,type=right,waterlogged=true]", + "2790": "minecraft:trapped_chest[facing=north,type=right,waterlogged=false]", + "2791": "minecraft:trapped_chest[facing=south,type=single,waterlogged=true]", + "2792": "minecraft:trapped_chest[facing=south,type=single,waterlogged=false]", + "2793": "minecraft:trapped_chest[facing=south,type=left,waterlogged=true]", + "2794": "minecraft:trapped_chest[facing=south,type=left,waterlogged=false]", + "2795": "minecraft:trapped_chest[facing=south,type=right,waterlogged=true]", + "2796": "minecraft:trapped_chest[facing=south,type=right,waterlogged=false]", + "2797": "minecraft:trapped_chest[facing=west,type=single,waterlogged=true]", + "2798": "minecraft:trapped_chest[facing=west,type=single,waterlogged=false]", + "2799": "minecraft:trapped_chest[facing=west,type=left,waterlogged=true]", + "2800": "minecraft:trapped_chest[facing=west,type=left,waterlogged=false]", + "2801": "minecraft:trapped_chest[facing=west,type=right,waterlogged=true]", + "2802": "minecraft:trapped_chest[facing=west,type=right,waterlogged=false]", + "2803": "minecraft:trapped_chest[facing=east,type=single,waterlogged=true]", + "2804": "minecraft:trapped_chest[facing=east,type=single,waterlogged=false]", + "2805": "minecraft:trapped_chest[facing=east,type=left,waterlogged=true]", + "2806": "minecraft:trapped_chest[facing=east,type=left,waterlogged=false]", + "2807": "minecraft:trapped_chest[facing=east,type=right,waterlogged=true]", + "2808": "minecraft:trapped_chest[facing=east,type=right,waterlogged=false]", + "2809": "minecraft:heavy_weighted_pressure_plate[power=0]", + "2810": "minecraft:heavy_weighted_pressure_plate[power=1]", + "2811": "minecraft:heavy_weighted_pressure_plate[power=2]", + "2812": "minecraft:heavy_weighted_pressure_plate[power=3]", + "2813": "minecraft:heavy_weighted_pressure_plate[power=4]", + "2814": "minecraft:heavy_weighted_pressure_plate[power=5]", + "2815": "minecraft:heavy_weighted_pressure_plate[power=6]", + "2816": "minecraft:heavy_weighted_pressure_plate[power=7]", + "2817": "minecraft:heavy_weighted_pressure_plate[power=8]", + "2818": "minecraft:heavy_weighted_pressure_plate[power=9]", + "2819": "minecraft:heavy_weighted_pressure_plate[power=10]", + "2820": "minecraft:heavy_weighted_pressure_plate[power=11]", + "2821": "minecraft:heavy_weighted_pressure_plate[power=12]", + "2822": "minecraft:heavy_weighted_pressure_plate[power=13]", + "2823": "minecraft:heavy_weighted_pressure_plate[power=14]", + "2824": "minecraft:heavy_weighted_pressure_plate[power=15]", + "2825": "minecraft:polished_diorite", + "2826": "minecraft:horn_coral_block", + "2827": "minecraft:bubble_coral_block", + "2828": "minecraft:dead_brain_coral[waterlogged=true]", + "2829": "minecraft:dead_brain_coral[waterlogged=false]", + "2830": "minecraft:dead_fire_coral_fan[waterlogged=true]", + "2831": "minecraft:dead_fire_coral_fan[waterlogged=false]", + "2832": "minecraft:cyan_glazed_terracotta[facing=north]", + "2833": "minecraft:cyan_glazed_terracotta[facing=south]", + "2834": "minecraft:cyan_glazed_terracotta[facing=west]", + "2835": "minecraft:cyan_glazed_terracotta[facing=east]", + "2836": "minecraft:chiseled_quartz_block", + "2837": "minecraft:stripped_dark_oak_wood[axis=x]", + "2838": "minecraft:stripped_dark_oak_wood[axis=y]", + "2839": "minecraft:stripped_dark_oak_wood[axis=z]", + "2840": "minecraft:obsidian", + "2841": "minecraft:prismarine_slab[type=top,waterlogged=true]", + "2842": "minecraft:prismarine_slab[type=top,waterlogged=false]", + "2843": "minecraft:prismarine_slab[type=bottom,waterlogged=true]", + "2844": "minecraft:prismarine_slab[type=bottom,waterlogged=false]", + "2845": "minecraft:prismarine_slab[type=double,waterlogged=true]", + "2846": "minecraft:prismarine_slab[type=double,waterlogged=false]", + "2847": "minecraft:player_wall_head[facing=north]", + "2848": "minecraft:player_wall_head[facing=south]", + "2849": "minecraft:player_wall_head[facing=west]", + "2850": "minecraft:player_wall_head[facing=east]", + "2851": "minecraft:creeper_head[rotation=0]", + "2852": "minecraft:creeper_head[rotation=1]", + "2853": "minecraft:creeper_head[rotation=2]", + "2854": "minecraft:creeper_head[rotation=3]", + "2855": "minecraft:creeper_head[rotation=4]", + "2856": "minecraft:creeper_head[rotation=5]", + "2857": "minecraft:creeper_head[rotation=6]", + "2858": "minecraft:creeper_head[rotation=7]", + "2859": "minecraft:creeper_head[rotation=8]", + "2860": "minecraft:creeper_head[rotation=9]", + "2861": "minecraft:creeper_head[rotation=10]", + "2862": "minecraft:creeper_head[rotation=11]", + "2863": "minecraft:creeper_head[rotation=12]", + "2864": "minecraft:creeper_head[rotation=13]", + "2865": "minecraft:creeper_head[rotation=14]", + "2866": "minecraft:creeper_head[rotation=15]", + "2867": "minecraft:note_block[instrument=harp,note=0,powered=true]", + "2868": "minecraft:note_block[instrument=harp,note=0,powered=false]", + "2869": "minecraft:note_block[instrument=harp,note=1,powered=true]", + "2870": "minecraft:note_block[instrument=harp,note=1,powered=false]", + "2871": "minecraft:note_block[instrument=harp,note=2,powered=true]", + "2872": "minecraft:note_block[instrument=harp,note=2,powered=false]", + "2873": "minecraft:note_block[instrument=harp,note=3,powered=true]", + "2874": "minecraft:note_block[instrument=harp,note=3,powered=false]", + "2875": "minecraft:note_block[instrument=harp,note=4,powered=true]", + "2876": "minecraft:note_block[instrument=harp,note=4,powered=false]", + "2877": "minecraft:note_block[instrument=harp,note=5,powered=true]", + "2878": "minecraft:note_block[instrument=harp,note=5,powered=false]", + "2879": "minecraft:note_block[instrument=harp,note=6,powered=true]", + "2880": "minecraft:note_block[instrument=harp,note=6,powered=false]", + "2881": "minecraft:note_block[instrument=harp,note=7,powered=true]", + "2882": "minecraft:note_block[instrument=harp,note=7,powered=false]", + "2883": "minecraft:note_block[instrument=harp,note=8,powered=true]", + "2884": "minecraft:note_block[instrument=harp,note=8,powered=false]", + "2885": "minecraft:note_block[instrument=harp,note=9,powered=true]", + "2886": "minecraft:note_block[instrument=harp,note=9,powered=false]", + "2887": "minecraft:note_block[instrument=harp,note=10,powered=true]", + "2888": "minecraft:note_block[instrument=harp,note=10,powered=false]", + "2889": "minecraft:note_block[instrument=harp,note=11,powered=true]", + "2890": "minecraft:note_block[instrument=harp,note=11,powered=false]", + "2891": "minecraft:note_block[instrument=harp,note=12,powered=true]", + "2892": "minecraft:note_block[instrument=harp,note=12,powered=false]", + "2893": "minecraft:note_block[instrument=harp,note=13,powered=true]", + "2894": "minecraft:note_block[instrument=harp,note=13,powered=false]", + "2895": "minecraft:note_block[instrument=harp,note=14,powered=true]", + "2896": "minecraft:note_block[instrument=harp,note=14,powered=false]", + "2897": "minecraft:note_block[instrument=harp,note=15,powered=true]", + "2898": "minecraft:note_block[instrument=harp,note=15,powered=false]", + "2899": "minecraft:note_block[instrument=harp,note=16,powered=true]", + "2900": "minecraft:note_block[instrument=harp,note=16,powered=false]", + "2901": "minecraft:note_block[instrument=harp,note=17,powered=true]", + "2902": "minecraft:note_block[instrument=harp,note=17,powered=false]", + "2903": "minecraft:note_block[instrument=harp,note=18,powered=true]", + "2904": "minecraft:note_block[instrument=harp,note=18,powered=false]", + "2905": "minecraft:note_block[instrument=harp,note=19,powered=true]", + "2906": "minecraft:note_block[instrument=harp,note=19,powered=false]", + "2907": "minecraft:note_block[instrument=harp,note=20,powered=true]", + "2908": "minecraft:note_block[instrument=harp,note=20,powered=false]", + "2909": "minecraft:note_block[instrument=harp,note=21,powered=true]", + "2910": "minecraft:note_block[instrument=harp,note=21,powered=false]", + "2911": "minecraft:note_block[instrument=harp,note=22,powered=true]", + "2912": "minecraft:note_block[instrument=harp,note=22,powered=false]", + "2913": "minecraft:note_block[instrument=harp,note=23,powered=true]", + "2914": "minecraft:note_block[instrument=harp,note=23,powered=false]", + "2915": "minecraft:note_block[instrument=harp,note=24,powered=true]", + "2916": "minecraft:note_block[instrument=harp,note=24,powered=false]", + "2917": "minecraft:note_block[instrument=basedrum,note=0,powered=true]", + "2918": "minecraft:note_block[instrument=basedrum,note=0,powered=false]", + "2919": "minecraft:note_block[instrument=basedrum,note=1,powered=true]", + "2920": "minecraft:note_block[instrument=basedrum,note=1,powered=false]", + "2921": "minecraft:note_block[instrument=basedrum,note=2,powered=true]", + "2922": "minecraft:note_block[instrument=basedrum,note=2,powered=false]", + "2923": "minecraft:note_block[instrument=basedrum,note=3,powered=true]", + "2924": "minecraft:note_block[instrument=basedrum,note=3,powered=false]", + "2925": "minecraft:note_block[instrument=basedrum,note=4,powered=true]", + "2926": "minecraft:note_block[instrument=basedrum,note=4,powered=false]", + "2927": "minecraft:note_block[instrument=basedrum,note=5,powered=true]", + "2928": "minecraft:note_block[instrument=basedrum,note=5,powered=false]", + "2929": "minecraft:note_block[instrument=basedrum,note=6,powered=true]", + "2930": "minecraft:note_block[instrument=basedrum,note=6,powered=false]", + "2931": "minecraft:note_block[instrument=basedrum,note=7,powered=true]", + "2932": "minecraft:note_block[instrument=basedrum,note=7,powered=false]", + "2933": "minecraft:note_block[instrument=basedrum,note=8,powered=true]", + "2934": "minecraft:note_block[instrument=basedrum,note=8,powered=false]", + "2935": "minecraft:note_block[instrument=basedrum,note=9,powered=true]", + "2936": "minecraft:note_block[instrument=basedrum,note=9,powered=false]", + "2937": "minecraft:note_block[instrument=basedrum,note=10,powered=true]", + "2938": "minecraft:note_block[instrument=basedrum,note=10,powered=false]", + "2939": "minecraft:note_block[instrument=basedrum,note=11,powered=true]", + "2940": "minecraft:note_block[instrument=basedrum,note=11,powered=false]", + "2941": "minecraft:note_block[instrument=basedrum,note=12,powered=true]", + "2942": "minecraft:note_block[instrument=basedrum,note=12,powered=false]", + "2943": "minecraft:note_block[instrument=basedrum,note=13,powered=true]", + "2944": "minecraft:note_block[instrument=basedrum,note=13,powered=false]", + "2945": "minecraft:note_block[instrument=basedrum,note=14,powered=true]", + "2946": "minecraft:note_block[instrument=basedrum,note=14,powered=false]", + "2947": "minecraft:note_block[instrument=basedrum,note=15,powered=true]", + "2948": "minecraft:note_block[instrument=basedrum,note=15,powered=false]", + "2949": "minecraft:note_block[instrument=basedrum,note=16,powered=true]", + "2950": "minecraft:note_block[instrument=basedrum,note=16,powered=false]", + "2951": "minecraft:note_block[instrument=basedrum,note=17,powered=true]", + "2952": "minecraft:note_block[instrument=basedrum,note=17,powered=false]", + "2953": "minecraft:note_block[instrument=basedrum,note=18,powered=true]", + "2954": "minecraft:note_block[instrument=basedrum,note=18,powered=false]", + "2955": "minecraft:note_block[instrument=basedrum,note=19,powered=true]", + "2956": "minecraft:note_block[instrument=basedrum,note=19,powered=false]", + "2957": "minecraft:note_block[instrument=basedrum,note=20,powered=true]", + "2958": "minecraft:note_block[instrument=basedrum,note=20,powered=false]", + "2959": "minecraft:note_block[instrument=basedrum,note=21,powered=true]", + "2960": "minecraft:note_block[instrument=basedrum,note=21,powered=false]", + "2961": "minecraft:note_block[instrument=basedrum,note=22,powered=true]", + "2962": "minecraft:note_block[instrument=basedrum,note=22,powered=false]", + "2963": "minecraft:note_block[instrument=basedrum,note=23,powered=true]", + "2964": "minecraft:note_block[instrument=basedrum,note=23,powered=false]", + "2965": "minecraft:note_block[instrument=basedrum,note=24,powered=true]", + "2966": "minecraft:note_block[instrument=basedrum,note=24,powered=false]", + "2967": "minecraft:note_block[instrument=snare,note=0,powered=true]", + "2968": "minecraft:note_block[instrument=snare,note=0,powered=false]", + "2969": "minecraft:note_block[instrument=snare,note=1,powered=true]", + "2970": "minecraft:note_block[instrument=snare,note=1,powered=false]", + "2971": "minecraft:note_block[instrument=snare,note=2,powered=true]", + "2972": "minecraft:note_block[instrument=snare,note=2,powered=false]", + "2973": "minecraft:note_block[instrument=snare,note=3,powered=true]", + "2974": "minecraft:note_block[instrument=snare,note=3,powered=false]", + "2975": "minecraft:note_block[instrument=snare,note=4,powered=true]", + "2976": "minecraft:note_block[instrument=snare,note=4,powered=false]", + "2977": "minecraft:note_block[instrument=snare,note=5,powered=true]", + "2978": "minecraft:note_block[instrument=snare,note=5,powered=false]", + "2979": "minecraft:note_block[instrument=snare,note=6,powered=true]", + "2980": "minecraft:note_block[instrument=snare,note=6,powered=false]", + "2981": "minecraft:note_block[instrument=snare,note=7,powered=true]", + "2982": "minecraft:note_block[instrument=snare,note=7,powered=false]", + "2983": "minecraft:note_block[instrument=snare,note=8,powered=true]", + "2984": "minecraft:note_block[instrument=snare,note=8,powered=false]", + "2985": "minecraft:note_block[instrument=snare,note=9,powered=true]", + "2986": "minecraft:note_block[instrument=snare,note=9,powered=false]", + "2987": "minecraft:note_block[instrument=snare,note=10,powered=true]", + "2988": "minecraft:note_block[instrument=snare,note=10,powered=false]", + "2989": "minecraft:note_block[instrument=snare,note=11,powered=true]", + "2990": "minecraft:note_block[instrument=snare,note=11,powered=false]", + "2991": "minecraft:note_block[instrument=snare,note=12,powered=true]", + "2992": "minecraft:note_block[instrument=snare,note=12,powered=false]", + "2993": "minecraft:note_block[instrument=snare,note=13,powered=true]", + "2994": "minecraft:note_block[instrument=snare,note=13,powered=false]", + "2995": "minecraft:note_block[instrument=snare,note=14,powered=true]", + "2996": "minecraft:note_block[instrument=snare,note=14,powered=false]", + "2997": "minecraft:note_block[instrument=snare,note=15,powered=true]", + "2998": "minecraft:note_block[instrument=snare,note=15,powered=false]", + "2999": "minecraft:note_block[instrument=snare,note=16,powered=true]", + "3000": "minecraft:note_block[instrument=snare,note=16,powered=false]", + "3001": "minecraft:note_block[instrument=snare,note=17,powered=true]", + "3002": "minecraft:note_block[instrument=snare,note=17,powered=false]", + "3003": "minecraft:note_block[instrument=snare,note=18,powered=true]", + "3004": "minecraft:note_block[instrument=snare,note=18,powered=false]", + "3005": "minecraft:note_block[instrument=snare,note=19,powered=true]", + "3006": "minecraft:note_block[instrument=snare,note=19,powered=false]", + "3007": "minecraft:note_block[instrument=snare,note=20,powered=true]", + "3008": "minecraft:note_block[instrument=snare,note=20,powered=false]", + "3009": "minecraft:note_block[instrument=snare,note=21,powered=true]", + "3010": "minecraft:note_block[instrument=snare,note=21,powered=false]", + "3011": "minecraft:note_block[instrument=snare,note=22,powered=true]", + "3012": "minecraft:note_block[instrument=snare,note=22,powered=false]", + "3013": "minecraft:note_block[instrument=snare,note=23,powered=true]", + "3014": "minecraft:note_block[instrument=snare,note=23,powered=false]", + "3015": "minecraft:note_block[instrument=snare,note=24,powered=true]", + "3016": "minecraft:note_block[instrument=snare,note=24,powered=false]", + "3017": "minecraft:note_block[instrument=hat,note=0,powered=true]", + "3018": "minecraft:note_block[instrument=hat,note=0,powered=false]", + "3019": "minecraft:note_block[instrument=hat,note=1,powered=true]", + "3020": "minecraft:note_block[instrument=hat,note=1,powered=false]", + "3021": "minecraft:note_block[instrument=hat,note=2,powered=true]", + "3022": "minecraft:note_block[instrument=hat,note=2,powered=false]", + "3023": "minecraft:note_block[instrument=hat,note=3,powered=true]", + "3024": "minecraft:note_block[instrument=hat,note=3,powered=false]", + "3025": "minecraft:note_block[instrument=hat,note=4,powered=true]", + "3026": "minecraft:note_block[instrument=hat,note=4,powered=false]", + "3027": "minecraft:note_block[instrument=hat,note=5,powered=true]", + "3028": "minecraft:note_block[instrument=hat,note=5,powered=false]", + "3029": "minecraft:note_block[instrument=hat,note=6,powered=true]", + "3030": "minecraft:note_block[instrument=hat,note=6,powered=false]", + "3031": "minecraft:note_block[instrument=hat,note=7,powered=true]", + "3032": "minecraft:note_block[instrument=hat,note=7,powered=false]", + "3033": "minecraft:note_block[instrument=hat,note=8,powered=true]", + "3034": "minecraft:note_block[instrument=hat,note=8,powered=false]", + "3035": "minecraft:note_block[instrument=hat,note=9,powered=true]", + "3036": "minecraft:note_block[instrument=hat,note=9,powered=false]", + "3037": "minecraft:note_block[instrument=hat,note=10,powered=true]", + "3038": "minecraft:note_block[instrument=hat,note=10,powered=false]", + "3039": "minecraft:note_block[instrument=hat,note=11,powered=true]", + "3040": "minecraft:note_block[instrument=hat,note=11,powered=false]", + "3041": "minecraft:note_block[instrument=hat,note=12,powered=true]", + "3042": "minecraft:note_block[instrument=hat,note=12,powered=false]", + "3043": "minecraft:note_block[instrument=hat,note=13,powered=true]", + "3044": "minecraft:note_block[instrument=hat,note=13,powered=false]", + "3045": "minecraft:note_block[instrument=hat,note=14,powered=true]", + "3046": "minecraft:note_block[instrument=hat,note=14,powered=false]", + "3047": "minecraft:note_block[instrument=hat,note=15,powered=true]", + "3048": "minecraft:note_block[instrument=hat,note=15,powered=false]", + "3049": "minecraft:note_block[instrument=hat,note=16,powered=true]", + "3050": "minecraft:note_block[instrument=hat,note=16,powered=false]", + "3051": "minecraft:note_block[instrument=hat,note=17,powered=true]", + "3052": "minecraft:note_block[instrument=hat,note=17,powered=false]", + "3053": "minecraft:note_block[instrument=hat,note=18,powered=true]", + "3054": "minecraft:note_block[instrument=hat,note=18,powered=false]", + "3055": "minecraft:note_block[instrument=hat,note=19,powered=true]", + "3056": "minecraft:note_block[instrument=hat,note=19,powered=false]", + "3057": "minecraft:note_block[instrument=hat,note=20,powered=true]", + "3058": "minecraft:note_block[instrument=hat,note=20,powered=false]", + "3059": "minecraft:note_block[instrument=hat,note=21,powered=true]", + "3060": "minecraft:note_block[instrument=hat,note=21,powered=false]", + "3061": "minecraft:note_block[instrument=hat,note=22,powered=true]", + "3062": "minecraft:note_block[instrument=hat,note=22,powered=false]", + "3063": "minecraft:note_block[instrument=hat,note=23,powered=true]", + "3064": "minecraft:note_block[instrument=hat,note=23,powered=false]", + "3065": "minecraft:note_block[instrument=hat,note=24,powered=true]", + "3066": "minecraft:note_block[instrument=hat,note=24,powered=false]", + "3067": "minecraft:note_block[instrument=bass,note=0,powered=true]", + "3068": "minecraft:note_block[instrument=bass,note=0,powered=false]", + "3069": "minecraft:note_block[instrument=bass,note=1,powered=true]", + "3070": "minecraft:note_block[instrument=bass,note=1,powered=false]", + "3071": "minecraft:note_block[instrument=bass,note=2,powered=true]", + "3072": "minecraft:note_block[instrument=bass,note=2,powered=false]", + "3073": "minecraft:note_block[instrument=bass,note=3,powered=true]", + "3074": "minecraft:note_block[instrument=bass,note=3,powered=false]", + "3075": "minecraft:note_block[instrument=bass,note=4,powered=true]", + "3076": "minecraft:note_block[instrument=bass,note=4,powered=false]", + "3077": "minecraft:note_block[instrument=bass,note=5,powered=true]", + "3078": "minecraft:note_block[instrument=bass,note=5,powered=false]", + "3079": "minecraft:note_block[instrument=bass,note=6,powered=true]", + "3080": "minecraft:note_block[instrument=bass,note=6,powered=false]", + "3081": "minecraft:note_block[instrument=bass,note=7,powered=true]", + "3082": "minecraft:note_block[instrument=bass,note=7,powered=false]", + "3083": "minecraft:note_block[instrument=bass,note=8,powered=true]", + "3084": "minecraft:note_block[instrument=bass,note=8,powered=false]", + "3085": "minecraft:note_block[instrument=bass,note=9,powered=true]", + "3086": "minecraft:note_block[instrument=bass,note=9,powered=false]", + "3087": "minecraft:note_block[instrument=bass,note=10,powered=true]", + "3088": "minecraft:note_block[instrument=bass,note=10,powered=false]", + "3089": "minecraft:note_block[instrument=bass,note=11,powered=true]", + "3090": "minecraft:note_block[instrument=bass,note=11,powered=false]", + "3091": "minecraft:note_block[instrument=bass,note=12,powered=true]", + "3092": "minecraft:note_block[instrument=bass,note=12,powered=false]", + "3093": "minecraft:note_block[instrument=bass,note=13,powered=true]", + "3094": "minecraft:note_block[instrument=bass,note=13,powered=false]", + "3095": "minecraft:note_block[instrument=bass,note=14,powered=true]", + "3096": "minecraft:note_block[instrument=bass,note=14,powered=false]", + "3097": "minecraft:note_block[instrument=bass,note=15,powered=true]", + "3098": "minecraft:note_block[instrument=bass,note=15,powered=false]", + "3099": "minecraft:note_block[instrument=bass,note=16,powered=true]", + "3100": "minecraft:note_block[instrument=bass,note=16,powered=false]", + "3101": "minecraft:note_block[instrument=bass,note=17,powered=true]", + "3102": "minecraft:note_block[instrument=bass,note=17,powered=false]", + "3103": "minecraft:note_block[instrument=bass,note=18,powered=true]", + "3104": "minecraft:note_block[instrument=bass,note=18,powered=false]", + "3105": "minecraft:note_block[instrument=bass,note=19,powered=true]", + "3106": "minecraft:note_block[instrument=bass,note=19,powered=false]", + "3107": "minecraft:note_block[instrument=bass,note=20,powered=true]", + "3108": "minecraft:note_block[instrument=bass,note=20,powered=false]", + "3109": "minecraft:note_block[instrument=bass,note=21,powered=true]", + "3110": "minecraft:note_block[instrument=bass,note=21,powered=false]", + "3111": "minecraft:note_block[instrument=bass,note=22,powered=true]", + "3112": "minecraft:note_block[instrument=bass,note=22,powered=false]", + "3113": "minecraft:note_block[instrument=bass,note=23,powered=true]", + "3114": "minecraft:note_block[instrument=bass,note=23,powered=false]", + "3115": "minecraft:note_block[instrument=bass,note=24,powered=true]", + "3116": "minecraft:note_block[instrument=bass,note=24,powered=false]", + "3117": "minecraft:note_block[instrument=flute,note=0,powered=true]", + "3118": "minecraft:note_block[instrument=flute,note=0,powered=false]", + "3119": "minecraft:note_block[instrument=flute,note=1,powered=true]", + "3120": "minecraft:note_block[instrument=flute,note=1,powered=false]", + "3121": "minecraft:note_block[instrument=flute,note=2,powered=true]", + "3122": "minecraft:note_block[instrument=flute,note=2,powered=false]", + "3123": "minecraft:note_block[instrument=flute,note=3,powered=true]", + "3124": "minecraft:note_block[instrument=flute,note=3,powered=false]", + "3125": "minecraft:note_block[instrument=flute,note=4,powered=true]", + "3126": "minecraft:note_block[instrument=flute,note=4,powered=false]", + "3127": "minecraft:note_block[instrument=flute,note=5,powered=true]", + "3128": "minecraft:note_block[instrument=flute,note=5,powered=false]", + "3129": "minecraft:note_block[instrument=flute,note=6,powered=true]", + "3130": "minecraft:note_block[instrument=flute,note=6,powered=false]", + "3131": "minecraft:note_block[instrument=flute,note=7,powered=true]", + "3132": "minecraft:note_block[instrument=flute,note=7,powered=false]", + "3133": "minecraft:note_block[instrument=flute,note=8,powered=true]", + "3134": "minecraft:note_block[instrument=flute,note=8,powered=false]", + "3135": "minecraft:note_block[instrument=flute,note=9,powered=true]", + "3136": "minecraft:note_block[instrument=flute,note=9,powered=false]", + "3137": "minecraft:note_block[instrument=flute,note=10,powered=true]", + "3138": "minecraft:note_block[instrument=flute,note=10,powered=false]", + "3139": "minecraft:note_block[instrument=flute,note=11,powered=true]", + "3140": "minecraft:note_block[instrument=flute,note=11,powered=false]", + "3141": "minecraft:note_block[instrument=flute,note=12,powered=true]", + "3142": "minecraft:note_block[instrument=flute,note=12,powered=false]", + "3143": "minecraft:note_block[instrument=flute,note=13,powered=true]", + "3144": "minecraft:note_block[instrument=flute,note=13,powered=false]", + "3145": "minecraft:note_block[instrument=flute,note=14,powered=true]", + "3146": "minecraft:note_block[instrument=flute,note=14,powered=false]", + "3147": "minecraft:note_block[instrument=flute,note=15,powered=true]", + "3148": "minecraft:note_block[instrument=flute,note=15,powered=false]", + "3149": "minecraft:note_block[instrument=flute,note=16,powered=true]", + "3150": "minecraft:note_block[instrument=flute,note=16,powered=false]", + "3151": "minecraft:note_block[instrument=flute,note=17,powered=true]", + "3152": "minecraft:note_block[instrument=flute,note=17,powered=false]", + "3153": "minecraft:note_block[instrument=flute,note=18,powered=true]", + "3154": "minecraft:note_block[instrument=flute,note=18,powered=false]", + "3155": "minecraft:note_block[instrument=flute,note=19,powered=true]", + "3156": "minecraft:note_block[instrument=flute,note=19,powered=false]", + "3157": "minecraft:note_block[instrument=flute,note=20,powered=true]", + "3158": "minecraft:note_block[instrument=flute,note=20,powered=false]", + "3159": "minecraft:note_block[instrument=flute,note=21,powered=true]", + "3160": "minecraft:note_block[instrument=flute,note=21,powered=false]", + "3161": "minecraft:note_block[instrument=flute,note=22,powered=true]", + "3162": "minecraft:note_block[instrument=flute,note=22,powered=false]", + "3163": "minecraft:note_block[instrument=flute,note=23,powered=true]", + "3164": "minecraft:note_block[instrument=flute,note=23,powered=false]", + "3165": "minecraft:note_block[instrument=flute,note=24,powered=true]", + "3166": "minecraft:note_block[instrument=flute,note=24,powered=false]", + "3167": "minecraft:note_block[instrument=bell,note=0,powered=true]", + "3168": "minecraft:note_block[instrument=bell,note=0,powered=false]", + "3169": "minecraft:note_block[instrument=bell,note=1,powered=true]", + "3170": "minecraft:note_block[instrument=bell,note=1,powered=false]", + "3171": "minecraft:note_block[instrument=bell,note=2,powered=true]", + "3172": "minecraft:note_block[instrument=bell,note=2,powered=false]", + "3173": "minecraft:note_block[instrument=bell,note=3,powered=true]", + "3174": "minecraft:note_block[instrument=bell,note=3,powered=false]", + "3175": "minecraft:note_block[instrument=bell,note=4,powered=true]", + "3176": "minecraft:note_block[instrument=bell,note=4,powered=false]", + "3177": "minecraft:note_block[instrument=bell,note=5,powered=true]", + "3178": "minecraft:note_block[instrument=bell,note=5,powered=false]", + "3179": "minecraft:note_block[instrument=bell,note=6,powered=true]", + "3180": "minecraft:note_block[instrument=bell,note=6,powered=false]", + "3181": "minecraft:note_block[instrument=bell,note=7,powered=true]", + "3182": "minecraft:note_block[instrument=bell,note=7,powered=false]", + "3183": "minecraft:note_block[instrument=bell,note=8,powered=true]", + "3184": "minecraft:note_block[instrument=bell,note=8,powered=false]", + "3185": "minecraft:note_block[instrument=bell,note=9,powered=true]", + "3186": "minecraft:note_block[instrument=bell,note=9,powered=false]", + "3187": "minecraft:note_block[instrument=bell,note=10,powered=true]", + "3188": "minecraft:note_block[instrument=bell,note=10,powered=false]", + "3189": "minecraft:note_block[instrument=bell,note=11,powered=true]", + "3190": "minecraft:note_block[instrument=bell,note=11,powered=false]", + "3191": "minecraft:note_block[instrument=bell,note=12,powered=true]", + "3192": "minecraft:note_block[instrument=bell,note=12,powered=false]", + "3193": "minecraft:note_block[instrument=bell,note=13,powered=true]", + "3194": "minecraft:note_block[instrument=bell,note=13,powered=false]", + "3195": "minecraft:note_block[instrument=bell,note=14,powered=true]", + "3196": "minecraft:note_block[instrument=bell,note=14,powered=false]", + "3197": "minecraft:note_block[instrument=bell,note=15,powered=true]", + "3198": "minecraft:note_block[instrument=bell,note=15,powered=false]", + "3199": "minecraft:note_block[instrument=bell,note=16,powered=true]", + "3200": "minecraft:note_block[instrument=bell,note=16,powered=false]", + "3201": "minecraft:note_block[instrument=bell,note=17,powered=true]", + "3202": "minecraft:note_block[instrument=bell,note=17,powered=false]", + "3203": "minecraft:note_block[instrument=bell,note=18,powered=true]", + "3204": "minecraft:note_block[instrument=bell,note=18,powered=false]", + "3205": "minecraft:note_block[instrument=bell,note=19,powered=true]", + "3206": "minecraft:note_block[instrument=bell,note=19,powered=false]", + "3207": "minecraft:note_block[instrument=bell,note=20,powered=true]", + "3208": "minecraft:note_block[instrument=bell,note=20,powered=false]", + "3209": "minecraft:note_block[instrument=bell,note=21,powered=true]", + "3210": "minecraft:note_block[instrument=bell,note=21,powered=false]", + "3211": "minecraft:note_block[instrument=bell,note=22,powered=true]", + "3212": "minecraft:note_block[instrument=bell,note=22,powered=false]", + "3213": "minecraft:note_block[instrument=bell,note=23,powered=true]", + "3214": "minecraft:note_block[instrument=bell,note=23,powered=false]", + "3215": "minecraft:note_block[instrument=bell,note=24,powered=true]", + "3216": "minecraft:note_block[instrument=bell,note=24,powered=false]", + "3217": "minecraft:note_block[instrument=guitar,note=0,powered=true]", + "3218": "minecraft:note_block[instrument=guitar,note=0,powered=false]", + "3219": "minecraft:note_block[instrument=guitar,note=1,powered=true]", + "3220": "minecraft:note_block[instrument=guitar,note=1,powered=false]", + "3221": "minecraft:note_block[instrument=guitar,note=2,powered=true]", + "3222": "minecraft:note_block[instrument=guitar,note=2,powered=false]", + "3223": "minecraft:note_block[instrument=guitar,note=3,powered=true]", + "3224": "minecraft:note_block[instrument=guitar,note=3,powered=false]", + "3225": "minecraft:note_block[instrument=guitar,note=4,powered=true]", + "3226": "minecraft:note_block[instrument=guitar,note=4,powered=false]", + "3227": "minecraft:note_block[instrument=guitar,note=5,powered=true]", + "3228": "minecraft:note_block[instrument=guitar,note=5,powered=false]", + "3229": "minecraft:note_block[instrument=guitar,note=6,powered=true]", + "3230": "minecraft:note_block[instrument=guitar,note=6,powered=false]", + "3231": "minecraft:note_block[instrument=guitar,note=7,powered=true]", + "3232": "minecraft:note_block[instrument=guitar,note=7,powered=false]", + "3233": "minecraft:note_block[instrument=guitar,note=8,powered=true]", + "3234": "minecraft:note_block[instrument=guitar,note=8,powered=false]", + "3235": "minecraft:note_block[instrument=guitar,note=9,powered=true]", + "3236": "minecraft:note_block[instrument=guitar,note=9,powered=false]", + "3237": "minecraft:note_block[instrument=guitar,note=10,powered=true]", + "3238": "minecraft:note_block[instrument=guitar,note=10,powered=false]", + "3239": "minecraft:note_block[instrument=guitar,note=11,powered=true]", + "3240": "minecraft:note_block[instrument=guitar,note=11,powered=false]", + "3241": "minecraft:note_block[instrument=guitar,note=12,powered=true]", + "3242": "minecraft:note_block[instrument=guitar,note=12,powered=false]", + "3243": "minecraft:note_block[instrument=guitar,note=13,powered=true]", + "3244": "minecraft:note_block[instrument=guitar,note=13,powered=false]", + "3245": "minecraft:note_block[instrument=guitar,note=14,powered=true]", + "3246": "minecraft:note_block[instrument=guitar,note=14,powered=false]", + "3247": "minecraft:note_block[instrument=guitar,note=15,powered=true]", + "3248": "minecraft:note_block[instrument=guitar,note=15,powered=false]", + "3249": "minecraft:note_block[instrument=guitar,note=16,powered=true]", + "3250": "minecraft:note_block[instrument=guitar,note=16,powered=false]", + "3251": "minecraft:note_block[instrument=guitar,note=17,powered=true]", + "3252": "minecraft:note_block[instrument=guitar,note=17,powered=false]", + "3253": "minecraft:note_block[instrument=guitar,note=18,powered=true]", + "3254": "minecraft:note_block[instrument=guitar,note=18,powered=false]", + "3255": "minecraft:note_block[instrument=guitar,note=19,powered=true]", + "3256": "minecraft:note_block[instrument=guitar,note=19,powered=false]", + "3257": "minecraft:note_block[instrument=guitar,note=20,powered=true]", + "3258": "minecraft:note_block[instrument=guitar,note=20,powered=false]", + "3259": "minecraft:note_block[instrument=guitar,note=21,powered=true]", + "3260": "minecraft:note_block[instrument=guitar,note=21,powered=false]", + "3261": "minecraft:note_block[instrument=guitar,note=22,powered=true]", + "3262": "minecraft:note_block[instrument=guitar,note=22,powered=false]", + "3263": "minecraft:note_block[instrument=guitar,note=23,powered=true]", + "3264": "minecraft:note_block[instrument=guitar,note=23,powered=false]", + "3265": "minecraft:note_block[instrument=guitar,note=24,powered=true]", + "3266": "minecraft:note_block[instrument=guitar,note=24,powered=false]", + "3267": "minecraft:note_block[instrument=chime,note=0,powered=true]", + "3268": "minecraft:note_block[instrument=chime,note=0,powered=false]", + "3269": "minecraft:note_block[instrument=chime,note=1,powered=true]", + "3270": "minecraft:note_block[instrument=chime,note=1,powered=false]", + "3271": "minecraft:note_block[instrument=chime,note=2,powered=true]", + "3272": "minecraft:note_block[instrument=chime,note=2,powered=false]", + "3273": "minecraft:note_block[instrument=chime,note=3,powered=true]", + "3274": "minecraft:note_block[instrument=chime,note=3,powered=false]", + "3275": "minecraft:note_block[instrument=chime,note=4,powered=true]", + "3276": "minecraft:note_block[instrument=chime,note=4,powered=false]", + "3277": "minecraft:note_block[instrument=chime,note=5,powered=true]", + "3278": "minecraft:note_block[instrument=chime,note=5,powered=false]", + "3279": "minecraft:note_block[instrument=chime,note=6,powered=true]", + "3280": "minecraft:note_block[instrument=chime,note=6,powered=false]", + "3281": "minecraft:note_block[instrument=chime,note=7,powered=true]", + "3282": "minecraft:note_block[instrument=chime,note=7,powered=false]", + "3283": "minecraft:note_block[instrument=chime,note=8,powered=true]", + "3284": "minecraft:note_block[instrument=chime,note=8,powered=false]", + "3285": "minecraft:note_block[instrument=chime,note=9,powered=true]", + "3286": "minecraft:note_block[instrument=chime,note=9,powered=false]", + "3287": "minecraft:note_block[instrument=chime,note=10,powered=true]", + "3288": "minecraft:note_block[instrument=chime,note=10,powered=false]", + "3289": "minecraft:note_block[instrument=chime,note=11,powered=true]", + "3290": "minecraft:note_block[instrument=chime,note=11,powered=false]", + "3291": "minecraft:note_block[instrument=chime,note=12,powered=true]", + "3292": "minecraft:note_block[instrument=chime,note=12,powered=false]", + "3293": "minecraft:note_block[instrument=chime,note=13,powered=true]", + "3294": "minecraft:note_block[instrument=chime,note=13,powered=false]", + "3295": "minecraft:note_block[instrument=chime,note=14,powered=true]", + "3296": "minecraft:note_block[instrument=chime,note=14,powered=false]", + "3297": "minecraft:note_block[instrument=chime,note=15,powered=true]", + "3298": "minecraft:note_block[instrument=chime,note=15,powered=false]", + "3299": "minecraft:note_block[instrument=chime,note=16,powered=true]", + "3300": "minecraft:note_block[instrument=chime,note=16,powered=false]", + "3301": "minecraft:note_block[instrument=chime,note=17,powered=true]", + "3302": "minecraft:note_block[instrument=chime,note=17,powered=false]", + "3303": "minecraft:note_block[instrument=chime,note=18,powered=true]", + "3304": "minecraft:note_block[instrument=chime,note=18,powered=false]", + "3305": "minecraft:note_block[instrument=chime,note=19,powered=true]", + "3306": "minecraft:note_block[instrument=chime,note=19,powered=false]", + "3307": "minecraft:note_block[instrument=chime,note=20,powered=true]", + "3308": "minecraft:note_block[instrument=chime,note=20,powered=false]", + "3309": "minecraft:note_block[instrument=chime,note=21,powered=true]", + "3310": "minecraft:note_block[instrument=chime,note=21,powered=false]", + "3311": "minecraft:note_block[instrument=chime,note=22,powered=true]", + "3312": "minecraft:note_block[instrument=chime,note=22,powered=false]", + "3313": "minecraft:note_block[instrument=chime,note=23,powered=true]", + "3314": "minecraft:note_block[instrument=chime,note=23,powered=false]", + "3315": "minecraft:note_block[instrument=chime,note=24,powered=true]", + "3316": "minecraft:note_block[instrument=chime,note=24,powered=false]", + "3317": "minecraft:note_block[instrument=xylophone,note=0,powered=true]", + "3318": "minecraft:note_block[instrument=xylophone,note=0,powered=false]", + "3319": "minecraft:note_block[instrument=xylophone,note=1,powered=true]", + "3320": "minecraft:note_block[instrument=xylophone,note=1,powered=false]", + "3321": "minecraft:note_block[instrument=xylophone,note=2,powered=true]", + "3322": "minecraft:note_block[instrument=xylophone,note=2,powered=false]", + "3323": "minecraft:note_block[instrument=xylophone,note=3,powered=true]", + "3324": "minecraft:note_block[instrument=xylophone,note=3,powered=false]", + "3325": "minecraft:note_block[instrument=xylophone,note=4,powered=true]", + "3326": "minecraft:note_block[instrument=xylophone,note=4,powered=false]", + "3327": "minecraft:note_block[instrument=xylophone,note=5,powered=true]", + "3328": "minecraft:note_block[instrument=xylophone,note=5,powered=false]", + "3329": "minecraft:note_block[instrument=xylophone,note=6,powered=true]", + "3330": "minecraft:note_block[instrument=xylophone,note=6,powered=false]", + "3331": "minecraft:note_block[instrument=xylophone,note=7,powered=true]", + "3332": "minecraft:note_block[instrument=xylophone,note=7,powered=false]", + "3333": "minecraft:note_block[instrument=xylophone,note=8,powered=true]", + "3334": "minecraft:note_block[instrument=xylophone,note=8,powered=false]", + "3335": "minecraft:note_block[instrument=xylophone,note=9,powered=true]", + "3336": "minecraft:note_block[instrument=xylophone,note=9,powered=false]", + "3337": "minecraft:note_block[instrument=xylophone,note=10,powered=true]", + "3338": "minecraft:note_block[instrument=xylophone,note=10,powered=false]", + "3339": "minecraft:note_block[instrument=xylophone,note=11,powered=true]", + "3340": "minecraft:note_block[instrument=xylophone,note=11,powered=false]", + "3341": "minecraft:note_block[instrument=xylophone,note=12,powered=true]", + "3342": "minecraft:note_block[instrument=xylophone,note=12,powered=false]", + "3343": "minecraft:note_block[instrument=xylophone,note=13,powered=true]", + "3344": "minecraft:note_block[instrument=xylophone,note=13,powered=false]", + "3345": "minecraft:note_block[instrument=xylophone,note=14,powered=true]", + "3346": "minecraft:note_block[instrument=xylophone,note=14,powered=false]", + "3347": "minecraft:note_block[instrument=xylophone,note=15,powered=true]", + "3348": "minecraft:note_block[instrument=xylophone,note=15,powered=false]", + "3349": "minecraft:note_block[instrument=xylophone,note=16,powered=true]", + "3350": "minecraft:note_block[instrument=xylophone,note=16,powered=false]", + "3351": "minecraft:note_block[instrument=xylophone,note=17,powered=true]", + "3352": "minecraft:note_block[instrument=xylophone,note=17,powered=false]", + "3353": "minecraft:note_block[instrument=xylophone,note=18,powered=true]", + "3354": "minecraft:note_block[instrument=xylophone,note=18,powered=false]", + "3355": "minecraft:note_block[instrument=xylophone,note=19,powered=true]", + "3356": "minecraft:note_block[instrument=xylophone,note=19,powered=false]", + "3357": "minecraft:note_block[instrument=xylophone,note=20,powered=true]", + "3358": "minecraft:note_block[instrument=xylophone,note=20,powered=false]", + "3359": "minecraft:note_block[instrument=xylophone,note=21,powered=true]", + "3360": "minecraft:note_block[instrument=xylophone,note=21,powered=false]", + "3361": "minecraft:note_block[instrument=xylophone,note=22,powered=true]", + "3362": "minecraft:note_block[instrument=xylophone,note=22,powered=false]", + "3363": "minecraft:note_block[instrument=xylophone,note=23,powered=true]", + "3364": "minecraft:note_block[instrument=xylophone,note=23,powered=false]", + "3365": "minecraft:note_block[instrument=xylophone,note=24,powered=true]", + "3366": "minecraft:note_block[instrument=xylophone,note=24,powered=false]", + "3367": "minecraft:note_block[instrument=iron_xylophone,note=0,powered=true]", + "3368": "minecraft:note_block[instrument=iron_xylophone,note=0,powered=false]", + "3369": "minecraft:note_block[instrument=iron_xylophone,note=1,powered=true]", + "3370": "minecraft:note_block[instrument=iron_xylophone,note=1,powered=false]", + "3371": "minecraft:note_block[instrument=iron_xylophone,note=2,powered=true]", + "3372": "minecraft:note_block[instrument=iron_xylophone,note=2,powered=false]", + "3373": "minecraft:note_block[instrument=iron_xylophone,note=3,powered=true]", + "3374": "minecraft:note_block[instrument=iron_xylophone,note=3,powered=false]", + "3375": "minecraft:note_block[instrument=iron_xylophone,note=4,powered=true]", + "3376": "minecraft:note_block[instrument=iron_xylophone,note=4,powered=false]", + "3377": "minecraft:note_block[instrument=iron_xylophone,note=5,powered=true]", + "3378": "minecraft:note_block[instrument=iron_xylophone,note=5,powered=false]", + "3379": "minecraft:note_block[instrument=iron_xylophone,note=6,powered=true]", + "3380": "minecraft:note_block[instrument=iron_xylophone,note=6,powered=false]", + "3381": "minecraft:note_block[instrument=iron_xylophone,note=7,powered=true]", + "3382": "minecraft:note_block[instrument=iron_xylophone,note=7,powered=false]", + "3383": "minecraft:note_block[instrument=iron_xylophone,note=8,powered=true]", + "3384": "minecraft:note_block[instrument=iron_xylophone,note=8,powered=false]", + "3385": "minecraft:note_block[instrument=iron_xylophone,note=9,powered=true]", + "3386": "minecraft:note_block[instrument=iron_xylophone,note=9,powered=false]", + "3387": "minecraft:note_block[instrument=iron_xylophone,note=10,powered=true]", + "3388": "minecraft:note_block[instrument=iron_xylophone,note=10,powered=false]", + "3389": "minecraft:note_block[instrument=iron_xylophone,note=11,powered=true]", + "3390": "minecraft:note_block[instrument=iron_xylophone,note=11,powered=false]", + "3391": "minecraft:note_block[instrument=iron_xylophone,note=12,powered=true]", + "3392": "minecraft:note_block[instrument=iron_xylophone,note=12,powered=false]", + "3393": "minecraft:note_block[instrument=iron_xylophone,note=13,powered=true]", + "3394": "minecraft:note_block[instrument=iron_xylophone,note=13,powered=false]", + "3395": "minecraft:note_block[instrument=iron_xylophone,note=14,powered=true]", + "3396": "minecraft:note_block[instrument=iron_xylophone,note=14,powered=false]", + "3397": "minecraft:note_block[instrument=iron_xylophone,note=15,powered=true]", + "3398": "minecraft:note_block[instrument=iron_xylophone,note=15,powered=false]", + "3399": "minecraft:note_block[instrument=iron_xylophone,note=16,powered=true]", + "3400": "minecraft:note_block[instrument=iron_xylophone,note=16,powered=false]", + "3401": "minecraft:note_block[instrument=iron_xylophone,note=17,powered=true]", + "3402": "minecraft:note_block[instrument=iron_xylophone,note=17,powered=false]", + "3403": "minecraft:note_block[instrument=iron_xylophone,note=18,powered=true]", + "3404": "minecraft:note_block[instrument=iron_xylophone,note=18,powered=false]", + "3405": "minecraft:note_block[instrument=iron_xylophone,note=19,powered=true]", + "3406": "minecraft:note_block[instrument=iron_xylophone,note=19,powered=false]", + "3407": "minecraft:note_block[instrument=iron_xylophone,note=20,powered=true]", + "3408": "minecraft:note_block[instrument=iron_xylophone,note=20,powered=false]", + "3409": "minecraft:note_block[instrument=iron_xylophone,note=21,powered=true]", + "3410": "minecraft:note_block[instrument=iron_xylophone,note=21,powered=false]", + "3411": "minecraft:note_block[instrument=iron_xylophone,note=22,powered=true]", + "3412": "minecraft:note_block[instrument=iron_xylophone,note=22,powered=false]", + "3413": "minecraft:note_block[instrument=iron_xylophone,note=23,powered=true]", + "3414": "minecraft:note_block[instrument=iron_xylophone,note=23,powered=false]", + "3415": "minecraft:note_block[instrument=iron_xylophone,note=24,powered=true]", + "3416": "minecraft:note_block[instrument=iron_xylophone,note=24,powered=false]", + "3417": "minecraft:note_block[instrument=cow_bell,note=0,powered=true]", + "3418": "minecraft:note_block[instrument=cow_bell,note=0,powered=false]", + "3419": "minecraft:note_block[instrument=cow_bell,note=1,powered=true]", + "3420": "minecraft:note_block[instrument=cow_bell,note=1,powered=false]", + "3421": "minecraft:note_block[instrument=cow_bell,note=2,powered=true]", + "3422": "minecraft:note_block[instrument=cow_bell,note=2,powered=false]", + "3423": "minecraft:note_block[instrument=cow_bell,note=3,powered=true]", + "3424": "minecraft:note_block[instrument=cow_bell,note=3,powered=false]", + "3425": "minecraft:note_block[instrument=cow_bell,note=4,powered=true]", + "3426": "minecraft:note_block[instrument=cow_bell,note=4,powered=false]", + "3427": "minecraft:note_block[instrument=cow_bell,note=5,powered=true]", + "3428": "minecraft:note_block[instrument=cow_bell,note=5,powered=false]", + "3429": "minecraft:note_block[instrument=cow_bell,note=6,powered=true]", + "3430": "minecraft:note_block[instrument=cow_bell,note=6,powered=false]", + "3431": "minecraft:note_block[instrument=cow_bell,note=7,powered=true]", + "3432": "minecraft:note_block[instrument=cow_bell,note=7,powered=false]", + "3433": "minecraft:note_block[instrument=cow_bell,note=8,powered=true]", + "3434": "minecraft:note_block[instrument=cow_bell,note=8,powered=false]", + "3435": "minecraft:note_block[instrument=cow_bell,note=9,powered=true]", + "3436": "minecraft:note_block[instrument=cow_bell,note=9,powered=false]", + "3437": "minecraft:note_block[instrument=cow_bell,note=10,powered=true]", + "3438": "minecraft:note_block[instrument=cow_bell,note=10,powered=false]", + "3439": "minecraft:note_block[instrument=cow_bell,note=11,powered=true]", + "3440": "minecraft:note_block[instrument=cow_bell,note=11,powered=false]", + "3441": "minecraft:note_block[instrument=cow_bell,note=12,powered=true]", + "3442": "minecraft:note_block[instrument=cow_bell,note=12,powered=false]", + "3443": "minecraft:note_block[instrument=cow_bell,note=13,powered=true]", + "3444": "minecraft:note_block[instrument=cow_bell,note=13,powered=false]", + "3445": "minecraft:note_block[instrument=cow_bell,note=14,powered=true]", + "3446": "minecraft:note_block[instrument=cow_bell,note=14,powered=false]", + "3447": "minecraft:note_block[instrument=cow_bell,note=15,powered=true]", + "3448": "minecraft:note_block[instrument=cow_bell,note=15,powered=false]", + "3449": "minecraft:note_block[instrument=cow_bell,note=16,powered=true]", + "3450": "minecraft:note_block[instrument=cow_bell,note=16,powered=false]", + "3451": "minecraft:note_block[instrument=cow_bell,note=17,powered=true]", + "3452": "minecraft:note_block[instrument=cow_bell,note=17,powered=false]", + "3453": "minecraft:note_block[instrument=cow_bell,note=18,powered=true]", + "3454": "minecraft:note_block[instrument=cow_bell,note=18,powered=false]", + "3455": "minecraft:note_block[instrument=cow_bell,note=19,powered=true]", + "3456": "minecraft:note_block[instrument=cow_bell,note=19,powered=false]", + "3457": "minecraft:note_block[instrument=cow_bell,note=20,powered=true]", + "3458": "minecraft:note_block[instrument=cow_bell,note=20,powered=false]", + "3459": "minecraft:note_block[instrument=cow_bell,note=21,powered=true]", + "3460": "minecraft:note_block[instrument=cow_bell,note=21,powered=false]", + "3461": "minecraft:note_block[instrument=cow_bell,note=22,powered=true]", + "3462": "minecraft:note_block[instrument=cow_bell,note=22,powered=false]", + "3463": "minecraft:note_block[instrument=cow_bell,note=23,powered=true]", + "3464": "minecraft:note_block[instrument=cow_bell,note=23,powered=false]", + "3465": "minecraft:note_block[instrument=cow_bell,note=24,powered=true]", + "3466": "minecraft:note_block[instrument=cow_bell,note=24,powered=false]", + "3467": "minecraft:note_block[instrument=didgeridoo,note=0,powered=true]", + "3468": "minecraft:note_block[instrument=didgeridoo,note=0,powered=false]", + "3469": "minecraft:note_block[instrument=didgeridoo,note=1,powered=true]", + "3470": "minecraft:note_block[instrument=didgeridoo,note=1,powered=false]", + "3471": "minecraft:note_block[instrument=didgeridoo,note=2,powered=true]", + "3472": "minecraft:note_block[instrument=didgeridoo,note=2,powered=false]", + "3473": "minecraft:note_block[instrument=didgeridoo,note=3,powered=true]", + "3474": "minecraft:note_block[instrument=didgeridoo,note=3,powered=false]", + "3475": "minecraft:note_block[instrument=didgeridoo,note=4,powered=true]", + "3476": "minecraft:note_block[instrument=didgeridoo,note=4,powered=false]", + "3477": "minecraft:note_block[instrument=didgeridoo,note=5,powered=true]", + "3478": "minecraft:note_block[instrument=didgeridoo,note=5,powered=false]", + "3479": "minecraft:note_block[instrument=didgeridoo,note=6,powered=true]", + "3480": "minecraft:note_block[instrument=didgeridoo,note=6,powered=false]", + "3481": "minecraft:note_block[instrument=didgeridoo,note=7,powered=true]", + "3482": "minecraft:note_block[instrument=didgeridoo,note=7,powered=false]", + "3483": "minecraft:note_block[instrument=didgeridoo,note=8,powered=true]", + "3484": "minecraft:note_block[instrument=didgeridoo,note=8,powered=false]", + "3485": "minecraft:note_block[instrument=didgeridoo,note=9,powered=true]", + "3486": "minecraft:note_block[instrument=didgeridoo,note=9,powered=false]", + "3487": "minecraft:note_block[instrument=didgeridoo,note=10,powered=true]", + "3488": "minecraft:note_block[instrument=didgeridoo,note=10,powered=false]", + "3489": "minecraft:note_block[instrument=didgeridoo,note=11,powered=true]", + "3490": "minecraft:note_block[instrument=didgeridoo,note=11,powered=false]", + "3491": "minecraft:note_block[instrument=didgeridoo,note=12,powered=true]", + "3492": "minecraft:note_block[instrument=didgeridoo,note=12,powered=false]", + "3493": "minecraft:note_block[instrument=didgeridoo,note=13,powered=true]", + "3494": "minecraft:note_block[instrument=didgeridoo,note=13,powered=false]", + "3495": "minecraft:note_block[instrument=didgeridoo,note=14,powered=true]", + "3496": "minecraft:note_block[instrument=didgeridoo,note=14,powered=false]", + "3497": "minecraft:note_block[instrument=didgeridoo,note=15,powered=true]", + "3498": "minecraft:note_block[instrument=didgeridoo,note=15,powered=false]", + "3499": "minecraft:note_block[instrument=didgeridoo,note=16,powered=true]", + "3500": "minecraft:note_block[instrument=didgeridoo,note=16,powered=false]", + "3501": "minecraft:note_block[instrument=didgeridoo,note=17,powered=true]", + "3502": "minecraft:note_block[instrument=didgeridoo,note=17,powered=false]", + "3503": "minecraft:note_block[instrument=didgeridoo,note=18,powered=true]", + "3504": "minecraft:note_block[instrument=didgeridoo,note=18,powered=false]", + "3505": "minecraft:note_block[instrument=didgeridoo,note=19,powered=true]", + "3506": "minecraft:note_block[instrument=didgeridoo,note=19,powered=false]", + "3507": "minecraft:note_block[instrument=didgeridoo,note=20,powered=true]", + "3508": "minecraft:note_block[instrument=didgeridoo,note=20,powered=false]", + "3509": "minecraft:note_block[instrument=didgeridoo,note=21,powered=true]", + "3510": "minecraft:note_block[instrument=didgeridoo,note=21,powered=false]", + "3511": "minecraft:note_block[instrument=didgeridoo,note=22,powered=true]", + "3512": "minecraft:note_block[instrument=didgeridoo,note=22,powered=false]", + "3513": "minecraft:note_block[instrument=didgeridoo,note=23,powered=true]", + "3514": "minecraft:note_block[instrument=didgeridoo,note=23,powered=false]", + "3515": "minecraft:note_block[instrument=didgeridoo,note=24,powered=true]", + "3516": "minecraft:note_block[instrument=didgeridoo,note=24,powered=false]", + "3517": "minecraft:note_block[instrument=bit,note=0,powered=true]", + "3518": "minecraft:note_block[instrument=bit,note=0,powered=false]", + "3519": "minecraft:note_block[instrument=bit,note=1,powered=true]", + "3520": "minecraft:note_block[instrument=bit,note=1,powered=false]", + "3521": "minecraft:note_block[instrument=bit,note=2,powered=true]", + "3522": "minecraft:note_block[instrument=bit,note=2,powered=false]", + "3523": "minecraft:note_block[instrument=bit,note=3,powered=true]", + "3524": "minecraft:note_block[instrument=bit,note=3,powered=false]", + "3525": "minecraft:note_block[instrument=bit,note=4,powered=true]", + "3526": "minecraft:note_block[instrument=bit,note=4,powered=false]", + "3527": "minecraft:note_block[instrument=bit,note=5,powered=true]", + "3528": "minecraft:note_block[instrument=bit,note=5,powered=false]", + "3529": "minecraft:note_block[instrument=bit,note=6,powered=true]", + "3530": "minecraft:note_block[instrument=bit,note=6,powered=false]", + "3531": "minecraft:note_block[instrument=bit,note=7,powered=true]", + "3532": "minecraft:note_block[instrument=bit,note=7,powered=false]", + "3533": "minecraft:note_block[instrument=bit,note=8,powered=true]", + "3534": "minecraft:note_block[instrument=bit,note=8,powered=false]", + "3535": "minecraft:note_block[instrument=bit,note=9,powered=true]", + "3536": "minecraft:note_block[instrument=bit,note=9,powered=false]", + "3537": "minecraft:note_block[instrument=bit,note=10,powered=true]", + "3538": "minecraft:note_block[instrument=bit,note=10,powered=false]", + "3539": "minecraft:note_block[instrument=bit,note=11,powered=true]", + "3540": "minecraft:note_block[instrument=bit,note=11,powered=false]", + "3541": "minecraft:note_block[instrument=bit,note=12,powered=true]", + "3542": "minecraft:note_block[instrument=bit,note=12,powered=false]", + "3543": "minecraft:note_block[instrument=bit,note=13,powered=true]", + "3544": "minecraft:note_block[instrument=bit,note=13,powered=false]", + "3545": "minecraft:note_block[instrument=bit,note=14,powered=true]", + "3546": "minecraft:note_block[instrument=bit,note=14,powered=false]", + "3547": "minecraft:note_block[instrument=bit,note=15,powered=true]", + "3548": "minecraft:note_block[instrument=bit,note=15,powered=false]", + "3549": "minecraft:note_block[instrument=bit,note=16,powered=true]", + "3550": "minecraft:note_block[instrument=bit,note=16,powered=false]", + "3551": "minecraft:note_block[instrument=bit,note=17,powered=true]", + "3552": "minecraft:note_block[instrument=bit,note=17,powered=false]", + "3553": "minecraft:note_block[instrument=bit,note=18,powered=true]", + "3554": "minecraft:note_block[instrument=bit,note=18,powered=false]", + "3555": "minecraft:note_block[instrument=bit,note=19,powered=true]", + "3556": "minecraft:note_block[instrument=bit,note=19,powered=false]", + "3557": "minecraft:note_block[instrument=bit,note=20,powered=true]", + "3558": "minecraft:note_block[instrument=bit,note=20,powered=false]", + "3559": "minecraft:note_block[instrument=bit,note=21,powered=true]", + "3560": "minecraft:note_block[instrument=bit,note=21,powered=false]", + "3561": "minecraft:note_block[instrument=bit,note=22,powered=true]", + "3562": "minecraft:note_block[instrument=bit,note=22,powered=false]", + "3563": "minecraft:note_block[instrument=bit,note=23,powered=true]", + "3564": "minecraft:note_block[instrument=bit,note=23,powered=false]", + "3565": "minecraft:note_block[instrument=bit,note=24,powered=true]", + "3566": "minecraft:note_block[instrument=bit,note=24,powered=false]", + "3567": "minecraft:note_block[instrument=banjo,note=0,powered=true]", + "3568": "minecraft:note_block[instrument=banjo,note=0,powered=false]", + "3569": "minecraft:note_block[instrument=banjo,note=1,powered=true]", + "3570": "minecraft:note_block[instrument=banjo,note=1,powered=false]", + "3571": "minecraft:note_block[instrument=banjo,note=2,powered=true]", + "3572": "minecraft:note_block[instrument=banjo,note=2,powered=false]", + "3573": "minecraft:note_block[instrument=banjo,note=3,powered=true]", + "3574": "minecraft:note_block[instrument=banjo,note=3,powered=false]", + "3575": "minecraft:note_block[instrument=banjo,note=4,powered=true]", + "3576": "minecraft:note_block[instrument=banjo,note=4,powered=false]", + "3577": "minecraft:note_block[instrument=banjo,note=5,powered=true]", + "3578": "minecraft:note_block[instrument=banjo,note=5,powered=false]", + "3579": "minecraft:note_block[instrument=banjo,note=6,powered=true]", + "3580": "minecraft:note_block[instrument=banjo,note=6,powered=false]", + "3581": "minecraft:note_block[instrument=banjo,note=7,powered=true]", + "3582": "minecraft:note_block[instrument=banjo,note=7,powered=false]", + "3583": "minecraft:note_block[instrument=banjo,note=8,powered=true]", + "3584": "minecraft:note_block[instrument=banjo,note=8,powered=false]", + "3585": "minecraft:note_block[instrument=banjo,note=9,powered=true]", + "3586": "minecraft:note_block[instrument=banjo,note=9,powered=false]", + "3587": "minecraft:note_block[instrument=banjo,note=10,powered=true]", + "3588": "minecraft:note_block[instrument=banjo,note=10,powered=false]", + "3589": "minecraft:note_block[instrument=banjo,note=11,powered=true]", + "3590": "minecraft:note_block[instrument=banjo,note=11,powered=false]", + "3591": "minecraft:note_block[instrument=banjo,note=12,powered=true]", + "3592": "minecraft:note_block[instrument=banjo,note=12,powered=false]", + "3593": "minecraft:note_block[instrument=banjo,note=13,powered=true]", + "3594": "minecraft:note_block[instrument=banjo,note=13,powered=false]", + "3595": "minecraft:note_block[instrument=banjo,note=14,powered=true]", + "3596": "minecraft:note_block[instrument=banjo,note=14,powered=false]", + "3597": "minecraft:note_block[instrument=banjo,note=15,powered=true]", + "3598": "minecraft:note_block[instrument=banjo,note=15,powered=false]", + "3599": "minecraft:note_block[instrument=banjo,note=16,powered=true]", + "3600": "minecraft:note_block[instrument=banjo,note=16,powered=false]", + "3601": "minecraft:note_block[instrument=banjo,note=17,powered=true]", + "3602": "minecraft:note_block[instrument=banjo,note=17,powered=false]", + "3603": "minecraft:note_block[instrument=banjo,note=18,powered=true]", + "3604": "minecraft:note_block[instrument=banjo,note=18,powered=false]", + "3605": "minecraft:note_block[instrument=banjo,note=19,powered=true]", + "3606": "minecraft:note_block[instrument=banjo,note=19,powered=false]", + "3607": "minecraft:note_block[instrument=banjo,note=20,powered=true]", + "3608": "minecraft:note_block[instrument=banjo,note=20,powered=false]", + "3609": "minecraft:note_block[instrument=banjo,note=21,powered=true]", + "3610": "minecraft:note_block[instrument=banjo,note=21,powered=false]", + "3611": "minecraft:note_block[instrument=banjo,note=22,powered=true]", + "3612": "minecraft:note_block[instrument=banjo,note=22,powered=false]", + "3613": "minecraft:note_block[instrument=banjo,note=23,powered=true]", + "3614": "minecraft:note_block[instrument=banjo,note=23,powered=false]", + "3615": "minecraft:note_block[instrument=banjo,note=24,powered=true]", + "3616": "minecraft:note_block[instrument=banjo,note=24,powered=false]", + "3617": "minecraft:note_block[instrument=pling,note=0,powered=true]", + "3618": "minecraft:note_block[instrument=pling,note=0,powered=false]", + "3619": "minecraft:note_block[instrument=pling,note=1,powered=true]", + "3620": "minecraft:note_block[instrument=pling,note=1,powered=false]", + "3621": "minecraft:note_block[instrument=pling,note=2,powered=true]", + "3622": "minecraft:note_block[instrument=pling,note=2,powered=false]", + "3623": "minecraft:note_block[instrument=pling,note=3,powered=true]", + "3624": "minecraft:note_block[instrument=pling,note=3,powered=false]", + "3625": "minecraft:note_block[instrument=pling,note=4,powered=true]", + "3626": "minecraft:note_block[instrument=pling,note=4,powered=false]", + "3627": "minecraft:note_block[instrument=pling,note=5,powered=true]", + "3628": "minecraft:note_block[instrument=pling,note=5,powered=false]", + "3629": "minecraft:note_block[instrument=pling,note=6,powered=true]", + "3630": "minecraft:note_block[instrument=pling,note=6,powered=false]", + "3631": "minecraft:note_block[instrument=pling,note=7,powered=true]", + "3632": "minecraft:note_block[instrument=pling,note=7,powered=false]", + "3633": "minecraft:note_block[instrument=pling,note=8,powered=true]", + "3634": "minecraft:note_block[instrument=pling,note=8,powered=false]", + "3635": "minecraft:note_block[instrument=pling,note=9,powered=true]", + "3636": "minecraft:note_block[instrument=pling,note=9,powered=false]", + "3637": "minecraft:note_block[instrument=pling,note=10,powered=true]", + "3638": "minecraft:note_block[instrument=pling,note=10,powered=false]", + "3639": "minecraft:note_block[instrument=pling,note=11,powered=true]", + "3640": "minecraft:note_block[instrument=pling,note=11,powered=false]", + "3641": "minecraft:note_block[instrument=pling,note=12,powered=true]", + "3642": "minecraft:note_block[instrument=pling,note=12,powered=false]", + "3643": "minecraft:note_block[instrument=pling,note=13,powered=true]", + "3644": "minecraft:note_block[instrument=pling,note=13,powered=false]", + "3645": "minecraft:note_block[instrument=pling,note=14,powered=true]", + "3646": "minecraft:note_block[instrument=pling,note=14,powered=false]", + "3647": "minecraft:note_block[instrument=pling,note=15,powered=true]", + "3648": "minecraft:note_block[instrument=pling,note=15,powered=false]", + "3649": "minecraft:note_block[instrument=pling,note=16,powered=true]", + "3650": "minecraft:note_block[instrument=pling,note=16,powered=false]", + "3651": "minecraft:note_block[instrument=pling,note=17,powered=true]", + "3652": "minecraft:note_block[instrument=pling,note=17,powered=false]", + "3653": "minecraft:note_block[instrument=pling,note=18,powered=true]", + "3654": "minecraft:note_block[instrument=pling,note=18,powered=false]", + "3655": "minecraft:note_block[instrument=pling,note=19,powered=true]", + "3656": "minecraft:note_block[instrument=pling,note=19,powered=false]", + "3657": "minecraft:note_block[instrument=pling,note=20,powered=true]", + "3658": "minecraft:note_block[instrument=pling,note=20,powered=false]", + "3659": "minecraft:note_block[instrument=pling,note=21,powered=true]", + "3660": "minecraft:note_block[instrument=pling,note=21,powered=false]", + "3661": "minecraft:note_block[instrument=pling,note=22,powered=true]", + "3662": "minecraft:note_block[instrument=pling,note=22,powered=false]", + "3663": "minecraft:note_block[instrument=pling,note=23,powered=true]", + "3664": "minecraft:note_block[instrument=pling,note=23,powered=false]", + "3665": "minecraft:note_block[instrument=pling,note=24,powered=true]", + "3666": "minecraft:note_block[instrument=pling,note=24,powered=false]", + "3667": "minecraft:white_bed[facing=north,occupied=true,part=head]", + "3668": "minecraft:white_bed[facing=north,occupied=true,part=foot]", + "3669": "minecraft:white_bed[facing=north,occupied=false,part=head]", + "3670": "minecraft:white_bed[facing=north,occupied=false,part=foot]", + "3671": "minecraft:white_bed[facing=south,occupied=true,part=head]", + "3672": "minecraft:white_bed[facing=south,occupied=true,part=foot]", + "3673": "minecraft:white_bed[facing=south,occupied=false,part=head]", + "3674": "minecraft:white_bed[facing=south,occupied=false,part=foot]", + "3675": "minecraft:white_bed[facing=west,occupied=true,part=head]", + "3676": "minecraft:white_bed[facing=west,occupied=true,part=foot]", + "3677": "minecraft:white_bed[facing=west,occupied=false,part=head]", + "3678": "minecraft:white_bed[facing=west,occupied=false,part=foot]", + "3679": "minecraft:white_bed[facing=east,occupied=true,part=head]", + "3680": "minecraft:white_bed[facing=east,occupied=true,part=foot]", + "3681": "minecraft:white_bed[facing=east,occupied=false,part=head]", + "3682": "minecraft:white_bed[facing=east,occupied=false,part=foot]", + "3683": "minecraft:blue_carpet", + "3684": "minecraft:dead_bubble_coral_fan[waterlogged=true]", + "3685": "minecraft:dead_bubble_coral_fan[waterlogged=false]", + "3686": "minecraft:mossy_cobblestone", + "3687": "minecraft:netherite_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "3688": "minecraft:netherite_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "3689": "minecraft:netherite_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "3690": "minecraft:netherite_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "3691": "minecraft:netherite_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "3692": "minecraft:netherite_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "3693": "minecraft:netherite_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "3694": "minecraft:netherite_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "3695": "minecraft:netherite_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "3696": "minecraft:netherite_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "3697": "minecraft:netherite_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "3698": "minecraft:netherite_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "3699": "minecraft:netherite_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "3700": "minecraft:netherite_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "3701": "minecraft:netherite_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "3702": "minecraft:netherite_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "3703": "minecraft:netherite_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "3704": "minecraft:netherite_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "3705": "minecraft:netherite_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "3706": "minecraft:netherite_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "3707": "minecraft:netherite_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "3708": "minecraft:netherite_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "3709": "minecraft:netherite_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "3710": "minecraft:netherite_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "3711": "minecraft:netherite_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "3712": "minecraft:netherite_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "3713": "minecraft:netherite_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "3714": "minecraft:netherite_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "3715": "minecraft:netherite_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "3716": "minecraft:netherite_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "3717": "minecraft:netherite_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "3718": "minecraft:netherite_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "3719": "minecraft:netherite_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "3720": "minecraft:netherite_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "3721": "minecraft:netherite_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "3722": "minecraft:netherite_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "3723": "minecraft:netherite_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "3724": "minecraft:netherite_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "3725": "minecraft:netherite_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "3726": "minecraft:netherite_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "3727": "minecraft:netherite_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "3728": "minecraft:netherite_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "3729": "minecraft:netherite_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "3730": "minecraft:netherite_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "3731": "minecraft:netherite_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "3732": "minecraft:netherite_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "3733": "minecraft:netherite_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "3734": "minecraft:netherite_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "3735": "minecraft:netherite_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "3736": "minecraft:netherite_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "3737": "minecraft:netherite_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "3738": "minecraft:netherite_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "3739": "minecraft:netherite_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "3740": "minecraft:netherite_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "3741": "minecraft:netherite_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "3742": "minecraft:netherite_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "3743": "minecraft:netherite_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "3744": "minecraft:netherite_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "3745": "minecraft:netherite_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "3746": "minecraft:netherite_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "3747": "minecraft:netherite_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "3748": "minecraft:netherite_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "3749": "minecraft:netherite_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "3750": "minecraft:netherite_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "3751": "minecraft:netherite_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "3752": "minecraft:netherite_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "3753": "minecraft:netherite_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "3754": "minecraft:netherite_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "3755": "minecraft:netherite_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "3756": "minecraft:netherite_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "3757": "minecraft:netherite_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "3758": "minecraft:netherite_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "3759": "minecraft:netherite_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "3760": "minecraft:netherite_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "3761": "minecraft:netherite_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "3762": "minecraft:netherite_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "3763": "minecraft:netherite_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "3764": "minecraft:netherite_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "3765": "minecraft:netherite_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "3766": "minecraft:netherite_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "3767": "minecraft:oak_leaves[distance=1,persistent=true]", + "3768": "minecraft:oak_leaves[distance=1,persistent=false]", + "3769": "minecraft:oak_leaves[distance=2,persistent=true]", + "3770": "minecraft:oak_leaves[distance=2,persistent=false]", + "3771": "minecraft:oak_leaves[distance=3,persistent=true]", + "3772": "minecraft:oak_leaves[distance=3,persistent=false]", + "3773": "minecraft:oak_leaves[distance=4,persistent=true]", + "3774": "minecraft:oak_leaves[distance=4,persistent=false]", + "3775": "minecraft:oak_leaves[distance=5,persistent=true]", + "3776": "minecraft:oak_leaves[distance=5,persistent=false]", + "3777": "minecraft:oak_leaves[distance=6,persistent=true]", + "3778": "minecraft:oak_leaves[distance=6,persistent=false]", + "3779": "minecraft:oak_leaves[distance=7,persistent=true]", + "3780": "minecraft:oak_leaves[distance=7,persistent=false]", + "3781": "minecraft:netherite_block", + "3782": "minecraft:purple_shulker_box[facing=north]", + "3783": "minecraft:purple_shulker_box[facing=east]", + "3784": "minecraft:purple_shulker_box[facing=south]", + "3785": "minecraft:purple_shulker_box[facing=west]", + "3786": "minecraft:purple_shulker_box[facing=up]", + "3787": "minecraft:purple_shulker_box[facing=down]", + "3788": "minecraft:cyan_shulker_box[facing=north]", + "3789": "minecraft:cyan_shulker_box[facing=east]", + "3790": "minecraft:cyan_shulker_box[facing=south]", + "3791": "minecraft:cyan_shulker_box[facing=west]", + "3792": "minecraft:cyan_shulker_box[facing=up]", + "3793": "minecraft:cyan_shulker_box[facing=down]", + "3794": "minecraft:polished_andesite_slab[type=top,waterlogged=true]", + "3795": "minecraft:polished_andesite_slab[type=top,waterlogged=false]", + "3796": "minecraft:polished_andesite_slab[type=bottom,waterlogged=true]", + "3797": "minecraft:polished_andesite_slab[type=bottom,waterlogged=false]", + "3798": "minecraft:polished_andesite_slab[type=double,waterlogged=true]", + "3799": "minecraft:polished_andesite_slab[type=double,waterlogged=false]", + "3800": "minecraft:granite_slab[type=top,waterlogged=true]", + "3801": "minecraft:granite_slab[type=top,waterlogged=false]", + "3802": "minecraft:granite_slab[type=bottom,waterlogged=true]", + "3803": "minecraft:granite_slab[type=bottom,waterlogged=false]", + "3804": "minecraft:granite_slab[type=double,waterlogged=true]", + "3805": "minecraft:granite_slab[type=double,waterlogged=false]", + "3806": "minecraft:clay", + "3807": "minecraft:sugar_cane[age=0]", + "3808": "minecraft:sugar_cane[age=1]", + "3809": "minecraft:sugar_cane[age=2]", + "3810": "minecraft:sugar_cane[age=3]", + "3811": "minecraft:sugar_cane[age=4]", + "3812": "minecraft:sugar_cane[age=5]", + "3813": "minecraft:sugar_cane[age=6]", + "3814": "minecraft:sugar_cane[age=7]", + "3815": "minecraft:sugar_cane[age=8]", + "3816": "minecraft:sugar_cane[age=9]", + "3817": "minecraft:sugar_cane[age=10]", + "3818": "minecraft:sugar_cane[age=11]", + "3819": "minecraft:sugar_cane[age=12]", + "3820": "minecraft:sugar_cane[age=13]", + "3821": "minecraft:sugar_cane[age=14]", + "3822": "minecraft:sugar_cane[age=15]", + "3823": "minecraft:spruce_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "3824": "minecraft:spruce_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "3825": "minecraft:spruce_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "3826": "minecraft:spruce_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "3827": "minecraft:spruce_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "3828": "minecraft:spruce_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "3829": "minecraft:spruce_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "3830": "minecraft:spruce_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "3831": "minecraft:spruce_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "3832": "minecraft:spruce_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "3833": "minecraft:spruce_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "3834": "minecraft:spruce_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "3835": "minecraft:spruce_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "3836": "minecraft:spruce_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "3837": "minecraft:spruce_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "3838": "minecraft:spruce_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "3839": "minecraft:spruce_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "3840": "minecraft:spruce_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "3841": "minecraft:spruce_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "3842": "minecraft:spruce_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "3843": "minecraft:spruce_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "3844": "minecraft:spruce_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "3845": "minecraft:spruce_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "3846": "minecraft:spruce_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "3847": "minecraft:spruce_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "3848": "minecraft:spruce_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "3849": "minecraft:spruce_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "3850": "minecraft:spruce_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "3851": "minecraft:spruce_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "3852": "minecraft:spruce_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "3853": "minecraft:spruce_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "3854": "minecraft:spruce_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "3855": "minecraft:spruce_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "3856": "minecraft:spruce_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "3857": "minecraft:spruce_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "3858": "minecraft:spruce_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "3859": "minecraft:spruce_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "3860": "minecraft:spruce_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "3861": "minecraft:spruce_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "3862": "minecraft:spruce_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "3863": "minecraft:spruce_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "3864": "minecraft:spruce_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "3865": "minecraft:spruce_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "3866": "minecraft:spruce_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "3867": "minecraft:spruce_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "3868": "minecraft:spruce_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "3869": "minecraft:spruce_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "3870": "minecraft:spruce_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "3871": "minecraft:spruce_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "3872": "minecraft:spruce_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "3873": "minecraft:spruce_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "3874": "minecraft:spruce_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "3875": "minecraft:spruce_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "3876": "minecraft:spruce_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "3877": "minecraft:spruce_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "3878": "minecraft:spruce_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "3879": "minecraft:spruce_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "3880": "minecraft:spruce_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "3881": "minecraft:spruce_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "3882": "minecraft:spruce_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "3883": "minecraft:spruce_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "3884": "minecraft:spruce_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "3885": "minecraft:spruce_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "3886": "minecraft:spruce_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "3887": "minecraft:spruce_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "3888": "minecraft:spruce_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "3889": "minecraft:spruce_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "3890": "minecraft:spruce_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "3891": "minecraft:spruce_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "3892": "minecraft:spruce_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "3893": "minecraft:spruce_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "3894": "minecraft:spruce_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "3895": "minecraft:spruce_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "3896": "minecraft:spruce_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "3897": "minecraft:spruce_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "3898": "minecraft:spruce_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "3899": "minecraft:spruce_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "3900": "minecraft:spruce_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "3901": "minecraft:spruce_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "3902": "minecraft:spruce_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "3903": "minecraft:emerald_block", + "3904": "minecraft:quartz_slab[type=top,waterlogged=true]", + "3905": "minecraft:quartz_slab[type=top,waterlogged=false]", + "3906": "minecraft:quartz_slab[type=bottom,waterlogged=true]", + "3907": "minecraft:quartz_slab[type=bottom,waterlogged=false]", + "3908": "minecraft:quartz_slab[type=double,waterlogged=true]", + "3909": "minecraft:quartz_slab[type=double,waterlogged=false]", + "3910": "minecraft:warped_button[face=floor,facing=north,powered=true]", + "3911": "minecraft:warped_button[face=floor,facing=north,powered=false]", + "3912": "minecraft:warped_button[face=floor,facing=south,powered=true]", + "3913": "minecraft:warped_button[face=floor,facing=south,powered=false]", + "3914": "minecraft:warped_button[face=floor,facing=west,powered=true]", + "3915": "minecraft:warped_button[face=floor,facing=west,powered=false]", + "3916": "minecraft:warped_button[face=floor,facing=east,powered=true]", + "3917": "minecraft:warped_button[face=floor,facing=east,powered=false]", + "3918": "minecraft:warped_button[face=wall,facing=north,powered=true]", + "3919": "minecraft:warped_button[face=wall,facing=north,powered=false]", + "3920": "minecraft:warped_button[face=wall,facing=south,powered=true]", + "3921": "minecraft:warped_button[face=wall,facing=south,powered=false]", + "3922": "minecraft:warped_button[face=wall,facing=west,powered=true]", + "3923": "minecraft:warped_button[face=wall,facing=west,powered=false]", + "3924": "minecraft:warped_button[face=wall,facing=east,powered=true]", + "3925": "minecraft:warped_button[face=wall,facing=east,powered=false]", + "3926": "minecraft:warped_button[face=ceiling,facing=north,powered=true]", + "3927": "minecraft:warped_button[face=ceiling,facing=north,powered=false]", + "3928": "minecraft:warped_button[face=ceiling,facing=south,powered=true]", + "3929": "minecraft:warped_button[face=ceiling,facing=south,powered=false]", + "3930": "minecraft:warped_button[face=ceiling,facing=west,powered=true]", + "3931": "minecraft:warped_button[face=ceiling,facing=west,powered=false]", + "3932": "minecraft:warped_button[face=ceiling,facing=east,powered=true]", + "3933": "minecraft:warped_button[face=ceiling,facing=east,powered=false]", + "3934": "minecraft:pumpkin", + "3935": "minecraft:jungle_slab[type=top,waterlogged=true]", + "3936": "minecraft:jungle_slab[type=top,waterlogged=false]", + "3937": "minecraft:jungle_slab[type=bottom,waterlogged=true]", + "3938": "minecraft:jungle_slab[type=bottom,waterlogged=false]", + "3939": "minecraft:jungle_slab[type=double,waterlogged=true]", + "3940": "minecraft:jungle_slab[type=double,waterlogged=false]", + "3941": "minecraft:birch_slab[type=top,waterlogged=true]", + "3942": "minecraft:birch_slab[type=top,waterlogged=false]", + "3943": "minecraft:birch_slab[type=bottom,waterlogged=true]", + "3944": "minecraft:birch_slab[type=bottom,waterlogged=false]", + "3945": "minecraft:birch_slab[type=double,waterlogged=true]", + "3946": "minecraft:birch_slab[type=double,waterlogged=false]", + "3947": "minecraft:jack_o_lantern[facing=north]", + "3948": "minecraft:jack_o_lantern[facing=south]", + "3949": "minecraft:jack_o_lantern[facing=west]", + "3950": "minecraft:jack_o_lantern[facing=east]", + "3951": "minecraft:dark_prismarine_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "3952": "minecraft:dark_prismarine_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "3953": "minecraft:dark_prismarine_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "3954": "minecraft:dark_prismarine_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "3955": "minecraft:dark_prismarine_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "3956": "minecraft:dark_prismarine_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "3957": "minecraft:dark_prismarine_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "3958": "minecraft:dark_prismarine_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "3959": "minecraft:dark_prismarine_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "3960": "minecraft:dark_prismarine_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "3961": "minecraft:dark_prismarine_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "3962": "minecraft:dark_prismarine_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "3963": "minecraft:dark_prismarine_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "3964": "minecraft:dark_prismarine_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "3965": "minecraft:dark_prismarine_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "3966": "minecraft:dark_prismarine_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "3967": "minecraft:dark_prismarine_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "3968": "minecraft:dark_prismarine_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "3969": "minecraft:dark_prismarine_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "3970": "minecraft:dark_prismarine_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "3971": "minecraft:dark_prismarine_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "3972": "minecraft:dark_prismarine_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "3973": "minecraft:dark_prismarine_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "3974": "minecraft:dark_prismarine_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "3975": "minecraft:dark_prismarine_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "3976": "minecraft:dark_prismarine_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "3977": "minecraft:dark_prismarine_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "3978": "minecraft:dark_prismarine_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "3979": "minecraft:dark_prismarine_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "3980": "minecraft:dark_prismarine_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "3981": "minecraft:dark_prismarine_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "3982": "minecraft:dark_prismarine_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "3983": "minecraft:dark_prismarine_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "3984": "minecraft:dark_prismarine_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "3985": "minecraft:dark_prismarine_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "3986": "minecraft:dark_prismarine_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "3987": "minecraft:dark_prismarine_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "3988": "minecraft:dark_prismarine_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "3989": "minecraft:dark_prismarine_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "3990": "minecraft:dark_prismarine_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "3991": "minecraft:dark_prismarine_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "3992": "minecraft:dark_prismarine_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "3993": "minecraft:dark_prismarine_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "3994": "minecraft:dark_prismarine_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "3995": "minecraft:dark_prismarine_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "3996": "minecraft:dark_prismarine_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "3997": "minecraft:dark_prismarine_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "3998": "minecraft:dark_prismarine_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "3999": "minecraft:dark_prismarine_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "4000": "minecraft:dark_prismarine_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "4001": "minecraft:dark_prismarine_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "4002": "minecraft:dark_prismarine_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "4003": "minecraft:dark_prismarine_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "4004": "minecraft:dark_prismarine_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "4005": "minecraft:dark_prismarine_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "4006": "minecraft:dark_prismarine_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "4007": "minecraft:dark_prismarine_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "4008": "minecraft:dark_prismarine_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "4009": "minecraft:dark_prismarine_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "4010": "minecraft:dark_prismarine_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "4011": "minecraft:dark_prismarine_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "4012": "minecraft:dark_prismarine_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "4013": "minecraft:dark_prismarine_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "4014": "minecraft:dark_prismarine_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "4015": "minecraft:dark_prismarine_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "4016": "minecraft:dark_prismarine_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "4017": "minecraft:dark_prismarine_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "4018": "minecraft:dark_prismarine_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "4019": "minecraft:dark_prismarine_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "4020": "minecraft:dark_prismarine_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "4021": "minecraft:dark_prismarine_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "4022": "minecraft:dark_prismarine_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "4023": "minecraft:dark_prismarine_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "4024": "minecraft:dark_prismarine_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "4025": "minecraft:dark_prismarine_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "4026": "minecraft:dark_prismarine_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "4027": "minecraft:dark_prismarine_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "4028": "minecraft:dark_prismarine_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "4029": "minecraft:dark_prismarine_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "4030": "minecraft:dark_prismarine_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "4031": "minecraft:red_sandstone_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "4032": "minecraft:red_sandstone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "4033": "minecraft:red_sandstone_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "4034": "minecraft:red_sandstone_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "4035": "minecraft:red_sandstone_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "4036": "minecraft:red_sandstone_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "4037": "minecraft:red_sandstone_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "4038": "minecraft:red_sandstone_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "4039": "minecraft:red_sandstone_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "4040": "minecraft:red_sandstone_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "4041": "minecraft:red_sandstone_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "4042": "minecraft:red_sandstone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "4043": "minecraft:red_sandstone_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "4044": "minecraft:red_sandstone_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "4045": "minecraft:red_sandstone_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "4046": "minecraft:red_sandstone_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "4047": "minecraft:red_sandstone_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "4048": "minecraft:red_sandstone_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "4049": "minecraft:red_sandstone_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "4050": "minecraft:red_sandstone_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "4051": "minecraft:red_sandstone_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "4052": "minecraft:red_sandstone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "4053": "minecraft:red_sandstone_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "4054": "minecraft:red_sandstone_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "4055": "minecraft:red_sandstone_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "4056": "minecraft:red_sandstone_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "4057": "minecraft:red_sandstone_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "4058": "minecraft:red_sandstone_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "4059": "minecraft:red_sandstone_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "4060": "minecraft:red_sandstone_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "4061": "minecraft:red_sandstone_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "4062": "minecraft:red_sandstone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "4063": "minecraft:red_sandstone_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "4064": "minecraft:red_sandstone_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "4065": "minecraft:red_sandstone_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "4066": "minecraft:red_sandstone_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "4067": "minecraft:red_sandstone_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "4068": "minecraft:red_sandstone_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "4069": "minecraft:red_sandstone_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "4070": "minecraft:red_sandstone_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "4071": "minecraft:red_sandstone_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "4072": "minecraft:red_sandstone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "4073": "minecraft:red_sandstone_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "4074": "minecraft:red_sandstone_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "4075": "minecraft:red_sandstone_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "4076": "minecraft:red_sandstone_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "4077": "minecraft:red_sandstone_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "4078": "minecraft:red_sandstone_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "4079": "minecraft:red_sandstone_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "4080": "minecraft:red_sandstone_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "4081": "minecraft:red_sandstone_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "4082": "minecraft:red_sandstone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "4083": "minecraft:red_sandstone_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "4084": "minecraft:red_sandstone_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "4085": "minecraft:red_sandstone_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "4086": "minecraft:red_sandstone_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "4087": "minecraft:red_sandstone_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "4088": "minecraft:red_sandstone_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "4089": "minecraft:red_sandstone_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "4090": "minecraft:red_sandstone_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "4091": "minecraft:red_sandstone_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "4092": "minecraft:red_sandstone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "4093": "minecraft:red_sandstone_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "4094": "minecraft:red_sandstone_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "4095": "minecraft:red_sandstone_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "4096": "minecraft:red_sandstone_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "4097": "minecraft:red_sandstone_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "4098": "minecraft:red_sandstone_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "4099": "minecraft:red_sandstone_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "4100": "minecraft:red_sandstone_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "4101": "minecraft:red_sandstone_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "4102": "minecraft:red_sandstone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "4103": "minecraft:red_sandstone_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "4104": "minecraft:red_sandstone_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "4105": "minecraft:red_sandstone_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "4106": "minecraft:red_sandstone_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "4107": "minecraft:red_sandstone_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "4108": "minecraft:red_sandstone_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "4109": "minecraft:red_sandstone_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "4110": "minecraft:red_sandstone_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "4111": "minecraft:sea_lantern", + "4112": "minecraft:stripped_birch_wood[axis=x]", + "4113": "minecraft:stripped_birch_wood[axis=y]", + "4114": "minecraft:stripped_birch_wood[axis=z]", + "4115": "minecraft:purple_glazed_terracotta[facing=north]", + "4116": "minecraft:purple_glazed_terracotta[facing=south]", + "4117": "minecraft:purple_glazed_terracotta[facing=west]", + "4118": "minecraft:purple_glazed_terracotta[facing=east]", + "4119": "minecraft:smooth_stone", + "4120": "minecraft:cut_red_sandstone", + "4121": "minecraft:purpur_slab[type=top,waterlogged=true]", + "4122": "minecraft:purpur_slab[type=top,waterlogged=false]", + "4123": "minecraft:purpur_slab[type=bottom,waterlogged=true]", + "4124": "minecraft:purpur_slab[type=bottom,waterlogged=false]", + "4125": "minecraft:purpur_slab[type=double,waterlogged=true]", + "4126": "minecraft:purpur_slab[type=double,waterlogged=false]", + "4127": "minecraft:crimson_button[face=floor,facing=north,powered=true]", + "4128": "minecraft:crimson_button[face=floor,facing=north,powered=false]", + "4129": "minecraft:crimson_button[face=floor,facing=south,powered=true]", + "4130": "minecraft:crimson_button[face=floor,facing=south,powered=false]", + "4131": "minecraft:crimson_button[face=floor,facing=west,powered=true]", + "4132": "minecraft:crimson_button[face=floor,facing=west,powered=false]", + "4133": "minecraft:crimson_button[face=floor,facing=east,powered=true]", + "4134": "minecraft:crimson_button[face=floor,facing=east,powered=false]", + "4135": "minecraft:crimson_button[face=wall,facing=north,powered=true]", + "4136": "minecraft:crimson_button[face=wall,facing=north,powered=false]", + "4137": "minecraft:crimson_button[face=wall,facing=south,powered=true]", + "4138": "minecraft:crimson_button[face=wall,facing=south,powered=false]", + "4139": "minecraft:crimson_button[face=wall,facing=west,powered=true]", + "4140": "minecraft:crimson_button[face=wall,facing=west,powered=false]", + "4141": "minecraft:crimson_button[face=wall,facing=east,powered=true]", + "4142": "minecraft:crimson_button[face=wall,facing=east,powered=false]", + "4143": "minecraft:crimson_button[face=ceiling,facing=north,powered=true]", + "4144": "minecraft:crimson_button[face=ceiling,facing=north,powered=false]", + "4145": "minecraft:crimson_button[face=ceiling,facing=south,powered=true]", + "4146": "minecraft:crimson_button[face=ceiling,facing=south,powered=false]", + "4147": "minecraft:crimson_button[face=ceiling,facing=west,powered=true]", + "4148": "minecraft:crimson_button[face=ceiling,facing=west,powered=false]", + "4149": "minecraft:crimson_button[face=ceiling,facing=east,powered=true]", + "4150": "minecraft:crimson_button[face=ceiling,facing=east,powered=false]", + "4151": "minecraft:warped_fence_gate[facing=north,in_wall=true,open=true,powered=true]", + "4152": "minecraft:warped_fence_gate[facing=north,in_wall=true,open=true,powered=false]", + "4153": "minecraft:warped_fence_gate[facing=north,in_wall=true,open=false,powered=true]", + "4154": "minecraft:warped_fence_gate[facing=north,in_wall=true,open=false,powered=false]", + "4155": "minecraft:warped_fence_gate[facing=north,in_wall=false,open=true,powered=true]", + "4156": "minecraft:warped_fence_gate[facing=north,in_wall=false,open=true,powered=false]", + "4157": "minecraft:warped_fence_gate[facing=north,in_wall=false,open=false,powered=true]", + "4158": "minecraft:warped_fence_gate[facing=north,in_wall=false,open=false,powered=false]", + "4159": "minecraft:warped_fence_gate[facing=south,in_wall=true,open=true,powered=true]", + "4160": "minecraft:warped_fence_gate[facing=south,in_wall=true,open=true,powered=false]", + "4161": "minecraft:warped_fence_gate[facing=south,in_wall=true,open=false,powered=true]", + "4162": "minecraft:warped_fence_gate[facing=south,in_wall=true,open=false,powered=false]", + "4163": "minecraft:warped_fence_gate[facing=south,in_wall=false,open=true,powered=true]", + "4164": "minecraft:warped_fence_gate[facing=south,in_wall=false,open=true,powered=false]", + "4165": "minecraft:warped_fence_gate[facing=south,in_wall=false,open=false,powered=true]", + "4166": "minecraft:warped_fence_gate[facing=south,in_wall=false,open=false,powered=false]", + "4167": "minecraft:warped_fence_gate[facing=west,in_wall=true,open=true,powered=true]", + "4168": "minecraft:warped_fence_gate[facing=west,in_wall=true,open=true,powered=false]", + "4169": "minecraft:warped_fence_gate[facing=west,in_wall=true,open=false,powered=true]", + "4170": "minecraft:warped_fence_gate[facing=west,in_wall=true,open=false,powered=false]", + "4171": "minecraft:warped_fence_gate[facing=west,in_wall=false,open=true,powered=true]", + "4172": "minecraft:warped_fence_gate[facing=west,in_wall=false,open=true,powered=false]", + "4173": "minecraft:warped_fence_gate[facing=west,in_wall=false,open=false,powered=true]", + "4174": "minecraft:warped_fence_gate[facing=west,in_wall=false,open=false,powered=false]", + "4175": "minecraft:warped_fence_gate[facing=east,in_wall=true,open=true,powered=true]", + "4176": "minecraft:warped_fence_gate[facing=east,in_wall=true,open=true,powered=false]", + "4177": "minecraft:warped_fence_gate[facing=east,in_wall=true,open=false,powered=true]", + "4178": "minecraft:warped_fence_gate[facing=east,in_wall=true,open=false,powered=false]", + "4179": "minecraft:warped_fence_gate[facing=east,in_wall=false,open=true,powered=true]", + "4180": "minecraft:warped_fence_gate[facing=east,in_wall=false,open=true,powered=false]", + "4181": "minecraft:warped_fence_gate[facing=east,in_wall=false,open=false,powered=true]", + "4182": "minecraft:warped_fence_gate[facing=east,in_wall=false,open=false,powered=false]", + "4183": "minecraft:cake[bites=0]", + "4184": "minecraft:cake[bites=1]", + "4185": "minecraft:cake[bites=2]", + "4186": "minecraft:cake[bites=3]", + "4187": "minecraft:cake[bites=4]", + "4188": "minecraft:cake[bites=5]", + "4189": "minecraft:cake[bites=6]", + "4190": "minecraft:nether_brick_slab[type=top,waterlogged=true]", + "4191": "minecraft:nether_brick_slab[type=top,waterlogged=false]", + "4192": "minecraft:nether_brick_slab[type=bottom,waterlogged=true]", + "4193": "minecraft:nether_brick_slab[type=bottom,waterlogged=false]", + "4194": "minecraft:nether_brick_slab[type=double,waterlogged=true]", + "4195": "minecraft:nether_brick_slab[type=double,waterlogged=false]", + "4196": "minecraft:crimson_fence_gate[facing=north,in_wall=true,open=true,powered=true]", + "4197": "minecraft:crimson_fence_gate[facing=north,in_wall=true,open=true,powered=false]", + "4198": "minecraft:crimson_fence_gate[facing=north,in_wall=true,open=false,powered=true]", + "4199": "minecraft:crimson_fence_gate[facing=north,in_wall=true,open=false,powered=false]", + "4200": "minecraft:crimson_fence_gate[facing=north,in_wall=false,open=true,powered=true]", + "4201": "minecraft:crimson_fence_gate[facing=north,in_wall=false,open=true,powered=false]", + "4202": "minecraft:crimson_fence_gate[facing=north,in_wall=false,open=false,powered=true]", + "4203": "minecraft:crimson_fence_gate[facing=north,in_wall=false,open=false,powered=false]", + "4204": "minecraft:crimson_fence_gate[facing=south,in_wall=true,open=true,powered=true]", + "4205": "minecraft:crimson_fence_gate[facing=south,in_wall=true,open=true,powered=false]", + "4206": "minecraft:crimson_fence_gate[facing=south,in_wall=true,open=false,powered=true]", + "4207": "minecraft:crimson_fence_gate[facing=south,in_wall=true,open=false,powered=false]", + "4208": "minecraft:crimson_fence_gate[facing=south,in_wall=false,open=true,powered=true]", + "4209": "minecraft:crimson_fence_gate[facing=south,in_wall=false,open=true,powered=false]", + "4210": "minecraft:crimson_fence_gate[facing=south,in_wall=false,open=false,powered=true]", + "4211": "minecraft:crimson_fence_gate[facing=south,in_wall=false,open=false,powered=false]", + "4212": "minecraft:crimson_fence_gate[facing=west,in_wall=true,open=true,powered=true]", + "4213": "minecraft:crimson_fence_gate[facing=west,in_wall=true,open=true,powered=false]", + "4214": "minecraft:crimson_fence_gate[facing=west,in_wall=true,open=false,powered=true]", + "4215": "minecraft:crimson_fence_gate[facing=west,in_wall=true,open=false,powered=false]", + "4216": "minecraft:crimson_fence_gate[facing=west,in_wall=false,open=true,powered=true]", + "4217": "minecraft:crimson_fence_gate[facing=west,in_wall=false,open=true,powered=false]", + "4218": "minecraft:crimson_fence_gate[facing=west,in_wall=false,open=false,powered=true]", + "4219": "minecraft:crimson_fence_gate[facing=west,in_wall=false,open=false,powered=false]", + "4220": "minecraft:crimson_fence_gate[facing=east,in_wall=true,open=true,powered=true]", + "4221": "minecraft:crimson_fence_gate[facing=east,in_wall=true,open=true,powered=false]", + "4222": "minecraft:crimson_fence_gate[facing=east,in_wall=true,open=false,powered=true]", + "4223": "minecraft:crimson_fence_gate[facing=east,in_wall=true,open=false,powered=false]", + "4224": "minecraft:crimson_fence_gate[facing=east,in_wall=false,open=true,powered=true]", + "4225": "minecraft:crimson_fence_gate[facing=east,in_wall=false,open=true,powered=false]", + "4226": "minecraft:crimson_fence_gate[facing=east,in_wall=false,open=false,powered=true]", + "4227": "minecraft:crimson_fence_gate[facing=east,in_wall=false,open=false,powered=false]", + "4228": "minecraft:azure_bluet", + "4229": "minecraft:red_tulip", + "4230": "minecraft:pink_tulip", + "4231": "minecraft:magenta_stained_glass", + "4232": "minecraft:orange_stained_glass", + "4233": "minecraft:potted_crimson_fungus", + "4234": "minecraft:redstone_block", + "4235": "minecraft:lime_glazed_terracotta[facing=north]", + "4236": "minecraft:lime_glazed_terracotta[facing=south]", + "4237": "minecraft:lime_glazed_terracotta[facing=west]", + "4238": "minecraft:lime_glazed_terracotta[facing=east]", + "4239": "minecraft:oxeye_daisy", + "4240": "minecraft:dead_bubble_coral_block", + "4241": "minecraft:dropper[facing=north,triggered=true]", + "4242": "minecraft:dropper[facing=north,triggered=false]", + "4243": "minecraft:dropper[facing=east,triggered=true]", + "4244": "minecraft:dropper[facing=east,triggered=false]", + "4245": "minecraft:dropper[facing=south,triggered=true]", + "4246": "minecraft:dropper[facing=south,triggered=false]", + "4247": "minecraft:dropper[facing=west,triggered=true]", + "4248": "minecraft:dropper[facing=west,triggered=false]", + "4249": "minecraft:dropper[facing=up,triggered=true]", + "4250": "minecraft:dropper[facing=up,triggered=false]", + "4251": "minecraft:dropper[facing=down,triggered=true]", + "4252": "minecraft:dropper[facing=down,triggered=false]", + "4253": "minecraft:green_glazed_terracotta[facing=north]", + "4254": "minecraft:green_glazed_terracotta[facing=south]", + "4255": "minecraft:green_glazed_terracotta[facing=west]", + "4256": "minecraft:green_glazed_terracotta[facing=east]", + "4257": "minecraft:dark_prismarine", + "4258": "minecraft:lime_shulker_box[facing=north]", + "4259": "minecraft:lime_shulker_box[facing=east]", + "4260": "minecraft:lime_shulker_box[facing=south]", + "4261": "minecraft:lime_shulker_box[facing=west]", + "4262": "minecraft:lime_shulker_box[facing=up]", + "4263": "minecraft:lime_shulker_box[facing=down]", + "4264": "minecraft:dandelion", + "4265": "minecraft:hay_block[axis=x]", + "4266": "minecraft:hay_block[axis=y]", + "4267": "minecraft:hay_block[axis=z]", + "4268": "minecraft:fire_coral[waterlogged=true]", + "4269": "minecraft:fire_coral[waterlogged=false]", + "4270": "minecraft:anvil[facing=north]", + "4271": "minecraft:anvil[facing=south]", + "4272": "minecraft:anvil[facing=west]", + "4273": "minecraft:anvil[facing=east]", + "4274": "minecraft:beehive[facing=north,honey_level=0]", + "4275": "minecraft:beehive[facing=north,honey_level=1]", + "4276": "minecraft:beehive[facing=north,honey_level=2]", + "4277": "minecraft:beehive[facing=north,honey_level=3]", + "4278": "minecraft:beehive[facing=north,honey_level=4]", + "4279": "minecraft:beehive[facing=north,honey_level=5]", + "4280": "minecraft:beehive[facing=south,honey_level=0]", + "4281": "minecraft:beehive[facing=south,honey_level=1]", + "4282": "minecraft:beehive[facing=south,honey_level=2]", + "4283": "minecraft:beehive[facing=south,honey_level=3]", + "4284": "minecraft:beehive[facing=south,honey_level=4]", + "4285": "minecraft:beehive[facing=south,honey_level=5]", + "4286": "minecraft:beehive[facing=west,honey_level=0]", + "4287": "minecraft:beehive[facing=west,honey_level=1]", + "4288": "minecraft:beehive[facing=west,honey_level=2]", + "4289": "minecraft:beehive[facing=west,honey_level=3]", + "4290": "minecraft:beehive[facing=west,honey_level=4]", + "4291": "minecraft:beehive[facing=west,honey_level=5]", + "4292": "minecraft:beehive[facing=east,honey_level=0]", + "4293": "minecraft:beehive[facing=east,honey_level=1]", + "4294": "minecraft:beehive[facing=east,honey_level=2]", + "4295": "minecraft:beehive[facing=east,honey_level=3]", + "4296": "minecraft:beehive[facing=east,honey_level=4]", + "4297": "minecraft:beehive[facing=east,honey_level=5]", + "4298": "minecraft:brain_coral_fan[waterlogged=true]", + "4299": "minecraft:brain_coral_fan[waterlogged=false]", + "4300": "minecraft:bricks", + "4301": "minecraft:emerald_ore", + "4302": "minecraft:black_carpet", + "4303": "minecraft:sandstone", + "4304": "minecraft:mossy_cobblestone_slab[type=top,waterlogged=true]", + "4305": "minecraft:mossy_cobblestone_slab[type=top,waterlogged=false]", + "4306": "minecraft:mossy_cobblestone_slab[type=bottom,waterlogged=true]", + "4307": "minecraft:mossy_cobblestone_slab[type=bottom,waterlogged=false]", + "4308": "minecraft:mossy_cobblestone_slab[type=double,waterlogged=true]", + "4309": "minecraft:mossy_cobblestone_slab[type=double,waterlogged=false]", + "4310": "minecraft:command_block[conditional=true,facing=north]", + "4311": "minecraft:command_block[conditional=true,facing=east]", + "4312": "minecraft:command_block[conditional=true,facing=south]", + "4313": "minecraft:command_block[conditional=true,facing=west]", + "4314": "minecraft:command_block[conditional=true,facing=up]", + "4315": "minecraft:command_block[conditional=true,facing=down]", + "4316": "minecraft:command_block[conditional=false,facing=north]", + "4317": "minecraft:command_block[conditional=false,facing=east]", + "4318": "minecraft:command_block[conditional=false,facing=south]", + "4319": "minecraft:command_block[conditional=false,facing=west]", + "4320": "minecraft:command_block[conditional=false,facing=up]", + "4321": "minecraft:command_block[conditional=false,facing=down]", + "4322": "minecraft:snow[layers=1]", + "4323": "minecraft:snow[layers=2]", + "4324": "minecraft:snow[layers=3]", + "4325": "minecraft:snow[layers=4]", + "4326": "minecraft:snow[layers=5]", + "4327": "minecraft:snow[layers=6]", + "4328": "minecraft:snow[layers=7]", + "4329": "minecraft:snow[layers=8]", + "4330": "minecraft:zombie_head[rotation=0]", + "4331": "minecraft:zombie_head[rotation=1]", + "4332": "minecraft:zombie_head[rotation=2]", + "4333": "minecraft:zombie_head[rotation=3]", + "4334": "minecraft:zombie_head[rotation=4]", + "4335": "minecraft:zombie_head[rotation=5]", + "4336": "minecraft:zombie_head[rotation=6]", + "4337": "minecraft:zombie_head[rotation=7]", + "4338": "minecraft:zombie_head[rotation=8]", + "4339": "minecraft:zombie_head[rotation=9]", + "4340": "minecraft:zombie_head[rotation=10]", + "4341": "minecraft:zombie_head[rotation=11]", + "4342": "minecraft:zombie_head[rotation=12]", + "4343": "minecraft:zombie_head[rotation=13]", + "4344": "minecraft:zombie_head[rotation=14]", + "4345": "minecraft:zombie_head[rotation=15]", + "4346": "minecraft:diorite_slab[type=top,waterlogged=true]", + "4347": "minecraft:diorite_slab[type=top,waterlogged=false]", + "4348": "minecraft:diorite_slab[type=bottom,waterlogged=true]", + "4349": "minecraft:diorite_slab[type=bottom,waterlogged=false]", + "4350": "minecraft:diorite_slab[type=double,waterlogged=true]", + "4351": "minecraft:diorite_slab[type=double,waterlogged=false]", + "4352": "minecraft:soul_fire", + "4353": "minecraft:green_shulker_box[facing=north]", + "4354": "minecraft:green_shulker_box[facing=east]", + "4355": "minecraft:green_shulker_box[facing=south]", + "4356": "minecraft:green_shulker_box[facing=west]", + "4357": "minecraft:green_shulker_box[facing=up]", + "4358": "minecraft:green_shulker_box[facing=down]", + "4359": "minecraft:gray_carpet", + "4360": "minecraft:acacia_leaves[distance=1,persistent=true]", + "4361": "minecraft:acacia_leaves[distance=1,persistent=false]", + "4362": "minecraft:acacia_leaves[distance=2,persistent=true]", + "4363": "minecraft:acacia_leaves[distance=2,persistent=false]", + "4364": "minecraft:acacia_leaves[distance=3,persistent=true]", + "4365": "minecraft:acacia_leaves[distance=3,persistent=false]", + "4366": "minecraft:acacia_leaves[distance=4,persistent=true]", + "4367": "minecraft:acacia_leaves[distance=4,persistent=false]", + "4368": "minecraft:acacia_leaves[distance=5,persistent=true]", + "4369": "minecraft:acacia_leaves[distance=5,persistent=false]", + "4370": "minecraft:acacia_leaves[distance=6,persistent=true]", + "4371": "minecraft:acacia_leaves[distance=6,persistent=false]", + "4372": "minecraft:acacia_leaves[distance=7,persistent=true]", + "4373": "minecraft:acacia_leaves[distance=7,persistent=false]", + "4374": "minecraft:smoker[facing=north,lit=true]", + "4375": "minecraft:smoker[facing=north,lit=false]", + "4376": "minecraft:smoker[facing=south,lit=true]", + "4377": "minecraft:smoker[facing=south,lit=false]", + "4378": "minecraft:smoker[facing=west,lit=true]", + "4379": "minecraft:smoker[facing=west,lit=false]", + "4380": "minecraft:smoker[facing=east,lit=true]", + "4381": "minecraft:smoker[facing=east,lit=false]", + "4382": "minecraft:grindstone[face=floor,facing=north]", + "4383": "minecraft:grindstone[face=floor,facing=south]", + "4384": "minecraft:grindstone[face=floor,facing=west]", + "4385": "minecraft:grindstone[face=floor,facing=east]", + "4386": "minecraft:grindstone[face=wall,facing=north]", + "4387": "minecraft:grindstone[face=wall,facing=south]", + "4388": "minecraft:grindstone[face=wall,facing=west]", + "4389": "minecraft:grindstone[face=wall,facing=east]", + "4390": "minecraft:grindstone[face=ceiling,facing=north]", + "4391": "minecraft:grindstone[face=ceiling,facing=south]", + "4392": "minecraft:grindstone[face=ceiling,facing=west]", + "4393": "minecraft:grindstone[face=ceiling,facing=east]", + "4394": "minecraft:granite", + "4395": "minecraft:andesite", + "4396": "minecraft:diorite_wall[east=none,north=none,south=none,up=true,waterlogged=true,west=none]", + "4397": "minecraft:diorite_wall[east=none,north=none,south=none,up=true,waterlogged=true,west=low]", + "4398": "minecraft:diorite_wall[east=none,north=none,south=none,up=true,waterlogged=true,west=tall]", + "4399": "minecraft:diorite_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=none]", + "4400": "minecraft:diorite_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=low]", + "4401": "minecraft:diorite_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=tall]", + "4402": "minecraft:diorite_wall[east=none,north=none,south=none,up=false,waterlogged=true,west=none]", + "4403": "minecraft:diorite_wall[east=none,north=none,south=none,up=false,waterlogged=true,west=low]", + "4404": "minecraft:diorite_wall[east=none,north=none,south=none,up=false,waterlogged=true,west=tall]", + "4405": "minecraft:diorite_wall[east=none,north=none,south=none,up=false,waterlogged=false,west=none]", + "4406": "minecraft:diorite_wall[east=none,north=none,south=none,up=false,waterlogged=false,west=low]", + "4407": "minecraft:diorite_wall[east=none,north=none,south=none,up=false,waterlogged=false,west=tall]", + "4408": "minecraft:diorite_wall[east=none,north=none,south=low,up=true,waterlogged=true,west=none]", + "4409": "minecraft:diorite_wall[east=none,north=none,south=low,up=true,waterlogged=true,west=low]", + "4410": "minecraft:diorite_wall[east=none,north=none,south=low,up=true,waterlogged=true,west=tall]", + "4411": "minecraft:diorite_wall[east=none,north=none,south=low,up=true,waterlogged=false,west=none]", + "4412": "minecraft:diorite_wall[east=none,north=none,south=low,up=true,waterlogged=false,west=low]", + "4413": "minecraft:diorite_wall[east=none,north=none,south=low,up=true,waterlogged=false,west=tall]", + "4414": "minecraft:diorite_wall[east=none,north=none,south=low,up=false,waterlogged=true,west=none]", + "4415": "minecraft:diorite_wall[east=none,north=none,south=low,up=false,waterlogged=true,west=low]", + "4416": "minecraft:diorite_wall[east=none,north=none,south=low,up=false,waterlogged=true,west=tall]", + "4417": "minecraft:diorite_wall[east=none,north=none,south=low,up=false,waterlogged=false,west=none]", + "4418": "minecraft:diorite_wall[east=none,north=none,south=low,up=false,waterlogged=false,west=low]", + "4419": "minecraft:diorite_wall[east=none,north=none,south=low,up=false,waterlogged=false,west=tall]", + "4420": "minecraft:diorite_wall[east=none,north=none,south=tall,up=true,waterlogged=true,west=none]", + "4421": "minecraft:diorite_wall[east=none,north=none,south=tall,up=true,waterlogged=true,west=low]", + "4422": "minecraft:diorite_wall[east=none,north=none,south=tall,up=true,waterlogged=true,west=tall]", + "4423": "minecraft:diorite_wall[east=none,north=none,south=tall,up=true,waterlogged=false,west=none]", + "4424": "minecraft:diorite_wall[east=none,north=none,south=tall,up=true,waterlogged=false,west=low]", + "4425": "minecraft:diorite_wall[east=none,north=none,south=tall,up=true,waterlogged=false,west=tall]", + "4426": "minecraft:diorite_wall[east=none,north=none,south=tall,up=false,waterlogged=true,west=none]", + "4427": "minecraft:diorite_wall[east=none,north=none,south=tall,up=false,waterlogged=true,west=low]", + "4428": "minecraft:diorite_wall[east=none,north=none,south=tall,up=false,waterlogged=true,west=tall]", + "4429": "minecraft:diorite_wall[east=none,north=none,south=tall,up=false,waterlogged=false,west=none]", + "4430": "minecraft:diorite_wall[east=none,north=none,south=tall,up=false,waterlogged=false,west=low]", + "4431": "minecraft:diorite_wall[east=none,north=none,south=tall,up=false,waterlogged=false,west=tall]", + "4432": "minecraft:diorite_wall[east=none,north=low,south=none,up=true,waterlogged=true,west=none]", + "4433": "minecraft:diorite_wall[east=none,north=low,south=none,up=true,waterlogged=true,west=low]", + "4434": "minecraft:diorite_wall[east=none,north=low,south=none,up=true,waterlogged=true,west=tall]", + "4435": "minecraft:diorite_wall[east=none,north=low,south=none,up=true,waterlogged=false,west=none]", + "4436": "minecraft:diorite_wall[east=none,north=low,south=none,up=true,waterlogged=false,west=low]", + "4437": "minecraft:diorite_wall[east=none,north=low,south=none,up=true,waterlogged=false,west=tall]", + "4438": "minecraft:diorite_wall[east=none,north=low,south=none,up=false,waterlogged=true,west=none]", + "4439": "minecraft:diorite_wall[east=none,north=low,south=none,up=false,waterlogged=true,west=low]", + "4440": "minecraft:diorite_wall[east=none,north=low,south=none,up=false,waterlogged=true,west=tall]", + "4441": "minecraft:diorite_wall[east=none,north=low,south=none,up=false,waterlogged=false,west=none]", + "4442": "minecraft:diorite_wall[east=none,north=low,south=none,up=false,waterlogged=false,west=low]", + "4443": "minecraft:diorite_wall[east=none,north=low,south=none,up=false,waterlogged=false,west=tall]", + "4444": "minecraft:diorite_wall[east=none,north=low,south=low,up=true,waterlogged=true,west=none]", + "4445": "minecraft:diorite_wall[east=none,north=low,south=low,up=true,waterlogged=true,west=low]", + "4446": "minecraft:diorite_wall[east=none,north=low,south=low,up=true,waterlogged=true,west=tall]", + "4447": "minecraft:diorite_wall[east=none,north=low,south=low,up=true,waterlogged=false,west=none]", + "4448": "minecraft:diorite_wall[east=none,north=low,south=low,up=true,waterlogged=false,west=low]", + "4449": "minecraft:diorite_wall[east=none,north=low,south=low,up=true,waterlogged=false,west=tall]", + "4450": "minecraft:diorite_wall[east=none,north=low,south=low,up=false,waterlogged=true,west=none]", + "4451": "minecraft:diorite_wall[east=none,north=low,south=low,up=false,waterlogged=true,west=low]", + "4452": "minecraft:diorite_wall[east=none,north=low,south=low,up=false,waterlogged=true,west=tall]", + "4453": "minecraft:diorite_wall[east=none,north=low,south=low,up=false,waterlogged=false,west=none]", + "4454": "minecraft:diorite_wall[east=none,north=low,south=low,up=false,waterlogged=false,west=low]", + "4455": "minecraft:diorite_wall[east=none,north=low,south=low,up=false,waterlogged=false,west=tall]", + "4456": "minecraft:diorite_wall[east=none,north=low,south=tall,up=true,waterlogged=true,west=none]", + "4457": "minecraft:diorite_wall[east=none,north=low,south=tall,up=true,waterlogged=true,west=low]", + "4458": "minecraft:diorite_wall[east=none,north=low,south=tall,up=true,waterlogged=true,west=tall]", + "4459": "minecraft:diorite_wall[east=none,north=low,south=tall,up=true,waterlogged=false,west=none]", + "4460": "minecraft:diorite_wall[east=none,north=low,south=tall,up=true,waterlogged=false,west=low]", + "4461": "minecraft:diorite_wall[east=none,north=low,south=tall,up=true,waterlogged=false,west=tall]", + "4462": "minecraft:diorite_wall[east=none,north=low,south=tall,up=false,waterlogged=true,west=none]", + "4463": "minecraft:diorite_wall[east=none,north=low,south=tall,up=false,waterlogged=true,west=low]", + "4464": "minecraft:diorite_wall[east=none,north=low,south=tall,up=false,waterlogged=true,west=tall]", + "4465": "minecraft:diorite_wall[east=none,north=low,south=tall,up=false,waterlogged=false,west=none]", + "4466": "minecraft:diorite_wall[east=none,north=low,south=tall,up=false,waterlogged=false,west=low]", + "4467": "minecraft:diorite_wall[east=none,north=low,south=tall,up=false,waterlogged=false,west=tall]", + "4468": "minecraft:diorite_wall[east=none,north=tall,south=none,up=true,waterlogged=true,west=none]", + "4469": "minecraft:diorite_wall[east=none,north=tall,south=none,up=true,waterlogged=true,west=low]", + "4470": "minecraft:diorite_wall[east=none,north=tall,south=none,up=true,waterlogged=true,west=tall]", + "4471": "minecraft:diorite_wall[east=none,north=tall,south=none,up=true,waterlogged=false,west=none]", + "4472": "minecraft:diorite_wall[east=none,north=tall,south=none,up=true,waterlogged=false,west=low]", + "4473": "minecraft:diorite_wall[east=none,north=tall,south=none,up=true,waterlogged=false,west=tall]", + "4474": "minecraft:diorite_wall[east=none,north=tall,south=none,up=false,waterlogged=true,west=none]", + "4475": "minecraft:diorite_wall[east=none,north=tall,south=none,up=false,waterlogged=true,west=low]", + "4476": "minecraft:diorite_wall[east=none,north=tall,south=none,up=false,waterlogged=true,west=tall]", + "4477": "minecraft:diorite_wall[east=none,north=tall,south=none,up=false,waterlogged=false,west=none]", + "4478": "minecraft:diorite_wall[east=none,north=tall,south=none,up=false,waterlogged=false,west=low]", + "4479": "minecraft:diorite_wall[east=none,north=tall,south=none,up=false,waterlogged=false,west=tall]", + "4480": "minecraft:diorite_wall[east=none,north=tall,south=low,up=true,waterlogged=true,west=none]", + "4481": "minecraft:diorite_wall[east=none,north=tall,south=low,up=true,waterlogged=true,west=low]", + "4482": "minecraft:diorite_wall[east=none,north=tall,south=low,up=true,waterlogged=true,west=tall]", + "4483": "minecraft:diorite_wall[east=none,north=tall,south=low,up=true,waterlogged=false,west=none]", + "4484": "minecraft:diorite_wall[east=none,north=tall,south=low,up=true,waterlogged=false,west=low]", + "4485": "minecraft:diorite_wall[east=none,north=tall,south=low,up=true,waterlogged=false,west=tall]", + "4486": "minecraft:diorite_wall[east=none,north=tall,south=low,up=false,waterlogged=true,west=none]", + "4487": "minecraft:diorite_wall[east=none,north=tall,south=low,up=false,waterlogged=true,west=low]", + "4488": "minecraft:diorite_wall[east=none,north=tall,south=low,up=false,waterlogged=true,west=tall]", + "4489": "minecraft:diorite_wall[east=none,north=tall,south=low,up=false,waterlogged=false,west=none]", + "4490": "minecraft:diorite_wall[east=none,north=tall,south=low,up=false,waterlogged=false,west=low]", + "4491": "minecraft:diorite_wall[east=none,north=tall,south=low,up=false,waterlogged=false,west=tall]", + "4492": "minecraft:diorite_wall[east=none,north=tall,south=tall,up=true,waterlogged=true,west=none]", + "4493": "minecraft:diorite_wall[east=none,north=tall,south=tall,up=true,waterlogged=true,west=low]", + "4494": "minecraft:diorite_wall[east=none,north=tall,south=tall,up=true,waterlogged=true,west=tall]", + "4495": "minecraft:diorite_wall[east=none,north=tall,south=tall,up=true,waterlogged=false,west=none]", + "4496": "minecraft:diorite_wall[east=none,north=tall,south=tall,up=true,waterlogged=false,west=low]", + "4497": "minecraft:diorite_wall[east=none,north=tall,south=tall,up=true,waterlogged=false,west=tall]", + "4498": "minecraft:diorite_wall[east=none,north=tall,south=tall,up=false,waterlogged=true,west=none]", + "4499": "minecraft:diorite_wall[east=none,north=tall,south=tall,up=false,waterlogged=true,west=low]", + "4500": "minecraft:diorite_wall[east=none,north=tall,south=tall,up=false,waterlogged=true,west=tall]", + "4501": "minecraft:diorite_wall[east=none,north=tall,south=tall,up=false,waterlogged=false,west=none]", + "4502": "minecraft:diorite_wall[east=none,north=tall,south=tall,up=false,waterlogged=false,west=low]", + "4503": "minecraft:diorite_wall[east=none,north=tall,south=tall,up=false,waterlogged=false,west=tall]", + "4504": "minecraft:diorite_wall[east=low,north=none,south=none,up=true,waterlogged=true,west=none]", + "4505": "minecraft:diorite_wall[east=low,north=none,south=none,up=true,waterlogged=true,west=low]", + "4506": "minecraft:diorite_wall[east=low,north=none,south=none,up=true,waterlogged=true,west=tall]", + "4507": "minecraft:diorite_wall[east=low,north=none,south=none,up=true,waterlogged=false,west=none]", + "4508": "minecraft:diorite_wall[east=low,north=none,south=none,up=true,waterlogged=false,west=low]", + "4509": "minecraft:diorite_wall[east=low,north=none,south=none,up=true,waterlogged=false,west=tall]", + "4510": "minecraft:diorite_wall[east=low,north=none,south=none,up=false,waterlogged=true,west=none]", + "4511": "minecraft:diorite_wall[east=low,north=none,south=none,up=false,waterlogged=true,west=low]", + "4512": "minecraft:diorite_wall[east=low,north=none,south=none,up=false,waterlogged=true,west=tall]", + "4513": "minecraft:diorite_wall[east=low,north=none,south=none,up=false,waterlogged=false,west=none]", + "4514": "minecraft:diorite_wall[east=low,north=none,south=none,up=false,waterlogged=false,west=low]", + "4515": "minecraft:diorite_wall[east=low,north=none,south=none,up=false,waterlogged=false,west=tall]", + "4516": "minecraft:diorite_wall[east=low,north=none,south=low,up=true,waterlogged=true,west=none]", + "4517": "minecraft:diorite_wall[east=low,north=none,south=low,up=true,waterlogged=true,west=low]", + "4518": "minecraft:diorite_wall[east=low,north=none,south=low,up=true,waterlogged=true,west=tall]", + "4519": "minecraft:diorite_wall[east=low,north=none,south=low,up=true,waterlogged=false,west=none]", + "4520": "minecraft:diorite_wall[east=low,north=none,south=low,up=true,waterlogged=false,west=low]", + "4521": "minecraft:diorite_wall[east=low,north=none,south=low,up=true,waterlogged=false,west=tall]", + "4522": "minecraft:diorite_wall[east=low,north=none,south=low,up=false,waterlogged=true,west=none]", + "4523": "minecraft:diorite_wall[east=low,north=none,south=low,up=false,waterlogged=true,west=low]", + "4524": "minecraft:diorite_wall[east=low,north=none,south=low,up=false,waterlogged=true,west=tall]", + "4525": "minecraft:diorite_wall[east=low,north=none,south=low,up=false,waterlogged=false,west=none]", + "4526": "minecraft:diorite_wall[east=low,north=none,south=low,up=false,waterlogged=false,west=low]", + "4527": "minecraft:diorite_wall[east=low,north=none,south=low,up=false,waterlogged=false,west=tall]", + "4528": "minecraft:diorite_wall[east=low,north=none,south=tall,up=true,waterlogged=true,west=none]", + "4529": "minecraft:diorite_wall[east=low,north=none,south=tall,up=true,waterlogged=true,west=low]", + "4530": "minecraft:diorite_wall[east=low,north=none,south=tall,up=true,waterlogged=true,west=tall]", + "4531": "minecraft:diorite_wall[east=low,north=none,south=tall,up=true,waterlogged=false,west=none]", + "4532": "minecraft:diorite_wall[east=low,north=none,south=tall,up=true,waterlogged=false,west=low]", + "4533": "minecraft:diorite_wall[east=low,north=none,south=tall,up=true,waterlogged=false,west=tall]", + "4534": "minecraft:diorite_wall[east=low,north=none,south=tall,up=false,waterlogged=true,west=none]", + "4535": "minecraft:diorite_wall[east=low,north=none,south=tall,up=false,waterlogged=true,west=low]", + "4536": "minecraft:diorite_wall[east=low,north=none,south=tall,up=false,waterlogged=true,west=tall]", + "4537": "minecraft:diorite_wall[east=low,north=none,south=tall,up=false,waterlogged=false,west=none]", + "4538": "minecraft:diorite_wall[east=low,north=none,south=tall,up=false,waterlogged=false,west=low]", + "4539": "minecraft:diorite_wall[east=low,north=none,south=tall,up=false,waterlogged=false,west=tall]", + "4540": "minecraft:diorite_wall[east=low,north=low,south=none,up=true,waterlogged=true,west=none]", + "4541": "minecraft:diorite_wall[east=low,north=low,south=none,up=true,waterlogged=true,west=low]", + "4542": "minecraft:diorite_wall[east=low,north=low,south=none,up=true,waterlogged=true,west=tall]", + "4543": "minecraft:diorite_wall[east=low,north=low,south=none,up=true,waterlogged=false,west=none]", + "4544": "minecraft:diorite_wall[east=low,north=low,south=none,up=true,waterlogged=false,west=low]", + "4545": "minecraft:diorite_wall[east=low,north=low,south=none,up=true,waterlogged=false,west=tall]", + "4546": "minecraft:diorite_wall[east=low,north=low,south=none,up=false,waterlogged=true,west=none]", + "4547": "minecraft:diorite_wall[east=low,north=low,south=none,up=false,waterlogged=true,west=low]", + "4548": "minecraft:diorite_wall[east=low,north=low,south=none,up=false,waterlogged=true,west=tall]", + "4549": "minecraft:diorite_wall[east=low,north=low,south=none,up=false,waterlogged=false,west=none]", + "4550": "minecraft:diorite_wall[east=low,north=low,south=none,up=false,waterlogged=false,west=low]", + "4551": "minecraft:diorite_wall[east=low,north=low,south=none,up=false,waterlogged=false,west=tall]", + "4552": "minecraft:diorite_wall[east=low,north=low,south=low,up=true,waterlogged=true,west=none]", + "4553": "minecraft:diorite_wall[east=low,north=low,south=low,up=true,waterlogged=true,west=low]", + "4554": "minecraft:diorite_wall[east=low,north=low,south=low,up=true,waterlogged=true,west=tall]", + "4555": "minecraft:diorite_wall[east=low,north=low,south=low,up=true,waterlogged=false,west=none]", + "4556": "minecraft:diorite_wall[east=low,north=low,south=low,up=true,waterlogged=false,west=low]", + "4557": "minecraft:diorite_wall[east=low,north=low,south=low,up=true,waterlogged=false,west=tall]", + "4558": "minecraft:diorite_wall[east=low,north=low,south=low,up=false,waterlogged=true,west=none]", + "4559": "minecraft:diorite_wall[east=low,north=low,south=low,up=false,waterlogged=true,west=low]", + "4560": "minecraft:diorite_wall[east=low,north=low,south=low,up=false,waterlogged=true,west=tall]", + "4561": "minecraft:diorite_wall[east=low,north=low,south=low,up=false,waterlogged=false,west=none]", + "4562": "minecraft:diorite_wall[east=low,north=low,south=low,up=false,waterlogged=false,west=low]", + "4563": "minecraft:diorite_wall[east=low,north=low,south=low,up=false,waterlogged=false,west=tall]", + "4564": "minecraft:diorite_wall[east=low,north=low,south=tall,up=true,waterlogged=true,west=none]", + "4565": "minecraft:diorite_wall[east=low,north=low,south=tall,up=true,waterlogged=true,west=low]", + "4566": "minecraft:diorite_wall[east=low,north=low,south=tall,up=true,waterlogged=true,west=tall]", + "4567": "minecraft:diorite_wall[east=low,north=low,south=tall,up=true,waterlogged=false,west=none]", + "4568": "minecraft:diorite_wall[east=low,north=low,south=tall,up=true,waterlogged=false,west=low]", + "4569": "minecraft:diorite_wall[east=low,north=low,south=tall,up=true,waterlogged=false,west=tall]", + "4570": "minecraft:diorite_wall[east=low,north=low,south=tall,up=false,waterlogged=true,west=none]", + "4571": "minecraft:diorite_wall[east=low,north=low,south=tall,up=false,waterlogged=true,west=low]", + "4572": "minecraft:diorite_wall[east=low,north=low,south=tall,up=false,waterlogged=true,west=tall]", + "4573": "minecraft:diorite_wall[east=low,north=low,south=tall,up=false,waterlogged=false,west=none]", + "4574": "minecraft:diorite_wall[east=low,north=low,south=tall,up=false,waterlogged=false,west=low]", + "4575": "minecraft:diorite_wall[east=low,north=low,south=tall,up=false,waterlogged=false,west=tall]", + "4576": "minecraft:diorite_wall[east=low,north=tall,south=none,up=true,waterlogged=true,west=none]", + "4577": "minecraft:diorite_wall[east=low,north=tall,south=none,up=true,waterlogged=true,west=low]", + "4578": "minecraft:diorite_wall[east=low,north=tall,south=none,up=true,waterlogged=true,west=tall]", + "4579": "minecraft:diorite_wall[east=low,north=tall,south=none,up=true,waterlogged=false,west=none]", + "4580": "minecraft:diorite_wall[east=low,north=tall,south=none,up=true,waterlogged=false,west=low]", + "4581": "minecraft:diorite_wall[east=low,north=tall,south=none,up=true,waterlogged=false,west=tall]", + "4582": "minecraft:diorite_wall[east=low,north=tall,south=none,up=false,waterlogged=true,west=none]", + "4583": "minecraft:diorite_wall[east=low,north=tall,south=none,up=false,waterlogged=true,west=low]", + "4584": "minecraft:diorite_wall[east=low,north=tall,south=none,up=false,waterlogged=true,west=tall]", + "4585": "minecraft:diorite_wall[east=low,north=tall,south=none,up=false,waterlogged=false,west=none]", + "4586": "minecraft:diorite_wall[east=low,north=tall,south=none,up=false,waterlogged=false,west=low]", + "4587": "minecraft:diorite_wall[east=low,north=tall,south=none,up=false,waterlogged=false,west=tall]", + "4588": "minecraft:diorite_wall[east=low,north=tall,south=low,up=true,waterlogged=true,west=none]", + "4589": "minecraft:diorite_wall[east=low,north=tall,south=low,up=true,waterlogged=true,west=low]", + "4590": "minecraft:diorite_wall[east=low,north=tall,south=low,up=true,waterlogged=true,west=tall]", + "4591": "minecraft:diorite_wall[east=low,north=tall,south=low,up=true,waterlogged=false,west=none]", + "4592": "minecraft:diorite_wall[east=low,north=tall,south=low,up=true,waterlogged=false,west=low]", + "4593": "minecraft:diorite_wall[east=low,north=tall,south=low,up=true,waterlogged=false,west=tall]", + "4594": "minecraft:diorite_wall[east=low,north=tall,south=low,up=false,waterlogged=true,west=none]", + "4595": "minecraft:diorite_wall[east=low,north=tall,south=low,up=false,waterlogged=true,west=low]", + "4596": "minecraft:diorite_wall[east=low,north=tall,south=low,up=false,waterlogged=true,west=tall]", + "4597": "minecraft:diorite_wall[east=low,north=tall,south=low,up=false,waterlogged=false,west=none]", + "4598": "minecraft:diorite_wall[east=low,north=tall,south=low,up=false,waterlogged=false,west=low]", + "4599": "minecraft:diorite_wall[east=low,north=tall,south=low,up=false,waterlogged=false,west=tall]", + "4600": "minecraft:diorite_wall[east=low,north=tall,south=tall,up=true,waterlogged=true,west=none]", + "4601": "minecraft:diorite_wall[east=low,north=tall,south=tall,up=true,waterlogged=true,west=low]", + "4602": "minecraft:diorite_wall[east=low,north=tall,south=tall,up=true,waterlogged=true,west=tall]", + "4603": "minecraft:diorite_wall[east=low,north=tall,south=tall,up=true,waterlogged=false,west=none]", + "4604": "minecraft:diorite_wall[east=low,north=tall,south=tall,up=true,waterlogged=false,west=low]", + "4605": "minecraft:diorite_wall[east=low,north=tall,south=tall,up=true,waterlogged=false,west=tall]", + "4606": "minecraft:diorite_wall[east=low,north=tall,south=tall,up=false,waterlogged=true,west=none]", + "4607": "minecraft:diorite_wall[east=low,north=tall,south=tall,up=false,waterlogged=true,west=low]", + "4608": "minecraft:diorite_wall[east=low,north=tall,south=tall,up=false,waterlogged=true,west=tall]", + "4609": "minecraft:diorite_wall[east=low,north=tall,south=tall,up=false,waterlogged=false,west=none]", + "4610": "minecraft:diorite_wall[east=low,north=tall,south=tall,up=false,waterlogged=false,west=low]", + "4611": "minecraft:diorite_wall[east=low,north=tall,south=tall,up=false,waterlogged=false,west=tall]", + "4612": "minecraft:diorite_wall[east=tall,north=none,south=none,up=true,waterlogged=true,west=none]", + "4613": "minecraft:diorite_wall[east=tall,north=none,south=none,up=true,waterlogged=true,west=low]", + "4614": "minecraft:diorite_wall[east=tall,north=none,south=none,up=true,waterlogged=true,west=tall]", + "4615": "minecraft:diorite_wall[east=tall,north=none,south=none,up=true,waterlogged=false,west=none]", + "4616": "minecraft:diorite_wall[east=tall,north=none,south=none,up=true,waterlogged=false,west=low]", + "4617": "minecraft:diorite_wall[east=tall,north=none,south=none,up=true,waterlogged=false,west=tall]", + "4618": "minecraft:diorite_wall[east=tall,north=none,south=none,up=false,waterlogged=true,west=none]", + "4619": "minecraft:diorite_wall[east=tall,north=none,south=none,up=false,waterlogged=true,west=low]", + "4620": "minecraft:diorite_wall[east=tall,north=none,south=none,up=false,waterlogged=true,west=tall]", + "4621": "minecraft:diorite_wall[east=tall,north=none,south=none,up=false,waterlogged=false,west=none]", + "4622": "minecraft:diorite_wall[east=tall,north=none,south=none,up=false,waterlogged=false,west=low]", + "4623": "minecraft:diorite_wall[east=tall,north=none,south=none,up=false,waterlogged=false,west=tall]", + "4624": "minecraft:diorite_wall[east=tall,north=none,south=low,up=true,waterlogged=true,west=none]", + "4625": "minecraft:diorite_wall[east=tall,north=none,south=low,up=true,waterlogged=true,west=low]", + "4626": "minecraft:diorite_wall[east=tall,north=none,south=low,up=true,waterlogged=true,west=tall]", + "4627": "minecraft:diorite_wall[east=tall,north=none,south=low,up=true,waterlogged=false,west=none]", + "4628": "minecraft:diorite_wall[east=tall,north=none,south=low,up=true,waterlogged=false,west=low]", + "4629": "minecraft:diorite_wall[east=tall,north=none,south=low,up=true,waterlogged=false,west=tall]", + "4630": "minecraft:diorite_wall[east=tall,north=none,south=low,up=false,waterlogged=true,west=none]", + "4631": "minecraft:diorite_wall[east=tall,north=none,south=low,up=false,waterlogged=true,west=low]", + "4632": "minecraft:diorite_wall[east=tall,north=none,south=low,up=false,waterlogged=true,west=tall]", + "4633": "minecraft:diorite_wall[east=tall,north=none,south=low,up=false,waterlogged=false,west=none]", + "4634": "minecraft:diorite_wall[east=tall,north=none,south=low,up=false,waterlogged=false,west=low]", + "4635": "minecraft:diorite_wall[east=tall,north=none,south=low,up=false,waterlogged=false,west=tall]", + "4636": "minecraft:diorite_wall[east=tall,north=none,south=tall,up=true,waterlogged=true,west=none]", + "4637": "minecraft:diorite_wall[east=tall,north=none,south=tall,up=true,waterlogged=true,west=low]", + "4638": "minecraft:diorite_wall[east=tall,north=none,south=tall,up=true,waterlogged=true,west=tall]", + "4639": "minecraft:diorite_wall[east=tall,north=none,south=tall,up=true,waterlogged=false,west=none]", + "4640": "minecraft:diorite_wall[east=tall,north=none,south=tall,up=true,waterlogged=false,west=low]", + "4641": "minecraft:diorite_wall[east=tall,north=none,south=tall,up=true,waterlogged=false,west=tall]", + "4642": "minecraft:diorite_wall[east=tall,north=none,south=tall,up=false,waterlogged=true,west=none]", + "4643": "minecraft:diorite_wall[east=tall,north=none,south=tall,up=false,waterlogged=true,west=low]", + "4644": "minecraft:diorite_wall[east=tall,north=none,south=tall,up=false,waterlogged=true,west=tall]", + "4645": "minecraft:diorite_wall[east=tall,north=none,south=tall,up=false,waterlogged=false,west=none]", + "4646": "minecraft:diorite_wall[east=tall,north=none,south=tall,up=false,waterlogged=false,west=low]", + "4647": "minecraft:diorite_wall[east=tall,north=none,south=tall,up=false,waterlogged=false,west=tall]", + "4648": "minecraft:diorite_wall[east=tall,north=low,south=none,up=true,waterlogged=true,west=none]", + "4649": "minecraft:diorite_wall[east=tall,north=low,south=none,up=true,waterlogged=true,west=low]", + "4650": "minecraft:diorite_wall[east=tall,north=low,south=none,up=true,waterlogged=true,west=tall]", + "4651": "minecraft:diorite_wall[east=tall,north=low,south=none,up=true,waterlogged=false,west=none]", + "4652": "minecraft:diorite_wall[east=tall,north=low,south=none,up=true,waterlogged=false,west=low]", + "4653": "minecraft:diorite_wall[east=tall,north=low,south=none,up=true,waterlogged=false,west=tall]", + "4654": "minecraft:diorite_wall[east=tall,north=low,south=none,up=false,waterlogged=true,west=none]", + "4655": "minecraft:diorite_wall[east=tall,north=low,south=none,up=false,waterlogged=true,west=low]", + "4656": "minecraft:diorite_wall[east=tall,north=low,south=none,up=false,waterlogged=true,west=tall]", + "4657": "minecraft:diorite_wall[east=tall,north=low,south=none,up=false,waterlogged=false,west=none]", + "4658": "minecraft:diorite_wall[east=tall,north=low,south=none,up=false,waterlogged=false,west=low]", + "4659": "minecraft:diorite_wall[east=tall,north=low,south=none,up=false,waterlogged=false,west=tall]", + "4660": "minecraft:diorite_wall[east=tall,north=low,south=low,up=true,waterlogged=true,west=none]", + "4661": "minecraft:diorite_wall[east=tall,north=low,south=low,up=true,waterlogged=true,west=low]", + "4662": "minecraft:diorite_wall[east=tall,north=low,south=low,up=true,waterlogged=true,west=tall]", + "4663": "minecraft:diorite_wall[east=tall,north=low,south=low,up=true,waterlogged=false,west=none]", + "4664": "minecraft:diorite_wall[east=tall,north=low,south=low,up=true,waterlogged=false,west=low]", + "4665": "minecraft:diorite_wall[east=tall,north=low,south=low,up=true,waterlogged=false,west=tall]", + "4666": "minecraft:diorite_wall[east=tall,north=low,south=low,up=false,waterlogged=true,west=none]", + "4667": "minecraft:diorite_wall[east=tall,north=low,south=low,up=false,waterlogged=true,west=low]", + "4668": "minecraft:diorite_wall[east=tall,north=low,south=low,up=false,waterlogged=true,west=tall]", + "4669": "minecraft:diorite_wall[east=tall,north=low,south=low,up=false,waterlogged=false,west=none]", + "4670": "minecraft:diorite_wall[east=tall,north=low,south=low,up=false,waterlogged=false,west=low]", + "4671": "minecraft:diorite_wall[east=tall,north=low,south=low,up=false,waterlogged=false,west=tall]", + "4672": "minecraft:diorite_wall[east=tall,north=low,south=tall,up=true,waterlogged=true,west=none]", + "4673": "minecraft:diorite_wall[east=tall,north=low,south=tall,up=true,waterlogged=true,west=low]", + "4674": "minecraft:diorite_wall[east=tall,north=low,south=tall,up=true,waterlogged=true,west=tall]", + "4675": "minecraft:diorite_wall[east=tall,north=low,south=tall,up=true,waterlogged=false,west=none]", + "4676": "minecraft:diorite_wall[east=tall,north=low,south=tall,up=true,waterlogged=false,west=low]", + "4677": "minecraft:diorite_wall[east=tall,north=low,south=tall,up=true,waterlogged=false,west=tall]", + "4678": "minecraft:diorite_wall[east=tall,north=low,south=tall,up=false,waterlogged=true,west=none]", + "4679": "minecraft:diorite_wall[east=tall,north=low,south=tall,up=false,waterlogged=true,west=low]", + "4680": "minecraft:diorite_wall[east=tall,north=low,south=tall,up=false,waterlogged=true,west=tall]", + "4681": "minecraft:diorite_wall[east=tall,north=low,south=tall,up=false,waterlogged=false,west=none]", + "4682": "minecraft:diorite_wall[east=tall,north=low,south=tall,up=false,waterlogged=false,west=low]", + "4683": "minecraft:diorite_wall[east=tall,north=low,south=tall,up=false,waterlogged=false,west=tall]", + "4684": "minecraft:diorite_wall[east=tall,north=tall,south=none,up=true,waterlogged=true,west=none]", + "4685": "minecraft:diorite_wall[east=tall,north=tall,south=none,up=true,waterlogged=true,west=low]", + "4686": "minecraft:diorite_wall[east=tall,north=tall,south=none,up=true,waterlogged=true,west=tall]", + "4687": "minecraft:diorite_wall[east=tall,north=tall,south=none,up=true,waterlogged=false,west=none]", + "4688": "minecraft:diorite_wall[east=tall,north=tall,south=none,up=true,waterlogged=false,west=low]", + "4689": "minecraft:diorite_wall[east=tall,north=tall,south=none,up=true,waterlogged=false,west=tall]", + "4690": "minecraft:diorite_wall[east=tall,north=tall,south=none,up=false,waterlogged=true,west=none]", + "4691": "minecraft:diorite_wall[east=tall,north=tall,south=none,up=false,waterlogged=true,west=low]", + "4692": "minecraft:diorite_wall[east=tall,north=tall,south=none,up=false,waterlogged=true,west=tall]", + "4693": "minecraft:diorite_wall[east=tall,north=tall,south=none,up=false,waterlogged=false,west=none]", + "4694": "minecraft:diorite_wall[east=tall,north=tall,south=none,up=false,waterlogged=false,west=low]", + "4695": "minecraft:diorite_wall[east=tall,north=tall,south=none,up=false,waterlogged=false,west=tall]", + "4696": "minecraft:diorite_wall[east=tall,north=tall,south=low,up=true,waterlogged=true,west=none]", + "4697": "minecraft:diorite_wall[east=tall,north=tall,south=low,up=true,waterlogged=true,west=low]", + "4698": "minecraft:diorite_wall[east=tall,north=tall,south=low,up=true,waterlogged=true,west=tall]", + "4699": "minecraft:diorite_wall[east=tall,north=tall,south=low,up=true,waterlogged=false,west=none]", + "4700": "minecraft:diorite_wall[east=tall,north=tall,south=low,up=true,waterlogged=false,west=low]", + "4701": "minecraft:diorite_wall[east=tall,north=tall,south=low,up=true,waterlogged=false,west=tall]", + "4702": "minecraft:diorite_wall[east=tall,north=tall,south=low,up=false,waterlogged=true,west=none]", + "4703": "minecraft:diorite_wall[east=tall,north=tall,south=low,up=false,waterlogged=true,west=low]", + "4704": "minecraft:diorite_wall[east=tall,north=tall,south=low,up=false,waterlogged=true,west=tall]", + "4705": "minecraft:diorite_wall[east=tall,north=tall,south=low,up=false,waterlogged=false,west=none]", + "4706": "minecraft:diorite_wall[east=tall,north=tall,south=low,up=false,waterlogged=false,west=low]", + "4707": "minecraft:diorite_wall[east=tall,north=tall,south=low,up=false,waterlogged=false,west=tall]", + "4708": "minecraft:diorite_wall[east=tall,north=tall,south=tall,up=true,waterlogged=true,west=none]", + "4709": "minecraft:diorite_wall[east=tall,north=tall,south=tall,up=true,waterlogged=true,west=low]", + "4710": "minecraft:diorite_wall[east=tall,north=tall,south=tall,up=true,waterlogged=true,west=tall]", + "4711": "minecraft:diorite_wall[east=tall,north=tall,south=tall,up=true,waterlogged=false,west=none]", + "4712": "minecraft:diorite_wall[east=tall,north=tall,south=tall,up=true,waterlogged=false,west=low]", + "4713": "minecraft:diorite_wall[east=tall,north=tall,south=tall,up=true,waterlogged=false,west=tall]", + "4714": "minecraft:diorite_wall[east=tall,north=tall,south=tall,up=false,waterlogged=true,west=none]", + "4715": "minecraft:diorite_wall[east=tall,north=tall,south=tall,up=false,waterlogged=true,west=low]", + "4716": "minecraft:diorite_wall[east=tall,north=tall,south=tall,up=false,waterlogged=true,west=tall]", + "4717": "minecraft:diorite_wall[east=tall,north=tall,south=tall,up=false,waterlogged=false,west=none]", + "4718": "minecraft:diorite_wall[east=tall,north=tall,south=tall,up=false,waterlogged=false,west=low]", + "4719": "minecraft:diorite_wall[east=tall,north=tall,south=tall,up=false,waterlogged=false,west=tall]", + "4720": "minecraft:spruce_planks", + "4721": "minecraft:andesite_wall[east=none,north=none,south=none,up=true,waterlogged=true,west=none]", + "4722": "minecraft:andesite_wall[east=none,north=none,south=none,up=true,waterlogged=true,west=low]", + "4723": "minecraft:andesite_wall[east=none,north=none,south=none,up=true,waterlogged=true,west=tall]", + "4724": "minecraft:andesite_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=none]", + "4725": "minecraft:andesite_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=low]", + "4726": "minecraft:andesite_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=tall]", + "4727": "minecraft:andesite_wall[east=none,north=none,south=none,up=false,waterlogged=true,west=none]", + "4728": "minecraft:andesite_wall[east=none,north=none,south=none,up=false,waterlogged=true,west=low]", + "4729": "minecraft:andesite_wall[east=none,north=none,south=none,up=false,waterlogged=true,west=tall]", + "4730": "minecraft:andesite_wall[east=none,north=none,south=none,up=false,waterlogged=false,west=none]", + "4731": "minecraft:andesite_wall[east=none,north=none,south=none,up=false,waterlogged=false,west=low]", + "4732": "minecraft:andesite_wall[east=none,north=none,south=none,up=false,waterlogged=false,west=tall]", + "4733": "minecraft:andesite_wall[east=none,north=none,south=low,up=true,waterlogged=true,west=none]", + "4734": "minecraft:andesite_wall[east=none,north=none,south=low,up=true,waterlogged=true,west=low]", + "4735": "minecraft:andesite_wall[east=none,north=none,south=low,up=true,waterlogged=true,west=tall]", + "4736": "minecraft:andesite_wall[east=none,north=none,south=low,up=true,waterlogged=false,west=none]", + "4737": "minecraft:andesite_wall[east=none,north=none,south=low,up=true,waterlogged=false,west=low]", + "4738": "minecraft:andesite_wall[east=none,north=none,south=low,up=true,waterlogged=false,west=tall]", + "4739": "minecraft:andesite_wall[east=none,north=none,south=low,up=false,waterlogged=true,west=none]", + "4740": "minecraft:andesite_wall[east=none,north=none,south=low,up=false,waterlogged=true,west=low]", + "4741": "minecraft:andesite_wall[east=none,north=none,south=low,up=false,waterlogged=true,west=tall]", + "4742": "minecraft:andesite_wall[east=none,north=none,south=low,up=false,waterlogged=false,west=none]", + "4743": "minecraft:andesite_wall[east=none,north=none,south=low,up=false,waterlogged=false,west=low]", + "4744": "minecraft:andesite_wall[east=none,north=none,south=low,up=false,waterlogged=false,west=tall]", + "4745": "minecraft:andesite_wall[east=none,north=none,south=tall,up=true,waterlogged=true,west=none]", + "4746": "minecraft:andesite_wall[east=none,north=none,south=tall,up=true,waterlogged=true,west=low]", + "4747": "minecraft:andesite_wall[east=none,north=none,south=tall,up=true,waterlogged=true,west=tall]", + "4748": "minecraft:andesite_wall[east=none,north=none,south=tall,up=true,waterlogged=false,west=none]", + "4749": "minecraft:andesite_wall[east=none,north=none,south=tall,up=true,waterlogged=false,west=low]", + "4750": "minecraft:andesite_wall[east=none,north=none,south=tall,up=true,waterlogged=false,west=tall]", + "4751": "minecraft:andesite_wall[east=none,north=none,south=tall,up=false,waterlogged=true,west=none]", + "4752": "minecraft:andesite_wall[east=none,north=none,south=tall,up=false,waterlogged=true,west=low]", + "4753": "minecraft:andesite_wall[east=none,north=none,south=tall,up=false,waterlogged=true,west=tall]", + "4754": "minecraft:andesite_wall[east=none,north=none,south=tall,up=false,waterlogged=false,west=none]", + "4755": "minecraft:andesite_wall[east=none,north=none,south=tall,up=false,waterlogged=false,west=low]", + "4756": "minecraft:andesite_wall[east=none,north=none,south=tall,up=false,waterlogged=false,west=tall]", + "4757": "minecraft:andesite_wall[east=none,north=low,south=none,up=true,waterlogged=true,west=none]", + "4758": "minecraft:andesite_wall[east=none,north=low,south=none,up=true,waterlogged=true,west=low]", + "4759": "minecraft:andesite_wall[east=none,north=low,south=none,up=true,waterlogged=true,west=tall]", + "4760": "minecraft:andesite_wall[east=none,north=low,south=none,up=true,waterlogged=false,west=none]", + "4761": "minecraft:andesite_wall[east=none,north=low,south=none,up=true,waterlogged=false,west=low]", + "4762": "minecraft:andesite_wall[east=none,north=low,south=none,up=true,waterlogged=false,west=tall]", + "4763": "minecraft:andesite_wall[east=none,north=low,south=none,up=false,waterlogged=true,west=none]", + "4764": "minecraft:andesite_wall[east=none,north=low,south=none,up=false,waterlogged=true,west=low]", + "4765": "minecraft:andesite_wall[east=none,north=low,south=none,up=false,waterlogged=true,west=tall]", + "4766": "minecraft:andesite_wall[east=none,north=low,south=none,up=false,waterlogged=false,west=none]", + "4767": "minecraft:andesite_wall[east=none,north=low,south=none,up=false,waterlogged=false,west=low]", + "4768": "minecraft:andesite_wall[east=none,north=low,south=none,up=false,waterlogged=false,west=tall]", + "4769": "minecraft:andesite_wall[east=none,north=low,south=low,up=true,waterlogged=true,west=none]", + "4770": "minecraft:andesite_wall[east=none,north=low,south=low,up=true,waterlogged=true,west=low]", + "4771": "minecraft:andesite_wall[east=none,north=low,south=low,up=true,waterlogged=true,west=tall]", + "4772": "minecraft:andesite_wall[east=none,north=low,south=low,up=true,waterlogged=false,west=none]", + "4773": "minecraft:andesite_wall[east=none,north=low,south=low,up=true,waterlogged=false,west=low]", + "4774": "minecraft:andesite_wall[east=none,north=low,south=low,up=true,waterlogged=false,west=tall]", + "4775": "minecraft:andesite_wall[east=none,north=low,south=low,up=false,waterlogged=true,west=none]", + "4776": "minecraft:andesite_wall[east=none,north=low,south=low,up=false,waterlogged=true,west=low]", + "4777": "minecraft:andesite_wall[east=none,north=low,south=low,up=false,waterlogged=true,west=tall]", + "4778": "minecraft:andesite_wall[east=none,north=low,south=low,up=false,waterlogged=false,west=none]", + "4779": "minecraft:andesite_wall[east=none,north=low,south=low,up=false,waterlogged=false,west=low]", + "4780": "minecraft:andesite_wall[east=none,north=low,south=low,up=false,waterlogged=false,west=tall]", + "4781": "minecraft:andesite_wall[east=none,north=low,south=tall,up=true,waterlogged=true,west=none]", + "4782": "minecraft:andesite_wall[east=none,north=low,south=tall,up=true,waterlogged=true,west=low]", + "4783": "minecraft:andesite_wall[east=none,north=low,south=tall,up=true,waterlogged=true,west=tall]", + "4784": "minecraft:andesite_wall[east=none,north=low,south=tall,up=true,waterlogged=false,west=none]", + "4785": "minecraft:andesite_wall[east=none,north=low,south=tall,up=true,waterlogged=false,west=low]", + "4786": "minecraft:andesite_wall[east=none,north=low,south=tall,up=true,waterlogged=false,west=tall]", + "4787": "minecraft:andesite_wall[east=none,north=low,south=tall,up=false,waterlogged=true,west=none]", + "4788": "minecraft:andesite_wall[east=none,north=low,south=tall,up=false,waterlogged=true,west=low]", + "4789": "minecraft:andesite_wall[east=none,north=low,south=tall,up=false,waterlogged=true,west=tall]", + "4790": "minecraft:andesite_wall[east=none,north=low,south=tall,up=false,waterlogged=false,west=none]", + "4791": "minecraft:andesite_wall[east=none,north=low,south=tall,up=false,waterlogged=false,west=low]", + "4792": "minecraft:andesite_wall[east=none,north=low,south=tall,up=false,waterlogged=false,west=tall]", + "4793": "minecraft:andesite_wall[east=none,north=tall,south=none,up=true,waterlogged=true,west=none]", + "4794": "minecraft:andesite_wall[east=none,north=tall,south=none,up=true,waterlogged=true,west=low]", + "4795": "minecraft:andesite_wall[east=none,north=tall,south=none,up=true,waterlogged=true,west=tall]", + "4796": "minecraft:andesite_wall[east=none,north=tall,south=none,up=true,waterlogged=false,west=none]", + "4797": "minecraft:andesite_wall[east=none,north=tall,south=none,up=true,waterlogged=false,west=low]", + "4798": "minecraft:andesite_wall[east=none,north=tall,south=none,up=true,waterlogged=false,west=tall]", + "4799": "minecraft:andesite_wall[east=none,north=tall,south=none,up=false,waterlogged=true,west=none]", + "4800": "minecraft:andesite_wall[east=none,north=tall,south=none,up=false,waterlogged=true,west=low]", + "4801": "minecraft:andesite_wall[east=none,north=tall,south=none,up=false,waterlogged=true,west=tall]", + "4802": "minecraft:andesite_wall[east=none,north=tall,south=none,up=false,waterlogged=false,west=none]", + "4803": "minecraft:andesite_wall[east=none,north=tall,south=none,up=false,waterlogged=false,west=low]", + "4804": "minecraft:andesite_wall[east=none,north=tall,south=none,up=false,waterlogged=false,west=tall]", + "4805": "minecraft:andesite_wall[east=none,north=tall,south=low,up=true,waterlogged=true,west=none]", + "4806": "minecraft:andesite_wall[east=none,north=tall,south=low,up=true,waterlogged=true,west=low]", + "4807": "minecraft:andesite_wall[east=none,north=tall,south=low,up=true,waterlogged=true,west=tall]", + "4808": "minecraft:andesite_wall[east=none,north=tall,south=low,up=true,waterlogged=false,west=none]", + "4809": "minecraft:andesite_wall[east=none,north=tall,south=low,up=true,waterlogged=false,west=low]", + "4810": "minecraft:andesite_wall[east=none,north=tall,south=low,up=true,waterlogged=false,west=tall]", + "4811": "minecraft:andesite_wall[east=none,north=tall,south=low,up=false,waterlogged=true,west=none]", + "4812": "minecraft:andesite_wall[east=none,north=tall,south=low,up=false,waterlogged=true,west=low]", + "4813": "minecraft:andesite_wall[east=none,north=tall,south=low,up=false,waterlogged=true,west=tall]", + "4814": "minecraft:andesite_wall[east=none,north=tall,south=low,up=false,waterlogged=false,west=none]", + "4815": "minecraft:andesite_wall[east=none,north=tall,south=low,up=false,waterlogged=false,west=low]", + "4816": "minecraft:andesite_wall[east=none,north=tall,south=low,up=false,waterlogged=false,west=tall]", + "4817": "minecraft:andesite_wall[east=none,north=tall,south=tall,up=true,waterlogged=true,west=none]", + "4818": "minecraft:andesite_wall[east=none,north=tall,south=tall,up=true,waterlogged=true,west=low]", + "4819": "minecraft:andesite_wall[east=none,north=tall,south=tall,up=true,waterlogged=true,west=tall]", + "4820": "minecraft:andesite_wall[east=none,north=tall,south=tall,up=true,waterlogged=false,west=none]", + "4821": "minecraft:andesite_wall[east=none,north=tall,south=tall,up=true,waterlogged=false,west=low]", + "4822": "minecraft:andesite_wall[east=none,north=tall,south=tall,up=true,waterlogged=false,west=tall]", + "4823": "minecraft:andesite_wall[east=none,north=tall,south=tall,up=false,waterlogged=true,west=none]", + "4824": "minecraft:andesite_wall[east=none,north=tall,south=tall,up=false,waterlogged=true,west=low]", + "4825": "minecraft:andesite_wall[east=none,north=tall,south=tall,up=false,waterlogged=true,west=tall]", + "4826": "minecraft:andesite_wall[east=none,north=tall,south=tall,up=false,waterlogged=false,west=none]", + "4827": "minecraft:andesite_wall[east=none,north=tall,south=tall,up=false,waterlogged=false,west=low]", + "4828": "minecraft:andesite_wall[east=none,north=tall,south=tall,up=false,waterlogged=false,west=tall]", + "4829": "minecraft:andesite_wall[east=low,north=none,south=none,up=true,waterlogged=true,west=none]", + "4830": "minecraft:andesite_wall[east=low,north=none,south=none,up=true,waterlogged=true,west=low]", + "4831": "minecraft:andesite_wall[east=low,north=none,south=none,up=true,waterlogged=true,west=tall]", + "4832": "minecraft:andesite_wall[east=low,north=none,south=none,up=true,waterlogged=false,west=none]", + "4833": "minecraft:andesite_wall[east=low,north=none,south=none,up=true,waterlogged=false,west=low]", + "4834": "minecraft:andesite_wall[east=low,north=none,south=none,up=true,waterlogged=false,west=tall]", + "4835": "minecraft:andesite_wall[east=low,north=none,south=none,up=false,waterlogged=true,west=none]", + "4836": "minecraft:andesite_wall[east=low,north=none,south=none,up=false,waterlogged=true,west=low]", + "4837": "minecraft:andesite_wall[east=low,north=none,south=none,up=false,waterlogged=true,west=tall]", + "4838": "minecraft:andesite_wall[east=low,north=none,south=none,up=false,waterlogged=false,west=none]", + "4839": "minecraft:andesite_wall[east=low,north=none,south=none,up=false,waterlogged=false,west=low]", + "4840": "minecraft:andesite_wall[east=low,north=none,south=none,up=false,waterlogged=false,west=tall]", + "4841": "minecraft:andesite_wall[east=low,north=none,south=low,up=true,waterlogged=true,west=none]", + "4842": "minecraft:andesite_wall[east=low,north=none,south=low,up=true,waterlogged=true,west=low]", + "4843": "minecraft:andesite_wall[east=low,north=none,south=low,up=true,waterlogged=true,west=tall]", + "4844": "minecraft:andesite_wall[east=low,north=none,south=low,up=true,waterlogged=false,west=none]", + "4845": "minecraft:andesite_wall[east=low,north=none,south=low,up=true,waterlogged=false,west=low]", + "4846": "minecraft:andesite_wall[east=low,north=none,south=low,up=true,waterlogged=false,west=tall]", + "4847": "minecraft:andesite_wall[east=low,north=none,south=low,up=false,waterlogged=true,west=none]", + "4848": "minecraft:andesite_wall[east=low,north=none,south=low,up=false,waterlogged=true,west=low]", + "4849": "minecraft:andesite_wall[east=low,north=none,south=low,up=false,waterlogged=true,west=tall]", + "4850": "minecraft:andesite_wall[east=low,north=none,south=low,up=false,waterlogged=false,west=none]", + "4851": "minecraft:andesite_wall[east=low,north=none,south=low,up=false,waterlogged=false,west=low]", + "4852": "minecraft:andesite_wall[east=low,north=none,south=low,up=false,waterlogged=false,west=tall]", + "4853": "minecraft:andesite_wall[east=low,north=none,south=tall,up=true,waterlogged=true,west=none]", + "4854": "minecraft:andesite_wall[east=low,north=none,south=tall,up=true,waterlogged=true,west=low]", + "4855": "minecraft:andesite_wall[east=low,north=none,south=tall,up=true,waterlogged=true,west=tall]", + "4856": "minecraft:andesite_wall[east=low,north=none,south=tall,up=true,waterlogged=false,west=none]", + "4857": "minecraft:andesite_wall[east=low,north=none,south=tall,up=true,waterlogged=false,west=low]", + "4858": "minecraft:andesite_wall[east=low,north=none,south=tall,up=true,waterlogged=false,west=tall]", + "4859": "minecraft:andesite_wall[east=low,north=none,south=tall,up=false,waterlogged=true,west=none]", + "4860": "minecraft:andesite_wall[east=low,north=none,south=tall,up=false,waterlogged=true,west=low]", + "4861": "minecraft:andesite_wall[east=low,north=none,south=tall,up=false,waterlogged=true,west=tall]", + "4862": "minecraft:andesite_wall[east=low,north=none,south=tall,up=false,waterlogged=false,west=none]", + "4863": "minecraft:andesite_wall[east=low,north=none,south=tall,up=false,waterlogged=false,west=low]", + "4864": "minecraft:andesite_wall[east=low,north=none,south=tall,up=false,waterlogged=false,west=tall]", + "4865": "minecraft:andesite_wall[east=low,north=low,south=none,up=true,waterlogged=true,west=none]", + "4866": "minecraft:andesite_wall[east=low,north=low,south=none,up=true,waterlogged=true,west=low]", + "4867": "minecraft:andesite_wall[east=low,north=low,south=none,up=true,waterlogged=true,west=tall]", + "4868": "minecraft:andesite_wall[east=low,north=low,south=none,up=true,waterlogged=false,west=none]", + "4869": "minecraft:andesite_wall[east=low,north=low,south=none,up=true,waterlogged=false,west=low]", + "4870": "minecraft:andesite_wall[east=low,north=low,south=none,up=true,waterlogged=false,west=tall]", + "4871": "minecraft:andesite_wall[east=low,north=low,south=none,up=false,waterlogged=true,west=none]", + "4872": "minecraft:andesite_wall[east=low,north=low,south=none,up=false,waterlogged=true,west=low]", + "4873": "minecraft:andesite_wall[east=low,north=low,south=none,up=false,waterlogged=true,west=tall]", + "4874": "minecraft:andesite_wall[east=low,north=low,south=none,up=false,waterlogged=false,west=none]", + "4875": "minecraft:andesite_wall[east=low,north=low,south=none,up=false,waterlogged=false,west=low]", + "4876": "minecraft:andesite_wall[east=low,north=low,south=none,up=false,waterlogged=false,west=tall]", + "4877": "minecraft:andesite_wall[east=low,north=low,south=low,up=true,waterlogged=true,west=none]", + "4878": "minecraft:andesite_wall[east=low,north=low,south=low,up=true,waterlogged=true,west=low]", + "4879": "minecraft:andesite_wall[east=low,north=low,south=low,up=true,waterlogged=true,west=tall]", + "4880": "minecraft:andesite_wall[east=low,north=low,south=low,up=true,waterlogged=false,west=none]", + "4881": "minecraft:andesite_wall[east=low,north=low,south=low,up=true,waterlogged=false,west=low]", + "4882": "minecraft:andesite_wall[east=low,north=low,south=low,up=true,waterlogged=false,west=tall]", + "4883": "minecraft:andesite_wall[east=low,north=low,south=low,up=false,waterlogged=true,west=none]", + "4884": "minecraft:andesite_wall[east=low,north=low,south=low,up=false,waterlogged=true,west=low]", + "4885": "minecraft:andesite_wall[east=low,north=low,south=low,up=false,waterlogged=true,west=tall]", + "4886": "minecraft:andesite_wall[east=low,north=low,south=low,up=false,waterlogged=false,west=none]", + "4887": "minecraft:andesite_wall[east=low,north=low,south=low,up=false,waterlogged=false,west=low]", + "4888": "minecraft:andesite_wall[east=low,north=low,south=low,up=false,waterlogged=false,west=tall]", + "4889": "minecraft:andesite_wall[east=low,north=low,south=tall,up=true,waterlogged=true,west=none]", + "4890": "minecraft:andesite_wall[east=low,north=low,south=tall,up=true,waterlogged=true,west=low]", + "4891": "minecraft:andesite_wall[east=low,north=low,south=tall,up=true,waterlogged=true,west=tall]", + "4892": "minecraft:andesite_wall[east=low,north=low,south=tall,up=true,waterlogged=false,west=none]", + "4893": "minecraft:andesite_wall[east=low,north=low,south=tall,up=true,waterlogged=false,west=low]", + "4894": "minecraft:andesite_wall[east=low,north=low,south=tall,up=true,waterlogged=false,west=tall]", + "4895": "minecraft:andesite_wall[east=low,north=low,south=tall,up=false,waterlogged=true,west=none]", + "4896": "minecraft:andesite_wall[east=low,north=low,south=tall,up=false,waterlogged=true,west=low]", + "4897": "minecraft:andesite_wall[east=low,north=low,south=tall,up=false,waterlogged=true,west=tall]", + "4898": "minecraft:andesite_wall[east=low,north=low,south=tall,up=false,waterlogged=false,west=none]", + "4899": "minecraft:andesite_wall[east=low,north=low,south=tall,up=false,waterlogged=false,west=low]", + "4900": "minecraft:andesite_wall[east=low,north=low,south=tall,up=false,waterlogged=false,west=tall]", + "4901": "minecraft:andesite_wall[east=low,north=tall,south=none,up=true,waterlogged=true,west=none]", + "4902": "minecraft:andesite_wall[east=low,north=tall,south=none,up=true,waterlogged=true,west=low]", + "4903": "minecraft:andesite_wall[east=low,north=tall,south=none,up=true,waterlogged=true,west=tall]", + "4904": "minecraft:andesite_wall[east=low,north=tall,south=none,up=true,waterlogged=false,west=none]", + "4905": "minecraft:andesite_wall[east=low,north=tall,south=none,up=true,waterlogged=false,west=low]", + "4906": "minecraft:andesite_wall[east=low,north=tall,south=none,up=true,waterlogged=false,west=tall]", + "4907": "minecraft:andesite_wall[east=low,north=tall,south=none,up=false,waterlogged=true,west=none]", + "4908": "minecraft:andesite_wall[east=low,north=tall,south=none,up=false,waterlogged=true,west=low]", + "4909": "minecraft:andesite_wall[east=low,north=tall,south=none,up=false,waterlogged=true,west=tall]", + "4910": "minecraft:andesite_wall[east=low,north=tall,south=none,up=false,waterlogged=false,west=none]", + "4911": "minecraft:andesite_wall[east=low,north=tall,south=none,up=false,waterlogged=false,west=low]", + "4912": "minecraft:andesite_wall[east=low,north=tall,south=none,up=false,waterlogged=false,west=tall]", + "4913": "minecraft:andesite_wall[east=low,north=tall,south=low,up=true,waterlogged=true,west=none]", + "4914": "minecraft:andesite_wall[east=low,north=tall,south=low,up=true,waterlogged=true,west=low]", + "4915": "minecraft:andesite_wall[east=low,north=tall,south=low,up=true,waterlogged=true,west=tall]", + "4916": "minecraft:andesite_wall[east=low,north=tall,south=low,up=true,waterlogged=false,west=none]", + "4917": "minecraft:andesite_wall[east=low,north=tall,south=low,up=true,waterlogged=false,west=low]", + "4918": "minecraft:andesite_wall[east=low,north=tall,south=low,up=true,waterlogged=false,west=tall]", + "4919": "minecraft:andesite_wall[east=low,north=tall,south=low,up=false,waterlogged=true,west=none]", + "4920": "minecraft:andesite_wall[east=low,north=tall,south=low,up=false,waterlogged=true,west=low]", + "4921": "minecraft:andesite_wall[east=low,north=tall,south=low,up=false,waterlogged=true,west=tall]", + "4922": "minecraft:andesite_wall[east=low,north=tall,south=low,up=false,waterlogged=false,west=none]", + "4923": "minecraft:andesite_wall[east=low,north=tall,south=low,up=false,waterlogged=false,west=low]", + "4924": "minecraft:andesite_wall[east=low,north=tall,south=low,up=false,waterlogged=false,west=tall]", + "4925": "minecraft:andesite_wall[east=low,north=tall,south=tall,up=true,waterlogged=true,west=none]", + "4926": "minecraft:andesite_wall[east=low,north=tall,south=tall,up=true,waterlogged=true,west=low]", + "4927": "minecraft:andesite_wall[east=low,north=tall,south=tall,up=true,waterlogged=true,west=tall]", + "4928": "minecraft:andesite_wall[east=low,north=tall,south=tall,up=true,waterlogged=false,west=none]", + "4929": "minecraft:andesite_wall[east=low,north=tall,south=tall,up=true,waterlogged=false,west=low]", + "4930": "minecraft:andesite_wall[east=low,north=tall,south=tall,up=true,waterlogged=false,west=tall]", + "4931": "minecraft:andesite_wall[east=low,north=tall,south=tall,up=false,waterlogged=true,west=none]", + "4932": "minecraft:andesite_wall[east=low,north=tall,south=tall,up=false,waterlogged=true,west=low]", + "4933": "minecraft:andesite_wall[east=low,north=tall,south=tall,up=false,waterlogged=true,west=tall]", + "4934": "minecraft:andesite_wall[east=low,north=tall,south=tall,up=false,waterlogged=false,west=none]", + "4935": "minecraft:andesite_wall[east=low,north=tall,south=tall,up=false,waterlogged=false,west=low]", + "4936": "minecraft:andesite_wall[east=low,north=tall,south=tall,up=false,waterlogged=false,west=tall]", + "4937": "minecraft:andesite_wall[east=tall,north=none,south=none,up=true,waterlogged=true,west=none]", + "4938": "minecraft:andesite_wall[east=tall,north=none,south=none,up=true,waterlogged=true,west=low]", + "4939": "minecraft:andesite_wall[east=tall,north=none,south=none,up=true,waterlogged=true,west=tall]", + "4940": "minecraft:andesite_wall[east=tall,north=none,south=none,up=true,waterlogged=false,west=none]", + "4941": "minecraft:andesite_wall[east=tall,north=none,south=none,up=true,waterlogged=false,west=low]", + "4942": "minecraft:andesite_wall[east=tall,north=none,south=none,up=true,waterlogged=false,west=tall]", + "4943": "minecraft:andesite_wall[east=tall,north=none,south=none,up=false,waterlogged=true,west=none]", + "4944": "minecraft:andesite_wall[east=tall,north=none,south=none,up=false,waterlogged=true,west=low]", + "4945": "minecraft:andesite_wall[east=tall,north=none,south=none,up=false,waterlogged=true,west=tall]", + "4946": "minecraft:andesite_wall[east=tall,north=none,south=none,up=false,waterlogged=false,west=none]", + "4947": "minecraft:andesite_wall[east=tall,north=none,south=none,up=false,waterlogged=false,west=low]", + "4948": "minecraft:andesite_wall[east=tall,north=none,south=none,up=false,waterlogged=false,west=tall]", + "4949": "minecraft:andesite_wall[east=tall,north=none,south=low,up=true,waterlogged=true,west=none]", + "4950": "minecraft:andesite_wall[east=tall,north=none,south=low,up=true,waterlogged=true,west=low]", + "4951": "minecraft:andesite_wall[east=tall,north=none,south=low,up=true,waterlogged=true,west=tall]", + "4952": "minecraft:andesite_wall[east=tall,north=none,south=low,up=true,waterlogged=false,west=none]", + "4953": "minecraft:andesite_wall[east=tall,north=none,south=low,up=true,waterlogged=false,west=low]", + "4954": "minecraft:andesite_wall[east=tall,north=none,south=low,up=true,waterlogged=false,west=tall]", + "4955": "minecraft:andesite_wall[east=tall,north=none,south=low,up=false,waterlogged=true,west=none]", + "4956": "minecraft:andesite_wall[east=tall,north=none,south=low,up=false,waterlogged=true,west=low]", + "4957": "minecraft:andesite_wall[east=tall,north=none,south=low,up=false,waterlogged=true,west=tall]", + "4958": "minecraft:andesite_wall[east=tall,north=none,south=low,up=false,waterlogged=false,west=none]", + "4959": "minecraft:andesite_wall[east=tall,north=none,south=low,up=false,waterlogged=false,west=low]", + "4960": "minecraft:andesite_wall[east=tall,north=none,south=low,up=false,waterlogged=false,west=tall]", + "4961": "minecraft:andesite_wall[east=tall,north=none,south=tall,up=true,waterlogged=true,west=none]", + "4962": "minecraft:andesite_wall[east=tall,north=none,south=tall,up=true,waterlogged=true,west=low]", + "4963": "minecraft:andesite_wall[east=tall,north=none,south=tall,up=true,waterlogged=true,west=tall]", + "4964": "minecraft:andesite_wall[east=tall,north=none,south=tall,up=true,waterlogged=false,west=none]", + "4965": "minecraft:andesite_wall[east=tall,north=none,south=tall,up=true,waterlogged=false,west=low]", + "4966": "minecraft:andesite_wall[east=tall,north=none,south=tall,up=true,waterlogged=false,west=tall]", + "4967": "minecraft:andesite_wall[east=tall,north=none,south=tall,up=false,waterlogged=true,west=none]", + "4968": "minecraft:andesite_wall[east=tall,north=none,south=tall,up=false,waterlogged=true,west=low]", + "4969": "minecraft:andesite_wall[east=tall,north=none,south=tall,up=false,waterlogged=true,west=tall]", + "4970": "minecraft:andesite_wall[east=tall,north=none,south=tall,up=false,waterlogged=false,west=none]", + "4971": "minecraft:andesite_wall[east=tall,north=none,south=tall,up=false,waterlogged=false,west=low]", + "4972": "minecraft:andesite_wall[east=tall,north=none,south=tall,up=false,waterlogged=false,west=tall]", + "4973": "minecraft:andesite_wall[east=tall,north=low,south=none,up=true,waterlogged=true,west=none]", + "4974": "minecraft:andesite_wall[east=tall,north=low,south=none,up=true,waterlogged=true,west=low]", + "4975": "minecraft:andesite_wall[east=tall,north=low,south=none,up=true,waterlogged=true,west=tall]", + "4976": "minecraft:andesite_wall[east=tall,north=low,south=none,up=true,waterlogged=false,west=none]", + "4977": "minecraft:andesite_wall[east=tall,north=low,south=none,up=true,waterlogged=false,west=low]", + "4978": "minecraft:andesite_wall[east=tall,north=low,south=none,up=true,waterlogged=false,west=tall]", + "4979": "minecraft:andesite_wall[east=tall,north=low,south=none,up=false,waterlogged=true,west=none]", + "4980": "minecraft:andesite_wall[east=tall,north=low,south=none,up=false,waterlogged=true,west=low]", + "4981": "minecraft:andesite_wall[east=tall,north=low,south=none,up=false,waterlogged=true,west=tall]", + "4982": "minecraft:andesite_wall[east=tall,north=low,south=none,up=false,waterlogged=false,west=none]", + "4983": "minecraft:andesite_wall[east=tall,north=low,south=none,up=false,waterlogged=false,west=low]", + "4984": "minecraft:andesite_wall[east=tall,north=low,south=none,up=false,waterlogged=false,west=tall]", + "4985": "minecraft:andesite_wall[east=tall,north=low,south=low,up=true,waterlogged=true,west=none]", + "4986": "minecraft:andesite_wall[east=tall,north=low,south=low,up=true,waterlogged=true,west=low]", + "4987": "minecraft:andesite_wall[east=tall,north=low,south=low,up=true,waterlogged=true,west=tall]", + "4988": "minecraft:andesite_wall[east=tall,north=low,south=low,up=true,waterlogged=false,west=none]", + "4989": "minecraft:andesite_wall[east=tall,north=low,south=low,up=true,waterlogged=false,west=low]", + "4990": "minecraft:andesite_wall[east=tall,north=low,south=low,up=true,waterlogged=false,west=tall]", + "4991": "minecraft:andesite_wall[east=tall,north=low,south=low,up=false,waterlogged=true,west=none]", + "4992": "minecraft:andesite_wall[east=tall,north=low,south=low,up=false,waterlogged=true,west=low]", + "4993": "minecraft:andesite_wall[east=tall,north=low,south=low,up=false,waterlogged=true,west=tall]", + "4994": "minecraft:andesite_wall[east=tall,north=low,south=low,up=false,waterlogged=false,west=none]", + "4995": "minecraft:andesite_wall[east=tall,north=low,south=low,up=false,waterlogged=false,west=low]", + "4996": "minecraft:andesite_wall[east=tall,north=low,south=low,up=false,waterlogged=false,west=tall]", + "4997": "minecraft:andesite_wall[east=tall,north=low,south=tall,up=true,waterlogged=true,west=none]", + "4998": "minecraft:andesite_wall[east=tall,north=low,south=tall,up=true,waterlogged=true,west=low]", + "4999": "minecraft:andesite_wall[east=tall,north=low,south=tall,up=true,waterlogged=true,west=tall]", + "5000": "minecraft:andesite_wall[east=tall,north=low,south=tall,up=true,waterlogged=false,west=none]", + "5001": "minecraft:andesite_wall[east=tall,north=low,south=tall,up=true,waterlogged=false,west=low]", + "5002": "minecraft:andesite_wall[east=tall,north=low,south=tall,up=true,waterlogged=false,west=tall]", + "5003": "minecraft:andesite_wall[east=tall,north=low,south=tall,up=false,waterlogged=true,west=none]", + "5004": "minecraft:andesite_wall[east=tall,north=low,south=tall,up=false,waterlogged=true,west=low]", + "5005": "minecraft:andesite_wall[east=tall,north=low,south=tall,up=false,waterlogged=true,west=tall]", + "5006": "minecraft:andesite_wall[east=tall,north=low,south=tall,up=false,waterlogged=false,west=none]", + "5007": "minecraft:andesite_wall[east=tall,north=low,south=tall,up=false,waterlogged=false,west=low]", + "5008": "minecraft:andesite_wall[east=tall,north=low,south=tall,up=false,waterlogged=false,west=tall]", + "5009": "minecraft:andesite_wall[east=tall,north=tall,south=none,up=true,waterlogged=true,west=none]", + "5010": "minecraft:andesite_wall[east=tall,north=tall,south=none,up=true,waterlogged=true,west=low]", + "5011": "minecraft:andesite_wall[east=tall,north=tall,south=none,up=true,waterlogged=true,west=tall]", + "5012": "minecraft:andesite_wall[east=tall,north=tall,south=none,up=true,waterlogged=false,west=none]", + "5013": "minecraft:andesite_wall[east=tall,north=tall,south=none,up=true,waterlogged=false,west=low]", + "5014": "minecraft:andesite_wall[east=tall,north=tall,south=none,up=true,waterlogged=false,west=tall]", + "5015": "minecraft:andesite_wall[east=tall,north=tall,south=none,up=false,waterlogged=true,west=none]", + "5016": "minecraft:andesite_wall[east=tall,north=tall,south=none,up=false,waterlogged=true,west=low]", + "5017": "minecraft:andesite_wall[east=tall,north=tall,south=none,up=false,waterlogged=true,west=tall]", + "5018": "minecraft:andesite_wall[east=tall,north=tall,south=none,up=false,waterlogged=false,west=none]", + "5019": "minecraft:andesite_wall[east=tall,north=tall,south=none,up=false,waterlogged=false,west=low]", + "5020": "minecraft:andesite_wall[east=tall,north=tall,south=none,up=false,waterlogged=false,west=tall]", + "5021": "minecraft:andesite_wall[east=tall,north=tall,south=low,up=true,waterlogged=true,west=none]", + "5022": "minecraft:andesite_wall[east=tall,north=tall,south=low,up=true,waterlogged=true,west=low]", + "5023": "minecraft:andesite_wall[east=tall,north=tall,south=low,up=true,waterlogged=true,west=tall]", + "5024": "minecraft:andesite_wall[east=tall,north=tall,south=low,up=true,waterlogged=false,west=none]", + "5025": "minecraft:andesite_wall[east=tall,north=tall,south=low,up=true,waterlogged=false,west=low]", + "5026": "minecraft:andesite_wall[east=tall,north=tall,south=low,up=true,waterlogged=false,west=tall]", + "5027": "minecraft:andesite_wall[east=tall,north=tall,south=low,up=false,waterlogged=true,west=none]", + "5028": "minecraft:andesite_wall[east=tall,north=tall,south=low,up=false,waterlogged=true,west=low]", + "5029": "minecraft:andesite_wall[east=tall,north=tall,south=low,up=false,waterlogged=true,west=tall]", + "5030": "minecraft:andesite_wall[east=tall,north=tall,south=low,up=false,waterlogged=false,west=none]", + "5031": "minecraft:andesite_wall[east=tall,north=tall,south=low,up=false,waterlogged=false,west=low]", + "5032": "minecraft:andesite_wall[east=tall,north=tall,south=low,up=false,waterlogged=false,west=tall]", + "5033": "minecraft:andesite_wall[east=tall,north=tall,south=tall,up=true,waterlogged=true,west=none]", + "5034": "minecraft:andesite_wall[east=tall,north=tall,south=tall,up=true,waterlogged=true,west=low]", + "5035": "minecraft:andesite_wall[east=tall,north=tall,south=tall,up=true,waterlogged=true,west=tall]", + "5036": "minecraft:andesite_wall[east=tall,north=tall,south=tall,up=true,waterlogged=false,west=none]", + "5037": "minecraft:andesite_wall[east=tall,north=tall,south=tall,up=true,waterlogged=false,west=low]", + "5038": "minecraft:andesite_wall[east=tall,north=tall,south=tall,up=true,waterlogged=false,west=tall]", + "5039": "minecraft:andesite_wall[east=tall,north=tall,south=tall,up=false,waterlogged=true,west=none]", + "5040": "minecraft:andesite_wall[east=tall,north=tall,south=tall,up=false,waterlogged=true,west=low]", + "5041": "minecraft:andesite_wall[east=tall,north=tall,south=tall,up=false,waterlogged=true,west=tall]", + "5042": "minecraft:andesite_wall[east=tall,north=tall,south=tall,up=false,waterlogged=false,west=none]", + "5043": "minecraft:andesite_wall[east=tall,north=tall,south=tall,up=false,waterlogged=false,west=low]", + "5044": "minecraft:andesite_wall[east=tall,north=tall,south=tall,up=false,waterlogged=false,west=tall]", + "5045": "minecraft:mossy_stone_brick_wall[east=none,north=none,south=none,up=true,waterlogged=true,west=none]", + "5046": "minecraft:mossy_stone_brick_wall[east=none,north=none,south=none,up=true,waterlogged=true,west=low]", + "5047": "minecraft:mossy_stone_brick_wall[east=none,north=none,south=none,up=true,waterlogged=true,west=tall]", + "5048": "minecraft:mossy_stone_brick_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=none]", + "5049": "minecraft:mossy_stone_brick_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=low]", + "5050": "minecraft:mossy_stone_brick_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=tall]", + "5051": "minecraft:mossy_stone_brick_wall[east=none,north=none,south=none,up=false,waterlogged=true,west=none]", + "5052": "minecraft:mossy_stone_brick_wall[east=none,north=none,south=none,up=false,waterlogged=true,west=low]", + "5053": "minecraft:mossy_stone_brick_wall[east=none,north=none,south=none,up=false,waterlogged=true,west=tall]", + "5054": "minecraft:mossy_stone_brick_wall[east=none,north=none,south=none,up=false,waterlogged=false,west=none]", + "5055": "minecraft:mossy_stone_brick_wall[east=none,north=none,south=none,up=false,waterlogged=false,west=low]", + "5056": "minecraft:mossy_stone_brick_wall[east=none,north=none,south=none,up=false,waterlogged=false,west=tall]", + "5057": "minecraft:mossy_stone_brick_wall[east=none,north=none,south=low,up=true,waterlogged=true,west=none]", + "5058": "minecraft:mossy_stone_brick_wall[east=none,north=none,south=low,up=true,waterlogged=true,west=low]", + "5059": "minecraft:mossy_stone_brick_wall[east=none,north=none,south=low,up=true,waterlogged=true,west=tall]", + "5060": "minecraft:mossy_stone_brick_wall[east=none,north=none,south=low,up=true,waterlogged=false,west=none]", + "5061": "minecraft:mossy_stone_brick_wall[east=none,north=none,south=low,up=true,waterlogged=false,west=low]", + "5062": "minecraft:mossy_stone_brick_wall[east=none,north=none,south=low,up=true,waterlogged=false,west=tall]", + "5063": "minecraft:mossy_stone_brick_wall[east=none,north=none,south=low,up=false,waterlogged=true,west=none]", + "5064": "minecraft:mossy_stone_brick_wall[east=none,north=none,south=low,up=false,waterlogged=true,west=low]", + "5065": "minecraft:mossy_stone_brick_wall[east=none,north=none,south=low,up=false,waterlogged=true,west=tall]", + "5066": "minecraft:mossy_stone_brick_wall[east=none,north=none,south=low,up=false,waterlogged=false,west=none]", + "5067": "minecraft:mossy_stone_brick_wall[east=none,north=none,south=low,up=false,waterlogged=false,west=low]", + "5068": "minecraft:mossy_stone_brick_wall[east=none,north=none,south=low,up=false,waterlogged=false,west=tall]", + "5069": "minecraft:mossy_stone_brick_wall[east=none,north=none,south=tall,up=true,waterlogged=true,west=none]", + "5070": "minecraft:mossy_stone_brick_wall[east=none,north=none,south=tall,up=true,waterlogged=true,west=low]", + "5071": "minecraft:mossy_stone_brick_wall[east=none,north=none,south=tall,up=true,waterlogged=true,west=tall]", + "5072": "minecraft:mossy_stone_brick_wall[east=none,north=none,south=tall,up=true,waterlogged=false,west=none]", + "5073": "minecraft:mossy_stone_brick_wall[east=none,north=none,south=tall,up=true,waterlogged=false,west=low]", + "5074": "minecraft:mossy_stone_brick_wall[east=none,north=none,south=tall,up=true,waterlogged=false,west=tall]", + "5075": "minecraft:mossy_stone_brick_wall[east=none,north=none,south=tall,up=false,waterlogged=true,west=none]", + "5076": "minecraft:mossy_stone_brick_wall[east=none,north=none,south=tall,up=false,waterlogged=true,west=low]", + "5077": "minecraft:mossy_stone_brick_wall[east=none,north=none,south=tall,up=false,waterlogged=true,west=tall]", + "5078": "minecraft:mossy_stone_brick_wall[east=none,north=none,south=tall,up=false,waterlogged=false,west=none]", + "5079": "minecraft:mossy_stone_brick_wall[east=none,north=none,south=tall,up=false,waterlogged=false,west=low]", + "5080": "minecraft:mossy_stone_brick_wall[east=none,north=none,south=tall,up=false,waterlogged=false,west=tall]", + "5081": "minecraft:mossy_stone_brick_wall[east=none,north=low,south=none,up=true,waterlogged=true,west=none]", + "5082": "minecraft:mossy_stone_brick_wall[east=none,north=low,south=none,up=true,waterlogged=true,west=low]", + "5083": "minecraft:mossy_stone_brick_wall[east=none,north=low,south=none,up=true,waterlogged=true,west=tall]", + "5084": "minecraft:mossy_stone_brick_wall[east=none,north=low,south=none,up=true,waterlogged=false,west=none]", + "5085": "minecraft:mossy_stone_brick_wall[east=none,north=low,south=none,up=true,waterlogged=false,west=low]", + "5086": "minecraft:mossy_stone_brick_wall[east=none,north=low,south=none,up=true,waterlogged=false,west=tall]", + "5087": "minecraft:mossy_stone_brick_wall[east=none,north=low,south=none,up=false,waterlogged=true,west=none]", + "5088": "minecraft:mossy_stone_brick_wall[east=none,north=low,south=none,up=false,waterlogged=true,west=low]", + "5089": "minecraft:mossy_stone_brick_wall[east=none,north=low,south=none,up=false,waterlogged=true,west=tall]", + "5090": "minecraft:mossy_stone_brick_wall[east=none,north=low,south=none,up=false,waterlogged=false,west=none]", + "5091": "minecraft:mossy_stone_brick_wall[east=none,north=low,south=none,up=false,waterlogged=false,west=low]", + "5092": "minecraft:mossy_stone_brick_wall[east=none,north=low,south=none,up=false,waterlogged=false,west=tall]", + "5093": "minecraft:mossy_stone_brick_wall[east=none,north=low,south=low,up=true,waterlogged=true,west=none]", + "5094": "minecraft:mossy_stone_brick_wall[east=none,north=low,south=low,up=true,waterlogged=true,west=low]", + "5095": "minecraft:mossy_stone_brick_wall[east=none,north=low,south=low,up=true,waterlogged=true,west=tall]", + "5096": "minecraft:mossy_stone_brick_wall[east=none,north=low,south=low,up=true,waterlogged=false,west=none]", + "5097": "minecraft:mossy_stone_brick_wall[east=none,north=low,south=low,up=true,waterlogged=false,west=low]", + "5098": "minecraft:mossy_stone_brick_wall[east=none,north=low,south=low,up=true,waterlogged=false,west=tall]", + "5099": "minecraft:mossy_stone_brick_wall[east=none,north=low,south=low,up=false,waterlogged=true,west=none]", + "5100": "minecraft:mossy_stone_brick_wall[east=none,north=low,south=low,up=false,waterlogged=true,west=low]", + "5101": "minecraft:mossy_stone_brick_wall[east=none,north=low,south=low,up=false,waterlogged=true,west=tall]", + "5102": "minecraft:mossy_stone_brick_wall[east=none,north=low,south=low,up=false,waterlogged=false,west=none]", + "5103": "minecraft:mossy_stone_brick_wall[east=none,north=low,south=low,up=false,waterlogged=false,west=low]", + "5104": "minecraft:mossy_stone_brick_wall[east=none,north=low,south=low,up=false,waterlogged=false,west=tall]", + "5105": "minecraft:mossy_stone_brick_wall[east=none,north=low,south=tall,up=true,waterlogged=true,west=none]", + "5106": "minecraft:mossy_stone_brick_wall[east=none,north=low,south=tall,up=true,waterlogged=true,west=low]", + "5107": "minecraft:mossy_stone_brick_wall[east=none,north=low,south=tall,up=true,waterlogged=true,west=tall]", + "5108": "minecraft:mossy_stone_brick_wall[east=none,north=low,south=tall,up=true,waterlogged=false,west=none]", + "5109": "minecraft:mossy_stone_brick_wall[east=none,north=low,south=tall,up=true,waterlogged=false,west=low]", + "5110": "minecraft:mossy_stone_brick_wall[east=none,north=low,south=tall,up=true,waterlogged=false,west=tall]", + "5111": "minecraft:mossy_stone_brick_wall[east=none,north=low,south=tall,up=false,waterlogged=true,west=none]", + "5112": "minecraft:mossy_stone_brick_wall[east=none,north=low,south=tall,up=false,waterlogged=true,west=low]", + "5113": "minecraft:mossy_stone_brick_wall[east=none,north=low,south=tall,up=false,waterlogged=true,west=tall]", + "5114": "minecraft:mossy_stone_brick_wall[east=none,north=low,south=tall,up=false,waterlogged=false,west=none]", + "5115": "minecraft:mossy_stone_brick_wall[east=none,north=low,south=tall,up=false,waterlogged=false,west=low]", + "5116": "minecraft:mossy_stone_brick_wall[east=none,north=low,south=tall,up=false,waterlogged=false,west=tall]", + "5117": "minecraft:mossy_stone_brick_wall[east=none,north=tall,south=none,up=true,waterlogged=true,west=none]", + "5118": "minecraft:mossy_stone_brick_wall[east=none,north=tall,south=none,up=true,waterlogged=true,west=low]", + "5119": "minecraft:mossy_stone_brick_wall[east=none,north=tall,south=none,up=true,waterlogged=true,west=tall]", + "5120": "minecraft:mossy_stone_brick_wall[east=none,north=tall,south=none,up=true,waterlogged=false,west=none]", + "5121": "minecraft:mossy_stone_brick_wall[east=none,north=tall,south=none,up=true,waterlogged=false,west=low]", + "5122": "minecraft:mossy_stone_brick_wall[east=none,north=tall,south=none,up=true,waterlogged=false,west=tall]", + "5123": "minecraft:mossy_stone_brick_wall[east=none,north=tall,south=none,up=false,waterlogged=true,west=none]", + "5124": "minecraft:mossy_stone_brick_wall[east=none,north=tall,south=none,up=false,waterlogged=true,west=low]", + "5125": "minecraft:mossy_stone_brick_wall[east=none,north=tall,south=none,up=false,waterlogged=true,west=tall]", + "5126": "minecraft:mossy_stone_brick_wall[east=none,north=tall,south=none,up=false,waterlogged=false,west=none]", + "5127": "minecraft:mossy_stone_brick_wall[east=none,north=tall,south=none,up=false,waterlogged=false,west=low]", + "5128": "minecraft:mossy_stone_brick_wall[east=none,north=tall,south=none,up=false,waterlogged=false,west=tall]", + "5129": "minecraft:mossy_stone_brick_wall[east=none,north=tall,south=low,up=true,waterlogged=true,west=none]", + "5130": "minecraft:mossy_stone_brick_wall[east=none,north=tall,south=low,up=true,waterlogged=true,west=low]", + "5131": "minecraft:mossy_stone_brick_wall[east=none,north=tall,south=low,up=true,waterlogged=true,west=tall]", + "5132": "minecraft:mossy_stone_brick_wall[east=none,north=tall,south=low,up=true,waterlogged=false,west=none]", + "5133": "minecraft:mossy_stone_brick_wall[east=none,north=tall,south=low,up=true,waterlogged=false,west=low]", + "5134": "minecraft:mossy_stone_brick_wall[east=none,north=tall,south=low,up=true,waterlogged=false,west=tall]", + "5135": "minecraft:mossy_stone_brick_wall[east=none,north=tall,south=low,up=false,waterlogged=true,west=none]", + "5136": "minecraft:mossy_stone_brick_wall[east=none,north=tall,south=low,up=false,waterlogged=true,west=low]", + "5137": "minecraft:mossy_stone_brick_wall[east=none,north=tall,south=low,up=false,waterlogged=true,west=tall]", + "5138": "minecraft:mossy_stone_brick_wall[east=none,north=tall,south=low,up=false,waterlogged=false,west=none]", + "5139": "minecraft:mossy_stone_brick_wall[east=none,north=tall,south=low,up=false,waterlogged=false,west=low]", + "5140": "minecraft:mossy_stone_brick_wall[east=none,north=tall,south=low,up=false,waterlogged=false,west=tall]", + "5141": "minecraft:mossy_stone_brick_wall[east=none,north=tall,south=tall,up=true,waterlogged=true,west=none]", + "5142": "minecraft:mossy_stone_brick_wall[east=none,north=tall,south=tall,up=true,waterlogged=true,west=low]", + "5143": "minecraft:mossy_stone_brick_wall[east=none,north=tall,south=tall,up=true,waterlogged=true,west=tall]", + "5144": "minecraft:mossy_stone_brick_wall[east=none,north=tall,south=tall,up=true,waterlogged=false,west=none]", + "5145": "minecraft:mossy_stone_brick_wall[east=none,north=tall,south=tall,up=true,waterlogged=false,west=low]", + "5146": "minecraft:mossy_stone_brick_wall[east=none,north=tall,south=tall,up=true,waterlogged=false,west=tall]", + "5147": "minecraft:mossy_stone_brick_wall[east=none,north=tall,south=tall,up=false,waterlogged=true,west=none]", + "5148": "minecraft:mossy_stone_brick_wall[east=none,north=tall,south=tall,up=false,waterlogged=true,west=low]", + "5149": "minecraft:mossy_stone_brick_wall[east=none,north=tall,south=tall,up=false,waterlogged=true,west=tall]", + "5150": "minecraft:mossy_stone_brick_wall[east=none,north=tall,south=tall,up=false,waterlogged=false,west=none]", + "5151": "minecraft:mossy_stone_brick_wall[east=none,north=tall,south=tall,up=false,waterlogged=false,west=low]", + "5152": "minecraft:mossy_stone_brick_wall[east=none,north=tall,south=tall,up=false,waterlogged=false,west=tall]", + "5153": "minecraft:mossy_stone_brick_wall[east=low,north=none,south=none,up=true,waterlogged=true,west=none]", + "5154": "minecraft:mossy_stone_brick_wall[east=low,north=none,south=none,up=true,waterlogged=true,west=low]", + "5155": "minecraft:mossy_stone_brick_wall[east=low,north=none,south=none,up=true,waterlogged=true,west=tall]", + "5156": "minecraft:mossy_stone_brick_wall[east=low,north=none,south=none,up=true,waterlogged=false,west=none]", + "5157": "minecraft:mossy_stone_brick_wall[east=low,north=none,south=none,up=true,waterlogged=false,west=low]", + "5158": "minecraft:mossy_stone_brick_wall[east=low,north=none,south=none,up=true,waterlogged=false,west=tall]", + "5159": "minecraft:mossy_stone_brick_wall[east=low,north=none,south=none,up=false,waterlogged=true,west=none]", + "5160": "minecraft:mossy_stone_brick_wall[east=low,north=none,south=none,up=false,waterlogged=true,west=low]", + "5161": "minecraft:mossy_stone_brick_wall[east=low,north=none,south=none,up=false,waterlogged=true,west=tall]", + "5162": "minecraft:mossy_stone_brick_wall[east=low,north=none,south=none,up=false,waterlogged=false,west=none]", + "5163": "minecraft:mossy_stone_brick_wall[east=low,north=none,south=none,up=false,waterlogged=false,west=low]", + "5164": "minecraft:mossy_stone_brick_wall[east=low,north=none,south=none,up=false,waterlogged=false,west=tall]", + "5165": "minecraft:mossy_stone_brick_wall[east=low,north=none,south=low,up=true,waterlogged=true,west=none]", + "5166": "minecraft:mossy_stone_brick_wall[east=low,north=none,south=low,up=true,waterlogged=true,west=low]", + "5167": "minecraft:mossy_stone_brick_wall[east=low,north=none,south=low,up=true,waterlogged=true,west=tall]", + "5168": "minecraft:mossy_stone_brick_wall[east=low,north=none,south=low,up=true,waterlogged=false,west=none]", + "5169": "minecraft:mossy_stone_brick_wall[east=low,north=none,south=low,up=true,waterlogged=false,west=low]", + "5170": "minecraft:mossy_stone_brick_wall[east=low,north=none,south=low,up=true,waterlogged=false,west=tall]", + "5171": "minecraft:mossy_stone_brick_wall[east=low,north=none,south=low,up=false,waterlogged=true,west=none]", + "5172": "minecraft:mossy_stone_brick_wall[east=low,north=none,south=low,up=false,waterlogged=true,west=low]", + "5173": "minecraft:mossy_stone_brick_wall[east=low,north=none,south=low,up=false,waterlogged=true,west=tall]", + "5174": "minecraft:mossy_stone_brick_wall[east=low,north=none,south=low,up=false,waterlogged=false,west=none]", + "5175": "minecraft:mossy_stone_brick_wall[east=low,north=none,south=low,up=false,waterlogged=false,west=low]", + "5176": "minecraft:mossy_stone_brick_wall[east=low,north=none,south=low,up=false,waterlogged=false,west=tall]", + "5177": "minecraft:mossy_stone_brick_wall[east=low,north=none,south=tall,up=true,waterlogged=true,west=none]", + "5178": "minecraft:mossy_stone_brick_wall[east=low,north=none,south=tall,up=true,waterlogged=true,west=low]", + "5179": "minecraft:mossy_stone_brick_wall[east=low,north=none,south=tall,up=true,waterlogged=true,west=tall]", + "5180": "minecraft:mossy_stone_brick_wall[east=low,north=none,south=tall,up=true,waterlogged=false,west=none]", + "5181": "minecraft:mossy_stone_brick_wall[east=low,north=none,south=tall,up=true,waterlogged=false,west=low]", + "5182": "minecraft:mossy_stone_brick_wall[east=low,north=none,south=tall,up=true,waterlogged=false,west=tall]", + "5183": "minecraft:mossy_stone_brick_wall[east=low,north=none,south=tall,up=false,waterlogged=true,west=none]", + "5184": "minecraft:mossy_stone_brick_wall[east=low,north=none,south=tall,up=false,waterlogged=true,west=low]", + "5185": "minecraft:mossy_stone_brick_wall[east=low,north=none,south=tall,up=false,waterlogged=true,west=tall]", + "5186": "minecraft:mossy_stone_brick_wall[east=low,north=none,south=tall,up=false,waterlogged=false,west=none]", + "5187": "minecraft:mossy_stone_brick_wall[east=low,north=none,south=tall,up=false,waterlogged=false,west=low]", + "5188": "minecraft:mossy_stone_brick_wall[east=low,north=none,south=tall,up=false,waterlogged=false,west=tall]", + "5189": "minecraft:mossy_stone_brick_wall[east=low,north=low,south=none,up=true,waterlogged=true,west=none]", + "5190": "minecraft:mossy_stone_brick_wall[east=low,north=low,south=none,up=true,waterlogged=true,west=low]", + "5191": "minecraft:mossy_stone_brick_wall[east=low,north=low,south=none,up=true,waterlogged=true,west=tall]", + "5192": "minecraft:mossy_stone_brick_wall[east=low,north=low,south=none,up=true,waterlogged=false,west=none]", + "5193": "minecraft:mossy_stone_brick_wall[east=low,north=low,south=none,up=true,waterlogged=false,west=low]", + "5194": "minecraft:mossy_stone_brick_wall[east=low,north=low,south=none,up=true,waterlogged=false,west=tall]", + "5195": "minecraft:mossy_stone_brick_wall[east=low,north=low,south=none,up=false,waterlogged=true,west=none]", + "5196": "minecraft:mossy_stone_brick_wall[east=low,north=low,south=none,up=false,waterlogged=true,west=low]", + "5197": "minecraft:mossy_stone_brick_wall[east=low,north=low,south=none,up=false,waterlogged=true,west=tall]", + "5198": "minecraft:mossy_stone_brick_wall[east=low,north=low,south=none,up=false,waterlogged=false,west=none]", + "5199": "minecraft:mossy_stone_brick_wall[east=low,north=low,south=none,up=false,waterlogged=false,west=low]", + "5200": "minecraft:mossy_stone_brick_wall[east=low,north=low,south=none,up=false,waterlogged=false,west=tall]", + "5201": "minecraft:mossy_stone_brick_wall[east=low,north=low,south=low,up=true,waterlogged=true,west=none]", + "5202": "minecraft:mossy_stone_brick_wall[east=low,north=low,south=low,up=true,waterlogged=true,west=low]", + "5203": "minecraft:mossy_stone_brick_wall[east=low,north=low,south=low,up=true,waterlogged=true,west=tall]", + "5204": "minecraft:mossy_stone_brick_wall[east=low,north=low,south=low,up=true,waterlogged=false,west=none]", + "5205": "minecraft:mossy_stone_brick_wall[east=low,north=low,south=low,up=true,waterlogged=false,west=low]", + "5206": "minecraft:mossy_stone_brick_wall[east=low,north=low,south=low,up=true,waterlogged=false,west=tall]", + "5207": "minecraft:mossy_stone_brick_wall[east=low,north=low,south=low,up=false,waterlogged=true,west=none]", + "5208": "minecraft:mossy_stone_brick_wall[east=low,north=low,south=low,up=false,waterlogged=true,west=low]", + "5209": "minecraft:mossy_stone_brick_wall[east=low,north=low,south=low,up=false,waterlogged=true,west=tall]", + "5210": "minecraft:mossy_stone_brick_wall[east=low,north=low,south=low,up=false,waterlogged=false,west=none]", + "5211": "minecraft:mossy_stone_brick_wall[east=low,north=low,south=low,up=false,waterlogged=false,west=low]", + "5212": "minecraft:mossy_stone_brick_wall[east=low,north=low,south=low,up=false,waterlogged=false,west=tall]", + "5213": "minecraft:mossy_stone_brick_wall[east=low,north=low,south=tall,up=true,waterlogged=true,west=none]", + "5214": "minecraft:mossy_stone_brick_wall[east=low,north=low,south=tall,up=true,waterlogged=true,west=low]", + "5215": "minecraft:mossy_stone_brick_wall[east=low,north=low,south=tall,up=true,waterlogged=true,west=tall]", + "5216": "minecraft:mossy_stone_brick_wall[east=low,north=low,south=tall,up=true,waterlogged=false,west=none]", + "5217": "minecraft:mossy_stone_brick_wall[east=low,north=low,south=tall,up=true,waterlogged=false,west=low]", + "5218": "minecraft:mossy_stone_brick_wall[east=low,north=low,south=tall,up=true,waterlogged=false,west=tall]", + "5219": "minecraft:mossy_stone_brick_wall[east=low,north=low,south=tall,up=false,waterlogged=true,west=none]", + "5220": "minecraft:mossy_stone_brick_wall[east=low,north=low,south=tall,up=false,waterlogged=true,west=low]", + "5221": "minecraft:mossy_stone_brick_wall[east=low,north=low,south=tall,up=false,waterlogged=true,west=tall]", + "5222": "minecraft:mossy_stone_brick_wall[east=low,north=low,south=tall,up=false,waterlogged=false,west=none]", + "5223": "minecraft:mossy_stone_brick_wall[east=low,north=low,south=tall,up=false,waterlogged=false,west=low]", + "5224": "minecraft:mossy_stone_brick_wall[east=low,north=low,south=tall,up=false,waterlogged=false,west=tall]", + "5225": "minecraft:mossy_stone_brick_wall[east=low,north=tall,south=none,up=true,waterlogged=true,west=none]", + "5226": "minecraft:mossy_stone_brick_wall[east=low,north=tall,south=none,up=true,waterlogged=true,west=low]", + "5227": "minecraft:mossy_stone_brick_wall[east=low,north=tall,south=none,up=true,waterlogged=true,west=tall]", + "5228": "minecraft:mossy_stone_brick_wall[east=low,north=tall,south=none,up=true,waterlogged=false,west=none]", + "5229": "minecraft:mossy_stone_brick_wall[east=low,north=tall,south=none,up=true,waterlogged=false,west=low]", + "5230": "minecraft:mossy_stone_brick_wall[east=low,north=tall,south=none,up=true,waterlogged=false,west=tall]", + "5231": "minecraft:mossy_stone_brick_wall[east=low,north=tall,south=none,up=false,waterlogged=true,west=none]", + "5232": "minecraft:mossy_stone_brick_wall[east=low,north=tall,south=none,up=false,waterlogged=true,west=low]", + "5233": "minecraft:mossy_stone_brick_wall[east=low,north=tall,south=none,up=false,waterlogged=true,west=tall]", + "5234": "minecraft:mossy_stone_brick_wall[east=low,north=tall,south=none,up=false,waterlogged=false,west=none]", + "5235": "minecraft:mossy_stone_brick_wall[east=low,north=tall,south=none,up=false,waterlogged=false,west=low]", + "5236": "minecraft:mossy_stone_brick_wall[east=low,north=tall,south=none,up=false,waterlogged=false,west=tall]", + "5237": "minecraft:mossy_stone_brick_wall[east=low,north=tall,south=low,up=true,waterlogged=true,west=none]", + "5238": "minecraft:mossy_stone_brick_wall[east=low,north=tall,south=low,up=true,waterlogged=true,west=low]", + "5239": "minecraft:mossy_stone_brick_wall[east=low,north=tall,south=low,up=true,waterlogged=true,west=tall]", + "5240": "minecraft:mossy_stone_brick_wall[east=low,north=tall,south=low,up=true,waterlogged=false,west=none]", + "5241": "minecraft:mossy_stone_brick_wall[east=low,north=tall,south=low,up=true,waterlogged=false,west=low]", + "5242": "minecraft:mossy_stone_brick_wall[east=low,north=tall,south=low,up=true,waterlogged=false,west=tall]", + "5243": "minecraft:mossy_stone_brick_wall[east=low,north=tall,south=low,up=false,waterlogged=true,west=none]", + "5244": "minecraft:mossy_stone_brick_wall[east=low,north=tall,south=low,up=false,waterlogged=true,west=low]", + "5245": "minecraft:mossy_stone_brick_wall[east=low,north=tall,south=low,up=false,waterlogged=true,west=tall]", + "5246": "minecraft:mossy_stone_brick_wall[east=low,north=tall,south=low,up=false,waterlogged=false,west=none]", + "5247": "minecraft:mossy_stone_brick_wall[east=low,north=tall,south=low,up=false,waterlogged=false,west=low]", + "5248": "minecraft:mossy_stone_brick_wall[east=low,north=tall,south=low,up=false,waterlogged=false,west=tall]", + "5249": "minecraft:mossy_stone_brick_wall[east=low,north=tall,south=tall,up=true,waterlogged=true,west=none]", + "5250": "minecraft:mossy_stone_brick_wall[east=low,north=tall,south=tall,up=true,waterlogged=true,west=low]", + "5251": "minecraft:mossy_stone_brick_wall[east=low,north=tall,south=tall,up=true,waterlogged=true,west=tall]", + "5252": "minecraft:mossy_stone_brick_wall[east=low,north=tall,south=tall,up=true,waterlogged=false,west=none]", + "5253": "minecraft:mossy_stone_brick_wall[east=low,north=tall,south=tall,up=true,waterlogged=false,west=low]", + "5254": "minecraft:mossy_stone_brick_wall[east=low,north=tall,south=tall,up=true,waterlogged=false,west=tall]", + "5255": "minecraft:mossy_stone_brick_wall[east=low,north=tall,south=tall,up=false,waterlogged=true,west=none]", + "5256": "minecraft:mossy_stone_brick_wall[east=low,north=tall,south=tall,up=false,waterlogged=true,west=low]", + "5257": "minecraft:mossy_stone_brick_wall[east=low,north=tall,south=tall,up=false,waterlogged=true,west=tall]", + "5258": "minecraft:mossy_stone_brick_wall[east=low,north=tall,south=tall,up=false,waterlogged=false,west=none]", + "5259": "minecraft:mossy_stone_brick_wall[east=low,north=tall,south=tall,up=false,waterlogged=false,west=low]", + "5260": "minecraft:mossy_stone_brick_wall[east=low,north=tall,south=tall,up=false,waterlogged=false,west=tall]", + "5261": "minecraft:mossy_stone_brick_wall[east=tall,north=none,south=none,up=true,waterlogged=true,west=none]", + "5262": "minecraft:mossy_stone_brick_wall[east=tall,north=none,south=none,up=true,waterlogged=true,west=low]", + "5263": "minecraft:mossy_stone_brick_wall[east=tall,north=none,south=none,up=true,waterlogged=true,west=tall]", + "5264": "minecraft:mossy_stone_brick_wall[east=tall,north=none,south=none,up=true,waterlogged=false,west=none]", + "5265": "minecraft:mossy_stone_brick_wall[east=tall,north=none,south=none,up=true,waterlogged=false,west=low]", + "5266": "minecraft:mossy_stone_brick_wall[east=tall,north=none,south=none,up=true,waterlogged=false,west=tall]", + "5267": "minecraft:mossy_stone_brick_wall[east=tall,north=none,south=none,up=false,waterlogged=true,west=none]", + "5268": "minecraft:mossy_stone_brick_wall[east=tall,north=none,south=none,up=false,waterlogged=true,west=low]", + "5269": "minecraft:mossy_stone_brick_wall[east=tall,north=none,south=none,up=false,waterlogged=true,west=tall]", + "5270": "minecraft:mossy_stone_brick_wall[east=tall,north=none,south=none,up=false,waterlogged=false,west=none]", + "5271": "minecraft:mossy_stone_brick_wall[east=tall,north=none,south=none,up=false,waterlogged=false,west=low]", + "5272": "minecraft:mossy_stone_brick_wall[east=tall,north=none,south=none,up=false,waterlogged=false,west=tall]", + "5273": "minecraft:mossy_stone_brick_wall[east=tall,north=none,south=low,up=true,waterlogged=true,west=none]", + "5274": "minecraft:mossy_stone_brick_wall[east=tall,north=none,south=low,up=true,waterlogged=true,west=low]", + "5275": "minecraft:mossy_stone_brick_wall[east=tall,north=none,south=low,up=true,waterlogged=true,west=tall]", + "5276": "minecraft:mossy_stone_brick_wall[east=tall,north=none,south=low,up=true,waterlogged=false,west=none]", + "5277": "minecraft:mossy_stone_brick_wall[east=tall,north=none,south=low,up=true,waterlogged=false,west=low]", + "5278": "minecraft:mossy_stone_brick_wall[east=tall,north=none,south=low,up=true,waterlogged=false,west=tall]", + "5279": "minecraft:mossy_stone_brick_wall[east=tall,north=none,south=low,up=false,waterlogged=true,west=none]", + "5280": "minecraft:mossy_stone_brick_wall[east=tall,north=none,south=low,up=false,waterlogged=true,west=low]", + "5281": "minecraft:mossy_stone_brick_wall[east=tall,north=none,south=low,up=false,waterlogged=true,west=tall]", + "5282": "minecraft:mossy_stone_brick_wall[east=tall,north=none,south=low,up=false,waterlogged=false,west=none]", + "5283": "minecraft:mossy_stone_brick_wall[east=tall,north=none,south=low,up=false,waterlogged=false,west=low]", + "5284": "minecraft:mossy_stone_brick_wall[east=tall,north=none,south=low,up=false,waterlogged=false,west=tall]", + "5285": "minecraft:mossy_stone_brick_wall[east=tall,north=none,south=tall,up=true,waterlogged=true,west=none]", + "5286": "minecraft:mossy_stone_brick_wall[east=tall,north=none,south=tall,up=true,waterlogged=true,west=low]", + "5287": "minecraft:mossy_stone_brick_wall[east=tall,north=none,south=tall,up=true,waterlogged=true,west=tall]", + "5288": "minecraft:mossy_stone_brick_wall[east=tall,north=none,south=tall,up=true,waterlogged=false,west=none]", + "5289": "minecraft:mossy_stone_brick_wall[east=tall,north=none,south=tall,up=true,waterlogged=false,west=low]", + "5290": "minecraft:mossy_stone_brick_wall[east=tall,north=none,south=tall,up=true,waterlogged=false,west=tall]", + "5291": "minecraft:mossy_stone_brick_wall[east=tall,north=none,south=tall,up=false,waterlogged=true,west=none]", + "5292": "minecraft:mossy_stone_brick_wall[east=tall,north=none,south=tall,up=false,waterlogged=true,west=low]", + "5293": "minecraft:mossy_stone_brick_wall[east=tall,north=none,south=tall,up=false,waterlogged=true,west=tall]", + "5294": "minecraft:mossy_stone_brick_wall[east=tall,north=none,south=tall,up=false,waterlogged=false,west=none]", + "5295": "minecraft:mossy_stone_brick_wall[east=tall,north=none,south=tall,up=false,waterlogged=false,west=low]", + "5296": "minecraft:mossy_stone_brick_wall[east=tall,north=none,south=tall,up=false,waterlogged=false,west=tall]", + "5297": "minecraft:mossy_stone_brick_wall[east=tall,north=low,south=none,up=true,waterlogged=true,west=none]", + "5298": "minecraft:mossy_stone_brick_wall[east=tall,north=low,south=none,up=true,waterlogged=true,west=low]", + "5299": "minecraft:mossy_stone_brick_wall[east=tall,north=low,south=none,up=true,waterlogged=true,west=tall]", + "5300": "minecraft:mossy_stone_brick_wall[east=tall,north=low,south=none,up=true,waterlogged=false,west=none]", + "5301": "minecraft:mossy_stone_brick_wall[east=tall,north=low,south=none,up=true,waterlogged=false,west=low]", + "5302": "minecraft:mossy_stone_brick_wall[east=tall,north=low,south=none,up=true,waterlogged=false,west=tall]", + "5303": "minecraft:mossy_stone_brick_wall[east=tall,north=low,south=none,up=false,waterlogged=true,west=none]", + "5304": "minecraft:mossy_stone_brick_wall[east=tall,north=low,south=none,up=false,waterlogged=true,west=low]", + "5305": "minecraft:mossy_stone_brick_wall[east=tall,north=low,south=none,up=false,waterlogged=true,west=tall]", + "5306": "minecraft:mossy_stone_brick_wall[east=tall,north=low,south=none,up=false,waterlogged=false,west=none]", + "5307": "minecraft:mossy_stone_brick_wall[east=tall,north=low,south=none,up=false,waterlogged=false,west=low]", + "5308": "minecraft:mossy_stone_brick_wall[east=tall,north=low,south=none,up=false,waterlogged=false,west=tall]", + "5309": "minecraft:mossy_stone_brick_wall[east=tall,north=low,south=low,up=true,waterlogged=true,west=none]", + "5310": "minecraft:mossy_stone_brick_wall[east=tall,north=low,south=low,up=true,waterlogged=true,west=low]", + "5311": "minecraft:mossy_stone_brick_wall[east=tall,north=low,south=low,up=true,waterlogged=true,west=tall]", + "5312": "minecraft:mossy_stone_brick_wall[east=tall,north=low,south=low,up=true,waterlogged=false,west=none]", + "5313": "minecraft:mossy_stone_brick_wall[east=tall,north=low,south=low,up=true,waterlogged=false,west=low]", + "5314": "minecraft:mossy_stone_brick_wall[east=tall,north=low,south=low,up=true,waterlogged=false,west=tall]", + "5315": "minecraft:mossy_stone_brick_wall[east=tall,north=low,south=low,up=false,waterlogged=true,west=none]", + "5316": "minecraft:mossy_stone_brick_wall[east=tall,north=low,south=low,up=false,waterlogged=true,west=low]", + "5317": "minecraft:mossy_stone_brick_wall[east=tall,north=low,south=low,up=false,waterlogged=true,west=tall]", + "5318": "minecraft:mossy_stone_brick_wall[east=tall,north=low,south=low,up=false,waterlogged=false,west=none]", + "5319": "minecraft:mossy_stone_brick_wall[east=tall,north=low,south=low,up=false,waterlogged=false,west=low]", + "5320": "minecraft:mossy_stone_brick_wall[east=tall,north=low,south=low,up=false,waterlogged=false,west=tall]", + "5321": "minecraft:mossy_stone_brick_wall[east=tall,north=low,south=tall,up=true,waterlogged=true,west=none]", + "5322": "minecraft:mossy_stone_brick_wall[east=tall,north=low,south=tall,up=true,waterlogged=true,west=low]", + "5323": "minecraft:mossy_stone_brick_wall[east=tall,north=low,south=tall,up=true,waterlogged=true,west=tall]", + "5324": "minecraft:mossy_stone_brick_wall[east=tall,north=low,south=tall,up=true,waterlogged=false,west=none]", + "5325": "minecraft:mossy_stone_brick_wall[east=tall,north=low,south=tall,up=true,waterlogged=false,west=low]", + "5326": "minecraft:mossy_stone_brick_wall[east=tall,north=low,south=tall,up=true,waterlogged=false,west=tall]", + "5327": "minecraft:mossy_stone_brick_wall[east=tall,north=low,south=tall,up=false,waterlogged=true,west=none]", + "5328": "minecraft:mossy_stone_brick_wall[east=tall,north=low,south=tall,up=false,waterlogged=true,west=low]", + "5329": "minecraft:mossy_stone_brick_wall[east=tall,north=low,south=tall,up=false,waterlogged=true,west=tall]", + "5330": "minecraft:mossy_stone_brick_wall[east=tall,north=low,south=tall,up=false,waterlogged=false,west=none]", + "5331": "minecraft:mossy_stone_brick_wall[east=tall,north=low,south=tall,up=false,waterlogged=false,west=low]", + "5332": "minecraft:mossy_stone_brick_wall[east=tall,north=low,south=tall,up=false,waterlogged=false,west=tall]", + "5333": "minecraft:mossy_stone_brick_wall[east=tall,north=tall,south=none,up=true,waterlogged=true,west=none]", + "5334": "minecraft:mossy_stone_brick_wall[east=tall,north=tall,south=none,up=true,waterlogged=true,west=low]", + "5335": "minecraft:mossy_stone_brick_wall[east=tall,north=tall,south=none,up=true,waterlogged=true,west=tall]", + "5336": "minecraft:mossy_stone_brick_wall[east=tall,north=tall,south=none,up=true,waterlogged=false,west=none]", + "5337": "minecraft:mossy_stone_brick_wall[east=tall,north=tall,south=none,up=true,waterlogged=false,west=low]", + "5338": "minecraft:mossy_stone_brick_wall[east=tall,north=tall,south=none,up=true,waterlogged=false,west=tall]", + "5339": "minecraft:mossy_stone_brick_wall[east=tall,north=tall,south=none,up=false,waterlogged=true,west=none]", + "5340": "minecraft:mossy_stone_brick_wall[east=tall,north=tall,south=none,up=false,waterlogged=true,west=low]", + "5341": "minecraft:mossy_stone_brick_wall[east=tall,north=tall,south=none,up=false,waterlogged=true,west=tall]", + "5342": "minecraft:mossy_stone_brick_wall[east=tall,north=tall,south=none,up=false,waterlogged=false,west=none]", + "5343": "minecraft:mossy_stone_brick_wall[east=tall,north=tall,south=none,up=false,waterlogged=false,west=low]", + "5344": "minecraft:mossy_stone_brick_wall[east=tall,north=tall,south=none,up=false,waterlogged=false,west=tall]", + "5345": "minecraft:mossy_stone_brick_wall[east=tall,north=tall,south=low,up=true,waterlogged=true,west=none]", + "5346": "minecraft:mossy_stone_brick_wall[east=tall,north=tall,south=low,up=true,waterlogged=true,west=low]", + "5347": "minecraft:mossy_stone_brick_wall[east=tall,north=tall,south=low,up=true,waterlogged=true,west=tall]", + "5348": "minecraft:mossy_stone_brick_wall[east=tall,north=tall,south=low,up=true,waterlogged=false,west=none]", + "5349": "minecraft:mossy_stone_brick_wall[east=tall,north=tall,south=low,up=true,waterlogged=false,west=low]", + "5350": "minecraft:mossy_stone_brick_wall[east=tall,north=tall,south=low,up=true,waterlogged=false,west=tall]", + "5351": "minecraft:mossy_stone_brick_wall[east=tall,north=tall,south=low,up=false,waterlogged=true,west=none]", + "5352": "minecraft:mossy_stone_brick_wall[east=tall,north=tall,south=low,up=false,waterlogged=true,west=low]", + "5353": "minecraft:mossy_stone_brick_wall[east=tall,north=tall,south=low,up=false,waterlogged=true,west=tall]", + "5354": "minecraft:mossy_stone_brick_wall[east=tall,north=tall,south=low,up=false,waterlogged=false,west=none]", + "5355": "minecraft:mossy_stone_brick_wall[east=tall,north=tall,south=low,up=false,waterlogged=false,west=low]", + "5356": "minecraft:mossy_stone_brick_wall[east=tall,north=tall,south=low,up=false,waterlogged=false,west=tall]", + "5357": "minecraft:mossy_stone_brick_wall[east=tall,north=tall,south=tall,up=true,waterlogged=true,west=none]", + "5358": "minecraft:mossy_stone_brick_wall[east=tall,north=tall,south=tall,up=true,waterlogged=true,west=low]", + "5359": "minecraft:mossy_stone_brick_wall[east=tall,north=tall,south=tall,up=true,waterlogged=true,west=tall]", + "5360": "minecraft:mossy_stone_brick_wall[east=tall,north=tall,south=tall,up=true,waterlogged=false,west=none]", + "5361": "minecraft:mossy_stone_brick_wall[east=tall,north=tall,south=tall,up=true,waterlogged=false,west=low]", + "5362": "minecraft:mossy_stone_brick_wall[east=tall,north=tall,south=tall,up=true,waterlogged=false,west=tall]", + "5363": "minecraft:mossy_stone_brick_wall[east=tall,north=tall,south=tall,up=false,waterlogged=true,west=none]", + "5364": "minecraft:mossy_stone_brick_wall[east=tall,north=tall,south=tall,up=false,waterlogged=true,west=low]", + "5365": "minecraft:mossy_stone_brick_wall[east=tall,north=tall,south=tall,up=false,waterlogged=true,west=tall]", + "5366": "minecraft:mossy_stone_brick_wall[east=tall,north=tall,south=tall,up=false,waterlogged=false,west=none]", + "5367": "minecraft:mossy_stone_brick_wall[east=tall,north=tall,south=tall,up=false,waterlogged=false,west=low]", + "5368": "minecraft:mossy_stone_brick_wall[east=tall,north=tall,south=tall,up=false,waterlogged=false,west=tall]", + "5369": "minecraft:sunflower[half=upper]", + "5370": "minecraft:sunflower[half=lower]", + "5371": "minecraft:cauldron[level=0]", + "5372": "minecraft:cauldron[level=1]", + "5373": "minecraft:cauldron[level=2]", + "5374": "minecraft:cauldron[level=3]", + "5375": "minecraft:coarse_dirt", + "5376": "minecraft:dead_horn_coral[waterlogged=true]", + "5377": "minecraft:dead_horn_coral[waterlogged=false]", + "5378": "minecraft:yellow_bed[facing=north,occupied=true,part=head]", + "5379": "minecraft:yellow_bed[facing=north,occupied=true,part=foot]", + "5380": "minecraft:yellow_bed[facing=north,occupied=false,part=head]", + "5381": "minecraft:yellow_bed[facing=north,occupied=false,part=foot]", + "5382": "minecraft:yellow_bed[facing=south,occupied=true,part=head]", + "5383": "minecraft:yellow_bed[facing=south,occupied=true,part=foot]", + "5384": "minecraft:yellow_bed[facing=south,occupied=false,part=head]", + "5385": "minecraft:yellow_bed[facing=south,occupied=false,part=foot]", + "5386": "minecraft:yellow_bed[facing=west,occupied=true,part=head]", + "5387": "minecraft:yellow_bed[facing=west,occupied=true,part=foot]", + "5388": "minecraft:yellow_bed[facing=west,occupied=false,part=head]", + "5389": "minecraft:yellow_bed[facing=west,occupied=false,part=foot]", + "5390": "minecraft:yellow_bed[facing=east,occupied=true,part=head]", + "5391": "minecraft:yellow_bed[facing=east,occupied=true,part=foot]", + "5392": "minecraft:yellow_bed[facing=east,occupied=false,part=head]", + "5393": "minecraft:yellow_bed[facing=east,occupied=false,part=foot]", + "5394": "minecraft:nether_brick_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "5395": "minecraft:nether_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "5396": "minecraft:nether_brick_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "5397": "minecraft:nether_brick_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "5398": "minecraft:nether_brick_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "5399": "minecraft:nether_brick_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "5400": "minecraft:nether_brick_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "5401": "minecraft:nether_brick_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "5402": "minecraft:nether_brick_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "5403": "minecraft:nether_brick_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "5404": "minecraft:nether_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "5405": "minecraft:nether_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "5406": "minecraft:nether_brick_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "5407": "minecraft:nether_brick_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "5408": "minecraft:nether_brick_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "5409": "minecraft:nether_brick_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "5410": "minecraft:nether_brick_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "5411": "minecraft:nether_brick_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "5412": "minecraft:nether_brick_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "5413": "minecraft:nether_brick_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "5414": "minecraft:nether_brick_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "5415": "minecraft:nether_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "5416": "minecraft:nether_brick_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "5417": "minecraft:nether_brick_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "5418": "minecraft:nether_brick_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "5419": "minecraft:nether_brick_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "5420": "minecraft:nether_brick_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "5421": "minecraft:nether_brick_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "5422": "minecraft:nether_brick_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "5423": "minecraft:nether_brick_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "5424": "minecraft:nether_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "5425": "minecraft:nether_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "5426": "minecraft:nether_brick_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "5427": "minecraft:nether_brick_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "5428": "minecraft:nether_brick_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "5429": "minecraft:nether_brick_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "5430": "minecraft:nether_brick_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "5431": "minecraft:nether_brick_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "5432": "minecraft:nether_brick_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "5433": "minecraft:nether_brick_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "5434": "minecraft:nether_brick_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "5435": "minecraft:nether_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "5436": "minecraft:nether_brick_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "5437": "minecraft:nether_brick_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "5438": "minecraft:nether_brick_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "5439": "minecraft:nether_brick_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "5440": "minecraft:nether_brick_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "5441": "minecraft:nether_brick_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "5442": "minecraft:nether_brick_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "5443": "minecraft:nether_brick_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "5444": "minecraft:nether_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "5445": "minecraft:nether_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "5446": "minecraft:nether_brick_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "5447": "minecraft:nether_brick_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "5448": "minecraft:nether_brick_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "5449": "minecraft:nether_brick_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "5450": "minecraft:nether_brick_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "5451": "minecraft:nether_brick_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "5452": "minecraft:nether_brick_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "5453": "minecraft:nether_brick_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "5454": "minecraft:nether_brick_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "5455": "minecraft:nether_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "5456": "minecraft:nether_brick_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "5457": "minecraft:nether_brick_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "5458": "minecraft:nether_brick_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "5459": "minecraft:nether_brick_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "5460": "minecraft:nether_brick_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "5461": "minecraft:nether_brick_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "5462": "minecraft:nether_brick_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "5463": "minecraft:nether_brick_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "5464": "minecraft:nether_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "5465": "minecraft:nether_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "5466": "minecraft:nether_brick_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "5467": "minecraft:nether_brick_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "5468": "minecraft:nether_brick_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "5469": "minecraft:nether_brick_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "5470": "minecraft:nether_brick_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "5471": "minecraft:nether_brick_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "5472": "minecraft:nether_brick_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "5473": "minecraft:nether_brick_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "5474": "minecraft:dead_tube_coral[waterlogged=true]", + "5475": "minecraft:dead_tube_coral[waterlogged=false]", + "5476": "minecraft:mycelium[snowy=true]", + "5477": "minecraft:mycelium[snowy=false]", + "5478": "minecraft:brain_coral_block", + "5479": "minecraft:vine[east=true,north=true,south=true,up=true,west=true]", + "5480": "minecraft:vine[east=true,north=true,south=true,up=true,west=false]", + "5481": "minecraft:vine[east=true,north=true,south=true,up=false,west=true]", + "5482": "minecraft:vine[east=true,north=true,south=true,up=false,west=false]", + "5483": "minecraft:vine[east=true,north=true,south=false,up=true,west=true]", + "5484": "minecraft:vine[east=true,north=true,south=false,up=true,west=false]", + "5485": "minecraft:vine[east=true,north=true,south=false,up=false,west=true]", + "5486": "minecraft:vine[east=true,north=true,south=false,up=false,west=false]", + "5487": "minecraft:vine[east=true,north=false,south=true,up=true,west=true]", + "5488": "minecraft:vine[east=true,north=false,south=true,up=true,west=false]", + "5489": "minecraft:vine[east=true,north=false,south=true,up=false,west=true]", + "5490": "minecraft:vine[east=true,north=false,south=true,up=false,west=false]", + "5491": "minecraft:vine[east=true,north=false,south=false,up=true,west=true]", + "5492": "minecraft:vine[east=true,north=false,south=false,up=true,west=false]", + "5493": "minecraft:vine[east=true,north=false,south=false,up=false,west=true]", + "5494": "minecraft:vine[east=true,north=false,south=false,up=false,west=false]", + "5495": "minecraft:vine[east=false,north=true,south=true,up=true,west=true]", + "5496": "minecraft:vine[east=false,north=true,south=true,up=true,west=false]", + "5497": "minecraft:vine[east=false,north=true,south=true,up=false,west=true]", + "5498": "minecraft:vine[east=false,north=true,south=true,up=false,west=false]", + "5499": "minecraft:vine[east=false,north=true,south=false,up=true,west=true]", + "5500": "minecraft:vine[east=false,north=true,south=false,up=true,west=false]", + "5501": "minecraft:vine[east=false,north=true,south=false,up=false,west=true]", + "5502": "minecraft:vine[east=false,north=true,south=false,up=false,west=false]", + "5503": "minecraft:vine[east=false,north=false,south=true,up=true,west=true]", + "5504": "minecraft:vine[east=false,north=false,south=true,up=true,west=false]", + "5505": "minecraft:vine[east=false,north=false,south=true,up=false,west=true]", + "5506": "minecraft:vine[east=false,north=false,south=true,up=false,west=false]", + "5507": "minecraft:vine[east=false,north=false,south=false,up=true,west=true]", + "5508": "minecraft:vine[east=false,north=false,south=false,up=true,west=false]", + "5509": "minecraft:vine[east=false,north=false,south=false,up=false,west=true]", + "5510": "minecraft:vine[east=false,north=false,south=false,up=false,west=false]", + "5511": "minecraft:potted_warped_roots", + "5512": "minecraft:smooth_red_sandstone_slab[type=top,waterlogged=true]", + "5513": "minecraft:smooth_red_sandstone_slab[type=top,waterlogged=false]", + "5514": "minecraft:smooth_red_sandstone_slab[type=bottom,waterlogged=true]", + "5515": "minecraft:smooth_red_sandstone_slab[type=bottom,waterlogged=false]", + "5516": "minecraft:smooth_red_sandstone_slab[type=double,waterlogged=true]", + "5517": "minecraft:smooth_red_sandstone_slab[type=double,waterlogged=false]", + "5518": "minecraft:warped_pressure_plate[powered=true]", + "5519": "minecraft:warped_pressure_plate[powered=false]", + "5520": "minecraft:smithing_table", + "5521": "minecraft:gray_stained_glass", + "5522": "minecraft:pumpkin_stem[age=0]", + "5523": "minecraft:pumpkin_stem[age=1]", + "5524": "minecraft:pumpkin_stem[age=2]", + "5525": "minecraft:pumpkin_stem[age=3]", + "5526": "minecraft:pumpkin_stem[age=4]", + "5527": "minecraft:pumpkin_stem[age=5]", + "5528": "minecraft:pumpkin_stem[age=6]", + "5529": "minecraft:pumpkin_stem[age=7]", + "5530": "minecraft:mossy_cobblestone_wall[east=none,north=none,south=none,up=true,waterlogged=true,west=none]", + "5531": "minecraft:mossy_cobblestone_wall[east=none,north=none,south=none,up=true,waterlogged=true,west=low]", + "5532": "minecraft:mossy_cobblestone_wall[east=none,north=none,south=none,up=true,waterlogged=true,west=tall]", + "5533": "minecraft:mossy_cobblestone_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=none]", + "5534": "minecraft:mossy_cobblestone_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=low]", + "5535": "minecraft:mossy_cobblestone_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=tall]", + "5536": "minecraft:mossy_cobblestone_wall[east=none,north=none,south=none,up=false,waterlogged=true,west=none]", + "5537": "minecraft:mossy_cobblestone_wall[east=none,north=none,south=none,up=false,waterlogged=true,west=low]", + "5538": "minecraft:mossy_cobblestone_wall[east=none,north=none,south=none,up=false,waterlogged=true,west=tall]", + "5539": "minecraft:mossy_cobblestone_wall[east=none,north=none,south=none,up=false,waterlogged=false,west=none]", + "5540": "minecraft:mossy_cobblestone_wall[east=none,north=none,south=none,up=false,waterlogged=false,west=low]", + "5541": "minecraft:mossy_cobblestone_wall[east=none,north=none,south=none,up=false,waterlogged=false,west=tall]", + "5542": "minecraft:mossy_cobblestone_wall[east=none,north=none,south=low,up=true,waterlogged=true,west=none]", + "5543": "minecraft:mossy_cobblestone_wall[east=none,north=none,south=low,up=true,waterlogged=true,west=low]", + "5544": "minecraft:mossy_cobblestone_wall[east=none,north=none,south=low,up=true,waterlogged=true,west=tall]", + "5545": "minecraft:mossy_cobblestone_wall[east=none,north=none,south=low,up=true,waterlogged=false,west=none]", + "5546": "minecraft:mossy_cobblestone_wall[east=none,north=none,south=low,up=true,waterlogged=false,west=low]", + "5547": "minecraft:mossy_cobblestone_wall[east=none,north=none,south=low,up=true,waterlogged=false,west=tall]", + "5548": "minecraft:mossy_cobblestone_wall[east=none,north=none,south=low,up=false,waterlogged=true,west=none]", + "5549": "minecraft:mossy_cobblestone_wall[east=none,north=none,south=low,up=false,waterlogged=true,west=low]", + "5550": "minecraft:mossy_cobblestone_wall[east=none,north=none,south=low,up=false,waterlogged=true,west=tall]", + "5551": "minecraft:mossy_cobblestone_wall[east=none,north=none,south=low,up=false,waterlogged=false,west=none]", + "5552": "minecraft:mossy_cobblestone_wall[east=none,north=none,south=low,up=false,waterlogged=false,west=low]", + "5553": "minecraft:mossy_cobblestone_wall[east=none,north=none,south=low,up=false,waterlogged=false,west=tall]", + "5554": "minecraft:mossy_cobblestone_wall[east=none,north=none,south=tall,up=true,waterlogged=true,west=none]", + "5555": "minecraft:mossy_cobblestone_wall[east=none,north=none,south=tall,up=true,waterlogged=true,west=low]", + "5556": "minecraft:mossy_cobblestone_wall[east=none,north=none,south=tall,up=true,waterlogged=true,west=tall]", + "5557": "minecraft:mossy_cobblestone_wall[east=none,north=none,south=tall,up=true,waterlogged=false,west=none]", + "5558": "minecraft:mossy_cobblestone_wall[east=none,north=none,south=tall,up=true,waterlogged=false,west=low]", + "5559": "minecraft:mossy_cobblestone_wall[east=none,north=none,south=tall,up=true,waterlogged=false,west=tall]", + "5560": "minecraft:mossy_cobblestone_wall[east=none,north=none,south=tall,up=false,waterlogged=true,west=none]", + "5561": "minecraft:mossy_cobblestone_wall[east=none,north=none,south=tall,up=false,waterlogged=true,west=low]", + "5562": "minecraft:mossy_cobblestone_wall[east=none,north=none,south=tall,up=false,waterlogged=true,west=tall]", + "5563": "minecraft:mossy_cobblestone_wall[east=none,north=none,south=tall,up=false,waterlogged=false,west=none]", + "5564": "minecraft:mossy_cobblestone_wall[east=none,north=none,south=tall,up=false,waterlogged=false,west=low]", + "5565": "minecraft:mossy_cobblestone_wall[east=none,north=none,south=tall,up=false,waterlogged=false,west=tall]", + "5566": "minecraft:mossy_cobblestone_wall[east=none,north=low,south=none,up=true,waterlogged=true,west=none]", + "5567": "minecraft:mossy_cobblestone_wall[east=none,north=low,south=none,up=true,waterlogged=true,west=low]", + "5568": "minecraft:mossy_cobblestone_wall[east=none,north=low,south=none,up=true,waterlogged=true,west=tall]", + "5569": "minecraft:mossy_cobblestone_wall[east=none,north=low,south=none,up=true,waterlogged=false,west=none]", + "5570": "minecraft:mossy_cobblestone_wall[east=none,north=low,south=none,up=true,waterlogged=false,west=low]", + "5571": "minecraft:mossy_cobblestone_wall[east=none,north=low,south=none,up=true,waterlogged=false,west=tall]", + "5572": "minecraft:mossy_cobblestone_wall[east=none,north=low,south=none,up=false,waterlogged=true,west=none]", + "5573": "minecraft:mossy_cobblestone_wall[east=none,north=low,south=none,up=false,waterlogged=true,west=low]", + "5574": "minecraft:mossy_cobblestone_wall[east=none,north=low,south=none,up=false,waterlogged=true,west=tall]", + "5575": "minecraft:mossy_cobblestone_wall[east=none,north=low,south=none,up=false,waterlogged=false,west=none]", + "5576": "minecraft:mossy_cobblestone_wall[east=none,north=low,south=none,up=false,waterlogged=false,west=low]", + "5577": "minecraft:mossy_cobblestone_wall[east=none,north=low,south=none,up=false,waterlogged=false,west=tall]", + "5578": "minecraft:mossy_cobblestone_wall[east=none,north=low,south=low,up=true,waterlogged=true,west=none]", + "5579": "minecraft:mossy_cobblestone_wall[east=none,north=low,south=low,up=true,waterlogged=true,west=low]", + "5580": "minecraft:mossy_cobblestone_wall[east=none,north=low,south=low,up=true,waterlogged=true,west=tall]", + "5581": "minecraft:mossy_cobblestone_wall[east=none,north=low,south=low,up=true,waterlogged=false,west=none]", + "5582": "minecraft:mossy_cobblestone_wall[east=none,north=low,south=low,up=true,waterlogged=false,west=low]", + "5583": "minecraft:mossy_cobblestone_wall[east=none,north=low,south=low,up=true,waterlogged=false,west=tall]", + "5584": "minecraft:mossy_cobblestone_wall[east=none,north=low,south=low,up=false,waterlogged=true,west=none]", + "5585": "minecraft:mossy_cobblestone_wall[east=none,north=low,south=low,up=false,waterlogged=true,west=low]", + "5586": "minecraft:mossy_cobblestone_wall[east=none,north=low,south=low,up=false,waterlogged=true,west=tall]", + "5587": "minecraft:mossy_cobblestone_wall[east=none,north=low,south=low,up=false,waterlogged=false,west=none]", + "5588": "minecraft:mossy_cobblestone_wall[east=none,north=low,south=low,up=false,waterlogged=false,west=low]", + "5589": "minecraft:mossy_cobblestone_wall[east=none,north=low,south=low,up=false,waterlogged=false,west=tall]", + "5590": "minecraft:mossy_cobblestone_wall[east=none,north=low,south=tall,up=true,waterlogged=true,west=none]", + "5591": "minecraft:mossy_cobblestone_wall[east=none,north=low,south=tall,up=true,waterlogged=true,west=low]", + "5592": "minecraft:mossy_cobblestone_wall[east=none,north=low,south=tall,up=true,waterlogged=true,west=tall]", + "5593": "minecraft:mossy_cobblestone_wall[east=none,north=low,south=tall,up=true,waterlogged=false,west=none]", + "5594": "minecraft:mossy_cobblestone_wall[east=none,north=low,south=tall,up=true,waterlogged=false,west=low]", + "5595": "minecraft:mossy_cobblestone_wall[east=none,north=low,south=tall,up=true,waterlogged=false,west=tall]", + "5596": "minecraft:mossy_cobblestone_wall[east=none,north=low,south=tall,up=false,waterlogged=true,west=none]", + "5597": "minecraft:mossy_cobblestone_wall[east=none,north=low,south=tall,up=false,waterlogged=true,west=low]", + "5598": "minecraft:mossy_cobblestone_wall[east=none,north=low,south=tall,up=false,waterlogged=true,west=tall]", + "5599": "minecraft:mossy_cobblestone_wall[east=none,north=low,south=tall,up=false,waterlogged=false,west=none]", + "5600": "minecraft:mossy_cobblestone_wall[east=none,north=low,south=tall,up=false,waterlogged=false,west=low]", + "5601": "minecraft:mossy_cobblestone_wall[east=none,north=low,south=tall,up=false,waterlogged=false,west=tall]", + "5602": "minecraft:mossy_cobblestone_wall[east=none,north=tall,south=none,up=true,waterlogged=true,west=none]", + "5603": "minecraft:mossy_cobblestone_wall[east=none,north=tall,south=none,up=true,waterlogged=true,west=low]", + "5604": "minecraft:mossy_cobblestone_wall[east=none,north=tall,south=none,up=true,waterlogged=true,west=tall]", + "5605": "minecraft:mossy_cobblestone_wall[east=none,north=tall,south=none,up=true,waterlogged=false,west=none]", + "5606": "minecraft:mossy_cobblestone_wall[east=none,north=tall,south=none,up=true,waterlogged=false,west=low]", + "5607": "minecraft:mossy_cobblestone_wall[east=none,north=tall,south=none,up=true,waterlogged=false,west=tall]", + "5608": "minecraft:mossy_cobblestone_wall[east=none,north=tall,south=none,up=false,waterlogged=true,west=none]", + "5609": "minecraft:mossy_cobblestone_wall[east=none,north=tall,south=none,up=false,waterlogged=true,west=low]", + "5610": "minecraft:mossy_cobblestone_wall[east=none,north=tall,south=none,up=false,waterlogged=true,west=tall]", + "5611": "minecraft:mossy_cobblestone_wall[east=none,north=tall,south=none,up=false,waterlogged=false,west=none]", + "5612": "minecraft:mossy_cobblestone_wall[east=none,north=tall,south=none,up=false,waterlogged=false,west=low]", + "5613": "minecraft:mossy_cobblestone_wall[east=none,north=tall,south=none,up=false,waterlogged=false,west=tall]", + "5614": "minecraft:mossy_cobblestone_wall[east=none,north=tall,south=low,up=true,waterlogged=true,west=none]", + "5615": "minecraft:mossy_cobblestone_wall[east=none,north=tall,south=low,up=true,waterlogged=true,west=low]", + "5616": "minecraft:mossy_cobblestone_wall[east=none,north=tall,south=low,up=true,waterlogged=true,west=tall]", + "5617": "minecraft:mossy_cobblestone_wall[east=none,north=tall,south=low,up=true,waterlogged=false,west=none]", + "5618": "minecraft:mossy_cobblestone_wall[east=none,north=tall,south=low,up=true,waterlogged=false,west=low]", + "5619": "minecraft:mossy_cobblestone_wall[east=none,north=tall,south=low,up=true,waterlogged=false,west=tall]", + "5620": "minecraft:mossy_cobblestone_wall[east=none,north=tall,south=low,up=false,waterlogged=true,west=none]", + "5621": "minecraft:mossy_cobblestone_wall[east=none,north=tall,south=low,up=false,waterlogged=true,west=low]", + "5622": "minecraft:mossy_cobblestone_wall[east=none,north=tall,south=low,up=false,waterlogged=true,west=tall]", + "5623": "minecraft:mossy_cobblestone_wall[east=none,north=tall,south=low,up=false,waterlogged=false,west=none]", + "5624": "minecraft:mossy_cobblestone_wall[east=none,north=tall,south=low,up=false,waterlogged=false,west=low]", + "5625": "minecraft:mossy_cobblestone_wall[east=none,north=tall,south=low,up=false,waterlogged=false,west=tall]", + "5626": "minecraft:mossy_cobblestone_wall[east=none,north=tall,south=tall,up=true,waterlogged=true,west=none]", + "5627": "minecraft:mossy_cobblestone_wall[east=none,north=tall,south=tall,up=true,waterlogged=true,west=low]", + "5628": "minecraft:mossy_cobblestone_wall[east=none,north=tall,south=tall,up=true,waterlogged=true,west=tall]", + "5629": "minecraft:mossy_cobblestone_wall[east=none,north=tall,south=tall,up=true,waterlogged=false,west=none]", + "5630": "minecraft:mossy_cobblestone_wall[east=none,north=tall,south=tall,up=true,waterlogged=false,west=low]", + "5631": "minecraft:mossy_cobblestone_wall[east=none,north=tall,south=tall,up=true,waterlogged=false,west=tall]", + "5632": "minecraft:mossy_cobblestone_wall[east=none,north=tall,south=tall,up=false,waterlogged=true,west=none]", + "5633": "minecraft:mossy_cobblestone_wall[east=none,north=tall,south=tall,up=false,waterlogged=true,west=low]", + "5634": "minecraft:mossy_cobblestone_wall[east=none,north=tall,south=tall,up=false,waterlogged=true,west=tall]", + "5635": "minecraft:mossy_cobblestone_wall[east=none,north=tall,south=tall,up=false,waterlogged=false,west=none]", + "5636": "minecraft:mossy_cobblestone_wall[east=none,north=tall,south=tall,up=false,waterlogged=false,west=low]", + "5637": "minecraft:mossy_cobblestone_wall[east=none,north=tall,south=tall,up=false,waterlogged=false,west=tall]", + "5638": "minecraft:mossy_cobblestone_wall[east=low,north=none,south=none,up=true,waterlogged=true,west=none]", + "5639": "minecraft:mossy_cobblestone_wall[east=low,north=none,south=none,up=true,waterlogged=true,west=low]", + "5640": "minecraft:mossy_cobblestone_wall[east=low,north=none,south=none,up=true,waterlogged=true,west=tall]", + "5641": "minecraft:mossy_cobblestone_wall[east=low,north=none,south=none,up=true,waterlogged=false,west=none]", + "5642": "minecraft:mossy_cobblestone_wall[east=low,north=none,south=none,up=true,waterlogged=false,west=low]", + "5643": "minecraft:mossy_cobblestone_wall[east=low,north=none,south=none,up=true,waterlogged=false,west=tall]", + "5644": "minecraft:mossy_cobblestone_wall[east=low,north=none,south=none,up=false,waterlogged=true,west=none]", + "5645": "minecraft:mossy_cobblestone_wall[east=low,north=none,south=none,up=false,waterlogged=true,west=low]", + "5646": "minecraft:mossy_cobblestone_wall[east=low,north=none,south=none,up=false,waterlogged=true,west=tall]", + "5647": "minecraft:mossy_cobblestone_wall[east=low,north=none,south=none,up=false,waterlogged=false,west=none]", + "5648": "minecraft:mossy_cobblestone_wall[east=low,north=none,south=none,up=false,waterlogged=false,west=low]", + "5649": "minecraft:mossy_cobblestone_wall[east=low,north=none,south=none,up=false,waterlogged=false,west=tall]", + "5650": "minecraft:mossy_cobblestone_wall[east=low,north=none,south=low,up=true,waterlogged=true,west=none]", + "5651": "minecraft:mossy_cobblestone_wall[east=low,north=none,south=low,up=true,waterlogged=true,west=low]", + "5652": "minecraft:mossy_cobblestone_wall[east=low,north=none,south=low,up=true,waterlogged=true,west=tall]", + "5653": "minecraft:mossy_cobblestone_wall[east=low,north=none,south=low,up=true,waterlogged=false,west=none]", + "5654": "minecraft:mossy_cobblestone_wall[east=low,north=none,south=low,up=true,waterlogged=false,west=low]", + "5655": "minecraft:mossy_cobblestone_wall[east=low,north=none,south=low,up=true,waterlogged=false,west=tall]", + "5656": "minecraft:mossy_cobblestone_wall[east=low,north=none,south=low,up=false,waterlogged=true,west=none]", + "5657": "minecraft:mossy_cobblestone_wall[east=low,north=none,south=low,up=false,waterlogged=true,west=low]", + "5658": "minecraft:mossy_cobblestone_wall[east=low,north=none,south=low,up=false,waterlogged=true,west=tall]", + "5659": "minecraft:mossy_cobblestone_wall[east=low,north=none,south=low,up=false,waterlogged=false,west=none]", + "5660": "minecraft:mossy_cobblestone_wall[east=low,north=none,south=low,up=false,waterlogged=false,west=low]", + "5661": "minecraft:mossy_cobblestone_wall[east=low,north=none,south=low,up=false,waterlogged=false,west=tall]", + "5662": "minecraft:mossy_cobblestone_wall[east=low,north=none,south=tall,up=true,waterlogged=true,west=none]", + "5663": "minecraft:mossy_cobblestone_wall[east=low,north=none,south=tall,up=true,waterlogged=true,west=low]", + "5664": "minecraft:mossy_cobblestone_wall[east=low,north=none,south=tall,up=true,waterlogged=true,west=tall]", + "5665": "minecraft:mossy_cobblestone_wall[east=low,north=none,south=tall,up=true,waterlogged=false,west=none]", + "5666": "minecraft:mossy_cobblestone_wall[east=low,north=none,south=tall,up=true,waterlogged=false,west=low]", + "5667": "minecraft:mossy_cobblestone_wall[east=low,north=none,south=tall,up=true,waterlogged=false,west=tall]", + "5668": "minecraft:mossy_cobblestone_wall[east=low,north=none,south=tall,up=false,waterlogged=true,west=none]", + "5669": "minecraft:mossy_cobblestone_wall[east=low,north=none,south=tall,up=false,waterlogged=true,west=low]", + "5670": "minecraft:mossy_cobblestone_wall[east=low,north=none,south=tall,up=false,waterlogged=true,west=tall]", + "5671": "minecraft:mossy_cobblestone_wall[east=low,north=none,south=tall,up=false,waterlogged=false,west=none]", + "5672": "minecraft:mossy_cobblestone_wall[east=low,north=none,south=tall,up=false,waterlogged=false,west=low]", + "5673": "minecraft:mossy_cobblestone_wall[east=low,north=none,south=tall,up=false,waterlogged=false,west=tall]", + "5674": "minecraft:mossy_cobblestone_wall[east=low,north=low,south=none,up=true,waterlogged=true,west=none]", + "5675": "minecraft:mossy_cobblestone_wall[east=low,north=low,south=none,up=true,waterlogged=true,west=low]", + "5676": "minecraft:mossy_cobblestone_wall[east=low,north=low,south=none,up=true,waterlogged=true,west=tall]", + "5677": "minecraft:mossy_cobblestone_wall[east=low,north=low,south=none,up=true,waterlogged=false,west=none]", + "5678": "minecraft:mossy_cobblestone_wall[east=low,north=low,south=none,up=true,waterlogged=false,west=low]", + "5679": "minecraft:mossy_cobblestone_wall[east=low,north=low,south=none,up=true,waterlogged=false,west=tall]", + "5680": "minecraft:mossy_cobblestone_wall[east=low,north=low,south=none,up=false,waterlogged=true,west=none]", + "5681": "minecraft:mossy_cobblestone_wall[east=low,north=low,south=none,up=false,waterlogged=true,west=low]", + "5682": "minecraft:mossy_cobblestone_wall[east=low,north=low,south=none,up=false,waterlogged=true,west=tall]", + "5683": "minecraft:mossy_cobblestone_wall[east=low,north=low,south=none,up=false,waterlogged=false,west=none]", + "5684": "minecraft:mossy_cobblestone_wall[east=low,north=low,south=none,up=false,waterlogged=false,west=low]", + "5685": "minecraft:mossy_cobblestone_wall[east=low,north=low,south=none,up=false,waterlogged=false,west=tall]", + "5686": "minecraft:mossy_cobblestone_wall[east=low,north=low,south=low,up=true,waterlogged=true,west=none]", + "5687": "minecraft:mossy_cobblestone_wall[east=low,north=low,south=low,up=true,waterlogged=true,west=low]", + "5688": "minecraft:mossy_cobblestone_wall[east=low,north=low,south=low,up=true,waterlogged=true,west=tall]", + "5689": "minecraft:mossy_cobblestone_wall[east=low,north=low,south=low,up=true,waterlogged=false,west=none]", + "5690": "minecraft:mossy_cobblestone_wall[east=low,north=low,south=low,up=true,waterlogged=false,west=low]", + "5691": "minecraft:mossy_cobblestone_wall[east=low,north=low,south=low,up=true,waterlogged=false,west=tall]", + "5692": "minecraft:mossy_cobblestone_wall[east=low,north=low,south=low,up=false,waterlogged=true,west=none]", + "5693": "minecraft:mossy_cobblestone_wall[east=low,north=low,south=low,up=false,waterlogged=true,west=low]", + "5694": "minecraft:mossy_cobblestone_wall[east=low,north=low,south=low,up=false,waterlogged=true,west=tall]", + "5695": "minecraft:mossy_cobblestone_wall[east=low,north=low,south=low,up=false,waterlogged=false,west=none]", + "5696": "minecraft:mossy_cobblestone_wall[east=low,north=low,south=low,up=false,waterlogged=false,west=low]", + "5697": "minecraft:mossy_cobblestone_wall[east=low,north=low,south=low,up=false,waterlogged=false,west=tall]", + "5698": "minecraft:mossy_cobblestone_wall[east=low,north=low,south=tall,up=true,waterlogged=true,west=none]", + "5699": "minecraft:mossy_cobblestone_wall[east=low,north=low,south=tall,up=true,waterlogged=true,west=low]", + "5700": "minecraft:mossy_cobblestone_wall[east=low,north=low,south=tall,up=true,waterlogged=true,west=tall]", + "5701": "minecraft:mossy_cobblestone_wall[east=low,north=low,south=tall,up=true,waterlogged=false,west=none]", + "5702": "minecraft:mossy_cobblestone_wall[east=low,north=low,south=tall,up=true,waterlogged=false,west=low]", + "5703": "minecraft:mossy_cobblestone_wall[east=low,north=low,south=tall,up=true,waterlogged=false,west=tall]", + "5704": "minecraft:mossy_cobblestone_wall[east=low,north=low,south=tall,up=false,waterlogged=true,west=none]", + "5705": "minecraft:mossy_cobblestone_wall[east=low,north=low,south=tall,up=false,waterlogged=true,west=low]", + "5706": "minecraft:mossy_cobblestone_wall[east=low,north=low,south=tall,up=false,waterlogged=true,west=tall]", + "5707": "minecraft:mossy_cobblestone_wall[east=low,north=low,south=tall,up=false,waterlogged=false,west=none]", + "5708": "minecraft:mossy_cobblestone_wall[east=low,north=low,south=tall,up=false,waterlogged=false,west=low]", + "5709": "minecraft:mossy_cobblestone_wall[east=low,north=low,south=tall,up=false,waterlogged=false,west=tall]", + "5710": "minecraft:mossy_cobblestone_wall[east=low,north=tall,south=none,up=true,waterlogged=true,west=none]", + "5711": "minecraft:mossy_cobblestone_wall[east=low,north=tall,south=none,up=true,waterlogged=true,west=low]", + "5712": "minecraft:mossy_cobblestone_wall[east=low,north=tall,south=none,up=true,waterlogged=true,west=tall]", + "5713": "minecraft:mossy_cobblestone_wall[east=low,north=tall,south=none,up=true,waterlogged=false,west=none]", + "5714": "minecraft:mossy_cobblestone_wall[east=low,north=tall,south=none,up=true,waterlogged=false,west=low]", + "5715": "minecraft:mossy_cobblestone_wall[east=low,north=tall,south=none,up=true,waterlogged=false,west=tall]", + "5716": "minecraft:mossy_cobblestone_wall[east=low,north=tall,south=none,up=false,waterlogged=true,west=none]", + "5717": "minecraft:mossy_cobblestone_wall[east=low,north=tall,south=none,up=false,waterlogged=true,west=low]", + "5718": "minecraft:mossy_cobblestone_wall[east=low,north=tall,south=none,up=false,waterlogged=true,west=tall]", + "5719": "minecraft:mossy_cobblestone_wall[east=low,north=tall,south=none,up=false,waterlogged=false,west=none]", + "5720": "minecraft:mossy_cobblestone_wall[east=low,north=tall,south=none,up=false,waterlogged=false,west=low]", + "5721": "minecraft:mossy_cobblestone_wall[east=low,north=tall,south=none,up=false,waterlogged=false,west=tall]", + "5722": "minecraft:mossy_cobblestone_wall[east=low,north=tall,south=low,up=true,waterlogged=true,west=none]", + "5723": "minecraft:mossy_cobblestone_wall[east=low,north=tall,south=low,up=true,waterlogged=true,west=low]", + "5724": "minecraft:mossy_cobblestone_wall[east=low,north=tall,south=low,up=true,waterlogged=true,west=tall]", + "5725": "minecraft:mossy_cobblestone_wall[east=low,north=tall,south=low,up=true,waterlogged=false,west=none]", + "5726": "minecraft:mossy_cobblestone_wall[east=low,north=tall,south=low,up=true,waterlogged=false,west=low]", + "5727": "minecraft:mossy_cobblestone_wall[east=low,north=tall,south=low,up=true,waterlogged=false,west=tall]", + "5728": "minecraft:mossy_cobblestone_wall[east=low,north=tall,south=low,up=false,waterlogged=true,west=none]", + "5729": "minecraft:mossy_cobblestone_wall[east=low,north=tall,south=low,up=false,waterlogged=true,west=low]", + "5730": "minecraft:mossy_cobblestone_wall[east=low,north=tall,south=low,up=false,waterlogged=true,west=tall]", + "5731": "minecraft:mossy_cobblestone_wall[east=low,north=tall,south=low,up=false,waterlogged=false,west=none]", + "5732": "minecraft:mossy_cobblestone_wall[east=low,north=tall,south=low,up=false,waterlogged=false,west=low]", + "5733": "minecraft:mossy_cobblestone_wall[east=low,north=tall,south=low,up=false,waterlogged=false,west=tall]", + "5734": "minecraft:mossy_cobblestone_wall[east=low,north=tall,south=tall,up=true,waterlogged=true,west=none]", + "5735": "minecraft:mossy_cobblestone_wall[east=low,north=tall,south=tall,up=true,waterlogged=true,west=low]", + "5736": "minecraft:mossy_cobblestone_wall[east=low,north=tall,south=tall,up=true,waterlogged=true,west=tall]", + "5737": "minecraft:mossy_cobblestone_wall[east=low,north=tall,south=tall,up=true,waterlogged=false,west=none]", + "5738": "minecraft:mossy_cobblestone_wall[east=low,north=tall,south=tall,up=true,waterlogged=false,west=low]", + "5739": "minecraft:mossy_cobblestone_wall[east=low,north=tall,south=tall,up=true,waterlogged=false,west=tall]", + "5740": "minecraft:mossy_cobblestone_wall[east=low,north=tall,south=tall,up=false,waterlogged=true,west=none]", + "5741": "minecraft:mossy_cobblestone_wall[east=low,north=tall,south=tall,up=false,waterlogged=true,west=low]", + "5742": "minecraft:mossy_cobblestone_wall[east=low,north=tall,south=tall,up=false,waterlogged=true,west=tall]", + "5743": "minecraft:mossy_cobblestone_wall[east=low,north=tall,south=tall,up=false,waterlogged=false,west=none]", + "5744": "minecraft:mossy_cobblestone_wall[east=low,north=tall,south=tall,up=false,waterlogged=false,west=low]", + "5745": "minecraft:mossy_cobblestone_wall[east=low,north=tall,south=tall,up=false,waterlogged=false,west=tall]", + "5746": "minecraft:mossy_cobblestone_wall[east=tall,north=none,south=none,up=true,waterlogged=true,west=none]", + "5747": "minecraft:mossy_cobblestone_wall[east=tall,north=none,south=none,up=true,waterlogged=true,west=low]", + "5748": "minecraft:mossy_cobblestone_wall[east=tall,north=none,south=none,up=true,waterlogged=true,west=tall]", + "5749": "minecraft:mossy_cobblestone_wall[east=tall,north=none,south=none,up=true,waterlogged=false,west=none]", + "5750": "minecraft:mossy_cobblestone_wall[east=tall,north=none,south=none,up=true,waterlogged=false,west=low]", + "5751": "minecraft:mossy_cobblestone_wall[east=tall,north=none,south=none,up=true,waterlogged=false,west=tall]", + "5752": "minecraft:mossy_cobblestone_wall[east=tall,north=none,south=none,up=false,waterlogged=true,west=none]", + "5753": "minecraft:mossy_cobblestone_wall[east=tall,north=none,south=none,up=false,waterlogged=true,west=low]", + "5754": "minecraft:mossy_cobblestone_wall[east=tall,north=none,south=none,up=false,waterlogged=true,west=tall]", + "5755": "minecraft:mossy_cobblestone_wall[east=tall,north=none,south=none,up=false,waterlogged=false,west=none]", + "5756": "minecraft:mossy_cobblestone_wall[east=tall,north=none,south=none,up=false,waterlogged=false,west=low]", + "5757": "minecraft:mossy_cobblestone_wall[east=tall,north=none,south=none,up=false,waterlogged=false,west=tall]", + "5758": "minecraft:mossy_cobblestone_wall[east=tall,north=none,south=low,up=true,waterlogged=true,west=none]", + "5759": "minecraft:mossy_cobblestone_wall[east=tall,north=none,south=low,up=true,waterlogged=true,west=low]", + "5760": "minecraft:mossy_cobblestone_wall[east=tall,north=none,south=low,up=true,waterlogged=true,west=tall]", + "5761": "minecraft:mossy_cobblestone_wall[east=tall,north=none,south=low,up=true,waterlogged=false,west=none]", + "5762": "minecraft:mossy_cobblestone_wall[east=tall,north=none,south=low,up=true,waterlogged=false,west=low]", + "5763": "minecraft:mossy_cobblestone_wall[east=tall,north=none,south=low,up=true,waterlogged=false,west=tall]", + "5764": "minecraft:mossy_cobblestone_wall[east=tall,north=none,south=low,up=false,waterlogged=true,west=none]", + "5765": "minecraft:mossy_cobblestone_wall[east=tall,north=none,south=low,up=false,waterlogged=true,west=low]", + "5766": "minecraft:mossy_cobblestone_wall[east=tall,north=none,south=low,up=false,waterlogged=true,west=tall]", + "5767": "minecraft:mossy_cobblestone_wall[east=tall,north=none,south=low,up=false,waterlogged=false,west=none]", + "5768": "minecraft:mossy_cobblestone_wall[east=tall,north=none,south=low,up=false,waterlogged=false,west=low]", + "5769": "minecraft:mossy_cobblestone_wall[east=tall,north=none,south=low,up=false,waterlogged=false,west=tall]", + "5770": "minecraft:mossy_cobblestone_wall[east=tall,north=none,south=tall,up=true,waterlogged=true,west=none]", + "5771": "minecraft:mossy_cobblestone_wall[east=tall,north=none,south=tall,up=true,waterlogged=true,west=low]", + "5772": "minecraft:mossy_cobblestone_wall[east=tall,north=none,south=tall,up=true,waterlogged=true,west=tall]", + "5773": "minecraft:mossy_cobblestone_wall[east=tall,north=none,south=tall,up=true,waterlogged=false,west=none]", + "5774": "minecraft:mossy_cobblestone_wall[east=tall,north=none,south=tall,up=true,waterlogged=false,west=low]", + "5775": "minecraft:mossy_cobblestone_wall[east=tall,north=none,south=tall,up=true,waterlogged=false,west=tall]", + "5776": "minecraft:mossy_cobblestone_wall[east=tall,north=none,south=tall,up=false,waterlogged=true,west=none]", + "5777": "minecraft:mossy_cobblestone_wall[east=tall,north=none,south=tall,up=false,waterlogged=true,west=low]", + "5778": "minecraft:mossy_cobblestone_wall[east=tall,north=none,south=tall,up=false,waterlogged=true,west=tall]", + "5779": "minecraft:mossy_cobblestone_wall[east=tall,north=none,south=tall,up=false,waterlogged=false,west=none]", + "5780": "minecraft:mossy_cobblestone_wall[east=tall,north=none,south=tall,up=false,waterlogged=false,west=low]", + "5781": "minecraft:mossy_cobblestone_wall[east=tall,north=none,south=tall,up=false,waterlogged=false,west=tall]", + "5782": "minecraft:mossy_cobblestone_wall[east=tall,north=low,south=none,up=true,waterlogged=true,west=none]", + "5783": "minecraft:mossy_cobblestone_wall[east=tall,north=low,south=none,up=true,waterlogged=true,west=low]", + "5784": "minecraft:mossy_cobblestone_wall[east=tall,north=low,south=none,up=true,waterlogged=true,west=tall]", + "5785": "minecraft:mossy_cobblestone_wall[east=tall,north=low,south=none,up=true,waterlogged=false,west=none]", + "5786": "minecraft:mossy_cobblestone_wall[east=tall,north=low,south=none,up=true,waterlogged=false,west=low]", + "5787": "minecraft:mossy_cobblestone_wall[east=tall,north=low,south=none,up=true,waterlogged=false,west=tall]", + "5788": "minecraft:mossy_cobblestone_wall[east=tall,north=low,south=none,up=false,waterlogged=true,west=none]", + "5789": "minecraft:mossy_cobblestone_wall[east=tall,north=low,south=none,up=false,waterlogged=true,west=low]", + "5790": "minecraft:mossy_cobblestone_wall[east=tall,north=low,south=none,up=false,waterlogged=true,west=tall]", + "5791": "minecraft:mossy_cobblestone_wall[east=tall,north=low,south=none,up=false,waterlogged=false,west=none]", + "5792": "minecraft:mossy_cobblestone_wall[east=tall,north=low,south=none,up=false,waterlogged=false,west=low]", + "5793": "minecraft:mossy_cobblestone_wall[east=tall,north=low,south=none,up=false,waterlogged=false,west=tall]", + "5794": "minecraft:mossy_cobblestone_wall[east=tall,north=low,south=low,up=true,waterlogged=true,west=none]", + "5795": "minecraft:mossy_cobblestone_wall[east=tall,north=low,south=low,up=true,waterlogged=true,west=low]", + "5796": "minecraft:mossy_cobblestone_wall[east=tall,north=low,south=low,up=true,waterlogged=true,west=tall]", + "5797": "minecraft:mossy_cobblestone_wall[east=tall,north=low,south=low,up=true,waterlogged=false,west=none]", + "5798": "minecraft:mossy_cobblestone_wall[east=tall,north=low,south=low,up=true,waterlogged=false,west=low]", + "5799": "minecraft:mossy_cobblestone_wall[east=tall,north=low,south=low,up=true,waterlogged=false,west=tall]", + "5800": "minecraft:mossy_cobblestone_wall[east=tall,north=low,south=low,up=false,waterlogged=true,west=none]", + "5801": "minecraft:mossy_cobblestone_wall[east=tall,north=low,south=low,up=false,waterlogged=true,west=low]", + "5802": "minecraft:mossy_cobblestone_wall[east=tall,north=low,south=low,up=false,waterlogged=true,west=tall]", + "5803": "minecraft:mossy_cobblestone_wall[east=tall,north=low,south=low,up=false,waterlogged=false,west=none]", + "5804": "minecraft:mossy_cobblestone_wall[east=tall,north=low,south=low,up=false,waterlogged=false,west=low]", + "5805": "minecraft:mossy_cobblestone_wall[east=tall,north=low,south=low,up=false,waterlogged=false,west=tall]", + "5806": "minecraft:mossy_cobblestone_wall[east=tall,north=low,south=tall,up=true,waterlogged=true,west=none]", + "5807": "minecraft:mossy_cobblestone_wall[east=tall,north=low,south=tall,up=true,waterlogged=true,west=low]", + "5808": "minecraft:mossy_cobblestone_wall[east=tall,north=low,south=tall,up=true,waterlogged=true,west=tall]", + "5809": "minecraft:mossy_cobblestone_wall[east=tall,north=low,south=tall,up=true,waterlogged=false,west=none]", + "5810": "minecraft:mossy_cobblestone_wall[east=tall,north=low,south=tall,up=true,waterlogged=false,west=low]", + "5811": "minecraft:mossy_cobblestone_wall[east=tall,north=low,south=tall,up=true,waterlogged=false,west=tall]", + "5812": "minecraft:mossy_cobblestone_wall[east=tall,north=low,south=tall,up=false,waterlogged=true,west=none]", + "5813": "minecraft:mossy_cobblestone_wall[east=tall,north=low,south=tall,up=false,waterlogged=true,west=low]", + "5814": "minecraft:mossy_cobblestone_wall[east=tall,north=low,south=tall,up=false,waterlogged=true,west=tall]", + "5815": "minecraft:mossy_cobblestone_wall[east=tall,north=low,south=tall,up=false,waterlogged=false,west=none]", + "5816": "minecraft:mossy_cobblestone_wall[east=tall,north=low,south=tall,up=false,waterlogged=false,west=low]", + "5817": "minecraft:mossy_cobblestone_wall[east=tall,north=low,south=tall,up=false,waterlogged=false,west=tall]", + "5818": "minecraft:mossy_cobblestone_wall[east=tall,north=tall,south=none,up=true,waterlogged=true,west=none]", + "5819": "minecraft:mossy_cobblestone_wall[east=tall,north=tall,south=none,up=true,waterlogged=true,west=low]", + "5820": "minecraft:mossy_cobblestone_wall[east=tall,north=tall,south=none,up=true,waterlogged=true,west=tall]", + "5821": "minecraft:mossy_cobblestone_wall[east=tall,north=tall,south=none,up=true,waterlogged=false,west=none]", + "5822": "minecraft:mossy_cobblestone_wall[east=tall,north=tall,south=none,up=true,waterlogged=false,west=low]", + "5823": "minecraft:mossy_cobblestone_wall[east=tall,north=tall,south=none,up=true,waterlogged=false,west=tall]", + "5824": "minecraft:mossy_cobblestone_wall[east=tall,north=tall,south=none,up=false,waterlogged=true,west=none]", + "5825": "minecraft:mossy_cobblestone_wall[east=tall,north=tall,south=none,up=false,waterlogged=true,west=low]", + "5826": "minecraft:mossy_cobblestone_wall[east=tall,north=tall,south=none,up=false,waterlogged=true,west=tall]", + "5827": "minecraft:mossy_cobblestone_wall[east=tall,north=tall,south=none,up=false,waterlogged=false,west=none]", + "5828": "minecraft:mossy_cobblestone_wall[east=tall,north=tall,south=none,up=false,waterlogged=false,west=low]", + "5829": "minecraft:mossy_cobblestone_wall[east=tall,north=tall,south=none,up=false,waterlogged=false,west=tall]", + "5830": "minecraft:mossy_cobblestone_wall[east=tall,north=tall,south=low,up=true,waterlogged=true,west=none]", + "5831": "minecraft:mossy_cobblestone_wall[east=tall,north=tall,south=low,up=true,waterlogged=true,west=low]", + "5832": "minecraft:mossy_cobblestone_wall[east=tall,north=tall,south=low,up=true,waterlogged=true,west=tall]", + "5833": "minecraft:mossy_cobblestone_wall[east=tall,north=tall,south=low,up=true,waterlogged=false,west=none]", + "5834": "minecraft:mossy_cobblestone_wall[east=tall,north=tall,south=low,up=true,waterlogged=false,west=low]", + "5835": "minecraft:mossy_cobblestone_wall[east=tall,north=tall,south=low,up=true,waterlogged=false,west=tall]", + "5836": "minecraft:mossy_cobblestone_wall[east=tall,north=tall,south=low,up=false,waterlogged=true,west=none]", + "5837": "minecraft:mossy_cobblestone_wall[east=tall,north=tall,south=low,up=false,waterlogged=true,west=low]", + "5838": "minecraft:mossy_cobblestone_wall[east=tall,north=tall,south=low,up=false,waterlogged=true,west=tall]", + "5839": "minecraft:mossy_cobblestone_wall[east=tall,north=tall,south=low,up=false,waterlogged=false,west=none]", + "5840": "minecraft:mossy_cobblestone_wall[east=tall,north=tall,south=low,up=false,waterlogged=false,west=low]", + "5841": "minecraft:mossy_cobblestone_wall[east=tall,north=tall,south=low,up=false,waterlogged=false,west=tall]", + "5842": "minecraft:mossy_cobblestone_wall[east=tall,north=tall,south=tall,up=true,waterlogged=true,west=none]", + "5843": "minecraft:mossy_cobblestone_wall[east=tall,north=tall,south=tall,up=true,waterlogged=true,west=low]", + "5844": "minecraft:mossy_cobblestone_wall[east=tall,north=tall,south=tall,up=true,waterlogged=true,west=tall]", + "5845": "minecraft:mossy_cobblestone_wall[east=tall,north=tall,south=tall,up=true,waterlogged=false,west=none]", + "5846": "minecraft:mossy_cobblestone_wall[east=tall,north=tall,south=tall,up=true,waterlogged=false,west=low]", + "5847": "minecraft:mossy_cobblestone_wall[east=tall,north=tall,south=tall,up=true,waterlogged=false,west=tall]", + "5848": "minecraft:mossy_cobblestone_wall[east=tall,north=tall,south=tall,up=false,waterlogged=true,west=none]", + "5849": "minecraft:mossy_cobblestone_wall[east=tall,north=tall,south=tall,up=false,waterlogged=true,west=low]", + "5850": "minecraft:mossy_cobblestone_wall[east=tall,north=tall,south=tall,up=false,waterlogged=true,west=tall]", + "5851": "minecraft:mossy_cobblestone_wall[east=tall,north=tall,south=tall,up=false,waterlogged=false,west=none]", + "5852": "minecraft:mossy_cobblestone_wall[east=tall,north=tall,south=tall,up=false,waterlogged=false,west=low]", + "5853": "minecraft:mossy_cobblestone_wall[east=tall,north=tall,south=tall,up=false,waterlogged=false,west=tall]", + "5854": "minecraft:red_wool", + "5855": "minecraft:redstone_wall_torch[facing=north,lit=true]", + "5856": "minecraft:redstone_wall_torch[facing=north,lit=false]", + "5857": "minecraft:redstone_wall_torch[facing=south,lit=true]", + "5858": "minecraft:redstone_wall_torch[facing=south,lit=false]", + "5859": "minecraft:redstone_wall_torch[facing=west,lit=true]", + "5860": "minecraft:redstone_wall_torch[facing=west,lit=false]", + "5861": "minecraft:redstone_wall_torch[facing=east,lit=true]", + "5862": "minecraft:redstone_wall_torch[facing=east,lit=false]", + "5863": "minecraft:flower_pot", + "5864": "minecraft:redstone_torch[lit=true]", + "5865": "minecraft:redstone_torch[lit=false]", + "5866": "minecraft:turtle_egg[eggs=1,hatch=0]", + "5867": "minecraft:turtle_egg[eggs=1,hatch=1]", + "5868": "minecraft:turtle_egg[eggs=1,hatch=2]", + "5869": "minecraft:turtle_egg[eggs=2,hatch=0]", + "5870": "minecraft:turtle_egg[eggs=2,hatch=1]", + "5871": "minecraft:turtle_egg[eggs=2,hatch=2]", + "5872": "minecraft:turtle_egg[eggs=3,hatch=0]", + "5873": "minecraft:turtle_egg[eggs=3,hatch=1]", + "5874": "minecraft:turtle_egg[eggs=3,hatch=2]", + "5875": "minecraft:turtle_egg[eggs=4,hatch=0]", + "5876": "minecraft:turtle_egg[eggs=4,hatch=1]", + "5877": "minecraft:turtle_egg[eggs=4,hatch=2]", + "5878": "minecraft:dried_kelp_block", + "5879": "minecraft:light_blue_terracotta", + "5880": "minecraft:potted_crimson_roots", + "5881": "minecraft:polished_granite_slab[type=top,waterlogged=true]", + "5882": "minecraft:polished_granite_slab[type=top,waterlogged=false]", + "5883": "minecraft:polished_granite_slab[type=bottom,waterlogged=true]", + "5884": "minecraft:polished_granite_slab[type=bottom,waterlogged=false]", + "5885": "minecraft:polished_granite_slab[type=double,waterlogged=true]", + "5886": "minecraft:polished_granite_slab[type=double,waterlogged=false]", + "5887": "minecraft:dead_bubble_coral_wall_fan[facing=north,waterlogged=true]", + "5888": "minecraft:dead_bubble_coral_wall_fan[facing=north,waterlogged=false]", + "5889": "minecraft:dead_bubble_coral_wall_fan[facing=south,waterlogged=true]", + "5890": "minecraft:dead_bubble_coral_wall_fan[facing=south,waterlogged=false]", + "5891": "minecraft:dead_bubble_coral_wall_fan[facing=west,waterlogged=true]", + "5892": "minecraft:dead_bubble_coral_wall_fan[facing=west,waterlogged=false]", + "5893": "minecraft:dead_bubble_coral_wall_fan[facing=east,waterlogged=true]", + "5894": "minecraft:dead_bubble_coral_wall_fan[facing=east,waterlogged=false]", + "5895": "minecraft:mossy_stone_brick_slab[type=top,waterlogged=true]", + "5896": "minecraft:mossy_stone_brick_slab[type=top,waterlogged=false]", + "5897": "minecraft:mossy_stone_brick_slab[type=bottom,waterlogged=true]", + "5898": "minecraft:mossy_stone_brick_slab[type=bottom,waterlogged=false]", + "5899": "minecraft:mossy_stone_brick_slab[type=double,waterlogged=true]", + "5900": "minecraft:mossy_stone_brick_slab[type=double,waterlogged=false]", + "5901": "minecraft:cobblestone_wall[east=none,north=none,south=none,up=true,waterlogged=true,west=none]", + "5902": "minecraft:cobblestone_wall[east=none,north=none,south=none,up=true,waterlogged=true,west=low]", + "5903": "minecraft:cobblestone_wall[east=none,north=none,south=none,up=true,waterlogged=true,west=tall]", + "5904": "minecraft:cobblestone_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=none]", + "5905": "minecraft:cobblestone_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=low]", + "5906": "minecraft:cobblestone_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=tall]", + "5907": "minecraft:cobblestone_wall[east=none,north=none,south=none,up=false,waterlogged=true,west=none]", + "5908": "minecraft:cobblestone_wall[east=none,north=none,south=none,up=false,waterlogged=true,west=low]", + "5909": "minecraft:cobblestone_wall[east=none,north=none,south=none,up=false,waterlogged=true,west=tall]", + "5910": "minecraft:cobblestone_wall[east=none,north=none,south=none,up=false,waterlogged=false,west=none]", + "5911": "minecraft:cobblestone_wall[east=none,north=none,south=none,up=false,waterlogged=false,west=low]", + "5912": "minecraft:cobblestone_wall[east=none,north=none,south=none,up=false,waterlogged=false,west=tall]", + "5913": "minecraft:cobblestone_wall[east=none,north=none,south=low,up=true,waterlogged=true,west=none]", + "5914": "minecraft:cobblestone_wall[east=none,north=none,south=low,up=true,waterlogged=true,west=low]", + "5915": "minecraft:cobblestone_wall[east=none,north=none,south=low,up=true,waterlogged=true,west=tall]", + "5916": "minecraft:cobblestone_wall[east=none,north=none,south=low,up=true,waterlogged=false,west=none]", + "5917": "minecraft:cobblestone_wall[east=none,north=none,south=low,up=true,waterlogged=false,west=low]", + "5918": "minecraft:cobblestone_wall[east=none,north=none,south=low,up=true,waterlogged=false,west=tall]", + "5919": "minecraft:cobblestone_wall[east=none,north=none,south=low,up=false,waterlogged=true,west=none]", + "5920": "minecraft:cobblestone_wall[east=none,north=none,south=low,up=false,waterlogged=true,west=low]", + "5921": "minecraft:cobblestone_wall[east=none,north=none,south=low,up=false,waterlogged=true,west=tall]", + "5922": "minecraft:cobblestone_wall[east=none,north=none,south=low,up=false,waterlogged=false,west=none]", + "5923": "minecraft:cobblestone_wall[east=none,north=none,south=low,up=false,waterlogged=false,west=low]", + "5924": "minecraft:cobblestone_wall[east=none,north=none,south=low,up=false,waterlogged=false,west=tall]", + "5925": "minecraft:cobblestone_wall[east=none,north=none,south=tall,up=true,waterlogged=true,west=none]", + "5926": "minecraft:cobblestone_wall[east=none,north=none,south=tall,up=true,waterlogged=true,west=low]", + "5927": "minecraft:cobblestone_wall[east=none,north=none,south=tall,up=true,waterlogged=true,west=tall]", + "5928": "minecraft:cobblestone_wall[east=none,north=none,south=tall,up=true,waterlogged=false,west=none]", + "5929": "minecraft:cobblestone_wall[east=none,north=none,south=tall,up=true,waterlogged=false,west=low]", + "5930": "minecraft:cobblestone_wall[east=none,north=none,south=tall,up=true,waterlogged=false,west=tall]", + "5931": "minecraft:cobblestone_wall[east=none,north=none,south=tall,up=false,waterlogged=true,west=none]", + "5932": "minecraft:cobblestone_wall[east=none,north=none,south=tall,up=false,waterlogged=true,west=low]", + "5933": "minecraft:cobblestone_wall[east=none,north=none,south=tall,up=false,waterlogged=true,west=tall]", + "5934": "minecraft:cobblestone_wall[east=none,north=none,south=tall,up=false,waterlogged=false,west=none]", + "5935": "minecraft:cobblestone_wall[east=none,north=none,south=tall,up=false,waterlogged=false,west=low]", + "5936": "minecraft:cobblestone_wall[east=none,north=none,south=tall,up=false,waterlogged=false,west=tall]", + "5937": "minecraft:cobblestone_wall[east=none,north=low,south=none,up=true,waterlogged=true,west=none]", + "5938": "minecraft:cobblestone_wall[east=none,north=low,south=none,up=true,waterlogged=true,west=low]", + "5939": "minecraft:cobblestone_wall[east=none,north=low,south=none,up=true,waterlogged=true,west=tall]", + "5940": "minecraft:cobblestone_wall[east=none,north=low,south=none,up=true,waterlogged=false,west=none]", + "5941": "minecraft:cobblestone_wall[east=none,north=low,south=none,up=true,waterlogged=false,west=low]", + "5942": "minecraft:cobblestone_wall[east=none,north=low,south=none,up=true,waterlogged=false,west=tall]", + "5943": "minecraft:cobblestone_wall[east=none,north=low,south=none,up=false,waterlogged=true,west=none]", + "5944": "minecraft:cobblestone_wall[east=none,north=low,south=none,up=false,waterlogged=true,west=low]", + "5945": "minecraft:cobblestone_wall[east=none,north=low,south=none,up=false,waterlogged=true,west=tall]", + "5946": "minecraft:cobblestone_wall[east=none,north=low,south=none,up=false,waterlogged=false,west=none]", + "5947": "minecraft:cobblestone_wall[east=none,north=low,south=none,up=false,waterlogged=false,west=low]", + "5948": "minecraft:cobblestone_wall[east=none,north=low,south=none,up=false,waterlogged=false,west=tall]", + "5949": "minecraft:cobblestone_wall[east=none,north=low,south=low,up=true,waterlogged=true,west=none]", + "5950": "minecraft:cobblestone_wall[east=none,north=low,south=low,up=true,waterlogged=true,west=low]", + "5951": "minecraft:cobblestone_wall[east=none,north=low,south=low,up=true,waterlogged=true,west=tall]", + "5952": "minecraft:cobblestone_wall[east=none,north=low,south=low,up=true,waterlogged=false,west=none]", + "5953": "minecraft:cobblestone_wall[east=none,north=low,south=low,up=true,waterlogged=false,west=low]", + "5954": "minecraft:cobblestone_wall[east=none,north=low,south=low,up=true,waterlogged=false,west=tall]", + "5955": "minecraft:cobblestone_wall[east=none,north=low,south=low,up=false,waterlogged=true,west=none]", + "5956": "minecraft:cobblestone_wall[east=none,north=low,south=low,up=false,waterlogged=true,west=low]", + "5957": "minecraft:cobblestone_wall[east=none,north=low,south=low,up=false,waterlogged=true,west=tall]", + "5958": "minecraft:cobblestone_wall[east=none,north=low,south=low,up=false,waterlogged=false,west=none]", + "5959": "minecraft:cobblestone_wall[east=none,north=low,south=low,up=false,waterlogged=false,west=low]", + "5960": "minecraft:cobblestone_wall[east=none,north=low,south=low,up=false,waterlogged=false,west=tall]", + "5961": "minecraft:cobblestone_wall[east=none,north=low,south=tall,up=true,waterlogged=true,west=none]", + "5962": "minecraft:cobblestone_wall[east=none,north=low,south=tall,up=true,waterlogged=true,west=low]", + "5963": "minecraft:cobblestone_wall[east=none,north=low,south=tall,up=true,waterlogged=true,west=tall]", + "5964": "minecraft:cobblestone_wall[east=none,north=low,south=tall,up=true,waterlogged=false,west=none]", + "5965": "minecraft:cobblestone_wall[east=none,north=low,south=tall,up=true,waterlogged=false,west=low]", + "5966": "minecraft:cobblestone_wall[east=none,north=low,south=tall,up=true,waterlogged=false,west=tall]", + "5967": "minecraft:cobblestone_wall[east=none,north=low,south=tall,up=false,waterlogged=true,west=none]", + "5968": "minecraft:cobblestone_wall[east=none,north=low,south=tall,up=false,waterlogged=true,west=low]", + "5969": "minecraft:cobblestone_wall[east=none,north=low,south=tall,up=false,waterlogged=true,west=tall]", + "5970": "minecraft:cobblestone_wall[east=none,north=low,south=tall,up=false,waterlogged=false,west=none]", + "5971": "minecraft:cobblestone_wall[east=none,north=low,south=tall,up=false,waterlogged=false,west=low]", + "5972": "minecraft:cobblestone_wall[east=none,north=low,south=tall,up=false,waterlogged=false,west=tall]", + "5973": "minecraft:cobblestone_wall[east=none,north=tall,south=none,up=true,waterlogged=true,west=none]", + "5974": "minecraft:cobblestone_wall[east=none,north=tall,south=none,up=true,waterlogged=true,west=low]", + "5975": "minecraft:cobblestone_wall[east=none,north=tall,south=none,up=true,waterlogged=true,west=tall]", + "5976": "minecraft:cobblestone_wall[east=none,north=tall,south=none,up=true,waterlogged=false,west=none]", + "5977": "minecraft:cobblestone_wall[east=none,north=tall,south=none,up=true,waterlogged=false,west=low]", + "5978": "minecraft:cobblestone_wall[east=none,north=tall,south=none,up=true,waterlogged=false,west=tall]", + "5979": "minecraft:cobblestone_wall[east=none,north=tall,south=none,up=false,waterlogged=true,west=none]", + "5980": "minecraft:cobblestone_wall[east=none,north=tall,south=none,up=false,waterlogged=true,west=low]", + "5981": "minecraft:cobblestone_wall[east=none,north=tall,south=none,up=false,waterlogged=true,west=tall]", + "5982": "minecraft:cobblestone_wall[east=none,north=tall,south=none,up=false,waterlogged=false,west=none]", + "5983": "minecraft:cobblestone_wall[east=none,north=tall,south=none,up=false,waterlogged=false,west=low]", + "5984": "minecraft:cobblestone_wall[east=none,north=tall,south=none,up=false,waterlogged=false,west=tall]", + "5985": "minecraft:cobblestone_wall[east=none,north=tall,south=low,up=true,waterlogged=true,west=none]", + "5986": "minecraft:cobblestone_wall[east=none,north=tall,south=low,up=true,waterlogged=true,west=low]", + "5987": "minecraft:cobblestone_wall[east=none,north=tall,south=low,up=true,waterlogged=true,west=tall]", + "5988": "minecraft:cobblestone_wall[east=none,north=tall,south=low,up=true,waterlogged=false,west=none]", + "5989": "minecraft:cobblestone_wall[east=none,north=tall,south=low,up=true,waterlogged=false,west=low]", + "5990": "minecraft:cobblestone_wall[east=none,north=tall,south=low,up=true,waterlogged=false,west=tall]", + "5991": "minecraft:cobblestone_wall[east=none,north=tall,south=low,up=false,waterlogged=true,west=none]", + "5992": "minecraft:cobblestone_wall[east=none,north=tall,south=low,up=false,waterlogged=true,west=low]", + "5993": "minecraft:cobblestone_wall[east=none,north=tall,south=low,up=false,waterlogged=true,west=tall]", + "5994": "minecraft:cobblestone_wall[east=none,north=tall,south=low,up=false,waterlogged=false,west=none]", + "5995": "minecraft:cobblestone_wall[east=none,north=tall,south=low,up=false,waterlogged=false,west=low]", + "5996": "minecraft:cobblestone_wall[east=none,north=tall,south=low,up=false,waterlogged=false,west=tall]", + "5997": "minecraft:cobblestone_wall[east=none,north=tall,south=tall,up=true,waterlogged=true,west=none]", + "5998": "minecraft:cobblestone_wall[east=none,north=tall,south=tall,up=true,waterlogged=true,west=low]", + "5999": "minecraft:cobblestone_wall[east=none,north=tall,south=tall,up=true,waterlogged=true,west=tall]", + "6000": "minecraft:cobblestone_wall[east=none,north=tall,south=tall,up=true,waterlogged=false,west=none]", + "6001": "minecraft:cobblestone_wall[east=none,north=tall,south=tall,up=true,waterlogged=false,west=low]", + "6002": "minecraft:cobblestone_wall[east=none,north=tall,south=tall,up=true,waterlogged=false,west=tall]", + "6003": "minecraft:cobblestone_wall[east=none,north=tall,south=tall,up=false,waterlogged=true,west=none]", + "6004": "minecraft:cobblestone_wall[east=none,north=tall,south=tall,up=false,waterlogged=true,west=low]", + "6005": "minecraft:cobblestone_wall[east=none,north=tall,south=tall,up=false,waterlogged=true,west=tall]", + "6006": "minecraft:cobblestone_wall[east=none,north=tall,south=tall,up=false,waterlogged=false,west=none]", + "6007": "minecraft:cobblestone_wall[east=none,north=tall,south=tall,up=false,waterlogged=false,west=low]", + "6008": "minecraft:cobblestone_wall[east=none,north=tall,south=tall,up=false,waterlogged=false,west=tall]", + "6009": "minecraft:cobblestone_wall[east=low,north=none,south=none,up=true,waterlogged=true,west=none]", + "6010": "minecraft:cobblestone_wall[east=low,north=none,south=none,up=true,waterlogged=true,west=low]", + "6011": "minecraft:cobblestone_wall[east=low,north=none,south=none,up=true,waterlogged=true,west=tall]", + "6012": "minecraft:cobblestone_wall[east=low,north=none,south=none,up=true,waterlogged=false,west=none]", + "6013": "minecraft:cobblestone_wall[east=low,north=none,south=none,up=true,waterlogged=false,west=low]", + "6014": "minecraft:cobblestone_wall[east=low,north=none,south=none,up=true,waterlogged=false,west=tall]", + "6015": "minecraft:cobblestone_wall[east=low,north=none,south=none,up=false,waterlogged=true,west=none]", + "6016": "minecraft:cobblestone_wall[east=low,north=none,south=none,up=false,waterlogged=true,west=low]", + "6017": "minecraft:cobblestone_wall[east=low,north=none,south=none,up=false,waterlogged=true,west=tall]", + "6018": "minecraft:cobblestone_wall[east=low,north=none,south=none,up=false,waterlogged=false,west=none]", + "6019": "minecraft:cobblestone_wall[east=low,north=none,south=none,up=false,waterlogged=false,west=low]", + "6020": "minecraft:cobblestone_wall[east=low,north=none,south=none,up=false,waterlogged=false,west=tall]", + "6021": "minecraft:cobblestone_wall[east=low,north=none,south=low,up=true,waterlogged=true,west=none]", + "6022": "minecraft:cobblestone_wall[east=low,north=none,south=low,up=true,waterlogged=true,west=low]", + "6023": "minecraft:cobblestone_wall[east=low,north=none,south=low,up=true,waterlogged=true,west=tall]", + "6024": "minecraft:cobblestone_wall[east=low,north=none,south=low,up=true,waterlogged=false,west=none]", + "6025": "minecraft:cobblestone_wall[east=low,north=none,south=low,up=true,waterlogged=false,west=low]", + "6026": "minecraft:cobblestone_wall[east=low,north=none,south=low,up=true,waterlogged=false,west=tall]", + "6027": "minecraft:cobblestone_wall[east=low,north=none,south=low,up=false,waterlogged=true,west=none]", + "6028": "minecraft:cobblestone_wall[east=low,north=none,south=low,up=false,waterlogged=true,west=low]", + "6029": "minecraft:cobblestone_wall[east=low,north=none,south=low,up=false,waterlogged=true,west=tall]", + "6030": "minecraft:cobblestone_wall[east=low,north=none,south=low,up=false,waterlogged=false,west=none]", + "6031": "minecraft:cobblestone_wall[east=low,north=none,south=low,up=false,waterlogged=false,west=low]", + "6032": "minecraft:cobblestone_wall[east=low,north=none,south=low,up=false,waterlogged=false,west=tall]", + "6033": "minecraft:cobblestone_wall[east=low,north=none,south=tall,up=true,waterlogged=true,west=none]", + "6034": "minecraft:cobblestone_wall[east=low,north=none,south=tall,up=true,waterlogged=true,west=low]", + "6035": "minecraft:cobblestone_wall[east=low,north=none,south=tall,up=true,waterlogged=true,west=tall]", + "6036": "minecraft:cobblestone_wall[east=low,north=none,south=tall,up=true,waterlogged=false,west=none]", + "6037": "minecraft:cobblestone_wall[east=low,north=none,south=tall,up=true,waterlogged=false,west=low]", + "6038": "minecraft:cobblestone_wall[east=low,north=none,south=tall,up=true,waterlogged=false,west=tall]", + "6039": "minecraft:cobblestone_wall[east=low,north=none,south=tall,up=false,waterlogged=true,west=none]", + "6040": "minecraft:cobblestone_wall[east=low,north=none,south=tall,up=false,waterlogged=true,west=low]", + "6041": "minecraft:cobblestone_wall[east=low,north=none,south=tall,up=false,waterlogged=true,west=tall]", + "6042": "minecraft:cobblestone_wall[east=low,north=none,south=tall,up=false,waterlogged=false,west=none]", + "6043": "minecraft:cobblestone_wall[east=low,north=none,south=tall,up=false,waterlogged=false,west=low]", + "6044": "minecraft:cobblestone_wall[east=low,north=none,south=tall,up=false,waterlogged=false,west=tall]", + "6045": "minecraft:cobblestone_wall[east=low,north=low,south=none,up=true,waterlogged=true,west=none]", + "6046": "minecraft:cobblestone_wall[east=low,north=low,south=none,up=true,waterlogged=true,west=low]", + "6047": "minecraft:cobblestone_wall[east=low,north=low,south=none,up=true,waterlogged=true,west=tall]", + "6048": "minecraft:cobblestone_wall[east=low,north=low,south=none,up=true,waterlogged=false,west=none]", + "6049": "minecraft:cobblestone_wall[east=low,north=low,south=none,up=true,waterlogged=false,west=low]", + "6050": "minecraft:cobblestone_wall[east=low,north=low,south=none,up=true,waterlogged=false,west=tall]", + "6051": "minecraft:cobblestone_wall[east=low,north=low,south=none,up=false,waterlogged=true,west=none]", + "6052": "minecraft:cobblestone_wall[east=low,north=low,south=none,up=false,waterlogged=true,west=low]", + "6053": "minecraft:cobblestone_wall[east=low,north=low,south=none,up=false,waterlogged=true,west=tall]", + "6054": "minecraft:cobblestone_wall[east=low,north=low,south=none,up=false,waterlogged=false,west=none]", + "6055": "minecraft:cobblestone_wall[east=low,north=low,south=none,up=false,waterlogged=false,west=low]", + "6056": "minecraft:cobblestone_wall[east=low,north=low,south=none,up=false,waterlogged=false,west=tall]", + "6057": "minecraft:cobblestone_wall[east=low,north=low,south=low,up=true,waterlogged=true,west=none]", + "6058": "minecraft:cobblestone_wall[east=low,north=low,south=low,up=true,waterlogged=true,west=low]", + "6059": "minecraft:cobblestone_wall[east=low,north=low,south=low,up=true,waterlogged=true,west=tall]", + "6060": "minecraft:cobblestone_wall[east=low,north=low,south=low,up=true,waterlogged=false,west=none]", + "6061": "minecraft:cobblestone_wall[east=low,north=low,south=low,up=true,waterlogged=false,west=low]", + "6062": "minecraft:cobblestone_wall[east=low,north=low,south=low,up=true,waterlogged=false,west=tall]", + "6063": "minecraft:cobblestone_wall[east=low,north=low,south=low,up=false,waterlogged=true,west=none]", + "6064": "minecraft:cobblestone_wall[east=low,north=low,south=low,up=false,waterlogged=true,west=low]", + "6065": "minecraft:cobblestone_wall[east=low,north=low,south=low,up=false,waterlogged=true,west=tall]", + "6066": "minecraft:cobblestone_wall[east=low,north=low,south=low,up=false,waterlogged=false,west=none]", + "6067": "minecraft:cobblestone_wall[east=low,north=low,south=low,up=false,waterlogged=false,west=low]", + "6068": "minecraft:cobblestone_wall[east=low,north=low,south=low,up=false,waterlogged=false,west=tall]", + "6069": "minecraft:cobblestone_wall[east=low,north=low,south=tall,up=true,waterlogged=true,west=none]", + "6070": "minecraft:cobblestone_wall[east=low,north=low,south=tall,up=true,waterlogged=true,west=low]", + "6071": "minecraft:cobblestone_wall[east=low,north=low,south=tall,up=true,waterlogged=true,west=tall]", + "6072": "minecraft:cobblestone_wall[east=low,north=low,south=tall,up=true,waterlogged=false,west=none]", + "6073": "minecraft:cobblestone_wall[east=low,north=low,south=tall,up=true,waterlogged=false,west=low]", + "6074": "minecraft:cobblestone_wall[east=low,north=low,south=tall,up=true,waterlogged=false,west=tall]", + "6075": "minecraft:cobblestone_wall[east=low,north=low,south=tall,up=false,waterlogged=true,west=none]", + "6076": "minecraft:cobblestone_wall[east=low,north=low,south=tall,up=false,waterlogged=true,west=low]", + "6077": "minecraft:cobblestone_wall[east=low,north=low,south=tall,up=false,waterlogged=true,west=tall]", + "6078": "minecraft:cobblestone_wall[east=low,north=low,south=tall,up=false,waterlogged=false,west=none]", + "6079": "minecraft:cobblestone_wall[east=low,north=low,south=tall,up=false,waterlogged=false,west=low]", + "6080": "minecraft:cobblestone_wall[east=low,north=low,south=tall,up=false,waterlogged=false,west=tall]", + "6081": "minecraft:cobblestone_wall[east=low,north=tall,south=none,up=true,waterlogged=true,west=none]", + "6082": "minecraft:cobblestone_wall[east=low,north=tall,south=none,up=true,waterlogged=true,west=low]", + "6083": "minecraft:cobblestone_wall[east=low,north=tall,south=none,up=true,waterlogged=true,west=tall]", + "6084": "minecraft:cobblestone_wall[east=low,north=tall,south=none,up=true,waterlogged=false,west=none]", + "6085": "minecraft:cobblestone_wall[east=low,north=tall,south=none,up=true,waterlogged=false,west=low]", + "6086": "minecraft:cobblestone_wall[east=low,north=tall,south=none,up=true,waterlogged=false,west=tall]", + "6087": "minecraft:cobblestone_wall[east=low,north=tall,south=none,up=false,waterlogged=true,west=none]", + "6088": "minecraft:cobblestone_wall[east=low,north=tall,south=none,up=false,waterlogged=true,west=low]", + "6089": "minecraft:cobblestone_wall[east=low,north=tall,south=none,up=false,waterlogged=true,west=tall]", + "6090": "minecraft:cobblestone_wall[east=low,north=tall,south=none,up=false,waterlogged=false,west=none]", + "6091": "minecraft:cobblestone_wall[east=low,north=tall,south=none,up=false,waterlogged=false,west=low]", + "6092": "minecraft:cobblestone_wall[east=low,north=tall,south=none,up=false,waterlogged=false,west=tall]", + "6093": "minecraft:cobblestone_wall[east=low,north=tall,south=low,up=true,waterlogged=true,west=none]", + "6094": "minecraft:cobblestone_wall[east=low,north=tall,south=low,up=true,waterlogged=true,west=low]", + "6095": "minecraft:cobblestone_wall[east=low,north=tall,south=low,up=true,waterlogged=true,west=tall]", + "6096": "minecraft:cobblestone_wall[east=low,north=tall,south=low,up=true,waterlogged=false,west=none]", + "6097": "minecraft:cobblestone_wall[east=low,north=tall,south=low,up=true,waterlogged=false,west=low]", + "6098": "minecraft:cobblestone_wall[east=low,north=tall,south=low,up=true,waterlogged=false,west=tall]", + "6099": "minecraft:cobblestone_wall[east=low,north=tall,south=low,up=false,waterlogged=true,west=none]", + "6100": "minecraft:cobblestone_wall[east=low,north=tall,south=low,up=false,waterlogged=true,west=low]", + "6101": "minecraft:cobblestone_wall[east=low,north=tall,south=low,up=false,waterlogged=true,west=tall]", + "6102": "minecraft:cobblestone_wall[east=low,north=tall,south=low,up=false,waterlogged=false,west=none]", + "6103": "minecraft:cobblestone_wall[east=low,north=tall,south=low,up=false,waterlogged=false,west=low]", + "6104": "minecraft:cobblestone_wall[east=low,north=tall,south=low,up=false,waterlogged=false,west=tall]", + "6105": "minecraft:cobblestone_wall[east=low,north=tall,south=tall,up=true,waterlogged=true,west=none]", + "6106": "minecraft:cobblestone_wall[east=low,north=tall,south=tall,up=true,waterlogged=true,west=low]", + "6107": "minecraft:cobblestone_wall[east=low,north=tall,south=tall,up=true,waterlogged=true,west=tall]", + "6108": "minecraft:cobblestone_wall[east=low,north=tall,south=tall,up=true,waterlogged=false,west=none]", + "6109": "minecraft:cobblestone_wall[east=low,north=tall,south=tall,up=true,waterlogged=false,west=low]", + "6110": "minecraft:cobblestone_wall[east=low,north=tall,south=tall,up=true,waterlogged=false,west=tall]", + "6111": "minecraft:cobblestone_wall[east=low,north=tall,south=tall,up=false,waterlogged=true,west=none]", + "6112": "minecraft:cobblestone_wall[east=low,north=tall,south=tall,up=false,waterlogged=true,west=low]", + "6113": "minecraft:cobblestone_wall[east=low,north=tall,south=tall,up=false,waterlogged=true,west=tall]", + "6114": "minecraft:cobblestone_wall[east=low,north=tall,south=tall,up=false,waterlogged=false,west=none]", + "6115": "minecraft:cobblestone_wall[east=low,north=tall,south=tall,up=false,waterlogged=false,west=low]", + "6116": "minecraft:cobblestone_wall[east=low,north=tall,south=tall,up=false,waterlogged=false,west=tall]", + "6117": "minecraft:cobblestone_wall[east=tall,north=none,south=none,up=true,waterlogged=true,west=none]", + "6118": "minecraft:cobblestone_wall[east=tall,north=none,south=none,up=true,waterlogged=true,west=low]", + "6119": "minecraft:cobblestone_wall[east=tall,north=none,south=none,up=true,waterlogged=true,west=tall]", + "6120": "minecraft:cobblestone_wall[east=tall,north=none,south=none,up=true,waterlogged=false,west=none]", + "6121": "minecraft:cobblestone_wall[east=tall,north=none,south=none,up=true,waterlogged=false,west=low]", + "6122": "minecraft:cobblestone_wall[east=tall,north=none,south=none,up=true,waterlogged=false,west=tall]", + "6123": "minecraft:cobblestone_wall[east=tall,north=none,south=none,up=false,waterlogged=true,west=none]", + "6124": "minecraft:cobblestone_wall[east=tall,north=none,south=none,up=false,waterlogged=true,west=low]", + "6125": "minecraft:cobblestone_wall[east=tall,north=none,south=none,up=false,waterlogged=true,west=tall]", + "6126": "minecraft:cobblestone_wall[east=tall,north=none,south=none,up=false,waterlogged=false,west=none]", + "6127": "minecraft:cobblestone_wall[east=tall,north=none,south=none,up=false,waterlogged=false,west=low]", + "6128": "minecraft:cobblestone_wall[east=tall,north=none,south=none,up=false,waterlogged=false,west=tall]", + "6129": "minecraft:cobblestone_wall[east=tall,north=none,south=low,up=true,waterlogged=true,west=none]", + "6130": "minecraft:cobblestone_wall[east=tall,north=none,south=low,up=true,waterlogged=true,west=low]", + "6131": "minecraft:cobblestone_wall[east=tall,north=none,south=low,up=true,waterlogged=true,west=tall]", + "6132": "minecraft:cobblestone_wall[east=tall,north=none,south=low,up=true,waterlogged=false,west=none]", + "6133": "minecraft:cobblestone_wall[east=tall,north=none,south=low,up=true,waterlogged=false,west=low]", + "6134": "minecraft:cobblestone_wall[east=tall,north=none,south=low,up=true,waterlogged=false,west=tall]", + "6135": "minecraft:cobblestone_wall[east=tall,north=none,south=low,up=false,waterlogged=true,west=none]", + "6136": "minecraft:cobblestone_wall[east=tall,north=none,south=low,up=false,waterlogged=true,west=low]", + "6137": "minecraft:cobblestone_wall[east=tall,north=none,south=low,up=false,waterlogged=true,west=tall]", + "6138": "minecraft:cobblestone_wall[east=tall,north=none,south=low,up=false,waterlogged=false,west=none]", + "6139": "minecraft:cobblestone_wall[east=tall,north=none,south=low,up=false,waterlogged=false,west=low]", + "6140": "minecraft:cobblestone_wall[east=tall,north=none,south=low,up=false,waterlogged=false,west=tall]", + "6141": "minecraft:cobblestone_wall[east=tall,north=none,south=tall,up=true,waterlogged=true,west=none]", + "6142": "minecraft:cobblestone_wall[east=tall,north=none,south=tall,up=true,waterlogged=true,west=low]", + "6143": "minecraft:cobblestone_wall[east=tall,north=none,south=tall,up=true,waterlogged=true,west=tall]", + "6144": "minecraft:cobblestone_wall[east=tall,north=none,south=tall,up=true,waterlogged=false,west=none]", + "6145": "minecraft:cobblestone_wall[east=tall,north=none,south=tall,up=true,waterlogged=false,west=low]", + "6146": "minecraft:cobblestone_wall[east=tall,north=none,south=tall,up=true,waterlogged=false,west=tall]", + "6147": "minecraft:cobblestone_wall[east=tall,north=none,south=tall,up=false,waterlogged=true,west=none]", + "6148": "minecraft:cobblestone_wall[east=tall,north=none,south=tall,up=false,waterlogged=true,west=low]", + "6149": "minecraft:cobblestone_wall[east=tall,north=none,south=tall,up=false,waterlogged=true,west=tall]", + "6150": "minecraft:cobblestone_wall[east=tall,north=none,south=tall,up=false,waterlogged=false,west=none]", + "6151": "minecraft:cobblestone_wall[east=tall,north=none,south=tall,up=false,waterlogged=false,west=low]", + "6152": "minecraft:cobblestone_wall[east=tall,north=none,south=tall,up=false,waterlogged=false,west=tall]", + "6153": "minecraft:cobblestone_wall[east=tall,north=low,south=none,up=true,waterlogged=true,west=none]", + "6154": "minecraft:cobblestone_wall[east=tall,north=low,south=none,up=true,waterlogged=true,west=low]", + "6155": "minecraft:cobblestone_wall[east=tall,north=low,south=none,up=true,waterlogged=true,west=tall]", + "6156": "minecraft:cobblestone_wall[east=tall,north=low,south=none,up=true,waterlogged=false,west=none]", + "6157": "minecraft:cobblestone_wall[east=tall,north=low,south=none,up=true,waterlogged=false,west=low]", + "6158": "minecraft:cobblestone_wall[east=tall,north=low,south=none,up=true,waterlogged=false,west=tall]", + "6159": "minecraft:cobblestone_wall[east=tall,north=low,south=none,up=false,waterlogged=true,west=none]", + "6160": "minecraft:cobblestone_wall[east=tall,north=low,south=none,up=false,waterlogged=true,west=low]", + "6161": "minecraft:cobblestone_wall[east=tall,north=low,south=none,up=false,waterlogged=true,west=tall]", + "6162": "minecraft:cobblestone_wall[east=tall,north=low,south=none,up=false,waterlogged=false,west=none]", + "6163": "minecraft:cobblestone_wall[east=tall,north=low,south=none,up=false,waterlogged=false,west=low]", + "6164": "minecraft:cobblestone_wall[east=tall,north=low,south=none,up=false,waterlogged=false,west=tall]", + "6165": "minecraft:cobblestone_wall[east=tall,north=low,south=low,up=true,waterlogged=true,west=none]", + "6166": "minecraft:cobblestone_wall[east=tall,north=low,south=low,up=true,waterlogged=true,west=low]", + "6167": "minecraft:cobblestone_wall[east=tall,north=low,south=low,up=true,waterlogged=true,west=tall]", + "6168": "minecraft:cobblestone_wall[east=tall,north=low,south=low,up=true,waterlogged=false,west=none]", + "6169": "minecraft:cobblestone_wall[east=tall,north=low,south=low,up=true,waterlogged=false,west=low]", + "6170": "minecraft:cobblestone_wall[east=tall,north=low,south=low,up=true,waterlogged=false,west=tall]", + "6171": "minecraft:cobblestone_wall[east=tall,north=low,south=low,up=false,waterlogged=true,west=none]", + "6172": "minecraft:cobblestone_wall[east=tall,north=low,south=low,up=false,waterlogged=true,west=low]", + "6173": "minecraft:cobblestone_wall[east=tall,north=low,south=low,up=false,waterlogged=true,west=tall]", + "6174": "minecraft:cobblestone_wall[east=tall,north=low,south=low,up=false,waterlogged=false,west=none]", + "6175": "minecraft:cobblestone_wall[east=tall,north=low,south=low,up=false,waterlogged=false,west=low]", + "6176": "minecraft:cobblestone_wall[east=tall,north=low,south=low,up=false,waterlogged=false,west=tall]", + "6177": "minecraft:cobblestone_wall[east=tall,north=low,south=tall,up=true,waterlogged=true,west=none]", + "6178": "minecraft:cobblestone_wall[east=tall,north=low,south=tall,up=true,waterlogged=true,west=low]", + "6179": "minecraft:cobblestone_wall[east=tall,north=low,south=tall,up=true,waterlogged=true,west=tall]", + "6180": "minecraft:cobblestone_wall[east=tall,north=low,south=tall,up=true,waterlogged=false,west=none]", + "6181": "minecraft:cobblestone_wall[east=tall,north=low,south=tall,up=true,waterlogged=false,west=low]", + "6182": "minecraft:cobblestone_wall[east=tall,north=low,south=tall,up=true,waterlogged=false,west=tall]", + "6183": "minecraft:cobblestone_wall[east=tall,north=low,south=tall,up=false,waterlogged=true,west=none]", + "6184": "minecraft:cobblestone_wall[east=tall,north=low,south=tall,up=false,waterlogged=true,west=low]", + "6185": "minecraft:cobblestone_wall[east=tall,north=low,south=tall,up=false,waterlogged=true,west=tall]", + "6186": "minecraft:cobblestone_wall[east=tall,north=low,south=tall,up=false,waterlogged=false,west=none]", + "6187": "minecraft:cobblestone_wall[east=tall,north=low,south=tall,up=false,waterlogged=false,west=low]", + "6188": "minecraft:cobblestone_wall[east=tall,north=low,south=tall,up=false,waterlogged=false,west=tall]", + "6189": "minecraft:cobblestone_wall[east=tall,north=tall,south=none,up=true,waterlogged=true,west=none]", + "6190": "minecraft:cobblestone_wall[east=tall,north=tall,south=none,up=true,waterlogged=true,west=low]", + "6191": "minecraft:cobblestone_wall[east=tall,north=tall,south=none,up=true,waterlogged=true,west=tall]", + "6192": "minecraft:cobblestone_wall[east=tall,north=tall,south=none,up=true,waterlogged=false,west=none]", + "6193": "minecraft:cobblestone_wall[east=tall,north=tall,south=none,up=true,waterlogged=false,west=low]", + "6194": "minecraft:cobblestone_wall[east=tall,north=tall,south=none,up=true,waterlogged=false,west=tall]", + "6195": "minecraft:cobblestone_wall[east=tall,north=tall,south=none,up=false,waterlogged=true,west=none]", + "6196": "minecraft:cobblestone_wall[east=tall,north=tall,south=none,up=false,waterlogged=true,west=low]", + "6197": "minecraft:cobblestone_wall[east=tall,north=tall,south=none,up=false,waterlogged=true,west=tall]", + "6198": "minecraft:cobblestone_wall[east=tall,north=tall,south=none,up=false,waterlogged=false,west=none]", + "6199": "minecraft:cobblestone_wall[east=tall,north=tall,south=none,up=false,waterlogged=false,west=low]", + "6200": "minecraft:cobblestone_wall[east=tall,north=tall,south=none,up=false,waterlogged=false,west=tall]", + "6201": "minecraft:cobblestone_wall[east=tall,north=tall,south=low,up=true,waterlogged=true,west=none]", + "6202": "minecraft:cobblestone_wall[east=tall,north=tall,south=low,up=true,waterlogged=true,west=low]", + "6203": "minecraft:cobblestone_wall[east=tall,north=tall,south=low,up=true,waterlogged=true,west=tall]", + "6204": "minecraft:cobblestone_wall[east=tall,north=tall,south=low,up=true,waterlogged=false,west=none]", + "6205": "minecraft:cobblestone_wall[east=tall,north=tall,south=low,up=true,waterlogged=false,west=low]", + "6206": "minecraft:cobblestone_wall[east=tall,north=tall,south=low,up=true,waterlogged=false,west=tall]", + "6207": "minecraft:cobblestone_wall[east=tall,north=tall,south=low,up=false,waterlogged=true,west=none]", + "6208": "minecraft:cobblestone_wall[east=tall,north=tall,south=low,up=false,waterlogged=true,west=low]", + "6209": "minecraft:cobblestone_wall[east=tall,north=tall,south=low,up=false,waterlogged=true,west=tall]", + "6210": "minecraft:cobblestone_wall[east=tall,north=tall,south=low,up=false,waterlogged=false,west=none]", + "6211": "minecraft:cobblestone_wall[east=tall,north=tall,south=low,up=false,waterlogged=false,west=low]", + "6212": "minecraft:cobblestone_wall[east=tall,north=tall,south=low,up=false,waterlogged=false,west=tall]", + "6213": "minecraft:cobblestone_wall[east=tall,north=tall,south=tall,up=true,waterlogged=true,west=none]", + "6214": "minecraft:cobblestone_wall[east=tall,north=tall,south=tall,up=true,waterlogged=true,west=low]", + "6215": "minecraft:cobblestone_wall[east=tall,north=tall,south=tall,up=true,waterlogged=true,west=tall]", + "6216": "minecraft:cobblestone_wall[east=tall,north=tall,south=tall,up=true,waterlogged=false,west=none]", + "6217": "minecraft:cobblestone_wall[east=tall,north=tall,south=tall,up=true,waterlogged=false,west=low]", + "6218": "minecraft:cobblestone_wall[east=tall,north=tall,south=tall,up=true,waterlogged=false,west=tall]", + "6219": "minecraft:cobblestone_wall[east=tall,north=tall,south=tall,up=false,waterlogged=true,west=none]", + "6220": "minecraft:cobblestone_wall[east=tall,north=tall,south=tall,up=false,waterlogged=true,west=low]", + "6221": "minecraft:cobblestone_wall[east=tall,north=tall,south=tall,up=false,waterlogged=true,west=tall]", + "6222": "minecraft:cobblestone_wall[east=tall,north=tall,south=tall,up=false,waterlogged=false,west=none]", + "6223": "minecraft:cobblestone_wall[east=tall,north=tall,south=tall,up=false,waterlogged=false,west=low]", + "6224": "minecraft:cobblestone_wall[east=tall,north=tall,south=tall,up=false,waterlogged=false,west=tall]", + "6225": "minecraft:dark_oak_fence_gate[facing=north,in_wall=true,open=true,powered=true]", + "6226": "minecraft:dark_oak_fence_gate[facing=north,in_wall=true,open=true,powered=false]", + "6227": "minecraft:dark_oak_fence_gate[facing=north,in_wall=true,open=false,powered=true]", + "6228": "minecraft:dark_oak_fence_gate[facing=north,in_wall=true,open=false,powered=false]", + "6229": "minecraft:dark_oak_fence_gate[facing=north,in_wall=false,open=true,powered=true]", + "6230": "minecraft:dark_oak_fence_gate[facing=north,in_wall=false,open=true,powered=false]", + "6231": "minecraft:dark_oak_fence_gate[facing=north,in_wall=false,open=false,powered=true]", + "6232": "minecraft:dark_oak_fence_gate[facing=north,in_wall=false,open=false,powered=false]", + "6233": "minecraft:dark_oak_fence_gate[facing=south,in_wall=true,open=true,powered=true]", + "6234": "minecraft:dark_oak_fence_gate[facing=south,in_wall=true,open=true,powered=false]", + "6235": "minecraft:dark_oak_fence_gate[facing=south,in_wall=true,open=false,powered=true]", + "6236": "minecraft:dark_oak_fence_gate[facing=south,in_wall=true,open=false,powered=false]", + "6237": "minecraft:dark_oak_fence_gate[facing=south,in_wall=false,open=true,powered=true]", + "6238": "minecraft:dark_oak_fence_gate[facing=south,in_wall=false,open=true,powered=false]", + "6239": "minecraft:dark_oak_fence_gate[facing=south,in_wall=false,open=false,powered=true]", + "6240": "minecraft:dark_oak_fence_gate[facing=south,in_wall=false,open=false,powered=false]", + "6241": "minecraft:dark_oak_fence_gate[facing=west,in_wall=true,open=true,powered=true]", + "6242": "minecraft:dark_oak_fence_gate[facing=west,in_wall=true,open=true,powered=false]", + "6243": "minecraft:dark_oak_fence_gate[facing=west,in_wall=true,open=false,powered=true]", + "6244": "minecraft:dark_oak_fence_gate[facing=west,in_wall=true,open=false,powered=false]", + "6245": "minecraft:dark_oak_fence_gate[facing=west,in_wall=false,open=true,powered=true]", + "6246": "minecraft:dark_oak_fence_gate[facing=west,in_wall=false,open=true,powered=false]", + "6247": "minecraft:dark_oak_fence_gate[facing=west,in_wall=false,open=false,powered=true]", + "6248": "minecraft:dark_oak_fence_gate[facing=west,in_wall=false,open=false,powered=false]", + "6249": "minecraft:dark_oak_fence_gate[facing=east,in_wall=true,open=true,powered=true]", + "6250": "minecraft:dark_oak_fence_gate[facing=east,in_wall=true,open=true,powered=false]", + "6251": "minecraft:dark_oak_fence_gate[facing=east,in_wall=true,open=false,powered=true]", + "6252": "minecraft:dark_oak_fence_gate[facing=east,in_wall=true,open=false,powered=false]", + "6253": "minecraft:dark_oak_fence_gate[facing=east,in_wall=false,open=true,powered=true]", + "6254": "minecraft:dark_oak_fence_gate[facing=east,in_wall=false,open=true,powered=false]", + "6255": "minecraft:dark_oak_fence_gate[facing=east,in_wall=false,open=false,powered=true]", + "6256": "minecraft:dark_oak_fence_gate[facing=east,in_wall=false,open=false,powered=false]", + "6257": "minecraft:diamond_block", + "6258": "minecraft:redstone_wire[east=up,north=up,power=0,south=up,west=up]", + "6259": "minecraft:redstone_wire[east=up,north=up,power=0,south=up,west=side]", + "6260": "minecraft:redstone_wire[east=up,north=up,power=0,south=up,west=none]", + "6261": "minecraft:redstone_wire[east=up,north=up,power=0,south=side,west=up]", + "6262": "minecraft:redstone_wire[east=up,north=up,power=0,south=side,west=side]", + "6263": "minecraft:redstone_wire[east=up,north=up,power=0,south=side,west=none]", + "6264": "minecraft:redstone_wire[east=up,north=up,power=0,south=none,west=up]", + "6265": "minecraft:redstone_wire[east=up,north=up,power=0,south=none,west=side]", + "6266": "minecraft:redstone_wire[east=up,north=up,power=0,south=none,west=none]", + "6267": "minecraft:redstone_wire[east=up,north=up,power=1,south=up,west=up]", + "6268": "minecraft:redstone_wire[east=up,north=up,power=1,south=up,west=side]", + "6269": "minecraft:redstone_wire[east=up,north=up,power=1,south=up,west=none]", + "6270": "minecraft:redstone_wire[east=up,north=up,power=1,south=side,west=up]", + "6271": "minecraft:redstone_wire[east=up,north=up,power=1,south=side,west=side]", + "6272": "minecraft:redstone_wire[east=up,north=up,power=1,south=side,west=none]", + "6273": "minecraft:redstone_wire[east=up,north=up,power=1,south=none,west=up]", + "6274": "minecraft:redstone_wire[east=up,north=up,power=1,south=none,west=side]", + "6275": "minecraft:redstone_wire[east=up,north=up,power=1,south=none,west=none]", + "6276": "minecraft:redstone_wire[east=up,north=up,power=2,south=up,west=up]", + "6277": "minecraft:redstone_wire[east=up,north=up,power=2,south=up,west=side]", + "6278": "minecraft:redstone_wire[east=up,north=up,power=2,south=up,west=none]", + "6279": "minecraft:redstone_wire[east=up,north=up,power=2,south=side,west=up]", + "6280": "minecraft:redstone_wire[east=up,north=up,power=2,south=side,west=side]", + "6281": "minecraft:redstone_wire[east=up,north=up,power=2,south=side,west=none]", + "6282": "minecraft:redstone_wire[east=up,north=up,power=2,south=none,west=up]", + "6283": "minecraft:redstone_wire[east=up,north=up,power=2,south=none,west=side]", + "6284": "minecraft:redstone_wire[east=up,north=up,power=2,south=none,west=none]", + "6285": "minecraft:redstone_wire[east=up,north=up,power=3,south=up,west=up]", + "6286": "minecraft:redstone_wire[east=up,north=up,power=3,south=up,west=side]", + "6287": "minecraft:redstone_wire[east=up,north=up,power=3,south=up,west=none]", + "6288": "minecraft:redstone_wire[east=up,north=up,power=3,south=side,west=up]", + "6289": "minecraft:redstone_wire[east=up,north=up,power=3,south=side,west=side]", + "6290": "minecraft:redstone_wire[east=up,north=up,power=3,south=side,west=none]", + "6291": "minecraft:redstone_wire[east=up,north=up,power=3,south=none,west=up]", + "6292": "minecraft:redstone_wire[east=up,north=up,power=3,south=none,west=side]", + "6293": "minecraft:redstone_wire[east=up,north=up,power=3,south=none,west=none]", + "6294": "minecraft:redstone_wire[east=up,north=up,power=4,south=up,west=up]", + "6295": "minecraft:redstone_wire[east=up,north=up,power=4,south=up,west=side]", + "6296": "minecraft:redstone_wire[east=up,north=up,power=4,south=up,west=none]", + "6297": "minecraft:redstone_wire[east=up,north=up,power=4,south=side,west=up]", + "6298": "minecraft:redstone_wire[east=up,north=up,power=4,south=side,west=side]", + "6299": "minecraft:redstone_wire[east=up,north=up,power=4,south=side,west=none]", + "6300": "minecraft:redstone_wire[east=up,north=up,power=4,south=none,west=up]", + "6301": "minecraft:redstone_wire[east=up,north=up,power=4,south=none,west=side]", + "6302": "minecraft:redstone_wire[east=up,north=up,power=4,south=none,west=none]", + "6303": "minecraft:redstone_wire[east=up,north=up,power=5,south=up,west=up]", + "6304": "minecraft:redstone_wire[east=up,north=up,power=5,south=up,west=side]", + "6305": "minecraft:redstone_wire[east=up,north=up,power=5,south=up,west=none]", + "6306": "minecraft:redstone_wire[east=up,north=up,power=5,south=side,west=up]", + "6307": "minecraft:redstone_wire[east=up,north=up,power=5,south=side,west=side]", + "6308": "minecraft:redstone_wire[east=up,north=up,power=5,south=side,west=none]", + "6309": "minecraft:redstone_wire[east=up,north=up,power=5,south=none,west=up]", + "6310": "minecraft:redstone_wire[east=up,north=up,power=5,south=none,west=side]", + "6311": "minecraft:redstone_wire[east=up,north=up,power=5,south=none,west=none]", + "6312": "minecraft:redstone_wire[east=up,north=up,power=6,south=up,west=up]", + "6313": "minecraft:redstone_wire[east=up,north=up,power=6,south=up,west=side]", + "6314": "minecraft:redstone_wire[east=up,north=up,power=6,south=up,west=none]", + "6315": "minecraft:redstone_wire[east=up,north=up,power=6,south=side,west=up]", + "6316": "minecraft:redstone_wire[east=up,north=up,power=6,south=side,west=side]", + "6317": "minecraft:redstone_wire[east=up,north=up,power=6,south=side,west=none]", + "6318": "minecraft:redstone_wire[east=up,north=up,power=6,south=none,west=up]", + "6319": "minecraft:redstone_wire[east=up,north=up,power=6,south=none,west=side]", + "6320": "minecraft:redstone_wire[east=up,north=up,power=6,south=none,west=none]", + "6321": "minecraft:redstone_wire[east=up,north=up,power=7,south=up,west=up]", + "6322": "minecraft:redstone_wire[east=up,north=up,power=7,south=up,west=side]", + "6323": "minecraft:redstone_wire[east=up,north=up,power=7,south=up,west=none]", + "6324": "minecraft:redstone_wire[east=up,north=up,power=7,south=side,west=up]", + "6325": "minecraft:redstone_wire[east=up,north=up,power=7,south=side,west=side]", + "6326": "minecraft:redstone_wire[east=up,north=up,power=7,south=side,west=none]", + "6327": "minecraft:redstone_wire[east=up,north=up,power=7,south=none,west=up]", + "6328": "minecraft:redstone_wire[east=up,north=up,power=7,south=none,west=side]", + "6329": "minecraft:redstone_wire[east=up,north=up,power=7,south=none,west=none]", + "6330": "minecraft:redstone_wire[east=up,north=up,power=8,south=up,west=up]", + "6331": "minecraft:redstone_wire[east=up,north=up,power=8,south=up,west=side]", + "6332": "minecraft:redstone_wire[east=up,north=up,power=8,south=up,west=none]", + "6333": "minecraft:redstone_wire[east=up,north=up,power=8,south=side,west=up]", + "6334": "minecraft:redstone_wire[east=up,north=up,power=8,south=side,west=side]", + "6335": "minecraft:redstone_wire[east=up,north=up,power=8,south=side,west=none]", + "6336": "minecraft:redstone_wire[east=up,north=up,power=8,south=none,west=up]", + "6337": "minecraft:redstone_wire[east=up,north=up,power=8,south=none,west=side]", + "6338": "minecraft:redstone_wire[east=up,north=up,power=8,south=none,west=none]", + "6339": "minecraft:redstone_wire[east=up,north=up,power=9,south=up,west=up]", + "6340": "minecraft:redstone_wire[east=up,north=up,power=9,south=up,west=side]", + "6341": "minecraft:redstone_wire[east=up,north=up,power=9,south=up,west=none]", + "6342": "minecraft:redstone_wire[east=up,north=up,power=9,south=side,west=up]", + "6343": "minecraft:redstone_wire[east=up,north=up,power=9,south=side,west=side]", + "6344": "minecraft:redstone_wire[east=up,north=up,power=9,south=side,west=none]", + "6345": "minecraft:redstone_wire[east=up,north=up,power=9,south=none,west=up]", + "6346": "minecraft:redstone_wire[east=up,north=up,power=9,south=none,west=side]", + "6347": "minecraft:redstone_wire[east=up,north=up,power=9,south=none,west=none]", + "6348": "minecraft:redstone_wire[east=up,north=up,power=10,south=up,west=up]", + "6349": "minecraft:redstone_wire[east=up,north=up,power=10,south=up,west=side]", + "6350": "minecraft:redstone_wire[east=up,north=up,power=10,south=up,west=none]", + "6351": "minecraft:redstone_wire[east=up,north=up,power=10,south=side,west=up]", + "6352": "minecraft:redstone_wire[east=up,north=up,power=10,south=side,west=side]", + "6353": "minecraft:redstone_wire[east=up,north=up,power=10,south=side,west=none]", + "6354": "minecraft:redstone_wire[east=up,north=up,power=10,south=none,west=up]", + "6355": "minecraft:redstone_wire[east=up,north=up,power=10,south=none,west=side]", + "6356": "minecraft:redstone_wire[east=up,north=up,power=10,south=none,west=none]", + "6357": "minecraft:redstone_wire[east=up,north=up,power=11,south=up,west=up]", + "6358": "minecraft:redstone_wire[east=up,north=up,power=11,south=up,west=side]", + "6359": "minecraft:redstone_wire[east=up,north=up,power=11,south=up,west=none]", + "6360": "minecraft:redstone_wire[east=up,north=up,power=11,south=side,west=up]", + "6361": "minecraft:redstone_wire[east=up,north=up,power=11,south=side,west=side]", + "6362": "minecraft:redstone_wire[east=up,north=up,power=11,south=side,west=none]", + "6363": "minecraft:redstone_wire[east=up,north=up,power=11,south=none,west=up]", + "6364": "minecraft:redstone_wire[east=up,north=up,power=11,south=none,west=side]", + "6365": "minecraft:redstone_wire[east=up,north=up,power=11,south=none,west=none]", + "6366": "minecraft:redstone_wire[east=up,north=up,power=12,south=up,west=up]", + "6367": "minecraft:redstone_wire[east=up,north=up,power=12,south=up,west=side]", + "6368": "minecraft:redstone_wire[east=up,north=up,power=12,south=up,west=none]", + "6369": "minecraft:redstone_wire[east=up,north=up,power=12,south=side,west=up]", + "6370": "minecraft:redstone_wire[east=up,north=up,power=12,south=side,west=side]", + "6371": "minecraft:redstone_wire[east=up,north=up,power=12,south=side,west=none]", + "6372": "minecraft:redstone_wire[east=up,north=up,power=12,south=none,west=up]", + "6373": "minecraft:redstone_wire[east=up,north=up,power=12,south=none,west=side]", + "6374": "minecraft:redstone_wire[east=up,north=up,power=12,south=none,west=none]", + "6375": "minecraft:redstone_wire[east=up,north=up,power=13,south=up,west=up]", + "6376": "minecraft:redstone_wire[east=up,north=up,power=13,south=up,west=side]", + "6377": "minecraft:redstone_wire[east=up,north=up,power=13,south=up,west=none]", + "6378": "minecraft:redstone_wire[east=up,north=up,power=13,south=side,west=up]", + "6379": "minecraft:redstone_wire[east=up,north=up,power=13,south=side,west=side]", + "6380": "minecraft:redstone_wire[east=up,north=up,power=13,south=side,west=none]", + "6381": "minecraft:redstone_wire[east=up,north=up,power=13,south=none,west=up]", + "6382": "minecraft:redstone_wire[east=up,north=up,power=13,south=none,west=side]", + "6383": "minecraft:redstone_wire[east=up,north=up,power=13,south=none,west=none]", + "6384": "minecraft:redstone_wire[east=up,north=up,power=14,south=up,west=up]", + "6385": "minecraft:redstone_wire[east=up,north=up,power=14,south=up,west=side]", + "6386": "minecraft:redstone_wire[east=up,north=up,power=14,south=up,west=none]", + "6387": "minecraft:redstone_wire[east=up,north=up,power=14,south=side,west=up]", + "6388": "minecraft:redstone_wire[east=up,north=up,power=14,south=side,west=side]", + "6389": "minecraft:redstone_wire[east=up,north=up,power=14,south=side,west=none]", + "6390": "minecraft:redstone_wire[east=up,north=up,power=14,south=none,west=up]", + "6391": "minecraft:redstone_wire[east=up,north=up,power=14,south=none,west=side]", + "6392": "minecraft:redstone_wire[east=up,north=up,power=14,south=none,west=none]", + "6393": "minecraft:redstone_wire[east=up,north=up,power=15,south=up,west=up]", + "6394": "minecraft:redstone_wire[east=up,north=up,power=15,south=up,west=side]", + "6395": "minecraft:redstone_wire[east=up,north=up,power=15,south=up,west=none]", + "6396": "minecraft:redstone_wire[east=up,north=up,power=15,south=side,west=up]", + "6397": "minecraft:redstone_wire[east=up,north=up,power=15,south=side,west=side]", + "6398": "minecraft:redstone_wire[east=up,north=up,power=15,south=side,west=none]", + "6399": "minecraft:redstone_wire[east=up,north=up,power=15,south=none,west=up]", + "6400": "minecraft:redstone_wire[east=up,north=up,power=15,south=none,west=side]", + "6401": "minecraft:redstone_wire[east=up,north=up,power=15,south=none,west=none]", + "6402": "minecraft:redstone_wire[east=up,north=side,power=0,south=up,west=up]", + "6403": "minecraft:redstone_wire[east=up,north=side,power=0,south=up,west=side]", + "6404": "minecraft:redstone_wire[east=up,north=side,power=0,south=up,west=none]", + "6405": "minecraft:redstone_wire[east=up,north=side,power=0,south=side,west=up]", + "6406": "minecraft:redstone_wire[east=up,north=side,power=0,south=side,west=side]", + "6407": "minecraft:redstone_wire[east=up,north=side,power=0,south=side,west=none]", + "6408": "minecraft:redstone_wire[east=up,north=side,power=0,south=none,west=up]", + "6409": "minecraft:redstone_wire[east=up,north=side,power=0,south=none,west=side]", + "6410": "minecraft:redstone_wire[east=up,north=side,power=0,south=none,west=none]", + "6411": "minecraft:redstone_wire[east=up,north=side,power=1,south=up,west=up]", + "6412": "minecraft:redstone_wire[east=up,north=side,power=1,south=up,west=side]", + "6413": "minecraft:redstone_wire[east=up,north=side,power=1,south=up,west=none]", + "6414": "minecraft:redstone_wire[east=up,north=side,power=1,south=side,west=up]", + "6415": "minecraft:redstone_wire[east=up,north=side,power=1,south=side,west=side]", + "6416": "minecraft:redstone_wire[east=up,north=side,power=1,south=side,west=none]", + "6417": "minecraft:redstone_wire[east=up,north=side,power=1,south=none,west=up]", + "6418": "minecraft:redstone_wire[east=up,north=side,power=1,south=none,west=side]", + "6419": "minecraft:redstone_wire[east=up,north=side,power=1,south=none,west=none]", + "6420": "minecraft:redstone_wire[east=up,north=side,power=2,south=up,west=up]", + "6421": "minecraft:redstone_wire[east=up,north=side,power=2,south=up,west=side]", + "6422": "minecraft:redstone_wire[east=up,north=side,power=2,south=up,west=none]", + "6423": "minecraft:redstone_wire[east=up,north=side,power=2,south=side,west=up]", + "6424": "minecraft:redstone_wire[east=up,north=side,power=2,south=side,west=side]", + "6425": "minecraft:redstone_wire[east=up,north=side,power=2,south=side,west=none]", + "6426": "minecraft:redstone_wire[east=up,north=side,power=2,south=none,west=up]", + "6427": "minecraft:redstone_wire[east=up,north=side,power=2,south=none,west=side]", + "6428": "minecraft:redstone_wire[east=up,north=side,power=2,south=none,west=none]", + "6429": "minecraft:redstone_wire[east=up,north=side,power=3,south=up,west=up]", + "6430": "minecraft:redstone_wire[east=up,north=side,power=3,south=up,west=side]", + "6431": "minecraft:redstone_wire[east=up,north=side,power=3,south=up,west=none]", + "6432": "minecraft:redstone_wire[east=up,north=side,power=3,south=side,west=up]", + "6433": "minecraft:redstone_wire[east=up,north=side,power=3,south=side,west=side]", + "6434": "minecraft:redstone_wire[east=up,north=side,power=3,south=side,west=none]", + "6435": "minecraft:redstone_wire[east=up,north=side,power=3,south=none,west=up]", + "6436": "minecraft:redstone_wire[east=up,north=side,power=3,south=none,west=side]", + "6437": "minecraft:redstone_wire[east=up,north=side,power=3,south=none,west=none]", + "6438": "minecraft:redstone_wire[east=up,north=side,power=4,south=up,west=up]", + "6439": "minecraft:redstone_wire[east=up,north=side,power=4,south=up,west=side]", + "6440": "minecraft:redstone_wire[east=up,north=side,power=4,south=up,west=none]", + "6441": "minecraft:redstone_wire[east=up,north=side,power=4,south=side,west=up]", + "6442": "minecraft:redstone_wire[east=up,north=side,power=4,south=side,west=side]", + "6443": "minecraft:redstone_wire[east=up,north=side,power=4,south=side,west=none]", + "6444": "minecraft:redstone_wire[east=up,north=side,power=4,south=none,west=up]", + "6445": "minecraft:redstone_wire[east=up,north=side,power=4,south=none,west=side]", + "6446": "minecraft:redstone_wire[east=up,north=side,power=4,south=none,west=none]", + "6447": "minecraft:redstone_wire[east=up,north=side,power=5,south=up,west=up]", + "6448": "minecraft:redstone_wire[east=up,north=side,power=5,south=up,west=side]", + "6449": "minecraft:redstone_wire[east=up,north=side,power=5,south=up,west=none]", + "6450": "minecraft:redstone_wire[east=up,north=side,power=5,south=side,west=up]", + "6451": "minecraft:redstone_wire[east=up,north=side,power=5,south=side,west=side]", + "6452": "minecraft:redstone_wire[east=up,north=side,power=5,south=side,west=none]", + "6453": "minecraft:redstone_wire[east=up,north=side,power=5,south=none,west=up]", + "6454": "minecraft:redstone_wire[east=up,north=side,power=5,south=none,west=side]", + "6455": "minecraft:redstone_wire[east=up,north=side,power=5,south=none,west=none]", + "6456": "minecraft:redstone_wire[east=up,north=side,power=6,south=up,west=up]", + "6457": "minecraft:redstone_wire[east=up,north=side,power=6,south=up,west=side]", + "6458": "minecraft:redstone_wire[east=up,north=side,power=6,south=up,west=none]", + "6459": "minecraft:redstone_wire[east=up,north=side,power=6,south=side,west=up]", + "6460": "minecraft:redstone_wire[east=up,north=side,power=6,south=side,west=side]", + "6461": "minecraft:redstone_wire[east=up,north=side,power=6,south=side,west=none]", + "6462": "minecraft:redstone_wire[east=up,north=side,power=6,south=none,west=up]", + "6463": "minecraft:redstone_wire[east=up,north=side,power=6,south=none,west=side]", + "6464": "minecraft:redstone_wire[east=up,north=side,power=6,south=none,west=none]", + "6465": "minecraft:redstone_wire[east=up,north=side,power=7,south=up,west=up]", + "6466": "minecraft:redstone_wire[east=up,north=side,power=7,south=up,west=side]", + "6467": "minecraft:redstone_wire[east=up,north=side,power=7,south=up,west=none]", + "6468": "minecraft:redstone_wire[east=up,north=side,power=7,south=side,west=up]", + "6469": "minecraft:redstone_wire[east=up,north=side,power=7,south=side,west=side]", + "6470": "minecraft:redstone_wire[east=up,north=side,power=7,south=side,west=none]", + "6471": "minecraft:redstone_wire[east=up,north=side,power=7,south=none,west=up]", + "6472": "minecraft:redstone_wire[east=up,north=side,power=7,south=none,west=side]", + "6473": "minecraft:redstone_wire[east=up,north=side,power=7,south=none,west=none]", + "6474": "minecraft:redstone_wire[east=up,north=side,power=8,south=up,west=up]", + "6475": "minecraft:redstone_wire[east=up,north=side,power=8,south=up,west=side]", + "6476": "minecraft:redstone_wire[east=up,north=side,power=8,south=up,west=none]", + "6477": "minecraft:redstone_wire[east=up,north=side,power=8,south=side,west=up]", + "6478": "minecraft:redstone_wire[east=up,north=side,power=8,south=side,west=side]", + "6479": "minecraft:redstone_wire[east=up,north=side,power=8,south=side,west=none]", + "6480": "minecraft:redstone_wire[east=up,north=side,power=8,south=none,west=up]", + "6481": "minecraft:redstone_wire[east=up,north=side,power=8,south=none,west=side]", + "6482": "minecraft:redstone_wire[east=up,north=side,power=8,south=none,west=none]", + "6483": "minecraft:redstone_wire[east=up,north=side,power=9,south=up,west=up]", + "6484": "minecraft:redstone_wire[east=up,north=side,power=9,south=up,west=side]", + "6485": "minecraft:redstone_wire[east=up,north=side,power=9,south=up,west=none]", + "6486": "minecraft:redstone_wire[east=up,north=side,power=9,south=side,west=up]", + "6487": "minecraft:redstone_wire[east=up,north=side,power=9,south=side,west=side]", + "6488": "minecraft:redstone_wire[east=up,north=side,power=9,south=side,west=none]", + "6489": "minecraft:redstone_wire[east=up,north=side,power=9,south=none,west=up]", + "6490": "minecraft:redstone_wire[east=up,north=side,power=9,south=none,west=side]", + "6491": "minecraft:redstone_wire[east=up,north=side,power=9,south=none,west=none]", + "6492": "minecraft:redstone_wire[east=up,north=side,power=10,south=up,west=up]", + "6493": "minecraft:redstone_wire[east=up,north=side,power=10,south=up,west=side]", + "6494": "minecraft:redstone_wire[east=up,north=side,power=10,south=up,west=none]", + "6495": "minecraft:redstone_wire[east=up,north=side,power=10,south=side,west=up]", + "6496": "minecraft:redstone_wire[east=up,north=side,power=10,south=side,west=side]", + "6497": "minecraft:redstone_wire[east=up,north=side,power=10,south=side,west=none]", + "6498": "minecraft:redstone_wire[east=up,north=side,power=10,south=none,west=up]", + "6499": "minecraft:redstone_wire[east=up,north=side,power=10,south=none,west=side]", + "6500": "minecraft:redstone_wire[east=up,north=side,power=10,south=none,west=none]", + "6501": "minecraft:redstone_wire[east=up,north=side,power=11,south=up,west=up]", + "6502": "minecraft:redstone_wire[east=up,north=side,power=11,south=up,west=side]", + "6503": "minecraft:redstone_wire[east=up,north=side,power=11,south=up,west=none]", + "6504": "minecraft:redstone_wire[east=up,north=side,power=11,south=side,west=up]", + "6505": "minecraft:redstone_wire[east=up,north=side,power=11,south=side,west=side]", + "6506": "minecraft:redstone_wire[east=up,north=side,power=11,south=side,west=none]", + "6507": "minecraft:redstone_wire[east=up,north=side,power=11,south=none,west=up]", + "6508": "minecraft:redstone_wire[east=up,north=side,power=11,south=none,west=side]", + "6509": "minecraft:redstone_wire[east=up,north=side,power=11,south=none,west=none]", + "6510": "minecraft:redstone_wire[east=up,north=side,power=12,south=up,west=up]", + "6511": "minecraft:redstone_wire[east=up,north=side,power=12,south=up,west=side]", + "6512": "minecraft:redstone_wire[east=up,north=side,power=12,south=up,west=none]", + "6513": "minecraft:redstone_wire[east=up,north=side,power=12,south=side,west=up]", + "6514": "minecraft:redstone_wire[east=up,north=side,power=12,south=side,west=side]", + "6515": "minecraft:redstone_wire[east=up,north=side,power=12,south=side,west=none]", + "6516": "minecraft:redstone_wire[east=up,north=side,power=12,south=none,west=up]", + "6517": "minecraft:redstone_wire[east=up,north=side,power=12,south=none,west=side]", + "6518": "minecraft:redstone_wire[east=up,north=side,power=12,south=none,west=none]", + "6519": "minecraft:redstone_wire[east=up,north=side,power=13,south=up,west=up]", + "6520": "minecraft:redstone_wire[east=up,north=side,power=13,south=up,west=side]", + "6521": "minecraft:redstone_wire[east=up,north=side,power=13,south=up,west=none]", + "6522": "minecraft:redstone_wire[east=up,north=side,power=13,south=side,west=up]", + "6523": "minecraft:redstone_wire[east=up,north=side,power=13,south=side,west=side]", + "6524": "minecraft:redstone_wire[east=up,north=side,power=13,south=side,west=none]", + "6525": "minecraft:redstone_wire[east=up,north=side,power=13,south=none,west=up]", + "6526": "minecraft:redstone_wire[east=up,north=side,power=13,south=none,west=side]", + "6527": "minecraft:redstone_wire[east=up,north=side,power=13,south=none,west=none]", + "6528": "minecraft:redstone_wire[east=up,north=side,power=14,south=up,west=up]", + "6529": "minecraft:redstone_wire[east=up,north=side,power=14,south=up,west=side]", + "6530": "minecraft:redstone_wire[east=up,north=side,power=14,south=up,west=none]", + "6531": "minecraft:redstone_wire[east=up,north=side,power=14,south=side,west=up]", + "6532": "minecraft:redstone_wire[east=up,north=side,power=14,south=side,west=side]", + "6533": "minecraft:redstone_wire[east=up,north=side,power=14,south=side,west=none]", + "6534": "minecraft:redstone_wire[east=up,north=side,power=14,south=none,west=up]", + "6535": "minecraft:redstone_wire[east=up,north=side,power=14,south=none,west=side]", + "6536": "minecraft:redstone_wire[east=up,north=side,power=14,south=none,west=none]", + "6537": "minecraft:redstone_wire[east=up,north=side,power=15,south=up,west=up]", + "6538": "minecraft:redstone_wire[east=up,north=side,power=15,south=up,west=side]", + "6539": "minecraft:redstone_wire[east=up,north=side,power=15,south=up,west=none]", + "6540": "minecraft:redstone_wire[east=up,north=side,power=15,south=side,west=up]", + "6541": "minecraft:redstone_wire[east=up,north=side,power=15,south=side,west=side]", + "6542": "minecraft:redstone_wire[east=up,north=side,power=15,south=side,west=none]", + "6543": "minecraft:redstone_wire[east=up,north=side,power=15,south=none,west=up]", + "6544": "minecraft:redstone_wire[east=up,north=side,power=15,south=none,west=side]", + "6545": "minecraft:redstone_wire[east=up,north=side,power=15,south=none,west=none]", + "6546": "minecraft:redstone_wire[east=up,north=none,power=0,south=up,west=up]", + "6547": "minecraft:redstone_wire[east=up,north=none,power=0,south=up,west=side]", + "6548": "minecraft:redstone_wire[east=up,north=none,power=0,south=up,west=none]", + "6549": "minecraft:redstone_wire[east=up,north=none,power=0,south=side,west=up]", + "6550": "minecraft:redstone_wire[east=up,north=none,power=0,south=side,west=side]", + "6551": "minecraft:redstone_wire[east=up,north=none,power=0,south=side,west=none]", + "6552": "minecraft:redstone_wire[east=up,north=none,power=0,south=none,west=up]", + "6553": "minecraft:redstone_wire[east=up,north=none,power=0,south=none,west=side]", + "6554": "minecraft:redstone_wire[east=up,north=none,power=0,south=none,west=none]", + "6555": "minecraft:redstone_wire[east=up,north=none,power=1,south=up,west=up]", + "6556": "minecraft:redstone_wire[east=up,north=none,power=1,south=up,west=side]", + "6557": "minecraft:redstone_wire[east=up,north=none,power=1,south=up,west=none]", + "6558": "minecraft:redstone_wire[east=up,north=none,power=1,south=side,west=up]", + "6559": "minecraft:redstone_wire[east=up,north=none,power=1,south=side,west=side]", + "6560": "minecraft:redstone_wire[east=up,north=none,power=1,south=side,west=none]", + "6561": "minecraft:redstone_wire[east=up,north=none,power=1,south=none,west=up]", + "6562": "minecraft:redstone_wire[east=up,north=none,power=1,south=none,west=side]", + "6563": "minecraft:redstone_wire[east=up,north=none,power=1,south=none,west=none]", + "6564": "minecraft:redstone_wire[east=up,north=none,power=2,south=up,west=up]", + "6565": "minecraft:redstone_wire[east=up,north=none,power=2,south=up,west=side]", + "6566": "minecraft:redstone_wire[east=up,north=none,power=2,south=up,west=none]", + "6567": "minecraft:redstone_wire[east=up,north=none,power=2,south=side,west=up]", + "6568": "minecraft:redstone_wire[east=up,north=none,power=2,south=side,west=side]", + "6569": "minecraft:redstone_wire[east=up,north=none,power=2,south=side,west=none]", + "6570": "minecraft:redstone_wire[east=up,north=none,power=2,south=none,west=up]", + "6571": "minecraft:redstone_wire[east=up,north=none,power=2,south=none,west=side]", + "6572": "minecraft:redstone_wire[east=up,north=none,power=2,south=none,west=none]", + "6573": "minecraft:redstone_wire[east=up,north=none,power=3,south=up,west=up]", + "6574": "minecraft:redstone_wire[east=up,north=none,power=3,south=up,west=side]", + "6575": "minecraft:redstone_wire[east=up,north=none,power=3,south=up,west=none]", + "6576": "minecraft:redstone_wire[east=up,north=none,power=3,south=side,west=up]", + "6577": "minecraft:redstone_wire[east=up,north=none,power=3,south=side,west=side]", + "6578": "minecraft:redstone_wire[east=up,north=none,power=3,south=side,west=none]", + "6579": "minecraft:redstone_wire[east=up,north=none,power=3,south=none,west=up]", + "6580": "minecraft:redstone_wire[east=up,north=none,power=3,south=none,west=side]", + "6581": "minecraft:redstone_wire[east=up,north=none,power=3,south=none,west=none]", + "6582": "minecraft:redstone_wire[east=up,north=none,power=4,south=up,west=up]", + "6583": "minecraft:redstone_wire[east=up,north=none,power=4,south=up,west=side]", + "6584": "minecraft:redstone_wire[east=up,north=none,power=4,south=up,west=none]", + "6585": "minecraft:redstone_wire[east=up,north=none,power=4,south=side,west=up]", + "6586": "minecraft:redstone_wire[east=up,north=none,power=4,south=side,west=side]", + "6587": "minecraft:redstone_wire[east=up,north=none,power=4,south=side,west=none]", + "6588": "minecraft:redstone_wire[east=up,north=none,power=4,south=none,west=up]", + "6589": "minecraft:redstone_wire[east=up,north=none,power=4,south=none,west=side]", + "6590": "minecraft:redstone_wire[east=up,north=none,power=4,south=none,west=none]", + "6591": "minecraft:redstone_wire[east=up,north=none,power=5,south=up,west=up]", + "6592": "minecraft:redstone_wire[east=up,north=none,power=5,south=up,west=side]", + "6593": "minecraft:redstone_wire[east=up,north=none,power=5,south=up,west=none]", + "6594": "minecraft:redstone_wire[east=up,north=none,power=5,south=side,west=up]", + "6595": "minecraft:redstone_wire[east=up,north=none,power=5,south=side,west=side]", + "6596": "minecraft:redstone_wire[east=up,north=none,power=5,south=side,west=none]", + "6597": "minecraft:redstone_wire[east=up,north=none,power=5,south=none,west=up]", + "6598": "minecraft:redstone_wire[east=up,north=none,power=5,south=none,west=side]", + "6599": "minecraft:redstone_wire[east=up,north=none,power=5,south=none,west=none]", + "6600": "minecraft:redstone_wire[east=up,north=none,power=6,south=up,west=up]", + "6601": "minecraft:redstone_wire[east=up,north=none,power=6,south=up,west=side]", + "6602": "minecraft:redstone_wire[east=up,north=none,power=6,south=up,west=none]", + "6603": "minecraft:redstone_wire[east=up,north=none,power=6,south=side,west=up]", + "6604": "minecraft:redstone_wire[east=up,north=none,power=6,south=side,west=side]", + "6605": "minecraft:redstone_wire[east=up,north=none,power=6,south=side,west=none]", + "6606": "minecraft:redstone_wire[east=up,north=none,power=6,south=none,west=up]", + "6607": "minecraft:redstone_wire[east=up,north=none,power=6,south=none,west=side]", + "6608": "minecraft:redstone_wire[east=up,north=none,power=6,south=none,west=none]", + "6609": "minecraft:redstone_wire[east=up,north=none,power=7,south=up,west=up]", + "6610": "minecraft:redstone_wire[east=up,north=none,power=7,south=up,west=side]", + "6611": "minecraft:redstone_wire[east=up,north=none,power=7,south=up,west=none]", + "6612": "minecraft:redstone_wire[east=up,north=none,power=7,south=side,west=up]", + "6613": "minecraft:redstone_wire[east=up,north=none,power=7,south=side,west=side]", + "6614": "minecraft:redstone_wire[east=up,north=none,power=7,south=side,west=none]", + "6615": "minecraft:redstone_wire[east=up,north=none,power=7,south=none,west=up]", + "6616": "minecraft:redstone_wire[east=up,north=none,power=7,south=none,west=side]", + "6617": "minecraft:redstone_wire[east=up,north=none,power=7,south=none,west=none]", + "6618": "minecraft:redstone_wire[east=up,north=none,power=8,south=up,west=up]", + "6619": "minecraft:redstone_wire[east=up,north=none,power=8,south=up,west=side]", + "6620": "minecraft:redstone_wire[east=up,north=none,power=8,south=up,west=none]", + "6621": "minecraft:redstone_wire[east=up,north=none,power=8,south=side,west=up]", + "6622": "minecraft:redstone_wire[east=up,north=none,power=8,south=side,west=side]", + "6623": "minecraft:redstone_wire[east=up,north=none,power=8,south=side,west=none]", + "6624": "minecraft:redstone_wire[east=up,north=none,power=8,south=none,west=up]", + "6625": "minecraft:redstone_wire[east=up,north=none,power=8,south=none,west=side]", + "6626": "minecraft:redstone_wire[east=up,north=none,power=8,south=none,west=none]", + "6627": "minecraft:redstone_wire[east=up,north=none,power=9,south=up,west=up]", + "6628": "minecraft:redstone_wire[east=up,north=none,power=9,south=up,west=side]", + "6629": "minecraft:redstone_wire[east=up,north=none,power=9,south=up,west=none]", + "6630": "minecraft:redstone_wire[east=up,north=none,power=9,south=side,west=up]", + "6631": "minecraft:redstone_wire[east=up,north=none,power=9,south=side,west=side]", + "6632": "minecraft:redstone_wire[east=up,north=none,power=9,south=side,west=none]", + "6633": "minecraft:redstone_wire[east=up,north=none,power=9,south=none,west=up]", + "6634": "minecraft:redstone_wire[east=up,north=none,power=9,south=none,west=side]", + "6635": "minecraft:redstone_wire[east=up,north=none,power=9,south=none,west=none]", + "6636": "minecraft:redstone_wire[east=up,north=none,power=10,south=up,west=up]", + "6637": "minecraft:redstone_wire[east=up,north=none,power=10,south=up,west=side]", + "6638": "minecraft:redstone_wire[east=up,north=none,power=10,south=up,west=none]", + "6639": "minecraft:redstone_wire[east=up,north=none,power=10,south=side,west=up]", + "6640": "minecraft:redstone_wire[east=up,north=none,power=10,south=side,west=side]", + "6641": "minecraft:redstone_wire[east=up,north=none,power=10,south=side,west=none]", + "6642": "minecraft:redstone_wire[east=up,north=none,power=10,south=none,west=up]", + "6643": "minecraft:redstone_wire[east=up,north=none,power=10,south=none,west=side]", + "6644": "minecraft:redstone_wire[east=up,north=none,power=10,south=none,west=none]", + "6645": "minecraft:redstone_wire[east=up,north=none,power=11,south=up,west=up]", + "6646": "minecraft:redstone_wire[east=up,north=none,power=11,south=up,west=side]", + "6647": "minecraft:redstone_wire[east=up,north=none,power=11,south=up,west=none]", + "6648": "minecraft:redstone_wire[east=up,north=none,power=11,south=side,west=up]", + "6649": "minecraft:redstone_wire[east=up,north=none,power=11,south=side,west=side]", + "6650": "minecraft:redstone_wire[east=up,north=none,power=11,south=side,west=none]", + "6651": "minecraft:redstone_wire[east=up,north=none,power=11,south=none,west=up]", + "6652": "minecraft:redstone_wire[east=up,north=none,power=11,south=none,west=side]", + "6653": "minecraft:redstone_wire[east=up,north=none,power=11,south=none,west=none]", + "6654": "minecraft:redstone_wire[east=up,north=none,power=12,south=up,west=up]", + "6655": "minecraft:redstone_wire[east=up,north=none,power=12,south=up,west=side]", + "6656": "minecraft:redstone_wire[east=up,north=none,power=12,south=up,west=none]", + "6657": "minecraft:redstone_wire[east=up,north=none,power=12,south=side,west=up]", + "6658": "minecraft:redstone_wire[east=up,north=none,power=12,south=side,west=side]", + "6659": "minecraft:redstone_wire[east=up,north=none,power=12,south=side,west=none]", + "6660": "minecraft:redstone_wire[east=up,north=none,power=12,south=none,west=up]", + "6661": "minecraft:redstone_wire[east=up,north=none,power=12,south=none,west=side]", + "6662": "minecraft:redstone_wire[east=up,north=none,power=12,south=none,west=none]", + "6663": "minecraft:redstone_wire[east=up,north=none,power=13,south=up,west=up]", + "6664": "minecraft:redstone_wire[east=up,north=none,power=13,south=up,west=side]", + "6665": "minecraft:redstone_wire[east=up,north=none,power=13,south=up,west=none]", + "6666": "minecraft:redstone_wire[east=up,north=none,power=13,south=side,west=up]", + "6667": "minecraft:redstone_wire[east=up,north=none,power=13,south=side,west=side]", + "6668": "minecraft:redstone_wire[east=up,north=none,power=13,south=side,west=none]", + "6669": "minecraft:redstone_wire[east=up,north=none,power=13,south=none,west=up]", + "6670": "minecraft:redstone_wire[east=up,north=none,power=13,south=none,west=side]", + "6671": "minecraft:redstone_wire[east=up,north=none,power=13,south=none,west=none]", + "6672": "minecraft:redstone_wire[east=up,north=none,power=14,south=up,west=up]", + "6673": "minecraft:redstone_wire[east=up,north=none,power=14,south=up,west=side]", + "6674": "minecraft:redstone_wire[east=up,north=none,power=14,south=up,west=none]", + "6675": "minecraft:redstone_wire[east=up,north=none,power=14,south=side,west=up]", + "6676": "minecraft:redstone_wire[east=up,north=none,power=14,south=side,west=side]", + "6677": "minecraft:redstone_wire[east=up,north=none,power=14,south=side,west=none]", + "6678": "minecraft:redstone_wire[east=up,north=none,power=14,south=none,west=up]", + "6679": "minecraft:redstone_wire[east=up,north=none,power=14,south=none,west=side]", + "6680": "minecraft:redstone_wire[east=up,north=none,power=14,south=none,west=none]", + "6681": "minecraft:redstone_wire[east=up,north=none,power=15,south=up,west=up]", + "6682": "minecraft:redstone_wire[east=up,north=none,power=15,south=up,west=side]", + "6683": "minecraft:redstone_wire[east=up,north=none,power=15,south=up,west=none]", + "6684": "minecraft:redstone_wire[east=up,north=none,power=15,south=side,west=up]", + "6685": "minecraft:redstone_wire[east=up,north=none,power=15,south=side,west=side]", + "6686": "minecraft:redstone_wire[east=up,north=none,power=15,south=side,west=none]", + "6687": "minecraft:redstone_wire[east=up,north=none,power=15,south=none,west=up]", + "6688": "minecraft:redstone_wire[east=up,north=none,power=15,south=none,west=side]", + "6689": "minecraft:redstone_wire[east=up,north=none,power=15,south=none,west=none]", + "6690": "minecraft:redstone_wire[east=side,north=up,power=0,south=up,west=up]", + "6691": "minecraft:redstone_wire[east=side,north=up,power=0,south=up,west=side]", + "6692": "minecraft:redstone_wire[east=side,north=up,power=0,south=up,west=none]", + "6693": "minecraft:redstone_wire[east=side,north=up,power=0,south=side,west=up]", + "6694": "minecraft:redstone_wire[east=side,north=up,power=0,south=side,west=side]", + "6695": "minecraft:redstone_wire[east=side,north=up,power=0,south=side,west=none]", + "6696": "minecraft:redstone_wire[east=side,north=up,power=0,south=none,west=up]", + "6697": "minecraft:redstone_wire[east=side,north=up,power=0,south=none,west=side]", + "6698": "minecraft:redstone_wire[east=side,north=up,power=0,south=none,west=none]", + "6699": "minecraft:redstone_wire[east=side,north=up,power=1,south=up,west=up]", + "6700": "minecraft:redstone_wire[east=side,north=up,power=1,south=up,west=side]", + "6701": "minecraft:redstone_wire[east=side,north=up,power=1,south=up,west=none]", + "6702": "minecraft:redstone_wire[east=side,north=up,power=1,south=side,west=up]", + "6703": "minecraft:redstone_wire[east=side,north=up,power=1,south=side,west=side]", + "6704": "minecraft:redstone_wire[east=side,north=up,power=1,south=side,west=none]", + "6705": "minecraft:redstone_wire[east=side,north=up,power=1,south=none,west=up]", + "6706": "minecraft:redstone_wire[east=side,north=up,power=1,south=none,west=side]", + "6707": "minecraft:redstone_wire[east=side,north=up,power=1,south=none,west=none]", + "6708": "minecraft:redstone_wire[east=side,north=up,power=2,south=up,west=up]", + "6709": "minecraft:redstone_wire[east=side,north=up,power=2,south=up,west=side]", + "6710": "minecraft:redstone_wire[east=side,north=up,power=2,south=up,west=none]", + "6711": "minecraft:redstone_wire[east=side,north=up,power=2,south=side,west=up]", + "6712": "minecraft:redstone_wire[east=side,north=up,power=2,south=side,west=side]", + "6713": "minecraft:redstone_wire[east=side,north=up,power=2,south=side,west=none]", + "6714": "minecraft:redstone_wire[east=side,north=up,power=2,south=none,west=up]", + "6715": "minecraft:redstone_wire[east=side,north=up,power=2,south=none,west=side]", + "6716": "minecraft:redstone_wire[east=side,north=up,power=2,south=none,west=none]", + "6717": "minecraft:redstone_wire[east=side,north=up,power=3,south=up,west=up]", + "6718": "minecraft:redstone_wire[east=side,north=up,power=3,south=up,west=side]", + "6719": "minecraft:redstone_wire[east=side,north=up,power=3,south=up,west=none]", + "6720": "minecraft:redstone_wire[east=side,north=up,power=3,south=side,west=up]", + "6721": "minecraft:redstone_wire[east=side,north=up,power=3,south=side,west=side]", + "6722": "minecraft:redstone_wire[east=side,north=up,power=3,south=side,west=none]", + "6723": "minecraft:redstone_wire[east=side,north=up,power=3,south=none,west=up]", + "6724": "minecraft:redstone_wire[east=side,north=up,power=3,south=none,west=side]", + "6725": "minecraft:redstone_wire[east=side,north=up,power=3,south=none,west=none]", + "6726": "minecraft:redstone_wire[east=side,north=up,power=4,south=up,west=up]", + "6727": "minecraft:redstone_wire[east=side,north=up,power=4,south=up,west=side]", + "6728": "minecraft:redstone_wire[east=side,north=up,power=4,south=up,west=none]", + "6729": "minecraft:redstone_wire[east=side,north=up,power=4,south=side,west=up]", + "6730": "minecraft:redstone_wire[east=side,north=up,power=4,south=side,west=side]", + "6731": "minecraft:redstone_wire[east=side,north=up,power=4,south=side,west=none]", + "6732": "minecraft:redstone_wire[east=side,north=up,power=4,south=none,west=up]", + "6733": "minecraft:redstone_wire[east=side,north=up,power=4,south=none,west=side]", + "6734": "minecraft:redstone_wire[east=side,north=up,power=4,south=none,west=none]", + "6735": "minecraft:redstone_wire[east=side,north=up,power=5,south=up,west=up]", + "6736": "minecraft:redstone_wire[east=side,north=up,power=5,south=up,west=side]", + "6737": "minecraft:redstone_wire[east=side,north=up,power=5,south=up,west=none]", + "6738": "minecraft:redstone_wire[east=side,north=up,power=5,south=side,west=up]", + "6739": "minecraft:redstone_wire[east=side,north=up,power=5,south=side,west=side]", + "6740": "minecraft:redstone_wire[east=side,north=up,power=5,south=side,west=none]", + "6741": "minecraft:redstone_wire[east=side,north=up,power=5,south=none,west=up]", + "6742": "minecraft:redstone_wire[east=side,north=up,power=5,south=none,west=side]", + "6743": "minecraft:redstone_wire[east=side,north=up,power=5,south=none,west=none]", + "6744": "minecraft:redstone_wire[east=side,north=up,power=6,south=up,west=up]", + "6745": "minecraft:redstone_wire[east=side,north=up,power=6,south=up,west=side]", + "6746": "minecraft:redstone_wire[east=side,north=up,power=6,south=up,west=none]", + "6747": "minecraft:redstone_wire[east=side,north=up,power=6,south=side,west=up]", + "6748": "minecraft:redstone_wire[east=side,north=up,power=6,south=side,west=side]", + "6749": "minecraft:redstone_wire[east=side,north=up,power=6,south=side,west=none]", + "6750": "minecraft:redstone_wire[east=side,north=up,power=6,south=none,west=up]", + "6751": "minecraft:redstone_wire[east=side,north=up,power=6,south=none,west=side]", + "6752": "minecraft:redstone_wire[east=side,north=up,power=6,south=none,west=none]", + "6753": "minecraft:redstone_wire[east=side,north=up,power=7,south=up,west=up]", + "6754": "minecraft:redstone_wire[east=side,north=up,power=7,south=up,west=side]", + "6755": "minecraft:redstone_wire[east=side,north=up,power=7,south=up,west=none]", + "6756": "minecraft:redstone_wire[east=side,north=up,power=7,south=side,west=up]", + "6757": "minecraft:redstone_wire[east=side,north=up,power=7,south=side,west=side]", + "6758": "minecraft:redstone_wire[east=side,north=up,power=7,south=side,west=none]", + "6759": "minecraft:redstone_wire[east=side,north=up,power=7,south=none,west=up]", + "6760": "minecraft:redstone_wire[east=side,north=up,power=7,south=none,west=side]", + "6761": "minecraft:redstone_wire[east=side,north=up,power=7,south=none,west=none]", + "6762": "minecraft:redstone_wire[east=side,north=up,power=8,south=up,west=up]", + "6763": "minecraft:redstone_wire[east=side,north=up,power=8,south=up,west=side]", + "6764": "minecraft:redstone_wire[east=side,north=up,power=8,south=up,west=none]", + "6765": "minecraft:redstone_wire[east=side,north=up,power=8,south=side,west=up]", + "6766": "minecraft:redstone_wire[east=side,north=up,power=8,south=side,west=side]", + "6767": "minecraft:redstone_wire[east=side,north=up,power=8,south=side,west=none]", + "6768": "minecraft:redstone_wire[east=side,north=up,power=8,south=none,west=up]", + "6769": "minecraft:redstone_wire[east=side,north=up,power=8,south=none,west=side]", + "6770": "minecraft:redstone_wire[east=side,north=up,power=8,south=none,west=none]", + "6771": "minecraft:redstone_wire[east=side,north=up,power=9,south=up,west=up]", + "6772": "minecraft:redstone_wire[east=side,north=up,power=9,south=up,west=side]", + "6773": "minecraft:redstone_wire[east=side,north=up,power=9,south=up,west=none]", + "6774": "minecraft:redstone_wire[east=side,north=up,power=9,south=side,west=up]", + "6775": "minecraft:redstone_wire[east=side,north=up,power=9,south=side,west=side]", + "6776": "minecraft:redstone_wire[east=side,north=up,power=9,south=side,west=none]", + "6777": "minecraft:redstone_wire[east=side,north=up,power=9,south=none,west=up]", + "6778": "minecraft:redstone_wire[east=side,north=up,power=9,south=none,west=side]", + "6779": "minecraft:redstone_wire[east=side,north=up,power=9,south=none,west=none]", + "6780": "minecraft:redstone_wire[east=side,north=up,power=10,south=up,west=up]", + "6781": "minecraft:redstone_wire[east=side,north=up,power=10,south=up,west=side]", + "6782": "minecraft:redstone_wire[east=side,north=up,power=10,south=up,west=none]", + "6783": "minecraft:redstone_wire[east=side,north=up,power=10,south=side,west=up]", + "6784": "minecraft:redstone_wire[east=side,north=up,power=10,south=side,west=side]", + "6785": "minecraft:redstone_wire[east=side,north=up,power=10,south=side,west=none]", + "6786": "minecraft:redstone_wire[east=side,north=up,power=10,south=none,west=up]", + "6787": "minecraft:redstone_wire[east=side,north=up,power=10,south=none,west=side]", + "6788": "minecraft:redstone_wire[east=side,north=up,power=10,south=none,west=none]", + "6789": "minecraft:redstone_wire[east=side,north=up,power=11,south=up,west=up]", + "6790": "minecraft:redstone_wire[east=side,north=up,power=11,south=up,west=side]", + "6791": "minecraft:redstone_wire[east=side,north=up,power=11,south=up,west=none]", + "6792": "minecraft:redstone_wire[east=side,north=up,power=11,south=side,west=up]", + "6793": "minecraft:redstone_wire[east=side,north=up,power=11,south=side,west=side]", + "6794": "minecraft:redstone_wire[east=side,north=up,power=11,south=side,west=none]", + "6795": "minecraft:redstone_wire[east=side,north=up,power=11,south=none,west=up]", + "6796": "minecraft:redstone_wire[east=side,north=up,power=11,south=none,west=side]", + "6797": "minecraft:redstone_wire[east=side,north=up,power=11,south=none,west=none]", + "6798": "minecraft:redstone_wire[east=side,north=up,power=12,south=up,west=up]", + "6799": "minecraft:redstone_wire[east=side,north=up,power=12,south=up,west=side]", + "6800": "minecraft:redstone_wire[east=side,north=up,power=12,south=up,west=none]", + "6801": "minecraft:redstone_wire[east=side,north=up,power=12,south=side,west=up]", + "6802": "minecraft:redstone_wire[east=side,north=up,power=12,south=side,west=side]", + "6803": "minecraft:redstone_wire[east=side,north=up,power=12,south=side,west=none]", + "6804": "minecraft:redstone_wire[east=side,north=up,power=12,south=none,west=up]", + "6805": "minecraft:redstone_wire[east=side,north=up,power=12,south=none,west=side]", + "6806": "minecraft:redstone_wire[east=side,north=up,power=12,south=none,west=none]", + "6807": "minecraft:redstone_wire[east=side,north=up,power=13,south=up,west=up]", + "6808": "minecraft:redstone_wire[east=side,north=up,power=13,south=up,west=side]", + "6809": "minecraft:redstone_wire[east=side,north=up,power=13,south=up,west=none]", + "6810": "minecraft:redstone_wire[east=side,north=up,power=13,south=side,west=up]", + "6811": "minecraft:redstone_wire[east=side,north=up,power=13,south=side,west=side]", + "6812": "minecraft:redstone_wire[east=side,north=up,power=13,south=side,west=none]", + "6813": "minecraft:redstone_wire[east=side,north=up,power=13,south=none,west=up]", + "6814": "minecraft:redstone_wire[east=side,north=up,power=13,south=none,west=side]", + "6815": "minecraft:redstone_wire[east=side,north=up,power=13,south=none,west=none]", + "6816": "minecraft:redstone_wire[east=side,north=up,power=14,south=up,west=up]", + "6817": "minecraft:redstone_wire[east=side,north=up,power=14,south=up,west=side]", + "6818": "minecraft:redstone_wire[east=side,north=up,power=14,south=up,west=none]", + "6819": "minecraft:redstone_wire[east=side,north=up,power=14,south=side,west=up]", + "6820": "minecraft:redstone_wire[east=side,north=up,power=14,south=side,west=side]", + "6821": "minecraft:redstone_wire[east=side,north=up,power=14,south=side,west=none]", + "6822": "minecraft:redstone_wire[east=side,north=up,power=14,south=none,west=up]", + "6823": "minecraft:redstone_wire[east=side,north=up,power=14,south=none,west=side]", + "6824": "minecraft:redstone_wire[east=side,north=up,power=14,south=none,west=none]", + "6825": "minecraft:redstone_wire[east=side,north=up,power=15,south=up,west=up]", + "6826": "minecraft:redstone_wire[east=side,north=up,power=15,south=up,west=side]", + "6827": "minecraft:redstone_wire[east=side,north=up,power=15,south=up,west=none]", + "6828": "minecraft:redstone_wire[east=side,north=up,power=15,south=side,west=up]", + "6829": "minecraft:redstone_wire[east=side,north=up,power=15,south=side,west=side]", + "6830": "minecraft:redstone_wire[east=side,north=up,power=15,south=side,west=none]", + "6831": "minecraft:redstone_wire[east=side,north=up,power=15,south=none,west=up]", + "6832": "minecraft:redstone_wire[east=side,north=up,power=15,south=none,west=side]", + "6833": "minecraft:redstone_wire[east=side,north=up,power=15,south=none,west=none]", + "6834": "minecraft:redstone_wire[east=side,north=side,power=0,south=up,west=up]", + "6835": "minecraft:redstone_wire[east=side,north=side,power=0,south=up,west=side]", + "6836": "minecraft:redstone_wire[east=side,north=side,power=0,south=up,west=none]", + "6837": "minecraft:redstone_wire[east=side,north=side,power=0,south=side,west=up]", + "6838": "minecraft:redstone_wire[east=side,north=side,power=0,south=side,west=side]", + "6839": "minecraft:redstone_wire[east=side,north=side,power=0,south=side,west=none]", + "6840": "minecraft:redstone_wire[east=side,north=side,power=0,south=none,west=up]", + "6841": "minecraft:redstone_wire[east=side,north=side,power=0,south=none,west=side]", + "6842": "minecraft:redstone_wire[east=side,north=side,power=0,south=none,west=none]", + "6843": "minecraft:redstone_wire[east=side,north=side,power=1,south=up,west=up]", + "6844": "minecraft:redstone_wire[east=side,north=side,power=1,south=up,west=side]", + "6845": "minecraft:redstone_wire[east=side,north=side,power=1,south=up,west=none]", + "6846": "minecraft:redstone_wire[east=side,north=side,power=1,south=side,west=up]", + "6847": "minecraft:redstone_wire[east=side,north=side,power=1,south=side,west=side]", + "6848": "minecraft:redstone_wire[east=side,north=side,power=1,south=side,west=none]", + "6849": "minecraft:redstone_wire[east=side,north=side,power=1,south=none,west=up]", + "6850": "minecraft:redstone_wire[east=side,north=side,power=1,south=none,west=side]", + "6851": "minecraft:redstone_wire[east=side,north=side,power=1,south=none,west=none]", + "6852": "minecraft:redstone_wire[east=side,north=side,power=2,south=up,west=up]", + "6853": "minecraft:redstone_wire[east=side,north=side,power=2,south=up,west=side]", + "6854": "minecraft:redstone_wire[east=side,north=side,power=2,south=up,west=none]", + "6855": "minecraft:redstone_wire[east=side,north=side,power=2,south=side,west=up]", + "6856": "minecraft:redstone_wire[east=side,north=side,power=2,south=side,west=side]", + "6857": "minecraft:redstone_wire[east=side,north=side,power=2,south=side,west=none]", + "6858": "minecraft:redstone_wire[east=side,north=side,power=2,south=none,west=up]", + "6859": "minecraft:redstone_wire[east=side,north=side,power=2,south=none,west=side]", + "6860": "minecraft:redstone_wire[east=side,north=side,power=2,south=none,west=none]", + "6861": "minecraft:redstone_wire[east=side,north=side,power=3,south=up,west=up]", + "6862": "minecraft:redstone_wire[east=side,north=side,power=3,south=up,west=side]", + "6863": "minecraft:redstone_wire[east=side,north=side,power=3,south=up,west=none]", + "6864": "minecraft:redstone_wire[east=side,north=side,power=3,south=side,west=up]", + "6865": "minecraft:redstone_wire[east=side,north=side,power=3,south=side,west=side]", + "6866": "minecraft:redstone_wire[east=side,north=side,power=3,south=side,west=none]", + "6867": "minecraft:redstone_wire[east=side,north=side,power=3,south=none,west=up]", + "6868": "minecraft:redstone_wire[east=side,north=side,power=3,south=none,west=side]", + "6869": "minecraft:redstone_wire[east=side,north=side,power=3,south=none,west=none]", + "6870": "minecraft:redstone_wire[east=side,north=side,power=4,south=up,west=up]", + "6871": "minecraft:redstone_wire[east=side,north=side,power=4,south=up,west=side]", + "6872": "minecraft:redstone_wire[east=side,north=side,power=4,south=up,west=none]", + "6873": "minecraft:redstone_wire[east=side,north=side,power=4,south=side,west=up]", + "6874": "minecraft:redstone_wire[east=side,north=side,power=4,south=side,west=side]", + "6875": "minecraft:redstone_wire[east=side,north=side,power=4,south=side,west=none]", + "6876": "minecraft:redstone_wire[east=side,north=side,power=4,south=none,west=up]", + "6877": "minecraft:redstone_wire[east=side,north=side,power=4,south=none,west=side]", + "6878": "minecraft:redstone_wire[east=side,north=side,power=4,south=none,west=none]", + "6879": "minecraft:redstone_wire[east=side,north=side,power=5,south=up,west=up]", + "6880": "minecraft:redstone_wire[east=side,north=side,power=5,south=up,west=side]", + "6881": "minecraft:redstone_wire[east=side,north=side,power=5,south=up,west=none]", + "6882": "minecraft:redstone_wire[east=side,north=side,power=5,south=side,west=up]", + "6883": "minecraft:redstone_wire[east=side,north=side,power=5,south=side,west=side]", + "6884": "minecraft:redstone_wire[east=side,north=side,power=5,south=side,west=none]", + "6885": "minecraft:redstone_wire[east=side,north=side,power=5,south=none,west=up]", + "6886": "minecraft:redstone_wire[east=side,north=side,power=5,south=none,west=side]", + "6887": "minecraft:redstone_wire[east=side,north=side,power=5,south=none,west=none]", + "6888": "minecraft:redstone_wire[east=side,north=side,power=6,south=up,west=up]", + "6889": "minecraft:redstone_wire[east=side,north=side,power=6,south=up,west=side]", + "6890": "minecraft:redstone_wire[east=side,north=side,power=6,south=up,west=none]", + "6891": "minecraft:redstone_wire[east=side,north=side,power=6,south=side,west=up]", + "6892": "minecraft:redstone_wire[east=side,north=side,power=6,south=side,west=side]", + "6893": "minecraft:redstone_wire[east=side,north=side,power=6,south=side,west=none]", + "6894": "minecraft:redstone_wire[east=side,north=side,power=6,south=none,west=up]", + "6895": "minecraft:redstone_wire[east=side,north=side,power=6,south=none,west=side]", + "6896": "minecraft:redstone_wire[east=side,north=side,power=6,south=none,west=none]", + "6897": "minecraft:redstone_wire[east=side,north=side,power=7,south=up,west=up]", + "6898": "minecraft:redstone_wire[east=side,north=side,power=7,south=up,west=side]", + "6899": "minecraft:redstone_wire[east=side,north=side,power=7,south=up,west=none]", + "6900": "minecraft:redstone_wire[east=side,north=side,power=7,south=side,west=up]", + "6901": "minecraft:redstone_wire[east=side,north=side,power=7,south=side,west=side]", + "6902": "minecraft:redstone_wire[east=side,north=side,power=7,south=side,west=none]", + "6903": "minecraft:redstone_wire[east=side,north=side,power=7,south=none,west=up]", + "6904": "minecraft:redstone_wire[east=side,north=side,power=7,south=none,west=side]", + "6905": "minecraft:redstone_wire[east=side,north=side,power=7,south=none,west=none]", + "6906": "minecraft:redstone_wire[east=side,north=side,power=8,south=up,west=up]", + "6907": "minecraft:redstone_wire[east=side,north=side,power=8,south=up,west=side]", + "6908": "minecraft:redstone_wire[east=side,north=side,power=8,south=up,west=none]", + "6909": "minecraft:redstone_wire[east=side,north=side,power=8,south=side,west=up]", + "6910": "minecraft:redstone_wire[east=side,north=side,power=8,south=side,west=side]", + "6911": "minecraft:redstone_wire[east=side,north=side,power=8,south=side,west=none]", + "6912": "minecraft:redstone_wire[east=side,north=side,power=8,south=none,west=up]", + "6913": "minecraft:redstone_wire[east=side,north=side,power=8,south=none,west=side]", + "6914": "minecraft:redstone_wire[east=side,north=side,power=8,south=none,west=none]", + "6915": "minecraft:redstone_wire[east=side,north=side,power=9,south=up,west=up]", + "6916": "minecraft:redstone_wire[east=side,north=side,power=9,south=up,west=side]", + "6917": "minecraft:redstone_wire[east=side,north=side,power=9,south=up,west=none]", + "6918": "minecraft:redstone_wire[east=side,north=side,power=9,south=side,west=up]", + "6919": "minecraft:redstone_wire[east=side,north=side,power=9,south=side,west=side]", + "6920": "minecraft:redstone_wire[east=side,north=side,power=9,south=side,west=none]", + "6921": "minecraft:redstone_wire[east=side,north=side,power=9,south=none,west=up]", + "6922": "minecraft:redstone_wire[east=side,north=side,power=9,south=none,west=side]", + "6923": "minecraft:redstone_wire[east=side,north=side,power=9,south=none,west=none]", + "6924": "minecraft:redstone_wire[east=side,north=side,power=10,south=up,west=up]", + "6925": "minecraft:redstone_wire[east=side,north=side,power=10,south=up,west=side]", + "6926": "minecraft:redstone_wire[east=side,north=side,power=10,south=up,west=none]", + "6927": "minecraft:redstone_wire[east=side,north=side,power=10,south=side,west=up]", + "6928": "minecraft:redstone_wire[east=side,north=side,power=10,south=side,west=side]", + "6929": "minecraft:redstone_wire[east=side,north=side,power=10,south=side,west=none]", + "6930": "minecraft:redstone_wire[east=side,north=side,power=10,south=none,west=up]", + "6931": "minecraft:redstone_wire[east=side,north=side,power=10,south=none,west=side]", + "6932": "minecraft:redstone_wire[east=side,north=side,power=10,south=none,west=none]", + "6933": "minecraft:redstone_wire[east=side,north=side,power=11,south=up,west=up]", + "6934": "minecraft:redstone_wire[east=side,north=side,power=11,south=up,west=side]", + "6935": "minecraft:redstone_wire[east=side,north=side,power=11,south=up,west=none]", + "6936": "minecraft:redstone_wire[east=side,north=side,power=11,south=side,west=up]", + "6937": "minecraft:redstone_wire[east=side,north=side,power=11,south=side,west=side]", + "6938": "minecraft:redstone_wire[east=side,north=side,power=11,south=side,west=none]", + "6939": "minecraft:redstone_wire[east=side,north=side,power=11,south=none,west=up]", + "6940": "minecraft:redstone_wire[east=side,north=side,power=11,south=none,west=side]", + "6941": "minecraft:redstone_wire[east=side,north=side,power=11,south=none,west=none]", + "6942": "minecraft:redstone_wire[east=side,north=side,power=12,south=up,west=up]", + "6943": "minecraft:redstone_wire[east=side,north=side,power=12,south=up,west=side]", + "6944": "minecraft:redstone_wire[east=side,north=side,power=12,south=up,west=none]", + "6945": "minecraft:redstone_wire[east=side,north=side,power=12,south=side,west=up]", + "6946": "minecraft:redstone_wire[east=side,north=side,power=12,south=side,west=side]", + "6947": "minecraft:redstone_wire[east=side,north=side,power=12,south=side,west=none]", + "6948": "minecraft:redstone_wire[east=side,north=side,power=12,south=none,west=up]", + "6949": "minecraft:redstone_wire[east=side,north=side,power=12,south=none,west=side]", + "6950": "minecraft:redstone_wire[east=side,north=side,power=12,south=none,west=none]", + "6951": "minecraft:redstone_wire[east=side,north=side,power=13,south=up,west=up]", + "6952": "minecraft:redstone_wire[east=side,north=side,power=13,south=up,west=side]", + "6953": "minecraft:redstone_wire[east=side,north=side,power=13,south=up,west=none]", + "6954": "minecraft:redstone_wire[east=side,north=side,power=13,south=side,west=up]", + "6955": "minecraft:redstone_wire[east=side,north=side,power=13,south=side,west=side]", + "6956": "minecraft:redstone_wire[east=side,north=side,power=13,south=side,west=none]", + "6957": "minecraft:redstone_wire[east=side,north=side,power=13,south=none,west=up]", + "6958": "minecraft:redstone_wire[east=side,north=side,power=13,south=none,west=side]", + "6959": "minecraft:redstone_wire[east=side,north=side,power=13,south=none,west=none]", + "6960": "minecraft:redstone_wire[east=side,north=side,power=14,south=up,west=up]", + "6961": "minecraft:redstone_wire[east=side,north=side,power=14,south=up,west=side]", + "6962": "minecraft:redstone_wire[east=side,north=side,power=14,south=up,west=none]", + "6963": "minecraft:redstone_wire[east=side,north=side,power=14,south=side,west=up]", + "6964": "minecraft:redstone_wire[east=side,north=side,power=14,south=side,west=side]", + "6965": "minecraft:redstone_wire[east=side,north=side,power=14,south=side,west=none]", + "6966": "minecraft:redstone_wire[east=side,north=side,power=14,south=none,west=up]", + "6967": "minecraft:redstone_wire[east=side,north=side,power=14,south=none,west=side]", + "6968": "minecraft:redstone_wire[east=side,north=side,power=14,south=none,west=none]", + "6969": "minecraft:redstone_wire[east=side,north=side,power=15,south=up,west=up]", + "6970": "minecraft:redstone_wire[east=side,north=side,power=15,south=up,west=side]", + "6971": "minecraft:redstone_wire[east=side,north=side,power=15,south=up,west=none]", + "6972": "minecraft:redstone_wire[east=side,north=side,power=15,south=side,west=up]", + "6973": "minecraft:redstone_wire[east=side,north=side,power=15,south=side,west=side]", + "6974": "minecraft:redstone_wire[east=side,north=side,power=15,south=side,west=none]", + "6975": "minecraft:redstone_wire[east=side,north=side,power=15,south=none,west=up]", + "6976": "minecraft:redstone_wire[east=side,north=side,power=15,south=none,west=side]", + "6977": "minecraft:redstone_wire[east=side,north=side,power=15,south=none,west=none]", + "6978": "minecraft:redstone_wire[east=side,north=none,power=0,south=up,west=up]", + "6979": "minecraft:redstone_wire[east=side,north=none,power=0,south=up,west=side]", + "6980": "minecraft:redstone_wire[east=side,north=none,power=0,south=up,west=none]", + "6981": "minecraft:redstone_wire[east=side,north=none,power=0,south=side,west=up]", + "6982": "minecraft:redstone_wire[east=side,north=none,power=0,south=side,west=side]", + "6983": "minecraft:redstone_wire[east=side,north=none,power=0,south=side,west=none]", + "6984": "minecraft:redstone_wire[east=side,north=none,power=0,south=none,west=up]", + "6985": "minecraft:redstone_wire[east=side,north=none,power=0,south=none,west=side]", + "6986": "minecraft:redstone_wire[east=side,north=none,power=0,south=none,west=none]", + "6987": "minecraft:redstone_wire[east=side,north=none,power=1,south=up,west=up]", + "6988": "minecraft:redstone_wire[east=side,north=none,power=1,south=up,west=side]", + "6989": "minecraft:redstone_wire[east=side,north=none,power=1,south=up,west=none]", + "6990": "minecraft:redstone_wire[east=side,north=none,power=1,south=side,west=up]", + "6991": "minecraft:redstone_wire[east=side,north=none,power=1,south=side,west=side]", + "6992": "minecraft:redstone_wire[east=side,north=none,power=1,south=side,west=none]", + "6993": "minecraft:redstone_wire[east=side,north=none,power=1,south=none,west=up]", + "6994": "minecraft:redstone_wire[east=side,north=none,power=1,south=none,west=side]", + "6995": "minecraft:redstone_wire[east=side,north=none,power=1,south=none,west=none]", + "6996": "minecraft:redstone_wire[east=side,north=none,power=2,south=up,west=up]", + "6997": "minecraft:redstone_wire[east=side,north=none,power=2,south=up,west=side]", + "6998": "minecraft:redstone_wire[east=side,north=none,power=2,south=up,west=none]", + "6999": "minecraft:redstone_wire[east=side,north=none,power=2,south=side,west=up]", + "7000": "minecraft:redstone_wire[east=side,north=none,power=2,south=side,west=side]", + "7001": "minecraft:redstone_wire[east=side,north=none,power=2,south=side,west=none]", + "7002": "minecraft:redstone_wire[east=side,north=none,power=2,south=none,west=up]", + "7003": "minecraft:redstone_wire[east=side,north=none,power=2,south=none,west=side]", + "7004": "minecraft:redstone_wire[east=side,north=none,power=2,south=none,west=none]", + "7005": "minecraft:redstone_wire[east=side,north=none,power=3,south=up,west=up]", + "7006": "minecraft:redstone_wire[east=side,north=none,power=3,south=up,west=side]", + "7007": "minecraft:redstone_wire[east=side,north=none,power=3,south=up,west=none]", + "7008": "minecraft:redstone_wire[east=side,north=none,power=3,south=side,west=up]", + "7009": "minecraft:redstone_wire[east=side,north=none,power=3,south=side,west=side]", + "7010": "minecraft:redstone_wire[east=side,north=none,power=3,south=side,west=none]", + "7011": "minecraft:redstone_wire[east=side,north=none,power=3,south=none,west=up]", + "7012": "minecraft:redstone_wire[east=side,north=none,power=3,south=none,west=side]", + "7013": "minecraft:redstone_wire[east=side,north=none,power=3,south=none,west=none]", + "7014": "minecraft:redstone_wire[east=side,north=none,power=4,south=up,west=up]", + "7015": "minecraft:redstone_wire[east=side,north=none,power=4,south=up,west=side]", + "7016": "minecraft:redstone_wire[east=side,north=none,power=4,south=up,west=none]", + "7017": "minecraft:redstone_wire[east=side,north=none,power=4,south=side,west=up]", + "7018": "minecraft:redstone_wire[east=side,north=none,power=4,south=side,west=side]", + "7019": "minecraft:redstone_wire[east=side,north=none,power=4,south=side,west=none]", + "7020": "minecraft:redstone_wire[east=side,north=none,power=4,south=none,west=up]", + "7021": "minecraft:redstone_wire[east=side,north=none,power=4,south=none,west=side]", + "7022": "minecraft:redstone_wire[east=side,north=none,power=4,south=none,west=none]", + "7023": "minecraft:redstone_wire[east=side,north=none,power=5,south=up,west=up]", + "7024": "minecraft:redstone_wire[east=side,north=none,power=5,south=up,west=side]", + "7025": "minecraft:redstone_wire[east=side,north=none,power=5,south=up,west=none]", + "7026": "minecraft:redstone_wire[east=side,north=none,power=5,south=side,west=up]", + "7027": "minecraft:redstone_wire[east=side,north=none,power=5,south=side,west=side]", + "7028": "minecraft:redstone_wire[east=side,north=none,power=5,south=side,west=none]", + "7029": "minecraft:redstone_wire[east=side,north=none,power=5,south=none,west=up]", + "7030": "minecraft:redstone_wire[east=side,north=none,power=5,south=none,west=side]", + "7031": "minecraft:redstone_wire[east=side,north=none,power=5,south=none,west=none]", + "7032": "minecraft:redstone_wire[east=side,north=none,power=6,south=up,west=up]", + "7033": "minecraft:redstone_wire[east=side,north=none,power=6,south=up,west=side]", + "7034": "minecraft:redstone_wire[east=side,north=none,power=6,south=up,west=none]", + "7035": "minecraft:redstone_wire[east=side,north=none,power=6,south=side,west=up]", + "7036": "minecraft:redstone_wire[east=side,north=none,power=6,south=side,west=side]", + "7037": "minecraft:redstone_wire[east=side,north=none,power=6,south=side,west=none]", + "7038": "minecraft:redstone_wire[east=side,north=none,power=6,south=none,west=up]", + "7039": "minecraft:redstone_wire[east=side,north=none,power=6,south=none,west=side]", + "7040": "minecraft:redstone_wire[east=side,north=none,power=6,south=none,west=none]", + "7041": "minecraft:redstone_wire[east=side,north=none,power=7,south=up,west=up]", + "7042": "minecraft:redstone_wire[east=side,north=none,power=7,south=up,west=side]", + "7043": "minecraft:redstone_wire[east=side,north=none,power=7,south=up,west=none]", + "7044": "minecraft:redstone_wire[east=side,north=none,power=7,south=side,west=up]", + "7045": "minecraft:redstone_wire[east=side,north=none,power=7,south=side,west=side]", + "7046": "minecraft:redstone_wire[east=side,north=none,power=7,south=side,west=none]", + "7047": "minecraft:redstone_wire[east=side,north=none,power=7,south=none,west=up]", + "7048": "minecraft:redstone_wire[east=side,north=none,power=7,south=none,west=side]", + "7049": "minecraft:redstone_wire[east=side,north=none,power=7,south=none,west=none]", + "7050": "minecraft:redstone_wire[east=side,north=none,power=8,south=up,west=up]", + "7051": "minecraft:redstone_wire[east=side,north=none,power=8,south=up,west=side]", + "7052": "minecraft:redstone_wire[east=side,north=none,power=8,south=up,west=none]", + "7053": "minecraft:redstone_wire[east=side,north=none,power=8,south=side,west=up]", + "7054": "minecraft:redstone_wire[east=side,north=none,power=8,south=side,west=side]", + "7055": "minecraft:redstone_wire[east=side,north=none,power=8,south=side,west=none]", + "7056": "minecraft:redstone_wire[east=side,north=none,power=8,south=none,west=up]", + "7057": "minecraft:redstone_wire[east=side,north=none,power=8,south=none,west=side]", + "7058": "minecraft:redstone_wire[east=side,north=none,power=8,south=none,west=none]", + "7059": "minecraft:redstone_wire[east=side,north=none,power=9,south=up,west=up]", + "7060": "minecraft:redstone_wire[east=side,north=none,power=9,south=up,west=side]", + "7061": "minecraft:redstone_wire[east=side,north=none,power=9,south=up,west=none]", + "7062": "minecraft:redstone_wire[east=side,north=none,power=9,south=side,west=up]", + "7063": "minecraft:redstone_wire[east=side,north=none,power=9,south=side,west=side]", + "7064": "minecraft:redstone_wire[east=side,north=none,power=9,south=side,west=none]", + "7065": "minecraft:redstone_wire[east=side,north=none,power=9,south=none,west=up]", + "7066": "minecraft:redstone_wire[east=side,north=none,power=9,south=none,west=side]", + "7067": "minecraft:redstone_wire[east=side,north=none,power=9,south=none,west=none]", + "7068": "minecraft:redstone_wire[east=side,north=none,power=10,south=up,west=up]", + "7069": "minecraft:redstone_wire[east=side,north=none,power=10,south=up,west=side]", + "7070": "minecraft:redstone_wire[east=side,north=none,power=10,south=up,west=none]", + "7071": "minecraft:redstone_wire[east=side,north=none,power=10,south=side,west=up]", + "7072": "minecraft:redstone_wire[east=side,north=none,power=10,south=side,west=side]", + "7073": "minecraft:redstone_wire[east=side,north=none,power=10,south=side,west=none]", + "7074": "minecraft:redstone_wire[east=side,north=none,power=10,south=none,west=up]", + "7075": "minecraft:redstone_wire[east=side,north=none,power=10,south=none,west=side]", + "7076": "minecraft:redstone_wire[east=side,north=none,power=10,south=none,west=none]", + "7077": "minecraft:redstone_wire[east=side,north=none,power=11,south=up,west=up]", + "7078": "minecraft:redstone_wire[east=side,north=none,power=11,south=up,west=side]", + "7079": "minecraft:redstone_wire[east=side,north=none,power=11,south=up,west=none]", + "7080": "minecraft:redstone_wire[east=side,north=none,power=11,south=side,west=up]", + "7081": "minecraft:redstone_wire[east=side,north=none,power=11,south=side,west=side]", + "7082": "minecraft:redstone_wire[east=side,north=none,power=11,south=side,west=none]", + "7083": "minecraft:redstone_wire[east=side,north=none,power=11,south=none,west=up]", + "7084": "minecraft:redstone_wire[east=side,north=none,power=11,south=none,west=side]", + "7085": "minecraft:redstone_wire[east=side,north=none,power=11,south=none,west=none]", + "7086": "minecraft:redstone_wire[east=side,north=none,power=12,south=up,west=up]", + "7087": "minecraft:redstone_wire[east=side,north=none,power=12,south=up,west=side]", + "7088": "minecraft:redstone_wire[east=side,north=none,power=12,south=up,west=none]", + "7089": "minecraft:redstone_wire[east=side,north=none,power=12,south=side,west=up]", + "7090": "minecraft:redstone_wire[east=side,north=none,power=12,south=side,west=side]", + "7091": "minecraft:redstone_wire[east=side,north=none,power=12,south=side,west=none]", + "7092": "minecraft:redstone_wire[east=side,north=none,power=12,south=none,west=up]", + "7093": "minecraft:redstone_wire[east=side,north=none,power=12,south=none,west=side]", + "7094": "minecraft:redstone_wire[east=side,north=none,power=12,south=none,west=none]", + "7095": "minecraft:redstone_wire[east=side,north=none,power=13,south=up,west=up]", + "7096": "minecraft:redstone_wire[east=side,north=none,power=13,south=up,west=side]", + "7097": "minecraft:redstone_wire[east=side,north=none,power=13,south=up,west=none]", + "7098": "minecraft:redstone_wire[east=side,north=none,power=13,south=side,west=up]", + "7099": "minecraft:redstone_wire[east=side,north=none,power=13,south=side,west=side]", + "7100": "minecraft:redstone_wire[east=side,north=none,power=13,south=side,west=none]", + "7101": "minecraft:redstone_wire[east=side,north=none,power=13,south=none,west=up]", + "7102": "minecraft:redstone_wire[east=side,north=none,power=13,south=none,west=side]", + "7103": "minecraft:redstone_wire[east=side,north=none,power=13,south=none,west=none]", + "7104": "minecraft:redstone_wire[east=side,north=none,power=14,south=up,west=up]", + "7105": "minecraft:redstone_wire[east=side,north=none,power=14,south=up,west=side]", + "7106": "minecraft:redstone_wire[east=side,north=none,power=14,south=up,west=none]", + "7107": "minecraft:redstone_wire[east=side,north=none,power=14,south=side,west=up]", + "7108": "minecraft:redstone_wire[east=side,north=none,power=14,south=side,west=side]", + "7109": "minecraft:redstone_wire[east=side,north=none,power=14,south=side,west=none]", + "7110": "minecraft:redstone_wire[east=side,north=none,power=14,south=none,west=up]", + "7111": "minecraft:redstone_wire[east=side,north=none,power=14,south=none,west=side]", + "7112": "minecraft:redstone_wire[east=side,north=none,power=14,south=none,west=none]", + "7113": "minecraft:redstone_wire[east=side,north=none,power=15,south=up,west=up]", + "7114": "minecraft:redstone_wire[east=side,north=none,power=15,south=up,west=side]", + "7115": "minecraft:redstone_wire[east=side,north=none,power=15,south=up,west=none]", + "7116": "minecraft:redstone_wire[east=side,north=none,power=15,south=side,west=up]", + "7117": "minecraft:redstone_wire[east=side,north=none,power=15,south=side,west=side]", + "7118": "minecraft:redstone_wire[east=side,north=none,power=15,south=side,west=none]", + "7119": "minecraft:redstone_wire[east=side,north=none,power=15,south=none,west=up]", + "7120": "minecraft:redstone_wire[east=side,north=none,power=15,south=none,west=side]", + "7121": "minecraft:redstone_wire[east=side,north=none,power=15,south=none,west=none]", + "7122": "minecraft:redstone_wire[east=none,north=up,power=0,south=up,west=up]", + "7123": "minecraft:redstone_wire[east=none,north=up,power=0,south=up,west=side]", + "7124": "minecraft:redstone_wire[east=none,north=up,power=0,south=up,west=none]", + "7125": "minecraft:redstone_wire[east=none,north=up,power=0,south=side,west=up]", + "7126": "minecraft:redstone_wire[east=none,north=up,power=0,south=side,west=side]", + "7127": "minecraft:redstone_wire[east=none,north=up,power=0,south=side,west=none]", + "7128": "minecraft:redstone_wire[east=none,north=up,power=0,south=none,west=up]", + "7129": "minecraft:redstone_wire[east=none,north=up,power=0,south=none,west=side]", + "7130": "minecraft:redstone_wire[east=none,north=up,power=0,south=none,west=none]", + "7131": "minecraft:redstone_wire[east=none,north=up,power=1,south=up,west=up]", + "7132": "minecraft:redstone_wire[east=none,north=up,power=1,south=up,west=side]", + "7133": "minecraft:redstone_wire[east=none,north=up,power=1,south=up,west=none]", + "7134": "minecraft:redstone_wire[east=none,north=up,power=1,south=side,west=up]", + "7135": "minecraft:redstone_wire[east=none,north=up,power=1,south=side,west=side]", + "7136": "minecraft:redstone_wire[east=none,north=up,power=1,south=side,west=none]", + "7137": "minecraft:redstone_wire[east=none,north=up,power=1,south=none,west=up]", + "7138": "minecraft:redstone_wire[east=none,north=up,power=1,south=none,west=side]", + "7139": "minecraft:redstone_wire[east=none,north=up,power=1,south=none,west=none]", + "7140": "minecraft:redstone_wire[east=none,north=up,power=2,south=up,west=up]", + "7141": "minecraft:redstone_wire[east=none,north=up,power=2,south=up,west=side]", + "7142": "minecraft:redstone_wire[east=none,north=up,power=2,south=up,west=none]", + "7143": "minecraft:redstone_wire[east=none,north=up,power=2,south=side,west=up]", + "7144": "minecraft:redstone_wire[east=none,north=up,power=2,south=side,west=side]", + "7145": "minecraft:redstone_wire[east=none,north=up,power=2,south=side,west=none]", + "7146": "minecraft:redstone_wire[east=none,north=up,power=2,south=none,west=up]", + "7147": "minecraft:redstone_wire[east=none,north=up,power=2,south=none,west=side]", + "7148": "minecraft:redstone_wire[east=none,north=up,power=2,south=none,west=none]", + "7149": "minecraft:redstone_wire[east=none,north=up,power=3,south=up,west=up]", + "7150": "minecraft:redstone_wire[east=none,north=up,power=3,south=up,west=side]", + "7151": "minecraft:redstone_wire[east=none,north=up,power=3,south=up,west=none]", + "7152": "minecraft:redstone_wire[east=none,north=up,power=3,south=side,west=up]", + "7153": "minecraft:redstone_wire[east=none,north=up,power=3,south=side,west=side]", + "7154": "minecraft:redstone_wire[east=none,north=up,power=3,south=side,west=none]", + "7155": "minecraft:redstone_wire[east=none,north=up,power=3,south=none,west=up]", + "7156": "minecraft:redstone_wire[east=none,north=up,power=3,south=none,west=side]", + "7157": "minecraft:redstone_wire[east=none,north=up,power=3,south=none,west=none]", + "7158": "minecraft:redstone_wire[east=none,north=up,power=4,south=up,west=up]", + "7159": "minecraft:redstone_wire[east=none,north=up,power=4,south=up,west=side]", + "7160": "minecraft:redstone_wire[east=none,north=up,power=4,south=up,west=none]", + "7161": "minecraft:redstone_wire[east=none,north=up,power=4,south=side,west=up]", + "7162": "minecraft:redstone_wire[east=none,north=up,power=4,south=side,west=side]", + "7163": "minecraft:redstone_wire[east=none,north=up,power=4,south=side,west=none]", + "7164": "minecraft:redstone_wire[east=none,north=up,power=4,south=none,west=up]", + "7165": "minecraft:redstone_wire[east=none,north=up,power=4,south=none,west=side]", + "7166": "minecraft:redstone_wire[east=none,north=up,power=4,south=none,west=none]", + "7167": "minecraft:redstone_wire[east=none,north=up,power=5,south=up,west=up]", + "7168": "minecraft:redstone_wire[east=none,north=up,power=5,south=up,west=side]", + "7169": "minecraft:redstone_wire[east=none,north=up,power=5,south=up,west=none]", + "7170": "minecraft:redstone_wire[east=none,north=up,power=5,south=side,west=up]", + "7171": "minecraft:redstone_wire[east=none,north=up,power=5,south=side,west=side]", + "7172": "minecraft:redstone_wire[east=none,north=up,power=5,south=side,west=none]", + "7173": "minecraft:redstone_wire[east=none,north=up,power=5,south=none,west=up]", + "7174": "minecraft:redstone_wire[east=none,north=up,power=5,south=none,west=side]", + "7175": "minecraft:redstone_wire[east=none,north=up,power=5,south=none,west=none]", + "7176": "minecraft:redstone_wire[east=none,north=up,power=6,south=up,west=up]", + "7177": "minecraft:redstone_wire[east=none,north=up,power=6,south=up,west=side]", + "7178": "minecraft:redstone_wire[east=none,north=up,power=6,south=up,west=none]", + "7179": "minecraft:redstone_wire[east=none,north=up,power=6,south=side,west=up]", + "7180": "minecraft:redstone_wire[east=none,north=up,power=6,south=side,west=side]", + "7181": "minecraft:redstone_wire[east=none,north=up,power=6,south=side,west=none]", + "7182": "minecraft:redstone_wire[east=none,north=up,power=6,south=none,west=up]", + "7183": "minecraft:redstone_wire[east=none,north=up,power=6,south=none,west=side]", + "7184": "minecraft:redstone_wire[east=none,north=up,power=6,south=none,west=none]", + "7185": "minecraft:redstone_wire[east=none,north=up,power=7,south=up,west=up]", + "7186": "minecraft:redstone_wire[east=none,north=up,power=7,south=up,west=side]", + "7187": "minecraft:redstone_wire[east=none,north=up,power=7,south=up,west=none]", + "7188": "minecraft:redstone_wire[east=none,north=up,power=7,south=side,west=up]", + "7189": "minecraft:redstone_wire[east=none,north=up,power=7,south=side,west=side]", + "7190": "minecraft:redstone_wire[east=none,north=up,power=7,south=side,west=none]", + "7191": "minecraft:redstone_wire[east=none,north=up,power=7,south=none,west=up]", + "7192": "minecraft:redstone_wire[east=none,north=up,power=7,south=none,west=side]", + "7193": "minecraft:redstone_wire[east=none,north=up,power=7,south=none,west=none]", + "7194": "minecraft:redstone_wire[east=none,north=up,power=8,south=up,west=up]", + "7195": "minecraft:redstone_wire[east=none,north=up,power=8,south=up,west=side]", + "7196": "minecraft:redstone_wire[east=none,north=up,power=8,south=up,west=none]", + "7197": "minecraft:redstone_wire[east=none,north=up,power=8,south=side,west=up]", + "7198": "minecraft:redstone_wire[east=none,north=up,power=8,south=side,west=side]", + "7199": "minecraft:redstone_wire[east=none,north=up,power=8,south=side,west=none]", + "7200": "minecraft:redstone_wire[east=none,north=up,power=8,south=none,west=up]", + "7201": "minecraft:redstone_wire[east=none,north=up,power=8,south=none,west=side]", + "7202": "minecraft:redstone_wire[east=none,north=up,power=8,south=none,west=none]", + "7203": "minecraft:redstone_wire[east=none,north=up,power=9,south=up,west=up]", + "7204": "minecraft:redstone_wire[east=none,north=up,power=9,south=up,west=side]", + "7205": "minecraft:redstone_wire[east=none,north=up,power=9,south=up,west=none]", + "7206": "minecraft:redstone_wire[east=none,north=up,power=9,south=side,west=up]", + "7207": "minecraft:redstone_wire[east=none,north=up,power=9,south=side,west=side]", + "7208": "minecraft:redstone_wire[east=none,north=up,power=9,south=side,west=none]", + "7209": "minecraft:redstone_wire[east=none,north=up,power=9,south=none,west=up]", + "7210": "minecraft:redstone_wire[east=none,north=up,power=9,south=none,west=side]", + "7211": "minecraft:redstone_wire[east=none,north=up,power=9,south=none,west=none]", + "7212": "minecraft:redstone_wire[east=none,north=up,power=10,south=up,west=up]", + "7213": "minecraft:redstone_wire[east=none,north=up,power=10,south=up,west=side]", + "7214": "minecraft:redstone_wire[east=none,north=up,power=10,south=up,west=none]", + "7215": "minecraft:redstone_wire[east=none,north=up,power=10,south=side,west=up]", + "7216": "minecraft:redstone_wire[east=none,north=up,power=10,south=side,west=side]", + "7217": "minecraft:redstone_wire[east=none,north=up,power=10,south=side,west=none]", + "7218": "minecraft:redstone_wire[east=none,north=up,power=10,south=none,west=up]", + "7219": "minecraft:redstone_wire[east=none,north=up,power=10,south=none,west=side]", + "7220": "minecraft:redstone_wire[east=none,north=up,power=10,south=none,west=none]", + "7221": "minecraft:redstone_wire[east=none,north=up,power=11,south=up,west=up]", + "7222": "minecraft:redstone_wire[east=none,north=up,power=11,south=up,west=side]", + "7223": "minecraft:redstone_wire[east=none,north=up,power=11,south=up,west=none]", + "7224": "minecraft:redstone_wire[east=none,north=up,power=11,south=side,west=up]", + "7225": "minecraft:redstone_wire[east=none,north=up,power=11,south=side,west=side]", + "7226": "minecraft:redstone_wire[east=none,north=up,power=11,south=side,west=none]", + "7227": "minecraft:redstone_wire[east=none,north=up,power=11,south=none,west=up]", + "7228": "minecraft:redstone_wire[east=none,north=up,power=11,south=none,west=side]", + "7229": "minecraft:redstone_wire[east=none,north=up,power=11,south=none,west=none]", + "7230": "minecraft:redstone_wire[east=none,north=up,power=12,south=up,west=up]", + "7231": "minecraft:redstone_wire[east=none,north=up,power=12,south=up,west=side]", + "7232": "minecraft:redstone_wire[east=none,north=up,power=12,south=up,west=none]", + "7233": "minecraft:redstone_wire[east=none,north=up,power=12,south=side,west=up]", + "7234": "minecraft:redstone_wire[east=none,north=up,power=12,south=side,west=side]", + "7235": "minecraft:redstone_wire[east=none,north=up,power=12,south=side,west=none]", + "7236": "minecraft:redstone_wire[east=none,north=up,power=12,south=none,west=up]", + "7237": "minecraft:redstone_wire[east=none,north=up,power=12,south=none,west=side]", + "7238": "minecraft:redstone_wire[east=none,north=up,power=12,south=none,west=none]", + "7239": "minecraft:redstone_wire[east=none,north=up,power=13,south=up,west=up]", + "7240": "minecraft:redstone_wire[east=none,north=up,power=13,south=up,west=side]", + "7241": "minecraft:redstone_wire[east=none,north=up,power=13,south=up,west=none]", + "7242": "minecraft:redstone_wire[east=none,north=up,power=13,south=side,west=up]", + "7243": "minecraft:redstone_wire[east=none,north=up,power=13,south=side,west=side]", + "7244": "minecraft:redstone_wire[east=none,north=up,power=13,south=side,west=none]", + "7245": "minecraft:redstone_wire[east=none,north=up,power=13,south=none,west=up]", + "7246": "minecraft:redstone_wire[east=none,north=up,power=13,south=none,west=side]", + "7247": "minecraft:redstone_wire[east=none,north=up,power=13,south=none,west=none]", + "7248": "minecraft:redstone_wire[east=none,north=up,power=14,south=up,west=up]", + "7249": "minecraft:redstone_wire[east=none,north=up,power=14,south=up,west=side]", + "7250": "minecraft:redstone_wire[east=none,north=up,power=14,south=up,west=none]", + "7251": "minecraft:redstone_wire[east=none,north=up,power=14,south=side,west=up]", + "7252": "minecraft:redstone_wire[east=none,north=up,power=14,south=side,west=side]", + "7253": "minecraft:redstone_wire[east=none,north=up,power=14,south=side,west=none]", + "7254": "minecraft:redstone_wire[east=none,north=up,power=14,south=none,west=up]", + "7255": "minecraft:redstone_wire[east=none,north=up,power=14,south=none,west=side]", + "7256": "minecraft:redstone_wire[east=none,north=up,power=14,south=none,west=none]", + "7257": "minecraft:redstone_wire[east=none,north=up,power=15,south=up,west=up]", + "7258": "minecraft:redstone_wire[east=none,north=up,power=15,south=up,west=side]", + "7259": "minecraft:redstone_wire[east=none,north=up,power=15,south=up,west=none]", + "7260": "minecraft:redstone_wire[east=none,north=up,power=15,south=side,west=up]", + "7261": "minecraft:redstone_wire[east=none,north=up,power=15,south=side,west=side]", + "7262": "minecraft:redstone_wire[east=none,north=up,power=15,south=side,west=none]", + "7263": "minecraft:redstone_wire[east=none,north=up,power=15,south=none,west=up]", + "7264": "minecraft:redstone_wire[east=none,north=up,power=15,south=none,west=side]", + "7265": "minecraft:redstone_wire[east=none,north=up,power=15,south=none,west=none]", + "7266": "minecraft:redstone_wire[east=none,north=side,power=0,south=up,west=up]", + "7267": "minecraft:redstone_wire[east=none,north=side,power=0,south=up,west=side]", + "7268": "minecraft:redstone_wire[east=none,north=side,power=0,south=up,west=none]", + "7269": "minecraft:redstone_wire[east=none,north=side,power=0,south=side,west=up]", + "7270": "minecraft:redstone_wire[east=none,north=side,power=0,south=side,west=side]", + "7271": "minecraft:redstone_wire[east=none,north=side,power=0,south=side,west=none]", + "7272": "minecraft:redstone_wire[east=none,north=side,power=0,south=none,west=up]", + "7273": "minecraft:redstone_wire[east=none,north=side,power=0,south=none,west=side]", + "7274": "minecraft:redstone_wire[east=none,north=side,power=0,south=none,west=none]", + "7275": "minecraft:redstone_wire[east=none,north=side,power=1,south=up,west=up]", + "7276": "minecraft:redstone_wire[east=none,north=side,power=1,south=up,west=side]", + "7277": "minecraft:redstone_wire[east=none,north=side,power=1,south=up,west=none]", + "7278": "minecraft:redstone_wire[east=none,north=side,power=1,south=side,west=up]", + "7279": "minecraft:redstone_wire[east=none,north=side,power=1,south=side,west=side]", + "7280": "minecraft:redstone_wire[east=none,north=side,power=1,south=side,west=none]", + "7281": "minecraft:redstone_wire[east=none,north=side,power=1,south=none,west=up]", + "7282": "minecraft:redstone_wire[east=none,north=side,power=1,south=none,west=side]", + "7283": "minecraft:redstone_wire[east=none,north=side,power=1,south=none,west=none]", + "7284": "minecraft:redstone_wire[east=none,north=side,power=2,south=up,west=up]", + "7285": "minecraft:redstone_wire[east=none,north=side,power=2,south=up,west=side]", + "7286": "minecraft:redstone_wire[east=none,north=side,power=2,south=up,west=none]", + "7287": "minecraft:redstone_wire[east=none,north=side,power=2,south=side,west=up]", + "7288": "minecraft:redstone_wire[east=none,north=side,power=2,south=side,west=side]", + "7289": "minecraft:redstone_wire[east=none,north=side,power=2,south=side,west=none]", + "7290": "minecraft:redstone_wire[east=none,north=side,power=2,south=none,west=up]", + "7291": "minecraft:redstone_wire[east=none,north=side,power=2,south=none,west=side]", + "7292": "minecraft:redstone_wire[east=none,north=side,power=2,south=none,west=none]", + "7293": "minecraft:redstone_wire[east=none,north=side,power=3,south=up,west=up]", + "7294": "minecraft:redstone_wire[east=none,north=side,power=3,south=up,west=side]", + "7295": "minecraft:redstone_wire[east=none,north=side,power=3,south=up,west=none]", + "7296": "minecraft:redstone_wire[east=none,north=side,power=3,south=side,west=up]", + "7297": "minecraft:redstone_wire[east=none,north=side,power=3,south=side,west=side]", + "7298": "minecraft:redstone_wire[east=none,north=side,power=3,south=side,west=none]", + "7299": "minecraft:redstone_wire[east=none,north=side,power=3,south=none,west=up]", + "7300": "minecraft:redstone_wire[east=none,north=side,power=3,south=none,west=side]", + "7301": "minecraft:redstone_wire[east=none,north=side,power=3,south=none,west=none]", + "7302": "minecraft:redstone_wire[east=none,north=side,power=4,south=up,west=up]", + "7303": "minecraft:redstone_wire[east=none,north=side,power=4,south=up,west=side]", + "7304": "minecraft:redstone_wire[east=none,north=side,power=4,south=up,west=none]", + "7305": "minecraft:redstone_wire[east=none,north=side,power=4,south=side,west=up]", + "7306": "minecraft:redstone_wire[east=none,north=side,power=4,south=side,west=side]", + "7307": "minecraft:redstone_wire[east=none,north=side,power=4,south=side,west=none]", + "7308": "minecraft:redstone_wire[east=none,north=side,power=4,south=none,west=up]", + "7309": "minecraft:redstone_wire[east=none,north=side,power=4,south=none,west=side]", + "7310": "minecraft:redstone_wire[east=none,north=side,power=4,south=none,west=none]", + "7311": "minecraft:redstone_wire[east=none,north=side,power=5,south=up,west=up]", + "7312": "minecraft:redstone_wire[east=none,north=side,power=5,south=up,west=side]", + "7313": "minecraft:redstone_wire[east=none,north=side,power=5,south=up,west=none]", + "7314": "minecraft:redstone_wire[east=none,north=side,power=5,south=side,west=up]", + "7315": "minecraft:redstone_wire[east=none,north=side,power=5,south=side,west=side]", + "7316": "minecraft:redstone_wire[east=none,north=side,power=5,south=side,west=none]", + "7317": "minecraft:redstone_wire[east=none,north=side,power=5,south=none,west=up]", + "7318": "minecraft:redstone_wire[east=none,north=side,power=5,south=none,west=side]", + "7319": "minecraft:redstone_wire[east=none,north=side,power=5,south=none,west=none]", + "7320": "minecraft:redstone_wire[east=none,north=side,power=6,south=up,west=up]", + "7321": "minecraft:redstone_wire[east=none,north=side,power=6,south=up,west=side]", + "7322": "minecraft:redstone_wire[east=none,north=side,power=6,south=up,west=none]", + "7323": "minecraft:redstone_wire[east=none,north=side,power=6,south=side,west=up]", + "7324": "minecraft:redstone_wire[east=none,north=side,power=6,south=side,west=side]", + "7325": "minecraft:redstone_wire[east=none,north=side,power=6,south=side,west=none]", + "7326": "minecraft:redstone_wire[east=none,north=side,power=6,south=none,west=up]", + "7327": "minecraft:redstone_wire[east=none,north=side,power=6,south=none,west=side]", + "7328": "minecraft:redstone_wire[east=none,north=side,power=6,south=none,west=none]", + "7329": "minecraft:redstone_wire[east=none,north=side,power=7,south=up,west=up]", + "7330": "minecraft:redstone_wire[east=none,north=side,power=7,south=up,west=side]", + "7331": "minecraft:redstone_wire[east=none,north=side,power=7,south=up,west=none]", + "7332": "minecraft:redstone_wire[east=none,north=side,power=7,south=side,west=up]", + "7333": "minecraft:redstone_wire[east=none,north=side,power=7,south=side,west=side]", + "7334": "minecraft:redstone_wire[east=none,north=side,power=7,south=side,west=none]", + "7335": "minecraft:redstone_wire[east=none,north=side,power=7,south=none,west=up]", + "7336": "minecraft:redstone_wire[east=none,north=side,power=7,south=none,west=side]", + "7337": "minecraft:redstone_wire[east=none,north=side,power=7,south=none,west=none]", + "7338": "minecraft:redstone_wire[east=none,north=side,power=8,south=up,west=up]", + "7339": "minecraft:redstone_wire[east=none,north=side,power=8,south=up,west=side]", + "7340": "minecraft:redstone_wire[east=none,north=side,power=8,south=up,west=none]", + "7341": "minecraft:redstone_wire[east=none,north=side,power=8,south=side,west=up]", + "7342": "minecraft:redstone_wire[east=none,north=side,power=8,south=side,west=side]", + "7343": "minecraft:redstone_wire[east=none,north=side,power=8,south=side,west=none]", + "7344": "minecraft:redstone_wire[east=none,north=side,power=8,south=none,west=up]", + "7345": "minecraft:redstone_wire[east=none,north=side,power=8,south=none,west=side]", + "7346": "minecraft:redstone_wire[east=none,north=side,power=8,south=none,west=none]", + "7347": "minecraft:redstone_wire[east=none,north=side,power=9,south=up,west=up]", + "7348": "minecraft:redstone_wire[east=none,north=side,power=9,south=up,west=side]", + "7349": "minecraft:redstone_wire[east=none,north=side,power=9,south=up,west=none]", + "7350": "minecraft:redstone_wire[east=none,north=side,power=9,south=side,west=up]", + "7351": "minecraft:redstone_wire[east=none,north=side,power=9,south=side,west=side]", + "7352": "minecraft:redstone_wire[east=none,north=side,power=9,south=side,west=none]", + "7353": "minecraft:redstone_wire[east=none,north=side,power=9,south=none,west=up]", + "7354": "minecraft:redstone_wire[east=none,north=side,power=9,south=none,west=side]", + "7355": "minecraft:redstone_wire[east=none,north=side,power=9,south=none,west=none]", + "7356": "minecraft:redstone_wire[east=none,north=side,power=10,south=up,west=up]", + "7357": "minecraft:redstone_wire[east=none,north=side,power=10,south=up,west=side]", + "7358": "minecraft:redstone_wire[east=none,north=side,power=10,south=up,west=none]", + "7359": "minecraft:redstone_wire[east=none,north=side,power=10,south=side,west=up]", + "7360": "minecraft:redstone_wire[east=none,north=side,power=10,south=side,west=side]", + "7361": "minecraft:redstone_wire[east=none,north=side,power=10,south=side,west=none]", + "7362": "minecraft:redstone_wire[east=none,north=side,power=10,south=none,west=up]", + "7363": "minecraft:redstone_wire[east=none,north=side,power=10,south=none,west=side]", + "7364": "minecraft:redstone_wire[east=none,north=side,power=10,south=none,west=none]", + "7365": "minecraft:redstone_wire[east=none,north=side,power=11,south=up,west=up]", + "7366": "minecraft:redstone_wire[east=none,north=side,power=11,south=up,west=side]", + "7367": "minecraft:redstone_wire[east=none,north=side,power=11,south=up,west=none]", + "7368": "minecraft:redstone_wire[east=none,north=side,power=11,south=side,west=up]", + "7369": "minecraft:redstone_wire[east=none,north=side,power=11,south=side,west=side]", + "7370": "minecraft:redstone_wire[east=none,north=side,power=11,south=side,west=none]", + "7371": "minecraft:redstone_wire[east=none,north=side,power=11,south=none,west=up]", + "7372": "minecraft:redstone_wire[east=none,north=side,power=11,south=none,west=side]", + "7373": "minecraft:redstone_wire[east=none,north=side,power=11,south=none,west=none]", + "7374": "minecraft:redstone_wire[east=none,north=side,power=12,south=up,west=up]", + "7375": "minecraft:redstone_wire[east=none,north=side,power=12,south=up,west=side]", + "7376": "minecraft:redstone_wire[east=none,north=side,power=12,south=up,west=none]", + "7377": "minecraft:redstone_wire[east=none,north=side,power=12,south=side,west=up]", + "7378": "minecraft:redstone_wire[east=none,north=side,power=12,south=side,west=side]", + "7379": "minecraft:redstone_wire[east=none,north=side,power=12,south=side,west=none]", + "7380": "minecraft:redstone_wire[east=none,north=side,power=12,south=none,west=up]", + "7381": "minecraft:redstone_wire[east=none,north=side,power=12,south=none,west=side]", + "7382": "minecraft:redstone_wire[east=none,north=side,power=12,south=none,west=none]", + "7383": "minecraft:redstone_wire[east=none,north=side,power=13,south=up,west=up]", + "7384": "minecraft:redstone_wire[east=none,north=side,power=13,south=up,west=side]", + "7385": "minecraft:redstone_wire[east=none,north=side,power=13,south=up,west=none]", + "7386": "minecraft:redstone_wire[east=none,north=side,power=13,south=side,west=up]", + "7387": "minecraft:redstone_wire[east=none,north=side,power=13,south=side,west=side]", + "7388": "minecraft:redstone_wire[east=none,north=side,power=13,south=side,west=none]", + "7389": "minecraft:redstone_wire[east=none,north=side,power=13,south=none,west=up]", + "7390": "minecraft:redstone_wire[east=none,north=side,power=13,south=none,west=side]", + "7391": "minecraft:redstone_wire[east=none,north=side,power=13,south=none,west=none]", + "7392": "minecraft:redstone_wire[east=none,north=side,power=14,south=up,west=up]", + "7393": "minecraft:redstone_wire[east=none,north=side,power=14,south=up,west=side]", + "7394": "minecraft:redstone_wire[east=none,north=side,power=14,south=up,west=none]", + "7395": "minecraft:redstone_wire[east=none,north=side,power=14,south=side,west=up]", + "7396": "minecraft:redstone_wire[east=none,north=side,power=14,south=side,west=side]", + "7397": "minecraft:redstone_wire[east=none,north=side,power=14,south=side,west=none]", + "7398": "minecraft:redstone_wire[east=none,north=side,power=14,south=none,west=up]", + "7399": "minecraft:redstone_wire[east=none,north=side,power=14,south=none,west=side]", + "7400": "minecraft:redstone_wire[east=none,north=side,power=14,south=none,west=none]", + "7401": "minecraft:redstone_wire[east=none,north=side,power=15,south=up,west=up]", + "7402": "minecraft:redstone_wire[east=none,north=side,power=15,south=up,west=side]", + "7403": "minecraft:redstone_wire[east=none,north=side,power=15,south=up,west=none]", + "7404": "minecraft:redstone_wire[east=none,north=side,power=15,south=side,west=up]", + "7405": "minecraft:redstone_wire[east=none,north=side,power=15,south=side,west=side]", + "7406": "minecraft:redstone_wire[east=none,north=side,power=15,south=side,west=none]", + "7407": "minecraft:redstone_wire[east=none,north=side,power=15,south=none,west=up]", + "7408": "minecraft:redstone_wire[east=none,north=side,power=15,south=none,west=side]", + "7409": "minecraft:redstone_wire[east=none,north=side,power=15,south=none,west=none]", + "7410": "minecraft:redstone_wire[east=none,north=none,power=0,south=up,west=up]", + "7411": "minecraft:redstone_wire[east=none,north=none,power=0,south=up,west=side]", + "7412": "minecraft:redstone_wire[east=none,north=none,power=0,south=up,west=none]", + "7413": "minecraft:redstone_wire[east=none,north=none,power=0,south=side,west=up]", + "7414": "minecraft:redstone_wire[east=none,north=none,power=0,south=side,west=side]", + "7415": "minecraft:redstone_wire[east=none,north=none,power=0,south=side,west=none]", + "7416": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=up]", + "7417": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=side]", + "7418": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "7419": "minecraft:redstone_wire[east=none,north=none,power=1,south=up,west=up]", + "7420": "minecraft:redstone_wire[east=none,north=none,power=1,south=up,west=side]", + "7421": "minecraft:redstone_wire[east=none,north=none,power=1,south=up,west=none]", + "7422": "minecraft:redstone_wire[east=none,north=none,power=1,south=side,west=up]", + "7423": "minecraft:redstone_wire[east=none,north=none,power=1,south=side,west=side]", + "7424": "minecraft:redstone_wire[east=none,north=none,power=1,south=side,west=none]", + "7425": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=up]", + "7426": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=side]", + "7427": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "7428": "minecraft:redstone_wire[east=none,north=none,power=2,south=up,west=up]", + "7429": "minecraft:redstone_wire[east=none,north=none,power=2,south=up,west=side]", + "7430": "minecraft:redstone_wire[east=none,north=none,power=2,south=up,west=none]", + "7431": "minecraft:redstone_wire[east=none,north=none,power=2,south=side,west=up]", + "7432": "minecraft:redstone_wire[east=none,north=none,power=2,south=side,west=side]", + "7433": "minecraft:redstone_wire[east=none,north=none,power=2,south=side,west=none]", + "7434": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=up]", + "7435": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=side]", + "7436": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "7437": "minecraft:redstone_wire[east=none,north=none,power=3,south=up,west=up]", + "7438": "minecraft:redstone_wire[east=none,north=none,power=3,south=up,west=side]", + "7439": "minecraft:redstone_wire[east=none,north=none,power=3,south=up,west=none]", + "7440": "minecraft:redstone_wire[east=none,north=none,power=3,south=side,west=up]", + "7441": "minecraft:redstone_wire[east=none,north=none,power=3,south=side,west=side]", + "7442": "minecraft:redstone_wire[east=none,north=none,power=3,south=side,west=none]", + "7443": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=up]", + "7444": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=side]", + "7445": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "7446": "minecraft:redstone_wire[east=none,north=none,power=4,south=up,west=up]", + "7447": "minecraft:redstone_wire[east=none,north=none,power=4,south=up,west=side]", + "7448": "minecraft:redstone_wire[east=none,north=none,power=4,south=up,west=none]", + "7449": "minecraft:redstone_wire[east=none,north=none,power=4,south=side,west=up]", + "7450": "minecraft:redstone_wire[east=none,north=none,power=4,south=side,west=side]", + "7451": "minecraft:redstone_wire[east=none,north=none,power=4,south=side,west=none]", + "7452": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=up]", + "7453": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=side]", + "7454": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "7455": "minecraft:redstone_wire[east=none,north=none,power=5,south=up,west=up]", + "7456": "minecraft:redstone_wire[east=none,north=none,power=5,south=up,west=side]", + "7457": "minecraft:redstone_wire[east=none,north=none,power=5,south=up,west=none]", + "7458": "minecraft:redstone_wire[east=none,north=none,power=5,south=side,west=up]", + "7459": "minecraft:redstone_wire[east=none,north=none,power=5,south=side,west=side]", + "7460": "minecraft:redstone_wire[east=none,north=none,power=5,south=side,west=none]", + "7461": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=up]", + "7462": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=side]", + "7463": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "7464": "minecraft:redstone_wire[east=none,north=none,power=6,south=up,west=up]", + "7465": "minecraft:redstone_wire[east=none,north=none,power=6,south=up,west=side]", + "7466": "minecraft:redstone_wire[east=none,north=none,power=6,south=up,west=none]", + "7467": "minecraft:redstone_wire[east=none,north=none,power=6,south=side,west=up]", + "7468": "minecraft:redstone_wire[east=none,north=none,power=6,south=side,west=side]", + "7469": "minecraft:redstone_wire[east=none,north=none,power=6,south=side,west=none]", + "7470": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=up]", + "7471": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=side]", + "7472": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "7473": "minecraft:redstone_wire[east=none,north=none,power=7,south=up,west=up]", + "7474": "minecraft:redstone_wire[east=none,north=none,power=7,south=up,west=side]", + "7475": "minecraft:redstone_wire[east=none,north=none,power=7,south=up,west=none]", + "7476": "minecraft:redstone_wire[east=none,north=none,power=7,south=side,west=up]", + "7477": "minecraft:redstone_wire[east=none,north=none,power=7,south=side,west=side]", + "7478": "minecraft:redstone_wire[east=none,north=none,power=7,south=side,west=none]", + "7479": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=up]", + "7480": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=side]", + "7481": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "7482": "minecraft:redstone_wire[east=none,north=none,power=8,south=up,west=up]", + "7483": "minecraft:redstone_wire[east=none,north=none,power=8,south=up,west=side]", + "7484": "minecraft:redstone_wire[east=none,north=none,power=8,south=up,west=none]", + "7485": "minecraft:redstone_wire[east=none,north=none,power=8,south=side,west=up]", + "7486": "minecraft:redstone_wire[east=none,north=none,power=8,south=side,west=side]", + "7487": "minecraft:redstone_wire[east=none,north=none,power=8,south=side,west=none]", + "7488": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=up]", + "7489": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=side]", + "7490": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "7491": "minecraft:redstone_wire[east=none,north=none,power=9,south=up,west=up]", + "7492": "minecraft:redstone_wire[east=none,north=none,power=9,south=up,west=side]", + "7493": "minecraft:redstone_wire[east=none,north=none,power=9,south=up,west=none]", + "7494": "minecraft:redstone_wire[east=none,north=none,power=9,south=side,west=up]", + "7495": "minecraft:redstone_wire[east=none,north=none,power=9,south=side,west=side]", + "7496": "minecraft:redstone_wire[east=none,north=none,power=9,south=side,west=none]", + "7497": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=up]", + "7498": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=side]", + "7499": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "7500": "minecraft:redstone_wire[east=none,north=none,power=10,south=up,west=up]", + "7501": "minecraft:redstone_wire[east=none,north=none,power=10,south=up,west=side]", + "7502": "minecraft:redstone_wire[east=none,north=none,power=10,south=up,west=none]", + "7503": "minecraft:redstone_wire[east=none,north=none,power=10,south=side,west=up]", + "7504": "minecraft:redstone_wire[east=none,north=none,power=10,south=side,west=side]", + "7505": "minecraft:redstone_wire[east=none,north=none,power=10,south=side,west=none]", + "7506": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=up]", + "7507": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=side]", + "7508": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "7509": "minecraft:redstone_wire[east=none,north=none,power=11,south=up,west=up]", + "7510": "minecraft:redstone_wire[east=none,north=none,power=11,south=up,west=side]", + "7511": "minecraft:redstone_wire[east=none,north=none,power=11,south=up,west=none]", + "7512": "minecraft:redstone_wire[east=none,north=none,power=11,south=side,west=up]", + "7513": "minecraft:redstone_wire[east=none,north=none,power=11,south=side,west=side]", + "7514": "minecraft:redstone_wire[east=none,north=none,power=11,south=side,west=none]", + "7515": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=up]", + "7516": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=side]", + "7517": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "7518": "minecraft:redstone_wire[east=none,north=none,power=12,south=up,west=up]", + "7519": "minecraft:redstone_wire[east=none,north=none,power=12,south=up,west=side]", + "7520": "minecraft:redstone_wire[east=none,north=none,power=12,south=up,west=none]", + "7521": "minecraft:redstone_wire[east=none,north=none,power=12,south=side,west=up]", + "7522": "minecraft:redstone_wire[east=none,north=none,power=12,south=side,west=side]", + "7523": "minecraft:redstone_wire[east=none,north=none,power=12,south=side,west=none]", + "7524": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=up]", + "7525": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=side]", + "7526": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "7527": "minecraft:redstone_wire[east=none,north=none,power=13,south=up,west=up]", + "7528": "minecraft:redstone_wire[east=none,north=none,power=13,south=up,west=side]", + "7529": "minecraft:redstone_wire[east=none,north=none,power=13,south=up,west=none]", + "7530": "minecraft:redstone_wire[east=none,north=none,power=13,south=side,west=up]", + "7531": "minecraft:redstone_wire[east=none,north=none,power=13,south=side,west=side]", + "7532": "minecraft:redstone_wire[east=none,north=none,power=13,south=side,west=none]", + "7533": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=up]", + "7534": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=side]", + "7535": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "7536": "minecraft:redstone_wire[east=none,north=none,power=14,south=up,west=up]", + "7537": "minecraft:redstone_wire[east=none,north=none,power=14,south=up,west=side]", + "7538": "minecraft:redstone_wire[east=none,north=none,power=14,south=up,west=none]", + "7539": "minecraft:redstone_wire[east=none,north=none,power=14,south=side,west=up]", + "7540": "minecraft:redstone_wire[east=none,north=none,power=14,south=side,west=side]", + "7541": "minecraft:redstone_wire[east=none,north=none,power=14,south=side,west=none]", + "7542": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=up]", + "7543": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=side]", + "7544": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "7545": "minecraft:redstone_wire[east=none,north=none,power=15,south=up,west=up]", + "7546": "minecraft:redstone_wire[east=none,north=none,power=15,south=up,west=side]", + "7547": "minecraft:redstone_wire[east=none,north=none,power=15,south=up,west=none]", + "7548": "minecraft:redstone_wire[east=none,north=none,power=15,south=side,west=up]", + "7549": "minecraft:redstone_wire[east=none,north=none,power=15,south=side,west=side]", + "7550": "minecraft:redstone_wire[east=none,north=none,power=15,south=side,west=none]", + "7551": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=up]", + "7552": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=side]", + "7553": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "7554": "minecraft:diamond_ore", + "7555": "minecraft:acacia_button[face=floor,facing=north,powered=true]", + "7556": "minecraft:acacia_button[face=floor,facing=north,powered=false]", + "7557": "minecraft:acacia_button[face=floor,facing=south,powered=true]", + "7558": "minecraft:acacia_button[face=floor,facing=south,powered=false]", + "7559": "minecraft:acacia_button[face=floor,facing=west,powered=true]", + "7560": "minecraft:acacia_button[face=floor,facing=west,powered=false]", + "7561": "minecraft:acacia_button[face=floor,facing=east,powered=true]", + "7562": "minecraft:acacia_button[face=floor,facing=east,powered=false]", + "7563": "minecraft:acacia_button[face=wall,facing=north,powered=true]", + "7564": "minecraft:acacia_button[face=wall,facing=north,powered=false]", + "7565": "minecraft:acacia_button[face=wall,facing=south,powered=true]", + "7566": "minecraft:acacia_button[face=wall,facing=south,powered=false]", + "7567": "minecraft:acacia_button[face=wall,facing=west,powered=true]", + "7568": "minecraft:acacia_button[face=wall,facing=west,powered=false]", + "7569": "minecraft:acacia_button[face=wall,facing=east,powered=true]", + "7570": "minecraft:acacia_button[face=wall,facing=east,powered=false]", + "7571": "minecraft:acacia_button[face=ceiling,facing=north,powered=true]", + "7572": "minecraft:acacia_button[face=ceiling,facing=north,powered=false]", + "7573": "minecraft:acacia_button[face=ceiling,facing=south,powered=true]", + "7574": "minecraft:acacia_button[face=ceiling,facing=south,powered=false]", + "7575": "minecraft:acacia_button[face=ceiling,facing=west,powered=true]", + "7576": "minecraft:acacia_button[face=ceiling,facing=west,powered=false]", + "7577": "minecraft:acacia_button[face=ceiling,facing=east,powered=true]", + "7578": "minecraft:acacia_button[face=ceiling,facing=east,powered=false]", + "7579": "minecraft:dead_brain_coral_wall_fan[facing=north,waterlogged=true]", + "7580": "minecraft:dead_brain_coral_wall_fan[facing=north,waterlogged=false]", + "7581": "minecraft:dead_brain_coral_wall_fan[facing=south,waterlogged=true]", + "7582": "minecraft:dead_brain_coral_wall_fan[facing=south,waterlogged=false]", + "7583": "minecraft:dead_brain_coral_wall_fan[facing=west,waterlogged=true]", + "7584": "minecraft:dead_brain_coral_wall_fan[facing=west,waterlogged=false]", + "7585": "minecraft:dead_brain_coral_wall_fan[facing=east,waterlogged=true]", + "7586": "minecraft:dead_brain_coral_wall_fan[facing=east,waterlogged=false]", + "7587": "minecraft:dark_oak_button[face=floor,facing=north,powered=true]", + "7588": "minecraft:dark_oak_button[face=floor,facing=north,powered=false]", + "7589": "minecraft:dark_oak_button[face=floor,facing=south,powered=true]", + "7590": "minecraft:dark_oak_button[face=floor,facing=south,powered=false]", + "7591": "minecraft:dark_oak_button[face=floor,facing=west,powered=true]", + "7592": "minecraft:dark_oak_button[face=floor,facing=west,powered=false]", + "7593": "minecraft:dark_oak_button[face=floor,facing=east,powered=true]", + "7594": "minecraft:dark_oak_button[face=floor,facing=east,powered=false]", + "7595": "minecraft:dark_oak_button[face=wall,facing=north,powered=true]", + "7596": "minecraft:dark_oak_button[face=wall,facing=north,powered=false]", + "7597": "minecraft:dark_oak_button[face=wall,facing=south,powered=true]", + "7598": "minecraft:dark_oak_button[face=wall,facing=south,powered=false]", + "7599": "minecraft:dark_oak_button[face=wall,facing=west,powered=true]", + "7600": "minecraft:dark_oak_button[face=wall,facing=west,powered=false]", + "7601": "minecraft:dark_oak_button[face=wall,facing=east,powered=true]", + "7602": "minecraft:dark_oak_button[face=wall,facing=east,powered=false]", + "7603": "minecraft:dark_oak_button[face=ceiling,facing=north,powered=true]", + "7604": "minecraft:dark_oak_button[face=ceiling,facing=north,powered=false]", + "7605": "minecraft:dark_oak_button[face=ceiling,facing=south,powered=true]", + "7606": "minecraft:dark_oak_button[face=ceiling,facing=south,powered=false]", + "7607": "minecraft:dark_oak_button[face=ceiling,facing=west,powered=true]", + "7608": "minecraft:dark_oak_button[face=ceiling,facing=west,powered=false]", + "7609": "minecraft:dark_oak_button[face=ceiling,facing=east,powered=true]", + "7610": "minecraft:dark_oak_button[face=ceiling,facing=east,powered=false]", + "7611": "minecraft:warped_slab[type=top,waterlogged=true]", + "7612": "minecraft:warped_slab[type=top,waterlogged=false]", + "7613": "minecraft:warped_slab[type=bottom,waterlogged=true]", + "7614": "minecraft:warped_slab[type=bottom,waterlogged=false]", + "7615": "minecraft:warped_slab[type=double,waterlogged=true]", + "7616": "minecraft:warped_slab[type=double,waterlogged=false]", + "7617": "minecraft:polished_diorite_slab[type=top,waterlogged=true]", + "7618": "minecraft:polished_diorite_slab[type=top,waterlogged=false]", + "7619": "minecraft:polished_diorite_slab[type=bottom,waterlogged=true]", + "7620": "minecraft:polished_diorite_slab[type=bottom,waterlogged=false]", + "7621": "minecraft:polished_diorite_slab[type=double,waterlogged=true]", + "7622": "minecraft:polished_diorite_slab[type=double,waterlogged=false]", + "7623": "minecraft:purple_wall_banner[facing=north]", + "7624": "minecraft:purple_wall_banner[facing=south]", + "7625": "minecraft:purple_wall_banner[facing=west]", + "7626": "minecraft:purple_wall_banner[facing=east]", + "7627": "minecraft:jungle_button[face=floor,facing=north,powered=true]", + "7628": "minecraft:jungle_button[face=floor,facing=north,powered=false]", + "7629": "minecraft:jungle_button[face=floor,facing=south,powered=true]", + "7630": "minecraft:jungle_button[face=floor,facing=south,powered=false]", + "7631": "minecraft:jungle_button[face=floor,facing=west,powered=true]", + "7632": "minecraft:jungle_button[face=floor,facing=west,powered=false]", + "7633": "minecraft:jungle_button[face=floor,facing=east,powered=true]", + "7634": "minecraft:jungle_button[face=floor,facing=east,powered=false]", + "7635": "minecraft:jungle_button[face=wall,facing=north,powered=true]", + "7636": "minecraft:jungle_button[face=wall,facing=north,powered=false]", + "7637": "minecraft:jungle_button[face=wall,facing=south,powered=true]", + "7638": "minecraft:jungle_button[face=wall,facing=south,powered=false]", + "7639": "minecraft:jungle_button[face=wall,facing=west,powered=true]", + "7640": "minecraft:jungle_button[face=wall,facing=west,powered=false]", + "7641": "minecraft:jungle_button[face=wall,facing=east,powered=true]", + "7642": "minecraft:jungle_button[face=wall,facing=east,powered=false]", + "7643": "minecraft:jungle_button[face=ceiling,facing=north,powered=true]", + "7644": "minecraft:jungle_button[face=ceiling,facing=north,powered=false]", + "7645": "minecraft:jungle_button[face=ceiling,facing=south,powered=true]", + "7646": "minecraft:jungle_button[face=ceiling,facing=south,powered=false]", + "7647": "minecraft:jungle_button[face=ceiling,facing=west,powered=true]", + "7648": "minecraft:jungle_button[face=ceiling,facing=west,powered=false]", + "7649": "minecraft:jungle_button[face=ceiling,facing=east,powered=true]", + "7650": "minecraft:jungle_button[face=ceiling,facing=east,powered=false]", + "7651": "minecraft:dead_fire_coral_wall_fan[facing=north,waterlogged=true]", + "7652": "minecraft:dead_fire_coral_wall_fan[facing=north,waterlogged=false]", + "7653": "minecraft:dead_fire_coral_wall_fan[facing=south,waterlogged=true]", + "7654": "minecraft:dead_fire_coral_wall_fan[facing=south,waterlogged=false]", + "7655": "minecraft:dead_fire_coral_wall_fan[facing=west,waterlogged=true]", + "7656": "minecraft:dead_fire_coral_wall_fan[facing=west,waterlogged=false]", + "7657": "minecraft:dead_fire_coral_wall_fan[facing=east,waterlogged=true]", + "7658": "minecraft:dead_fire_coral_wall_fan[facing=east,waterlogged=false]", + "7659": "minecraft:acacia_wood[axis=x]", + "7660": "minecraft:acacia_wood[axis=y]", + "7661": "minecraft:acacia_wood[axis=z]", + "7662": "minecraft:beacon", + "7663": "minecraft:black_wool", + "7664": "minecraft:cyan_stained_glass", + "7665": "minecraft:black_wall_banner[facing=north]", + "7666": "minecraft:black_wall_banner[facing=south]", + "7667": "minecraft:black_wall_banner[facing=west]", + "7668": "minecraft:black_wall_banner[facing=east]", + "7669": "minecraft:moving_piston[facing=north,type=normal]", + "7670": "minecraft:moving_piston[facing=north,type=sticky]", + "7671": "minecraft:moving_piston[facing=east,type=normal]", + "7672": "minecraft:moving_piston[facing=east,type=sticky]", + "7673": "minecraft:moving_piston[facing=south,type=normal]", + "7674": "minecraft:moving_piston[facing=south,type=sticky]", + "7675": "minecraft:moving_piston[facing=west,type=normal]", + "7676": "minecraft:moving_piston[facing=west,type=sticky]", + "7677": "minecraft:moving_piston[facing=up,type=normal]", + "7678": "minecraft:moving_piston[facing=up,type=sticky]", + "7679": "minecraft:moving_piston[facing=down,type=normal]", + "7680": "minecraft:moving_piston[facing=down,type=sticky]", + "7681": "minecraft:dark_oak_wood[axis=x]", + "7682": "minecraft:dark_oak_wood[axis=y]", + "7683": "minecraft:dark_oak_wood[axis=z]", + "7684": "minecraft:crimson_fence[east=true,north=true,south=true,waterlogged=true,west=true]", + "7685": "minecraft:crimson_fence[east=true,north=true,south=true,waterlogged=true,west=false]", + "7686": "minecraft:crimson_fence[east=true,north=true,south=true,waterlogged=false,west=true]", + "7687": "minecraft:crimson_fence[east=true,north=true,south=true,waterlogged=false,west=false]", + "7688": "minecraft:crimson_fence[east=true,north=true,south=false,waterlogged=true,west=true]", + "7689": "minecraft:crimson_fence[east=true,north=true,south=false,waterlogged=true,west=false]", + "7690": "minecraft:crimson_fence[east=true,north=true,south=false,waterlogged=false,west=true]", + "7691": "minecraft:crimson_fence[east=true,north=true,south=false,waterlogged=false,west=false]", + "7692": "minecraft:crimson_fence[east=true,north=false,south=true,waterlogged=true,west=true]", + "7693": "minecraft:crimson_fence[east=true,north=false,south=true,waterlogged=true,west=false]", + "7694": "minecraft:crimson_fence[east=true,north=false,south=true,waterlogged=false,west=true]", + "7695": "minecraft:crimson_fence[east=true,north=false,south=true,waterlogged=false,west=false]", + "7696": "minecraft:crimson_fence[east=true,north=false,south=false,waterlogged=true,west=true]", + "7697": "minecraft:crimson_fence[east=true,north=false,south=false,waterlogged=true,west=false]", + "7698": "minecraft:crimson_fence[east=true,north=false,south=false,waterlogged=false,west=true]", + "7699": "minecraft:crimson_fence[east=true,north=false,south=false,waterlogged=false,west=false]", + "7700": "minecraft:crimson_fence[east=false,north=true,south=true,waterlogged=true,west=true]", + "7701": "minecraft:crimson_fence[east=false,north=true,south=true,waterlogged=true,west=false]", + "7702": "minecraft:crimson_fence[east=false,north=true,south=true,waterlogged=false,west=true]", + "7703": "minecraft:crimson_fence[east=false,north=true,south=true,waterlogged=false,west=false]", + "7704": "minecraft:crimson_fence[east=false,north=true,south=false,waterlogged=true,west=true]", + "7705": "minecraft:crimson_fence[east=false,north=true,south=false,waterlogged=true,west=false]", + "7706": "minecraft:crimson_fence[east=false,north=true,south=false,waterlogged=false,west=true]", + "7707": "minecraft:crimson_fence[east=false,north=true,south=false,waterlogged=false,west=false]", + "7708": "minecraft:crimson_fence[east=false,north=false,south=true,waterlogged=true,west=true]", + "7709": "minecraft:crimson_fence[east=false,north=false,south=true,waterlogged=true,west=false]", + "7710": "minecraft:crimson_fence[east=false,north=false,south=true,waterlogged=false,west=true]", + "7711": "minecraft:crimson_fence[east=false,north=false,south=true,waterlogged=false,west=false]", + "7712": "minecraft:crimson_fence[east=false,north=false,south=false,waterlogged=true,west=true]", + "7713": "minecraft:crimson_fence[east=false,north=false,south=false,waterlogged=true,west=false]", + "7714": "minecraft:crimson_fence[east=false,north=false,south=false,waterlogged=false,west=true]", + "7715": "minecraft:crimson_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "7716": "minecraft:crimson_pressure_plate[powered=true]", + "7717": "minecraft:crimson_pressure_plate[powered=false]", + "7718": "minecraft:lime_concrete", + "7719": "minecraft:yellow_concrete", + "7720": "minecraft:stripped_oak_log[axis=x]", + "7721": "minecraft:stripped_oak_log[axis=y]", + "7722": "minecraft:stripped_oak_log[axis=z]", + "7723": "minecraft:light_gray_stained_glass", + "7724": "minecraft:light_blue_concrete", + "7725": "minecraft:magenta_concrete", + "7726": "minecraft:pink_stained_glass", + "7727": "minecraft:slime_block", + "7728": "minecraft:barrier", + "7729": "minecraft:dark_oak_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "7730": "minecraft:dark_oak_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "7731": "minecraft:dark_oak_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "7732": "minecraft:dark_oak_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "7733": "minecraft:dark_oak_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "7734": "minecraft:dark_oak_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "7735": "minecraft:dark_oak_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "7736": "minecraft:dark_oak_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "7737": "minecraft:dark_oak_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "7738": "minecraft:dark_oak_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "7739": "minecraft:dark_oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "7740": "minecraft:dark_oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "7741": "minecraft:dark_oak_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "7742": "minecraft:dark_oak_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "7743": "minecraft:dark_oak_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "7744": "minecraft:dark_oak_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "7745": "minecraft:dark_oak_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "7746": "minecraft:dark_oak_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "7747": "minecraft:dark_oak_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "7748": "minecraft:dark_oak_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "7749": "minecraft:dark_oak_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "7750": "minecraft:dark_oak_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "7751": "minecraft:dark_oak_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "7752": "minecraft:dark_oak_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "7753": "minecraft:dark_oak_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "7754": "minecraft:dark_oak_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "7755": "minecraft:dark_oak_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "7756": "minecraft:dark_oak_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "7757": "minecraft:dark_oak_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "7758": "minecraft:dark_oak_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "7759": "minecraft:dark_oak_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "7760": "minecraft:dark_oak_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "7761": "minecraft:dark_oak_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "7762": "minecraft:dark_oak_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "7763": "minecraft:dark_oak_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "7764": "minecraft:dark_oak_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "7765": "minecraft:dark_oak_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "7766": "minecraft:dark_oak_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "7767": "minecraft:dark_oak_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "7768": "minecraft:dark_oak_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "7769": "minecraft:dark_oak_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "7770": "minecraft:dark_oak_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "7771": "minecraft:dark_oak_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "7772": "minecraft:dark_oak_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "7773": "minecraft:dark_oak_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "7774": "minecraft:dark_oak_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "7775": "minecraft:dark_oak_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "7776": "minecraft:dark_oak_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "7777": "minecraft:dark_oak_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "7778": "minecraft:dark_oak_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "7779": "minecraft:dark_oak_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "7780": "minecraft:dark_oak_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "7781": "minecraft:dark_oak_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "7782": "minecraft:dark_oak_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "7783": "minecraft:dark_oak_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "7784": "minecraft:dark_oak_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "7785": "minecraft:dark_oak_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "7786": "minecraft:dark_oak_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "7787": "minecraft:dark_oak_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "7788": "minecraft:dark_oak_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "7789": "minecraft:dark_oak_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "7790": "minecraft:dark_oak_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "7791": "minecraft:dark_oak_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "7792": "minecraft:dark_oak_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "7793": "minecraft:dark_oak_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "7794": "minecraft:dark_oak_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "7795": "minecraft:dark_oak_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "7796": "minecraft:dark_oak_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "7797": "minecraft:dark_oak_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "7798": "minecraft:dark_oak_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "7799": "minecraft:dark_oak_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "7800": "minecraft:dark_oak_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "7801": "minecraft:dark_oak_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "7802": "minecraft:dark_oak_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "7803": "minecraft:dark_oak_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "7804": "minecraft:dark_oak_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "7805": "minecraft:dark_oak_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "7806": "minecraft:dark_oak_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "7807": "minecraft:dark_oak_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "7808": "minecraft:dark_oak_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "7809": "minecraft:bone_block[axis=x]", + "7810": "minecraft:bone_block[axis=y]", + "7811": "minecraft:bone_block[axis=z]", + "7812": "minecraft:acacia_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "7813": "minecraft:acacia_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "7814": "minecraft:acacia_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "7815": "minecraft:acacia_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "7816": "minecraft:acacia_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "7817": "minecraft:acacia_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "7818": "minecraft:acacia_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "7819": "minecraft:acacia_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "7820": "minecraft:acacia_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "7821": "minecraft:acacia_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "7822": "minecraft:acacia_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "7823": "minecraft:acacia_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "7824": "minecraft:acacia_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "7825": "minecraft:acacia_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "7826": "minecraft:acacia_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "7827": "minecraft:acacia_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "7828": "minecraft:acacia_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "7829": "minecraft:acacia_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "7830": "minecraft:acacia_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "7831": "minecraft:acacia_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "7832": "minecraft:acacia_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "7833": "minecraft:acacia_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "7834": "minecraft:acacia_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "7835": "minecraft:acacia_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "7836": "minecraft:acacia_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "7837": "minecraft:acacia_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "7838": "minecraft:acacia_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "7839": "minecraft:acacia_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "7840": "minecraft:acacia_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "7841": "minecraft:acacia_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "7842": "minecraft:acacia_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "7843": "minecraft:acacia_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "7844": "minecraft:acacia_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "7845": "minecraft:acacia_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "7846": "minecraft:acacia_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "7847": "minecraft:acacia_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "7848": "minecraft:acacia_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "7849": "minecraft:acacia_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "7850": "minecraft:acacia_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "7851": "minecraft:acacia_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "7852": "minecraft:acacia_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "7853": "minecraft:acacia_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "7854": "minecraft:acacia_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "7855": "minecraft:acacia_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "7856": "minecraft:acacia_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "7857": "minecraft:acacia_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "7858": "minecraft:acacia_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "7859": "minecraft:acacia_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "7860": "minecraft:acacia_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "7861": "minecraft:acacia_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "7862": "minecraft:acacia_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "7863": "minecraft:acacia_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "7864": "minecraft:acacia_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "7865": "minecraft:acacia_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "7866": "minecraft:acacia_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "7867": "minecraft:acacia_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "7868": "minecraft:acacia_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "7869": "minecraft:acacia_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "7870": "minecraft:acacia_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "7871": "minecraft:acacia_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "7872": "minecraft:acacia_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "7873": "minecraft:acacia_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "7874": "minecraft:acacia_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "7875": "minecraft:acacia_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "7876": "minecraft:acacia_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "7877": "minecraft:acacia_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "7878": "minecraft:acacia_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "7879": "minecraft:acacia_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "7880": "minecraft:acacia_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "7881": "minecraft:acacia_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "7882": "minecraft:acacia_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "7883": "minecraft:acacia_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "7884": "minecraft:acacia_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "7885": "minecraft:acacia_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "7886": "minecraft:acacia_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "7887": "minecraft:acacia_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "7888": "minecraft:acacia_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "7889": "minecraft:acacia_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "7890": "minecraft:acacia_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "7891": "minecraft:acacia_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "7892": "minecraft:light_blue_bed[facing=north,occupied=true,part=head]", + "7893": "minecraft:light_blue_bed[facing=north,occupied=true,part=foot]", + "7894": "minecraft:light_blue_bed[facing=north,occupied=false,part=head]", + "7895": "minecraft:light_blue_bed[facing=north,occupied=false,part=foot]", + "7896": "minecraft:light_blue_bed[facing=south,occupied=true,part=head]", + "7897": "minecraft:light_blue_bed[facing=south,occupied=true,part=foot]", + "7898": "minecraft:light_blue_bed[facing=south,occupied=false,part=head]", + "7899": "minecraft:light_blue_bed[facing=south,occupied=false,part=foot]", + "7900": "minecraft:light_blue_bed[facing=west,occupied=true,part=head]", + "7901": "minecraft:light_blue_bed[facing=west,occupied=true,part=foot]", + "7902": "minecraft:light_blue_bed[facing=west,occupied=false,part=head]", + "7903": "minecraft:light_blue_bed[facing=west,occupied=false,part=foot]", + "7904": "minecraft:light_blue_bed[facing=east,occupied=true,part=head]", + "7905": "minecraft:light_blue_bed[facing=east,occupied=true,part=foot]", + "7906": "minecraft:light_blue_bed[facing=east,occupied=false,part=head]", + "7907": "minecraft:light_blue_bed[facing=east,occupied=false,part=foot]", + "7908": "minecraft:prismarine_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "7909": "minecraft:prismarine_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "7910": "minecraft:prismarine_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "7911": "minecraft:prismarine_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "7912": "minecraft:prismarine_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "7913": "minecraft:prismarine_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "7914": "minecraft:prismarine_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "7915": "minecraft:prismarine_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "7916": "minecraft:prismarine_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "7917": "minecraft:prismarine_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "7918": "minecraft:prismarine_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "7919": "minecraft:prismarine_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "7920": "minecraft:prismarine_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "7921": "minecraft:prismarine_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "7922": "minecraft:prismarine_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "7923": "minecraft:prismarine_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "7924": "minecraft:prismarine_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "7925": "minecraft:prismarine_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "7926": "minecraft:prismarine_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "7927": "minecraft:prismarine_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "7928": "minecraft:prismarine_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "7929": "minecraft:prismarine_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "7930": "minecraft:prismarine_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "7931": "minecraft:prismarine_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "7932": "minecraft:prismarine_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "7933": "minecraft:prismarine_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "7934": "minecraft:prismarine_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "7935": "minecraft:prismarine_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "7936": "minecraft:prismarine_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "7937": "minecraft:prismarine_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "7938": "minecraft:prismarine_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "7939": "minecraft:prismarine_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "7940": "minecraft:prismarine_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "7941": "minecraft:prismarine_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "7942": "minecraft:prismarine_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "7943": "minecraft:prismarine_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "7944": "minecraft:prismarine_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "7945": "minecraft:prismarine_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "7946": "minecraft:prismarine_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "7947": "minecraft:prismarine_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "7948": "minecraft:prismarine_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "7949": "minecraft:prismarine_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "7950": "minecraft:prismarine_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "7951": "minecraft:prismarine_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "7952": "minecraft:prismarine_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "7953": "minecraft:prismarine_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "7954": "minecraft:prismarine_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "7955": "minecraft:prismarine_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "7956": "minecraft:prismarine_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "7957": "minecraft:prismarine_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "7958": "minecraft:prismarine_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "7959": "minecraft:prismarine_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "7960": "minecraft:prismarine_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "7961": "minecraft:prismarine_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "7962": "minecraft:prismarine_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "7963": "minecraft:prismarine_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "7964": "minecraft:prismarine_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "7965": "minecraft:prismarine_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "7966": "minecraft:prismarine_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "7967": "minecraft:prismarine_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "7968": "minecraft:prismarine_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "7969": "minecraft:prismarine_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "7970": "minecraft:prismarine_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "7971": "minecraft:prismarine_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "7972": "minecraft:prismarine_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "7973": "minecraft:prismarine_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "7974": "minecraft:prismarine_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "7975": "minecraft:prismarine_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "7976": "minecraft:prismarine_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "7977": "minecraft:prismarine_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "7978": "minecraft:prismarine_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "7979": "minecraft:prismarine_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "7980": "minecraft:prismarine_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "7981": "minecraft:prismarine_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "7982": "minecraft:prismarine_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "7983": "minecraft:prismarine_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "7984": "minecraft:prismarine_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "7985": "minecraft:prismarine_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "7986": "minecraft:prismarine_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "7987": "minecraft:prismarine_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "7988": "minecraft:stripped_spruce_wood[axis=x]", + "7989": "minecraft:stripped_spruce_wood[axis=y]", + "7990": "minecraft:stripped_spruce_wood[axis=z]", + "7991": "minecraft:oak_planks", + "7992": "minecraft:yellow_shulker_box[facing=north]", + "7993": "minecraft:yellow_shulker_box[facing=east]", + "7994": "minecraft:yellow_shulker_box[facing=south]", + "7995": "minecraft:yellow_shulker_box[facing=west]", + "7996": "minecraft:yellow_shulker_box[facing=up]", + "7997": "minecraft:yellow_shulker_box[facing=down]", + "7998": "minecraft:chiseled_red_sandstone", + "7999": "minecraft:terracotta", + "8000": "minecraft:green_concrete_powder", + "8001": "minecraft:smooth_sandstone", + "8002": "minecraft:smooth_red_sandstone", + "8003": "minecraft:fire[age=0,east=true,north=true,south=true,up=true,west=true]", + "8004": "minecraft:fire[age=0,east=true,north=true,south=true,up=true,west=false]", + "8005": "minecraft:fire[age=0,east=true,north=true,south=true,up=false,west=true]", + "8006": "minecraft:fire[age=0,east=true,north=true,south=true,up=false,west=false]", + "8007": "minecraft:fire[age=0,east=true,north=true,south=false,up=true,west=true]", + "8008": "minecraft:fire[age=0,east=true,north=true,south=false,up=true,west=false]", + "8009": "minecraft:fire[age=0,east=true,north=true,south=false,up=false,west=true]", + "8010": "minecraft:fire[age=0,east=true,north=true,south=false,up=false,west=false]", + "8011": "minecraft:fire[age=0,east=true,north=false,south=true,up=true,west=true]", + "8012": "minecraft:fire[age=0,east=true,north=false,south=true,up=true,west=false]", + "8013": "minecraft:fire[age=0,east=true,north=false,south=true,up=false,west=true]", + "8014": "minecraft:fire[age=0,east=true,north=false,south=true,up=false,west=false]", + "8015": "minecraft:fire[age=0,east=true,north=false,south=false,up=true,west=true]", + "8016": "minecraft:fire[age=0,east=true,north=false,south=false,up=true,west=false]", + "8017": "minecraft:fire[age=0,east=true,north=false,south=false,up=false,west=true]", + "8018": "minecraft:fire[age=0,east=true,north=false,south=false,up=false,west=false]", + "8019": "minecraft:fire[age=0,east=false,north=true,south=true,up=true,west=true]", + "8020": "minecraft:fire[age=0,east=false,north=true,south=true,up=true,west=false]", + "8021": "minecraft:fire[age=0,east=false,north=true,south=true,up=false,west=true]", + "8022": "minecraft:fire[age=0,east=false,north=true,south=true,up=false,west=false]", + "8023": "minecraft:fire[age=0,east=false,north=true,south=false,up=true,west=true]", + "8024": "minecraft:fire[age=0,east=false,north=true,south=false,up=true,west=false]", + "8025": "minecraft:fire[age=0,east=false,north=true,south=false,up=false,west=true]", + "8026": "minecraft:fire[age=0,east=false,north=true,south=false,up=false,west=false]", + "8027": "minecraft:fire[age=0,east=false,north=false,south=true,up=true,west=true]", + "8028": "minecraft:fire[age=0,east=false,north=false,south=true,up=true,west=false]", + "8029": "minecraft:fire[age=0,east=false,north=false,south=true,up=false,west=true]", + "8030": "minecraft:fire[age=0,east=false,north=false,south=true,up=false,west=false]", + "8031": "minecraft:fire[age=0,east=false,north=false,south=false,up=true,west=true]", + "8032": "minecraft:fire[age=0,east=false,north=false,south=false,up=true,west=false]", + "8033": "minecraft:fire[age=0,east=false,north=false,south=false,up=false,west=true]", + "8034": "minecraft:fire[age=0,east=false,north=false,south=false,up=false,west=false]", + "8035": "minecraft:fire[age=1,east=true,north=true,south=true,up=true,west=true]", + "8036": "minecraft:fire[age=1,east=true,north=true,south=true,up=true,west=false]", + "8037": "minecraft:fire[age=1,east=true,north=true,south=true,up=false,west=true]", + "8038": "minecraft:fire[age=1,east=true,north=true,south=true,up=false,west=false]", + "8039": "minecraft:fire[age=1,east=true,north=true,south=false,up=true,west=true]", + "8040": "minecraft:fire[age=1,east=true,north=true,south=false,up=true,west=false]", + "8041": "minecraft:fire[age=1,east=true,north=true,south=false,up=false,west=true]", + "8042": "minecraft:fire[age=1,east=true,north=true,south=false,up=false,west=false]", + "8043": "minecraft:fire[age=1,east=true,north=false,south=true,up=true,west=true]", + "8044": "minecraft:fire[age=1,east=true,north=false,south=true,up=true,west=false]", + "8045": "minecraft:fire[age=1,east=true,north=false,south=true,up=false,west=true]", + "8046": "minecraft:fire[age=1,east=true,north=false,south=true,up=false,west=false]", + "8047": "minecraft:fire[age=1,east=true,north=false,south=false,up=true,west=true]", + "8048": "minecraft:fire[age=1,east=true,north=false,south=false,up=true,west=false]", + "8049": "minecraft:fire[age=1,east=true,north=false,south=false,up=false,west=true]", + "8050": "minecraft:fire[age=1,east=true,north=false,south=false,up=false,west=false]", + "8051": "minecraft:fire[age=1,east=false,north=true,south=true,up=true,west=true]", + "8052": "minecraft:fire[age=1,east=false,north=true,south=true,up=true,west=false]", + "8053": "minecraft:fire[age=1,east=false,north=true,south=true,up=false,west=true]", + "8054": "minecraft:fire[age=1,east=false,north=true,south=true,up=false,west=false]", + "8055": "minecraft:fire[age=1,east=false,north=true,south=false,up=true,west=true]", + "8056": "minecraft:fire[age=1,east=false,north=true,south=false,up=true,west=false]", + "8057": "minecraft:fire[age=1,east=false,north=true,south=false,up=false,west=true]", + "8058": "minecraft:fire[age=1,east=false,north=true,south=false,up=false,west=false]", + "8059": "minecraft:fire[age=1,east=false,north=false,south=true,up=true,west=true]", + "8060": "minecraft:fire[age=1,east=false,north=false,south=true,up=true,west=false]", + "8061": "minecraft:fire[age=1,east=false,north=false,south=true,up=false,west=true]", + "8062": "minecraft:fire[age=1,east=false,north=false,south=true,up=false,west=false]", + "8063": "minecraft:fire[age=1,east=false,north=false,south=false,up=true,west=true]", + "8064": "minecraft:fire[age=1,east=false,north=false,south=false,up=true,west=false]", + "8065": "minecraft:fire[age=1,east=false,north=false,south=false,up=false,west=true]", + "8066": "minecraft:fire[age=1,east=false,north=false,south=false,up=false,west=false]", + "8067": "minecraft:fire[age=2,east=true,north=true,south=true,up=true,west=true]", + "8068": "minecraft:fire[age=2,east=true,north=true,south=true,up=true,west=false]", + "8069": "minecraft:fire[age=2,east=true,north=true,south=true,up=false,west=true]", + "8070": "minecraft:fire[age=2,east=true,north=true,south=true,up=false,west=false]", + "8071": "minecraft:fire[age=2,east=true,north=true,south=false,up=true,west=true]", + "8072": "minecraft:fire[age=2,east=true,north=true,south=false,up=true,west=false]", + "8073": "minecraft:fire[age=2,east=true,north=true,south=false,up=false,west=true]", + "8074": "minecraft:fire[age=2,east=true,north=true,south=false,up=false,west=false]", + "8075": "minecraft:fire[age=2,east=true,north=false,south=true,up=true,west=true]", + "8076": "minecraft:fire[age=2,east=true,north=false,south=true,up=true,west=false]", + "8077": "minecraft:fire[age=2,east=true,north=false,south=true,up=false,west=true]", + "8078": "minecraft:fire[age=2,east=true,north=false,south=true,up=false,west=false]", + "8079": "minecraft:fire[age=2,east=true,north=false,south=false,up=true,west=true]", + "8080": "minecraft:fire[age=2,east=true,north=false,south=false,up=true,west=false]", + "8081": "minecraft:fire[age=2,east=true,north=false,south=false,up=false,west=true]", + "8082": "minecraft:fire[age=2,east=true,north=false,south=false,up=false,west=false]", + "8083": "minecraft:fire[age=2,east=false,north=true,south=true,up=true,west=true]", + "8084": "minecraft:fire[age=2,east=false,north=true,south=true,up=true,west=false]", + "8085": "minecraft:fire[age=2,east=false,north=true,south=true,up=false,west=true]", + "8086": "minecraft:fire[age=2,east=false,north=true,south=true,up=false,west=false]", + "8087": "minecraft:fire[age=2,east=false,north=true,south=false,up=true,west=true]", + "8088": "minecraft:fire[age=2,east=false,north=true,south=false,up=true,west=false]", + "8089": "minecraft:fire[age=2,east=false,north=true,south=false,up=false,west=true]", + "8090": "minecraft:fire[age=2,east=false,north=true,south=false,up=false,west=false]", + "8091": "minecraft:fire[age=2,east=false,north=false,south=true,up=true,west=true]", + "8092": "minecraft:fire[age=2,east=false,north=false,south=true,up=true,west=false]", + "8093": "minecraft:fire[age=2,east=false,north=false,south=true,up=false,west=true]", + "8094": "minecraft:fire[age=2,east=false,north=false,south=true,up=false,west=false]", + "8095": "minecraft:fire[age=2,east=false,north=false,south=false,up=true,west=true]", + "8096": "minecraft:fire[age=2,east=false,north=false,south=false,up=true,west=false]", + "8097": "minecraft:fire[age=2,east=false,north=false,south=false,up=false,west=true]", + "8098": "minecraft:fire[age=2,east=false,north=false,south=false,up=false,west=false]", + "8099": "minecraft:fire[age=3,east=true,north=true,south=true,up=true,west=true]", + "8100": "minecraft:fire[age=3,east=true,north=true,south=true,up=true,west=false]", + "8101": "minecraft:fire[age=3,east=true,north=true,south=true,up=false,west=true]", + "8102": "minecraft:fire[age=3,east=true,north=true,south=true,up=false,west=false]", + "8103": "minecraft:fire[age=3,east=true,north=true,south=false,up=true,west=true]", + "8104": "minecraft:fire[age=3,east=true,north=true,south=false,up=true,west=false]", + "8105": "minecraft:fire[age=3,east=true,north=true,south=false,up=false,west=true]", + "8106": "minecraft:fire[age=3,east=true,north=true,south=false,up=false,west=false]", + "8107": "minecraft:fire[age=3,east=true,north=false,south=true,up=true,west=true]", + "8108": "minecraft:fire[age=3,east=true,north=false,south=true,up=true,west=false]", + "8109": "minecraft:fire[age=3,east=true,north=false,south=true,up=false,west=true]", + "8110": "minecraft:fire[age=3,east=true,north=false,south=true,up=false,west=false]", + "8111": "minecraft:fire[age=3,east=true,north=false,south=false,up=true,west=true]", + "8112": "minecraft:fire[age=3,east=true,north=false,south=false,up=true,west=false]", + "8113": "minecraft:fire[age=3,east=true,north=false,south=false,up=false,west=true]", + "8114": "minecraft:fire[age=3,east=true,north=false,south=false,up=false,west=false]", + "8115": "minecraft:fire[age=3,east=false,north=true,south=true,up=true,west=true]", + "8116": "minecraft:fire[age=3,east=false,north=true,south=true,up=true,west=false]", + "8117": "minecraft:fire[age=3,east=false,north=true,south=true,up=false,west=true]", + "8118": "minecraft:fire[age=3,east=false,north=true,south=true,up=false,west=false]", + "8119": "minecraft:fire[age=3,east=false,north=true,south=false,up=true,west=true]", + "8120": "minecraft:fire[age=3,east=false,north=true,south=false,up=true,west=false]", + "8121": "minecraft:fire[age=3,east=false,north=true,south=false,up=false,west=true]", + "8122": "minecraft:fire[age=3,east=false,north=true,south=false,up=false,west=false]", + "8123": "minecraft:fire[age=3,east=false,north=false,south=true,up=true,west=true]", + "8124": "minecraft:fire[age=3,east=false,north=false,south=true,up=true,west=false]", + "8125": "minecraft:fire[age=3,east=false,north=false,south=true,up=false,west=true]", + "8126": "minecraft:fire[age=3,east=false,north=false,south=true,up=false,west=false]", + "8127": "minecraft:fire[age=3,east=false,north=false,south=false,up=true,west=true]", + "8128": "minecraft:fire[age=3,east=false,north=false,south=false,up=true,west=false]", + "8129": "minecraft:fire[age=3,east=false,north=false,south=false,up=false,west=true]", + "8130": "minecraft:fire[age=3,east=false,north=false,south=false,up=false,west=false]", + "8131": "minecraft:fire[age=4,east=true,north=true,south=true,up=true,west=true]", + "8132": "minecraft:fire[age=4,east=true,north=true,south=true,up=true,west=false]", + "8133": "minecraft:fire[age=4,east=true,north=true,south=true,up=false,west=true]", + "8134": "minecraft:fire[age=4,east=true,north=true,south=true,up=false,west=false]", + "8135": "minecraft:fire[age=4,east=true,north=true,south=false,up=true,west=true]", + "8136": "minecraft:fire[age=4,east=true,north=true,south=false,up=true,west=false]", + "8137": "minecraft:fire[age=4,east=true,north=true,south=false,up=false,west=true]", + "8138": "minecraft:fire[age=4,east=true,north=true,south=false,up=false,west=false]", + "8139": "minecraft:fire[age=4,east=true,north=false,south=true,up=true,west=true]", + "8140": "minecraft:fire[age=4,east=true,north=false,south=true,up=true,west=false]", + "8141": "minecraft:fire[age=4,east=true,north=false,south=true,up=false,west=true]", + "8142": "minecraft:fire[age=4,east=true,north=false,south=true,up=false,west=false]", + "8143": "minecraft:fire[age=4,east=true,north=false,south=false,up=true,west=true]", + "8144": "minecraft:fire[age=4,east=true,north=false,south=false,up=true,west=false]", + "8145": "minecraft:fire[age=4,east=true,north=false,south=false,up=false,west=true]", + "8146": "minecraft:fire[age=4,east=true,north=false,south=false,up=false,west=false]", + "8147": "minecraft:fire[age=4,east=false,north=true,south=true,up=true,west=true]", + "8148": "minecraft:fire[age=4,east=false,north=true,south=true,up=true,west=false]", + "8149": "minecraft:fire[age=4,east=false,north=true,south=true,up=false,west=true]", + "8150": "minecraft:fire[age=4,east=false,north=true,south=true,up=false,west=false]", + "8151": "minecraft:fire[age=4,east=false,north=true,south=false,up=true,west=true]", + "8152": "minecraft:fire[age=4,east=false,north=true,south=false,up=true,west=false]", + "8153": "minecraft:fire[age=4,east=false,north=true,south=false,up=false,west=true]", + "8154": "minecraft:fire[age=4,east=false,north=true,south=false,up=false,west=false]", + "8155": "minecraft:fire[age=4,east=false,north=false,south=true,up=true,west=true]", + "8156": "minecraft:fire[age=4,east=false,north=false,south=true,up=true,west=false]", + "8157": "minecraft:fire[age=4,east=false,north=false,south=true,up=false,west=true]", + "8158": "minecraft:fire[age=4,east=false,north=false,south=true,up=false,west=false]", + "8159": "minecraft:fire[age=4,east=false,north=false,south=false,up=true,west=true]", + "8160": "minecraft:fire[age=4,east=false,north=false,south=false,up=true,west=false]", + "8161": "minecraft:fire[age=4,east=false,north=false,south=false,up=false,west=true]", + "8162": "minecraft:fire[age=4,east=false,north=false,south=false,up=false,west=false]", + "8163": "minecraft:fire[age=5,east=true,north=true,south=true,up=true,west=true]", + "8164": "minecraft:fire[age=5,east=true,north=true,south=true,up=true,west=false]", + "8165": "minecraft:fire[age=5,east=true,north=true,south=true,up=false,west=true]", + "8166": "minecraft:fire[age=5,east=true,north=true,south=true,up=false,west=false]", + "8167": "minecraft:fire[age=5,east=true,north=true,south=false,up=true,west=true]", + "8168": "minecraft:fire[age=5,east=true,north=true,south=false,up=true,west=false]", + "8169": "minecraft:fire[age=5,east=true,north=true,south=false,up=false,west=true]", + "8170": "minecraft:fire[age=5,east=true,north=true,south=false,up=false,west=false]", + "8171": "minecraft:fire[age=5,east=true,north=false,south=true,up=true,west=true]", + "8172": "minecraft:fire[age=5,east=true,north=false,south=true,up=true,west=false]", + "8173": "minecraft:fire[age=5,east=true,north=false,south=true,up=false,west=true]", + "8174": "minecraft:fire[age=5,east=true,north=false,south=true,up=false,west=false]", + "8175": "minecraft:fire[age=5,east=true,north=false,south=false,up=true,west=true]", + "8176": "minecraft:fire[age=5,east=true,north=false,south=false,up=true,west=false]", + "8177": "minecraft:fire[age=5,east=true,north=false,south=false,up=false,west=true]", + "8178": "minecraft:fire[age=5,east=true,north=false,south=false,up=false,west=false]", + "8179": "minecraft:fire[age=5,east=false,north=true,south=true,up=true,west=true]", + "8180": "minecraft:fire[age=5,east=false,north=true,south=true,up=true,west=false]", + "8181": "minecraft:fire[age=5,east=false,north=true,south=true,up=false,west=true]", + "8182": "minecraft:fire[age=5,east=false,north=true,south=true,up=false,west=false]", + "8183": "minecraft:fire[age=5,east=false,north=true,south=false,up=true,west=true]", + "8184": "minecraft:fire[age=5,east=false,north=true,south=false,up=true,west=false]", + "8185": "minecraft:fire[age=5,east=false,north=true,south=false,up=false,west=true]", + "8186": "minecraft:fire[age=5,east=false,north=true,south=false,up=false,west=false]", + "8187": "minecraft:fire[age=5,east=false,north=false,south=true,up=true,west=true]", + "8188": "minecraft:fire[age=5,east=false,north=false,south=true,up=true,west=false]", + "8189": "minecraft:fire[age=5,east=false,north=false,south=true,up=false,west=true]", + "8190": "minecraft:fire[age=5,east=false,north=false,south=true,up=false,west=false]", + "8191": "minecraft:fire[age=5,east=false,north=false,south=false,up=true,west=true]", + "8192": "minecraft:fire[age=5,east=false,north=false,south=false,up=true,west=false]", + "8193": "minecraft:fire[age=5,east=false,north=false,south=false,up=false,west=true]", + "8194": "minecraft:fire[age=5,east=false,north=false,south=false,up=false,west=false]", + "8195": "minecraft:fire[age=6,east=true,north=true,south=true,up=true,west=true]", + "8196": "minecraft:fire[age=6,east=true,north=true,south=true,up=true,west=false]", + "8197": "minecraft:fire[age=6,east=true,north=true,south=true,up=false,west=true]", + "8198": "minecraft:fire[age=6,east=true,north=true,south=true,up=false,west=false]", + "8199": "minecraft:fire[age=6,east=true,north=true,south=false,up=true,west=true]", + "8200": "minecraft:fire[age=6,east=true,north=true,south=false,up=true,west=false]", + "8201": "minecraft:fire[age=6,east=true,north=true,south=false,up=false,west=true]", + "8202": "minecraft:fire[age=6,east=true,north=true,south=false,up=false,west=false]", + "8203": "minecraft:fire[age=6,east=true,north=false,south=true,up=true,west=true]", + "8204": "minecraft:fire[age=6,east=true,north=false,south=true,up=true,west=false]", + "8205": "minecraft:fire[age=6,east=true,north=false,south=true,up=false,west=true]", + "8206": "minecraft:fire[age=6,east=true,north=false,south=true,up=false,west=false]", + "8207": "minecraft:fire[age=6,east=true,north=false,south=false,up=true,west=true]", + "8208": "minecraft:fire[age=6,east=true,north=false,south=false,up=true,west=false]", + "8209": "minecraft:fire[age=6,east=true,north=false,south=false,up=false,west=true]", + "8210": "minecraft:fire[age=6,east=true,north=false,south=false,up=false,west=false]", + "8211": "minecraft:fire[age=6,east=false,north=true,south=true,up=true,west=true]", + "8212": "minecraft:fire[age=6,east=false,north=true,south=true,up=true,west=false]", + "8213": "minecraft:fire[age=6,east=false,north=true,south=true,up=false,west=true]", + "8214": "minecraft:fire[age=6,east=false,north=true,south=true,up=false,west=false]", + "8215": "minecraft:fire[age=6,east=false,north=true,south=false,up=true,west=true]", + "8216": "minecraft:fire[age=6,east=false,north=true,south=false,up=true,west=false]", + "8217": "minecraft:fire[age=6,east=false,north=true,south=false,up=false,west=true]", + "8218": "minecraft:fire[age=6,east=false,north=true,south=false,up=false,west=false]", + "8219": "minecraft:fire[age=6,east=false,north=false,south=true,up=true,west=true]", + "8220": "minecraft:fire[age=6,east=false,north=false,south=true,up=true,west=false]", + "8221": "minecraft:fire[age=6,east=false,north=false,south=true,up=false,west=true]", + "8222": "minecraft:fire[age=6,east=false,north=false,south=true,up=false,west=false]", + "8223": "minecraft:fire[age=6,east=false,north=false,south=false,up=true,west=true]", + "8224": "minecraft:fire[age=6,east=false,north=false,south=false,up=true,west=false]", + "8225": "minecraft:fire[age=6,east=false,north=false,south=false,up=false,west=true]", + "8226": "minecraft:fire[age=6,east=false,north=false,south=false,up=false,west=false]", + "8227": "minecraft:fire[age=7,east=true,north=true,south=true,up=true,west=true]", + "8228": "minecraft:fire[age=7,east=true,north=true,south=true,up=true,west=false]", + "8229": "minecraft:fire[age=7,east=true,north=true,south=true,up=false,west=true]", + "8230": "minecraft:fire[age=7,east=true,north=true,south=true,up=false,west=false]", + "8231": "minecraft:fire[age=7,east=true,north=true,south=false,up=true,west=true]", + "8232": "minecraft:fire[age=7,east=true,north=true,south=false,up=true,west=false]", + "8233": "minecraft:fire[age=7,east=true,north=true,south=false,up=false,west=true]", + "8234": "minecraft:fire[age=7,east=true,north=true,south=false,up=false,west=false]", + "8235": "minecraft:fire[age=7,east=true,north=false,south=true,up=true,west=true]", + "8236": "minecraft:fire[age=7,east=true,north=false,south=true,up=true,west=false]", + "8237": "minecraft:fire[age=7,east=true,north=false,south=true,up=false,west=true]", + "8238": "minecraft:fire[age=7,east=true,north=false,south=true,up=false,west=false]", + "8239": "minecraft:fire[age=7,east=true,north=false,south=false,up=true,west=true]", + "8240": "minecraft:fire[age=7,east=true,north=false,south=false,up=true,west=false]", + "8241": "minecraft:fire[age=7,east=true,north=false,south=false,up=false,west=true]", + "8242": "minecraft:fire[age=7,east=true,north=false,south=false,up=false,west=false]", + "8243": "minecraft:fire[age=7,east=false,north=true,south=true,up=true,west=true]", + "8244": "minecraft:fire[age=7,east=false,north=true,south=true,up=true,west=false]", + "8245": "minecraft:fire[age=7,east=false,north=true,south=true,up=false,west=true]", + "8246": "minecraft:fire[age=7,east=false,north=true,south=true,up=false,west=false]", + "8247": "minecraft:fire[age=7,east=false,north=true,south=false,up=true,west=true]", + "8248": "minecraft:fire[age=7,east=false,north=true,south=false,up=true,west=false]", + "8249": "minecraft:fire[age=7,east=false,north=true,south=false,up=false,west=true]", + "8250": "minecraft:fire[age=7,east=false,north=true,south=false,up=false,west=false]", + "8251": "minecraft:fire[age=7,east=false,north=false,south=true,up=true,west=true]", + "8252": "minecraft:fire[age=7,east=false,north=false,south=true,up=true,west=false]", + "8253": "minecraft:fire[age=7,east=false,north=false,south=true,up=false,west=true]", + "8254": "minecraft:fire[age=7,east=false,north=false,south=true,up=false,west=false]", + "8255": "minecraft:fire[age=7,east=false,north=false,south=false,up=true,west=true]", + "8256": "minecraft:fire[age=7,east=false,north=false,south=false,up=true,west=false]", + "8257": "minecraft:fire[age=7,east=false,north=false,south=false,up=false,west=true]", + "8258": "minecraft:fire[age=7,east=false,north=false,south=false,up=false,west=false]", + "8259": "minecraft:fire[age=8,east=true,north=true,south=true,up=true,west=true]", + "8260": "minecraft:fire[age=8,east=true,north=true,south=true,up=true,west=false]", + "8261": "minecraft:fire[age=8,east=true,north=true,south=true,up=false,west=true]", + "8262": "minecraft:fire[age=8,east=true,north=true,south=true,up=false,west=false]", + "8263": "minecraft:fire[age=8,east=true,north=true,south=false,up=true,west=true]", + "8264": "minecraft:fire[age=8,east=true,north=true,south=false,up=true,west=false]", + "8265": "minecraft:fire[age=8,east=true,north=true,south=false,up=false,west=true]", + "8266": "minecraft:fire[age=8,east=true,north=true,south=false,up=false,west=false]", + "8267": "minecraft:fire[age=8,east=true,north=false,south=true,up=true,west=true]", + "8268": "minecraft:fire[age=8,east=true,north=false,south=true,up=true,west=false]", + "8269": "minecraft:fire[age=8,east=true,north=false,south=true,up=false,west=true]", + "8270": "minecraft:fire[age=8,east=true,north=false,south=true,up=false,west=false]", + "8271": "minecraft:fire[age=8,east=true,north=false,south=false,up=true,west=true]", + "8272": "minecraft:fire[age=8,east=true,north=false,south=false,up=true,west=false]", + "8273": "minecraft:fire[age=8,east=true,north=false,south=false,up=false,west=true]", + "8274": "minecraft:fire[age=8,east=true,north=false,south=false,up=false,west=false]", + "8275": "minecraft:fire[age=8,east=false,north=true,south=true,up=true,west=true]", + "8276": "minecraft:fire[age=8,east=false,north=true,south=true,up=true,west=false]", + "8277": "minecraft:fire[age=8,east=false,north=true,south=true,up=false,west=true]", + "8278": "minecraft:fire[age=8,east=false,north=true,south=true,up=false,west=false]", + "8279": "minecraft:fire[age=8,east=false,north=true,south=false,up=true,west=true]", + "8280": "minecraft:fire[age=8,east=false,north=true,south=false,up=true,west=false]", + "8281": "minecraft:fire[age=8,east=false,north=true,south=false,up=false,west=true]", + "8282": "minecraft:fire[age=8,east=false,north=true,south=false,up=false,west=false]", + "8283": "minecraft:fire[age=8,east=false,north=false,south=true,up=true,west=true]", + "8284": "minecraft:fire[age=8,east=false,north=false,south=true,up=true,west=false]", + "8285": "minecraft:fire[age=8,east=false,north=false,south=true,up=false,west=true]", + "8286": "minecraft:fire[age=8,east=false,north=false,south=true,up=false,west=false]", + "8287": "minecraft:fire[age=8,east=false,north=false,south=false,up=true,west=true]", + "8288": "minecraft:fire[age=8,east=false,north=false,south=false,up=true,west=false]", + "8289": "minecraft:fire[age=8,east=false,north=false,south=false,up=false,west=true]", + "8290": "minecraft:fire[age=8,east=false,north=false,south=false,up=false,west=false]", + "8291": "minecraft:fire[age=9,east=true,north=true,south=true,up=true,west=true]", + "8292": "minecraft:fire[age=9,east=true,north=true,south=true,up=true,west=false]", + "8293": "minecraft:fire[age=9,east=true,north=true,south=true,up=false,west=true]", + "8294": "minecraft:fire[age=9,east=true,north=true,south=true,up=false,west=false]", + "8295": "minecraft:fire[age=9,east=true,north=true,south=false,up=true,west=true]", + "8296": "minecraft:fire[age=9,east=true,north=true,south=false,up=true,west=false]", + "8297": "minecraft:fire[age=9,east=true,north=true,south=false,up=false,west=true]", + "8298": "minecraft:fire[age=9,east=true,north=true,south=false,up=false,west=false]", + "8299": "minecraft:fire[age=9,east=true,north=false,south=true,up=true,west=true]", + "8300": "minecraft:fire[age=9,east=true,north=false,south=true,up=true,west=false]", + "8301": "minecraft:fire[age=9,east=true,north=false,south=true,up=false,west=true]", + "8302": "minecraft:fire[age=9,east=true,north=false,south=true,up=false,west=false]", + "8303": "minecraft:fire[age=9,east=true,north=false,south=false,up=true,west=true]", + "8304": "minecraft:fire[age=9,east=true,north=false,south=false,up=true,west=false]", + "8305": "minecraft:fire[age=9,east=true,north=false,south=false,up=false,west=true]", + "8306": "minecraft:fire[age=9,east=true,north=false,south=false,up=false,west=false]", + "8307": "minecraft:fire[age=9,east=false,north=true,south=true,up=true,west=true]", + "8308": "minecraft:fire[age=9,east=false,north=true,south=true,up=true,west=false]", + "8309": "minecraft:fire[age=9,east=false,north=true,south=true,up=false,west=true]", + "8310": "minecraft:fire[age=9,east=false,north=true,south=true,up=false,west=false]", + "8311": "minecraft:fire[age=9,east=false,north=true,south=false,up=true,west=true]", + "8312": "minecraft:fire[age=9,east=false,north=true,south=false,up=true,west=false]", + "8313": "minecraft:fire[age=9,east=false,north=true,south=false,up=false,west=true]", + "8314": "minecraft:fire[age=9,east=false,north=true,south=false,up=false,west=false]", + "8315": "minecraft:fire[age=9,east=false,north=false,south=true,up=true,west=true]", + "8316": "minecraft:fire[age=9,east=false,north=false,south=true,up=true,west=false]", + "8317": "minecraft:fire[age=9,east=false,north=false,south=true,up=false,west=true]", + "8318": "minecraft:fire[age=9,east=false,north=false,south=true,up=false,west=false]", + "8319": "minecraft:fire[age=9,east=false,north=false,south=false,up=true,west=true]", + "8320": "minecraft:fire[age=9,east=false,north=false,south=false,up=true,west=false]", + "8321": "minecraft:fire[age=9,east=false,north=false,south=false,up=false,west=true]", + "8322": "minecraft:fire[age=9,east=false,north=false,south=false,up=false,west=false]", + "8323": "minecraft:fire[age=10,east=true,north=true,south=true,up=true,west=true]", + "8324": "minecraft:fire[age=10,east=true,north=true,south=true,up=true,west=false]", + "8325": "minecraft:fire[age=10,east=true,north=true,south=true,up=false,west=true]", + "8326": "minecraft:fire[age=10,east=true,north=true,south=true,up=false,west=false]", + "8327": "minecraft:fire[age=10,east=true,north=true,south=false,up=true,west=true]", + "8328": "minecraft:fire[age=10,east=true,north=true,south=false,up=true,west=false]", + "8329": "minecraft:fire[age=10,east=true,north=true,south=false,up=false,west=true]", + "8330": "minecraft:fire[age=10,east=true,north=true,south=false,up=false,west=false]", + "8331": "minecraft:fire[age=10,east=true,north=false,south=true,up=true,west=true]", + "8332": "minecraft:fire[age=10,east=true,north=false,south=true,up=true,west=false]", + "8333": "minecraft:fire[age=10,east=true,north=false,south=true,up=false,west=true]", + "8334": "minecraft:fire[age=10,east=true,north=false,south=true,up=false,west=false]", + "8335": "minecraft:fire[age=10,east=true,north=false,south=false,up=true,west=true]", + "8336": "minecraft:fire[age=10,east=true,north=false,south=false,up=true,west=false]", + "8337": "minecraft:fire[age=10,east=true,north=false,south=false,up=false,west=true]", + "8338": "minecraft:fire[age=10,east=true,north=false,south=false,up=false,west=false]", + "8339": "minecraft:fire[age=10,east=false,north=true,south=true,up=true,west=true]", + "8340": "minecraft:fire[age=10,east=false,north=true,south=true,up=true,west=false]", + "8341": "minecraft:fire[age=10,east=false,north=true,south=true,up=false,west=true]", + "8342": "minecraft:fire[age=10,east=false,north=true,south=true,up=false,west=false]", + "8343": "minecraft:fire[age=10,east=false,north=true,south=false,up=true,west=true]", + "8344": "minecraft:fire[age=10,east=false,north=true,south=false,up=true,west=false]", + "8345": "minecraft:fire[age=10,east=false,north=true,south=false,up=false,west=true]", + "8346": "minecraft:fire[age=10,east=false,north=true,south=false,up=false,west=false]", + "8347": "minecraft:fire[age=10,east=false,north=false,south=true,up=true,west=true]", + "8348": "minecraft:fire[age=10,east=false,north=false,south=true,up=true,west=false]", + "8349": "minecraft:fire[age=10,east=false,north=false,south=true,up=false,west=true]", + "8350": "minecraft:fire[age=10,east=false,north=false,south=true,up=false,west=false]", + "8351": "minecraft:fire[age=10,east=false,north=false,south=false,up=true,west=true]", + "8352": "minecraft:fire[age=10,east=false,north=false,south=false,up=true,west=false]", + "8353": "minecraft:fire[age=10,east=false,north=false,south=false,up=false,west=true]", + "8354": "minecraft:fire[age=10,east=false,north=false,south=false,up=false,west=false]", + "8355": "minecraft:fire[age=11,east=true,north=true,south=true,up=true,west=true]", + "8356": "minecraft:fire[age=11,east=true,north=true,south=true,up=true,west=false]", + "8357": "minecraft:fire[age=11,east=true,north=true,south=true,up=false,west=true]", + "8358": "minecraft:fire[age=11,east=true,north=true,south=true,up=false,west=false]", + "8359": "minecraft:fire[age=11,east=true,north=true,south=false,up=true,west=true]", + "8360": "minecraft:fire[age=11,east=true,north=true,south=false,up=true,west=false]", + "8361": "minecraft:fire[age=11,east=true,north=true,south=false,up=false,west=true]", + "8362": "minecraft:fire[age=11,east=true,north=true,south=false,up=false,west=false]", + "8363": "minecraft:fire[age=11,east=true,north=false,south=true,up=true,west=true]", + "8364": "minecraft:fire[age=11,east=true,north=false,south=true,up=true,west=false]", + "8365": "minecraft:fire[age=11,east=true,north=false,south=true,up=false,west=true]", + "8366": "minecraft:fire[age=11,east=true,north=false,south=true,up=false,west=false]", + "8367": "minecraft:fire[age=11,east=true,north=false,south=false,up=true,west=true]", + "8368": "minecraft:fire[age=11,east=true,north=false,south=false,up=true,west=false]", + "8369": "minecraft:fire[age=11,east=true,north=false,south=false,up=false,west=true]", + "8370": "minecraft:fire[age=11,east=true,north=false,south=false,up=false,west=false]", + "8371": "minecraft:fire[age=11,east=false,north=true,south=true,up=true,west=true]", + "8372": "minecraft:fire[age=11,east=false,north=true,south=true,up=true,west=false]", + "8373": "minecraft:fire[age=11,east=false,north=true,south=true,up=false,west=true]", + "8374": "minecraft:fire[age=11,east=false,north=true,south=true,up=false,west=false]", + "8375": "minecraft:fire[age=11,east=false,north=true,south=false,up=true,west=true]", + "8376": "minecraft:fire[age=11,east=false,north=true,south=false,up=true,west=false]", + "8377": "minecraft:fire[age=11,east=false,north=true,south=false,up=false,west=true]", + "8378": "minecraft:fire[age=11,east=false,north=true,south=false,up=false,west=false]", + "8379": "minecraft:fire[age=11,east=false,north=false,south=true,up=true,west=true]", + "8380": "minecraft:fire[age=11,east=false,north=false,south=true,up=true,west=false]", + "8381": "minecraft:fire[age=11,east=false,north=false,south=true,up=false,west=true]", + "8382": "minecraft:fire[age=11,east=false,north=false,south=true,up=false,west=false]", + "8383": "minecraft:fire[age=11,east=false,north=false,south=false,up=true,west=true]", + "8384": "minecraft:fire[age=11,east=false,north=false,south=false,up=true,west=false]", + "8385": "minecraft:fire[age=11,east=false,north=false,south=false,up=false,west=true]", + "8386": "minecraft:fire[age=11,east=false,north=false,south=false,up=false,west=false]", + "8387": "minecraft:fire[age=12,east=true,north=true,south=true,up=true,west=true]", + "8388": "minecraft:fire[age=12,east=true,north=true,south=true,up=true,west=false]", + "8389": "minecraft:fire[age=12,east=true,north=true,south=true,up=false,west=true]", + "8390": "minecraft:fire[age=12,east=true,north=true,south=true,up=false,west=false]", + "8391": "minecraft:fire[age=12,east=true,north=true,south=false,up=true,west=true]", + "8392": "minecraft:fire[age=12,east=true,north=true,south=false,up=true,west=false]", + "8393": "minecraft:fire[age=12,east=true,north=true,south=false,up=false,west=true]", + "8394": "minecraft:fire[age=12,east=true,north=true,south=false,up=false,west=false]", + "8395": "minecraft:fire[age=12,east=true,north=false,south=true,up=true,west=true]", + "8396": "minecraft:fire[age=12,east=true,north=false,south=true,up=true,west=false]", + "8397": "minecraft:fire[age=12,east=true,north=false,south=true,up=false,west=true]", + "8398": "minecraft:fire[age=12,east=true,north=false,south=true,up=false,west=false]", + "8399": "minecraft:fire[age=12,east=true,north=false,south=false,up=true,west=true]", + "8400": "minecraft:fire[age=12,east=true,north=false,south=false,up=true,west=false]", + "8401": "minecraft:fire[age=12,east=true,north=false,south=false,up=false,west=true]", + "8402": "minecraft:fire[age=12,east=true,north=false,south=false,up=false,west=false]", + "8403": "minecraft:fire[age=12,east=false,north=true,south=true,up=true,west=true]", + "8404": "minecraft:fire[age=12,east=false,north=true,south=true,up=true,west=false]", + "8405": "minecraft:fire[age=12,east=false,north=true,south=true,up=false,west=true]", + "8406": "minecraft:fire[age=12,east=false,north=true,south=true,up=false,west=false]", + "8407": "minecraft:fire[age=12,east=false,north=true,south=false,up=true,west=true]", + "8408": "minecraft:fire[age=12,east=false,north=true,south=false,up=true,west=false]", + "8409": "minecraft:fire[age=12,east=false,north=true,south=false,up=false,west=true]", + "8410": "minecraft:fire[age=12,east=false,north=true,south=false,up=false,west=false]", + "8411": "minecraft:fire[age=12,east=false,north=false,south=true,up=true,west=true]", + "8412": "minecraft:fire[age=12,east=false,north=false,south=true,up=true,west=false]", + "8413": "minecraft:fire[age=12,east=false,north=false,south=true,up=false,west=true]", + "8414": "minecraft:fire[age=12,east=false,north=false,south=true,up=false,west=false]", + "8415": "minecraft:fire[age=12,east=false,north=false,south=false,up=true,west=true]", + "8416": "minecraft:fire[age=12,east=false,north=false,south=false,up=true,west=false]", + "8417": "minecraft:fire[age=12,east=false,north=false,south=false,up=false,west=true]", + "8418": "minecraft:fire[age=12,east=false,north=false,south=false,up=false,west=false]", + "8419": "minecraft:fire[age=13,east=true,north=true,south=true,up=true,west=true]", + "8420": "minecraft:fire[age=13,east=true,north=true,south=true,up=true,west=false]", + "8421": "minecraft:fire[age=13,east=true,north=true,south=true,up=false,west=true]", + "8422": "minecraft:fire[age=13,east=true,north=true,south=true,up=false,west=false]", + "8423": "minecraft:fire[age=13,east=true,north=true,south=false,up=true,west=true]", + "8424": "minecraft:fire[age=13,east=true,north=true,south=false,up=true,west=false]", + "8425": "minecraft:fire[age=13,east=true,north=true,south=false,up=false,west=true]", + "8426": "minecraft:fire[age=13,east=true,north=true,south=false,up=false,west=false]", + "8427": "minecraft:fire[age=13,east=true,north=false,south=true,up=true,west=true]", + "8428": "minecraft:fire[age=13,east=true,north=false,south=true,up=true,west=false]", + "8429": "minecraft:fire[age=13,east=true,north=false,south=true,up=false,west=true]", + "8430": "minecraft:fire[age=13,east=true,north=false,south=true,up=false,west=false]", + "8431": "minecraft:fire[age=13,east=true,north=false,south=false,up=true,west=true]", + "8432": "minecraft:fire[age=13,east=true,north=false,south=false,up=true,west=false]", + "8433": "minecraft:fire[age=13,east=true,north=false,south=false,up=false,west=true]", + "8434": "minecraft:fire[age=13,east=true,north=false,south=false,up=false,west=false]", + "8435": "minecraft:fire[age=13,east=false,north=true,south=true,up=true,west=true]", + "8436": "minecraft:fire[age=13,east=false,north=true,south=true,up=true,west=false]", + "8437": "minecraft:fire[age=13,east=false,north=true,south=true,up=false,west=true]", + "8438": "minecraft:fire[age=13,east=false,north=true,south=true,up=false,west=false]", + "8439": "minecraft:fire[age=13,east=false,north=true,south=false,up=true,west=true]", + "8440": "minecraft:fire[age=13,east=false,north=true,south=false,up=true,west=false]", + "8441": "minecraft:fire[age=13,east=false,north=true,south=false,up=false,west=true]", + "8442": "minecraft:fire[age=13,east=false,north=true,south=false,up=false,west=false]", + "8443": "minecraft:fire[age=13,east=false,north=false,south=true,up=true,west=true]", + "8444": "minecraft:fire[age=13,east=false,north=false,south=true,up=true,west=false]", + "8445": "minecraft:fire[age=13,east=false,north=false,south=true,up=false,west=true]", + "8446": "minecraft:fire[age=13,east=false,north=false,south=true,up=false,west=false]", + "8447": "minecraft:fire[age=13,east=false,north=false,south=false,up=true,west=true]", + "8448": "minecraft:fire[age=13,east=false,north=false,south=false,up=true,west=false]", + "8449": "minecraft:fire[age=13,east=false,north=false,south=false,up=false,west=true]", + "8450": "minecraft:fire[age=13,east=false,north=false,south=false,up=false,west=false]", + "8451": "minecraft:fire[age=14,east=true,north=true,south=true,up=true,west=true]", + "8452": "minecraft:fire[age=14,east=true,north=true,south=true,up=true,west=false]", + "8453": "minecraft:fire[age=14,east=true,north=true,south=true,up=false,west=true]", + "8454": "minecraft:fire[age=14,east=true,north=true,south=true,up=false,west=false]", + "8455": "minecraft:fire[age=14,east=true,north=true,south=false,up=true,west=true]", + "8456": "minecraft:fire[age=14,east=true,north=true,south=false,up=true,west=false]", + "8457": "minecraft:fire[age=14,east=true,north=true,south=false,up=false,west=true]", + "8458": "minecraft:fire[age=14,east=true,north=true,south=false,up=false,west=false]", + "8459": "minecraft:fire[age=14,east=true,north=false,south=true,up=true,west=true]", + "8460": "minecraft:fire[age=14,east=true,north=false,south=true,up=true,west=false]", + "8461": "minecraft:fire[age=14,east=true,north=false,south=true,up=false,west=true]", + "8462": "minecraft:fire[age=14,east=true,north=false,south=true,up=false,west=false]", + "8463": "minecraft:fire[age=14,east=true,north=false,south=false,up=true,west=true]", + "8464": "minecraft:fire[age=14,east=true,north=false,south=false,up=true,west=false]", + "8465": "minecraft:fire[age=14,east=true,north=false,south=false,up=false,west=true]", + "8466": "minecraft:fire[age=14,east=true,north=false,south=false,up=false,west=false]", + "8467": "minecraft:fire[age=14,east=false,north=true,south=true,up=true,west=true]", + "8468": "minecraft:fire[age=14,east=false,north=true,south=true,up=true,west=false]", + "8469": "minecraft:fire[age=14,east=false,north=true,south=true,up=false,west=true]", + "8470": "minecraft:fire[age=14,east=false,north=true,south=true,up=false,west=false]", + "8471": "minecraft:fire[age=14,east=false,north=true,south=false,up=true,west=true]", + "8472": "minecraft:fire[age=14,east=false,north=true,south=false,up=true,west=false]", + "8473": "minecraft:fire[age=14,east=false,north=true,south=false,up=false,west=true]", + "8474": "minecraft:fire[age=14,east=false,north=true,south=false,up=false,west=false]", + "8475": "minecraft:fire[age=14,east=false,north=false,south=true,up=true,west=true]", + "8476": "minecraft:fire[age=14,east=false,north=false,south=true,up=true,west=false]", + "8477": "minecraft:fire[age=14,east=false,north=false,south=true,up=false,west=true]", + "8478": "minecraft:fire[age=14,east=false,north=false,south=true,up=false,west=false]", + "8479": "minecraft:fire[age=14,east=false,north=false,south=false,up=true,west=true]", + "8480": "minecraft:fire[age=14,east=false,north=false,south=false,up=true,west=false]", + "8481": "minecraft:fire[age=14,east=false,north=false,south=false,up=false,west=true]", + "8482": "minecraft:fire[age=14,east=false,north=false,south=false,up=false,west=false]", + "8483": "minecraft:fire[age=15,east=true,north=true,south=true,up=true,west=true]", + "8484": "minecraft:fire[age=15,east=true,north=true,south=true,up=true,west=false]", + "8485": "minecraft:fire[age=15,east=true,north=true,south=true,up=false,west=true]", + "8486": "minecraft:fire[age=15,east=true,north=true,south=true,up=false,west=false]", + "8487": "minecraft:fire[age=15,east=true,north=true,south=false,up=true,west=true]", + "8488": "minecraft:fire[age=15,east=true,north=true,south=false,up=true,west=false]", + "8489": "minecraft:fire[age=15,east=true,north=true,south=false,up=false,west=true]", + "8490": "minecraft:fire[age=15,east=true,north=true,south=false,up=false,west=false]", + "8491": "minecraft:fire[age=15,east=true,north=false,south=true,up=true,west=true]", + "8492": "minecraft:fire[age=15,east=true,north=false,south=true,up=true,west=false]", + "8493": "minecraft:fire[age=15,east=true,north=false,south=true,up=false,west=true]", + "8494": "minecraft:fire[age=15,east=true,north=false,south=true,up=false,west=false]", + "8495": "minecraft:fire[age=15,east=true,north=false,south=false,up=true,west=true]", + "8496": "minecraft:fire[age=15,east=true,north=false,south=false,up=true,west=false]", + "8497": "minecraft:fire[age=15,east=true,north=false,south=false,up=false,west=true]", + "8498": "minecraft:fire[age=15,east=true,north=false,south=false,up=false,west=false]", + "8499": "minecraft:fire[age=15,east=false,north=true,south=true,up=true,west=true]", + "8500": "minecraft:fire[age=15,east=false,north=true,south=true,up=true,west=false]", + "8501": "minecraft:fire[age=15,east=false,north=true,south=true,up=false,west=true]", + "8502": "minecraft:fire[age=15,east=false,north=true,south=true,up=false,west=false]", + "8503": "minecraft:fire[age=15,east=false,north=true,south=false,up=true,west=true]", + "8504": "minecraft:fire[age=15,east=false,north=true,south=false,up=true,west=false]", + "8505": "minecraft:fire[age=15,east=false,north=true,south=false,up=false,west=true]", + "8506": "minecraft:fire[age=15,east=false,north=true,south=false,up=false,west=false]", + "8507": "minecraft:fire[age=15,east=false,north=false,south=true,up=true,west=true]", + "8508": "minecraft:fire[age=15,east=false,north=false,south=true,up=true,west=false]", + "8509": "minecraft:fire[age=15,east=false,north=false,south=true,up=false,west=true]", + "8510": "minecraft:fire[age=15,east=false,north=false,south=true,up=false,west=false]", + "8511": "minecraft:fire[age=15,east=false,north=false,south=false,up=true,west=true]", + "8512": "minecraft:fire[age=15,east=false,north=false,south=false,up=true,west=false]", + "8513": "minecraft:fire[age=15,east=false,north=false,south=false,up=false,west=true]", + "8514": "minecraft:fire[age=15,east=false,north=false,south=false,up=false,west=false]", + "8515": "minecraft:crafting_table", + "8516": "minecraft:light_gray_wool", + "8517": "minecraft:light_gray_terracotta", + "8518": "minecraft:zombie_wall_head[facing=north]", + "8519": "minecraft:zombie_wall_head[facing=south]", + "8520": "minecraft:zombie_wall_head[facing=west]", + "8521": "minecraft:zombie_wall_head[facing=east]", + "8522": "minecraft:jungle_fence[east=true,north=true,south=true,waterlogged=true,west=true]", + "8523": "minecraft:jungle_fence[east=true,north=true,south=true,waterlogged=true,west=false]", + "8524": "minecraft:jungle_fence[east=true,north=true,south=true,waterlogged=false,west=true]", + "8525": "minecraft:jungle_fence[east=true,north=true,south=true,waterlogged=false,west=false]", + "8526": "minecraft:jungle_fence[east=true,north=true,south=false,waterlogged=true,west=true]", + "8527": "minecraft:jungle_fence[east=true,north=true,south=false,waterlogged=true,west=false]", + "8528": "minecraft:jungle_fence[east=true,north=true,south=false,waterlogged=false,west=true]", + "8529": "minecraft:jungle_fence[east=true,north=true,south=false,waterlogged=false,west=false]", + "8530": "minecraft:jungle_fence[east=true,north=false,south=true,waterlogged=true,west=true]", + "8531": "minecraft:jungle_fence[east=true,north=false,south=true,waterlogged=true,west=false]", + "8532": "minecraft:jungle_fence[east=true,north=false,south=true,waterlogged=false,west=true]", + "8533": "minecraft:jungle_fence[east=true,north=false,south=true,waterlogged=false,west=false]", + "8534": "minecraft:jungle_fence[east=true,north=false,south=false,waterlogged=true,west=true]", + "8535": "minecraft:jungle_fence[east=true,north=false,south=false,waterlogged=true,west=false]", + "8536": "minecraft:jungle_fence[east=true,north=false,south=false,waterlogged=false,west=true]", + "8537": "minecraft:jungle_fence[east=true,north=false,south=false,waterlogged=false,west=false]", + "8538": "minecraft:jungle_fence[east=false,north=true,south=true,waterlogged=true,west=true]", + "8539": "minecraft:jungle_fence[east=false,north=true,south=true,waterlogged=true,west=false]", + "8540": "minecraft:jungle_fence[east=false,north=true,south=true,waterlogged=false,west=true]", + "8541": "minecraft:jungle_fence[east=false,north=true,south=true,waterlogged=false,west=false]", + "8542": "minecraft:jungle_fence[east=false,north=true,south=false,waterlogged=true,west=true]", + "8543": "minecraft:jungle_fence[east=false,north=true,south=false,waterlogged=true,west=false]", + "8544": "minecraft:jungle_fence[east=false,north=true,south=false,waterlogged=false,west=true]", + "8545": "minecraft:jungle_fence[east=false,north=true,south=false,waterlogged=false,west=false]", + "8546": "minecraft:jungle_fence[east=false,north=false,south=true,waterlogged=true,west=true]", + "8547": "minecraft:jungle_fence[east=false,north=false,south=true,waterlogged=true,west=false]", + "8548": "minecraft:jungle_fence[east=false,north=false,south=true,waterlogged=false,west=true]", + "8549": "minecraft:jungle_fence[east=false,north=false,south=true,waterlogged=false,west=false]", + "8550": "minecraft:jungle_fence[east=false,north=false,south=false,waterlogged=true,west=true]", + "8551": "minecraft:jungle_fence[east=false,north=false,south=false,waterlogged=true,west=false]", + "8552": "minecraft:jungle_fence[east=false,north=false,south=false,waterlogged=false,west=true]", + "8553": "minecraft:jungle_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "8554": "minecraft:oak_sapling[stage=0]", + "8555": "minecraft:oak_sapling[stage=1]", + "8556": "minecraft:spruce_fence[east=true,north=true,south=true,waterlogged=true,west=true]", + "8557": "minecraft:spruce_fence[east=true,north=true,south=true,waterlogged=true,west=false]", + "8558": "minecraft:spruce_fence[east=true,north=true,south=true,waterlogged=false,west=true]", + "8559": "minecraft:spruce_fence[east=true,north=true,south=true,waterlogged=false,west=false]", + "8560": "minecraft:spruce_fence[east=true,north=true,south=false,waterlogged=true,west=true]", + "8561": "minecraft:spruce_fence[east=true,north=true,south=false,waterlogged=true,west=false]", + "8562": "minecraft:spruce_fence[east=true,north=true,south=false,waterlogged=false,west=true]", + "8563": "minecraft:spruce_fence[east=true,north=true,south=false,waterlogged=false,west=false]", + "8564": "minecraft:spruce_fence[east=true,north=false,south=true,waterlogged=true,west=true]", + "8565": "minecraft:spruce_fence[east=true,north=false,south=true,waterlogged=true,west=false]", + "8566": "minecraft:spruce_fence[east=true,north=false,south=true,waterlogged=false,west=true]", + "8567": "minecraft:spruce_fence[east=true,north=false,south=true,waterlogged=false,west=false]", + "8568": "minecraft:spruce_fence[east=true,north=false,south=false,waterlogged=true,west=true]", + "8569": "minecraft:spruce_fence[east=true,north=false,south=false,waterlogged=true,west=false]", + "8570": "minecraft:spruce_fence[east=true,north=false,south=false,waterlogged=false,west=true]", + "8571": "minecraft:spruce_fence[east=true,north=false,south=false,waterlogged=false,west=false]", + "8572": "minecraft:spruce_fence[east=false,north=true,south=true,waterlogged=true,west=true]", + "8573": "minecraft:spruce_fence[east=false,north=true,south=true,waterlogged=true,west=false]", + "8574": "minecraft:spruce_fence[east=false,north=true,south=true,waterlogged=false,west=true]", + "8575": "minecraft:spruce_fence[east=false,north=true,south=true,waterlogged=false,west=false]", + "8576": "minecraft:spruce_fence[east=false,north=true,south=false,waterlogged=true,west=true]", + "8577": "minecraft:spruce_fence[east=false,north=true,south=false,waterlogged=true,west=false]", + "8578": "minecraft:spruce_fence[east=false,north=true,south=false,waterlogged=false,west=true]", + "8579": "minecraft:spruce_fence[east=false,north=true,south=false,waterlogged=false,west=false]", + "8580": "minecraft:spruce_fence[east=false,north=false,south=true,waterlogged=true,west=true]", + "8581": "minecraft:spruce_fence[east=false,north=false,south=true,waterlogged=true,west=false]", + "8582": "minecraft:spruce_fence[east=false,north=false,south=true,waterlogged=false,west=true]", + "8583": "minecraft:spruce_fence[east=false,north=false,south=true,waterlogged=false,west=false]", + "8584": "minecraft:spruce_fence[east=false,north=false,south=false,waterlogged=true,west=true]", + "8585": "minecraft:spruce_fence[east=false,north=false,south=false,waterlogged=true,west=false]", + "8586": "minecraft:spruce_fence[east=false,north=false,south=false,waterlogged=false,west=true]", + "8587": "minecraft:spruce_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "8588": "minecraft:cyan_wall_banner[facing=north]", + "8589": "minecraft:cyan_wall_banner[facing=south]", + "8590": "minecraft:cyan_wall_banner[facing=west]", + "8591": "minecraft:cyan_wall_banner[facing=east]", + "8592": "minecraft:gray_wall_banner[facing=north]", + "8593": "minecraft:gray_wall_banner[facing=south]", + "8594": "minecraft:gray_wall_banner[facing=west]", + "8595": "minecraft:gray_wall_banner[facing=east]", + "8596": "minecraft:birch_sapling[stage=0]", + "8597": "minecraft:birch_sapling[stage=1]", + "8598": "minecraft:potted_warped_fungus", + "8599": "minecraft:tube_coral_fan[waterlogged=true]", + "8600": "minecraft:tube_coral_fan[waterlogged=false]", + "8601": "minecraft:nether_wart_block", + "8602": "minecraft:spruce_pressure_plate[powered=true]", + "8603": "minecraft:spruce_pressure_plate[powered=false]", + "8604": "minecraft:stone_button[face=floor,facing=north,powered=true]", + "8605": "minecraft:stone_button[face=floor,facing=north,powered=false]", + "8606": "minecraft:stone_button[face=floor,facing=south,powered=true]", + "8607": "minecraft:stone_button[face=floor,facing=south,powered=false]", + "8608": "minecraft:stone_button[face=floor,facing=west,powered=true]", + "8609": "minecraft:stone_button[face=floor,facing=west,powered=false]", + "8610": "minecraft:stone_button[face=floor,facing=east,powered=true]", + "8611": "minecraft:stone_button[face=floor,facing=east,powered=false]", + "8612": "minecraft:stone_button[face=wall,facing=north,powered=true]", + "8613": "minecraft:stone_button[face=wall,facing=north,powered=false]", + "8614": "minecraft:stone_button[face=wall,facing=south,powered=true]", + "8615": "minecraft:stone_button[face=wall,facing=south,powered=false]", + "8616": "minecraft:stone_button[face=wall,facing=west,powered=true]", + "8617": "minecraft:stone_button[face=wall,facing=west,powered=false]", + "8618": "minecraft:stone_button[face=wall,facing=east,powered=true]", + "8619": "minecraft:stone_button[face=wall,facing=east,powered=false]", + "8620": "minecraft:stone_button[face=ceiling,facing=north,powered=true]", + "8621": "minecraft:stone_button[face=ceiling,facing=north,powered=false]", + "8622": "minecraft:stone_button[face=ceiling,facing=south,powered=true]", + "8623": "minecraft:stone_button[face=ceiling,facing=south,powered=false]", + "8624": "minecraft:stone_button[face=ceiling,facing=west,powered=true]", + "8625": "minecraft:stone_button[face=ceiling,facing=west,powered=false]", + "8626": "minecraft:stone_button[face=ceiling,facing=east,powered=true]", + "8627": "minecraft:stone_button[face=ceiling,facing=east,powered=false]", + "8628": "minecraft:warped_stem[axis=x]", + "8629": "minecraft:warped_stem[axis=y]", + "8630": "minecraft:warped_stem[axis=z]", + "8631": "minecraft:magenta_shulker_box[facing=north]", + "8632": "minecraft:magenta_shulker_box[facing=east]", + "8633": "minecraft:magenta_shulker_box[facing=south]", + "8634": "minecraft:magenta_shulker_box[facing=west]", + "8635": "minecraft:magenta_shulker_box[facing=up]", + "8636": "minecraft:magenta_shulker_box[facing=down]", + "8637": "minecraft:orange_bed[facing=north,occupied=true,part=head]", + "8638": "minecraft:orange_bed[facing=north,occupied=true,part=foot]", + "8639": "minecraft:orange_bed[facing=north,occupied=false,part=head]", + "8640": "minecraft:orange_bed[facing=north,occupied=false,part=foot]", + "8641": "minecraft:orange_bed[facing=south,occupied=true,part=head]", + "8642": "minecraft:orange_bed[facing=south,occupied=true,part=foot]", + "8643": "minecraft:orange_bed[facing=south,occupied=false,part=head]", + "8644": "minecraft:orange_bed[facing=south,occupied=false,part=foot]", + "8645": "minecraft:orange_bed[facing=west,occupied=true,part=head]", + "8646": "minecraft:orange_bed[facing=west,occupied=true,part=foot]", + "8647": "minecraft:orange_bed[facing=west,occupied=false,part=head]", + "8648": "minecraft:orange_bed[facing=west,occupied=false,part=foot]", + "8649": "minecraft:orange_bed[facing=east,occupied=true,part=head]", + "8650": "minecraft:orange_bed[facing=east,occupied=true,part=foot]", + "8651": "minecraft:orange_bed[facing=east,occupied=false,part=head]", + "8652": "minecraft:orange_bed[facing=east,occupied=false,part=foot]", + "8653": "minecraft:packed_ice", + "8654": "minecraft:magenta_terracotta", + "8655": "minecraft:podzol[snowy=true]", + "8656": "minecraft:podzol[snowy=false]", + "8657": "minecraft:stonecutter[facing=north]", + "8658": "minecraft:stonecutter[facing=south]", + "8659": "minecraft:stonecutter[facing=west]", + "8660": "minecraft:stonecutter[facing=east]", + "8661": "minecraft:lectern[facing=north,has_book=true,powered=true]", + "8662": "minecraft:lectern[facing=north,has_book=true,powered=false]", + "8663": "minecraft:lectern[facing=north,has_book=false,powered=true]", + "8664": "minecraft:lectern[facing=north,has_book=false,powered=false]", + "8665": "minecraft:lectern[facing=south,has_book=true,powered=true]", + "8666": "minecraft:lectern[facing=south,has_book=true,powered=false]", + "8667": "minecraft:lectern[facing=south,has_book=false,powered=true]", + "8668": "minecraft:lectern[facing=south,has_book=false,powered=false]", + "8669": "minecraft:lectern[facing=west,has_book=true,powered=true]", + "8670": "minecraft:lectern[facing=west,has_book=true,powered=false]", + "8671": "minecraft:lectern[facing=west,has_book=false,powered=true]", + "8672": "minecraft:lectern[facing=west,has_book=false,powered=false]", + "8673": "minecraft:lectern[facing=east,has_book=true,powered=true]", + "8674": "minecraft:lectern[facing=east,has_book=true,powered=false]", + "8675": "minecraft:lectern[facing=east,has_book=false,powered=true]", + "8676": "minecraft:lectern[facing=east,has_book=false,powered=false]", + "8677": "minecraft:barrel[facing=north,open=true]", + "8678": "minecraft:barrel[facing=north,open=false]", + "8679": "minecraft:barrel[facing=east,open=true]", + "8680": "minecraft:barrel[facing=east,open=false]", + "8681": "minecraft:barrel[facing=south,open=true]", + "8682": "minecraft:barrel[facing=south,open=false]", + "8683": "minecraft:barrel[facing=west,open=true]", + "8684": "minecraft:barrel[facing=west,open=false]", + "8685": "minecraft:barrel[facing=up,open=true]", + "8686": "minecraft:barrel[facing=up,open=false]", + "8687": "minecraft:barrel[facing=down,open=true]", + "8688": "minecraft:barrel[facing=down,open=false]", + "8689": "minecraft:dead_brain_coral_block", + "8690": "minecraft:white_terracotta", + "8691": "minecraft:orange_banner[rotation=0]", + "8692": "minecraft:orange_banner[rotation=1]", + "8693": "minecraft:orange_banner[rotation=2]", + "8694": "minecraft:orange_banner[rotation=3]", + "8695": "minecraft:orange_banner[rotation=4]", + "8696": "minecraft:orange_banner[rotation=5]", + "8697": "minecraft:orange_banner[rotation=6]", + "8698": "minecraft:orange_banner[rotation=7]", + "8699": "minecraft:orange_banner[rotation=8]", + "8700": "minecraft:orange_banner[rotation=9]", + "8701": "minecraft:orange_banner[rotation=10]", + "8702": "minecraft:orange_banner[rotation=11]", + "8703": "minecraft:orange_banner[rotation=12]", + "8704": "minecraft:orange_banner[rotation=13]", + "8705": "minecraft:orange_banner[rotation=14]", + "8706": "minecraft:orange_banner[rotation=15]", + "8707": "minecraft:large_fern[half=upper]", + "8708": "minecraft:large_fern[half=lower]", + "8709": "minecraft:attached_melon_stem[facing=north]", + "8710": "minecraft:attached_melon_stem[facing=south]", + "8711": "minecraft:attached_melon_stem[facing=west]", + "8712": "minecraft:attached_melon_stem[facing=east]", + "8713": "minecraft:cyan_bed[facing=north,occupied=true,part=head]", + "8714": "minecraft:cyan_bed[facing=north,occupied=true,part=foot]", + "8715": "minecraft:cyan_bed[facing=north,occupied=false,part=head]", + "8716": "minecraft:cyan_bed[facing=north,occupied=false,part=foot]", + "8717": "minecraft:cyan_bed[facing=south,occupied=true,part=head]", + "8718": "minecraft:cyan_bed[facing=south,occupied=true,part=foot]", + "8719": "minecraft:cyan_bed[facing=south,occupied=false,part=head]", + "8720": "minecraft:cyan_bed[facing=south,occupied=false,part=foot]", + "8721": "minecraft:cyan_bed[facing=west,occupied=true,part=head]", + "8722": "minecraft:cyan_bed[facing=west,occupied=true,part=foot]", + "8723": "minecraft:cyan_bed[facing=west,occupied=false,part=head]", + "8724": "minecraft:cyan_bed[facing=west,occupied=false,part=foot]", + "8725": "minecraft:cyan_bed[facing=east,occupied=true,part=head]", + "8726": "minecraft:cyan_bed[facing=east,occupied=true,part=foot]", + "8727": "minecraft:cyan_bed[facing=east,occupied=false,part=head]", + "8728": "minecraft:cyan_bed[facing=east,occupied=false,part=foot]", + "8729": "minecraft:blue_bed[facing=north,occupied=true,part=head]", + "8730": "minecraft:blue_bed[facing=north,occupied=true,part=foot]", + "8731": "minecraft:blue_bed[facing=north,occupied=false,part=head]", + "8732": "minecraft:blue_bed[facing=north,occupied=false,part=foot]", + "8733": "minecraft:blue_bed[facing=south,occupied=true,part=head]", + "8734": "minecraft:blue_bed[facing=south,occupied=true,part=foot]", + "8735": "minecraft:blue_bed[facing=south,occupied=false,part=head]", + "8736": "minecraft:blue_bed[facing=south,occupied=false,part=foot]", + "8737": "minecraft:blue_bed[facing=west,occupied=true,part=head]", + "8738": "minecraft:blue_bed[facing=west,occupied=true,part=foot]", + "8739": "minecraft:blue_bed[facing=west,occupied=false,part=head]", + "8740": "minecraft:blue_bed[facing=west,occupied=false,part=foot]", + "8741": "minecraft:blue_bed[facing=east,occupied=true,part=head]", + "8742": "minecraft:blue_bed[facing=east,occupied=true,part=foot]", + "8743": "minecraft:blue_bed[facing=east,occupied=false,part=head]", + "8744": "minecraft:blue_bed[facing=east,occupied=false,part=foot]", + "8745": "minecraft:melon_stem[age=0]", + "8746": "minecraft:melon_stem[age=1]", + "8747": "minecraft:melon_stem[age=2]", + "8748": "minecraft:melon_stem[age=3]", + "8749": "minecraft:melon_stem[age=4]", + "8750": "minecraft:melon_stem[age=5]", + "8751": "minecraft:melon_stem[age=6]", + "8752": "minecraft:melon_stem[age=7]", + "8753": "minecraft:lily_pad", + "8754": "minecraft:twisting_vines[age=0]", + "8755": "minecraft:twisting_vines[age=1]", + "8756": "minecraft:twisting_vines[age=2]", + "8757": "minecraft:twisting_vines[age=3]", + "8758": "minecraft:twisting_vines[age=4]", + "8759": "minecraft:twisting_vines[age=5]", + "8760": "minecraft:twisting_vines[age=6]", + "8761": "minecraft:twisting_vines[age=7]", + "8762": "minecraft:twisting_vines[age=8]", + "8763": "minecraft:twisting_vines[age=9]", + "8764": "minecraft:twisting_vines[age=10]", + "8765": "minecraft:twisting_vines[age=11]", + "8766": "minecraft:twisting_vines[age=12]", + "8767": "minecraft:twisting_vines[age=13]", + "8768": "minecraft:twisting_vines[age=14]", + "8769": "minecraft:twisting_vines[age=15]", + "8770": "minecraft:twisting_vines[age=16]", + "8771": "minecraft:twisting_vines[age=17]", + "8772": "minecraft:twisting_vines[age=18]", + "8773": "minecraft:twisting_vines[age=19]", + "8774": "minecraft:twisting_vines[age=20]", + "8775": "minecraft:twisting_vines[age=21]", + "8776": "minecraft:twisting_vines[age=22]", + "8777": "minecraft:twisting_vines[age=23]", + "8778": "minecraft:twisting_vines[age=24]", + "8779": "minecraft:twisting_vines[age=25]", + "8780": "minecraft:loom[facing=north]", + "8781": "minecraft:loom[facing=south]", + "8782": "minecraft:loom[facing=west]", + "8783": "minecraft:loom[facing=east]", + "8784": "minecraft:repeater[delay=1,facing=north,locked=true,powered=true]", + "8785": "minecraft:repeater[delay=1,facing=north,locked=true,powered=false]", + "8786": "minecraft:repeater[delay=1,facing=north,locked=false,powered=true]", + "8787": "minecraft:repeater[delay=1,facing=north,locked=false,powered=false]", + "8788": "minecraft:repeater[delay=1,facing=south,locked=true,powered=true]", + "8789": "minecraft:repeater[delay=1,facing=south,locked=true,powered=false]", + "8790": "minecraft:repeater[delay=1,facing=south,locked=false,powered=true]", + "8791": "minecraft:repeater[delay=1,facing=south,locked=false,powered=false]", + "8792": "minecraft:repeater[delay=1,facing=west,locked=true,powered=true]", + "8793": "minecraft:repeater[delay=1,facing=west,locked=true,powered=false]", + "8794": "minecraft:repeater[delay=1,facing=west,locked=false,powered=true]", + "8795": "minecraft:repeater[delay=1,facing=west,locked=false,powered=false]", + "8796": "minecraft:repeater[delay=1,facing=east,locked=true,powered=true]", + "8797": "minecraft:repeater[delay=1,facing=east,locked=true,powered=false]", + "8798": "minecraft:repeater[delay=1,facing=east,locked=false,powered=true]", + "8799": "minecraft:repeater[delay=1,facing=east,locked=false,powered=false]", + "8800": "minecraft:repeater[delay=2,facing=north,locked=true,powered=true]", + "8801": "minecraft:repeater[delay=2,facing=north,locked=true,powered=false]", + "8802": "minecraft:repeater[delay=2,facing=north,locked=false,powered=true]", + "8803": "minecraft:repeater[delay=2,facing=north,locked=false,powered=false]", + "8804": "minecraft:repeater[delay=2,facing=south,locked=true,powered=true]", + "8805": "minecraft:repeater[delay=2,facing=south,locked=true,powered=false]", + "8806": "minecraft:repeater[delay=2,facing=south,locked=false,powered=true]", + "8807": "minecraft:repeater[delay=2,facing=south,locked=false,powered=false]", + "8808": "minecraft:repeater[delay=2,facing=west,locked=true,powered=true]", + "8809": "minecraft:repeater[delay=2,facing=west,locked=true,powered=false]", + "8810": "minecraft:repeater[delay=2,facing=west,locked=false,powered=true]", + "8811": "minecraft:repeater[delay=2,facing=west,locked=false,powered=false]", + "8812": "minecraft:repeater[delay=2,facing=east,locked=true,powered=true]", + "8813": "minecraft:repeater[delay=2,facing=east,locked=true,powered=false]", + "8814": "minecraft:repeater[delay=2,facing=east,locked=false,powered=true]", + "8815": "minecraft:repeater[delay=2,facing=east,locked=false,powered=false]", + "8816": "minecraft:repeater[delay=3,facing=north,locked=true,powered=true]", + "8817": "minecraft:repeater[delay=3,facing=north,locked=true,powered=false]", + "8818": "minecraft:repeater[delay=3,facing=north,locked=false,powered=true]", + "8819": "minecraft:repeater[delay=3,facing=north,locked=false,powered=false]", + "8820": "minecraft:repeater[delay=3,facing=south,locked=true,powered=true]", + "8821": "minecraft:repeater[delay=3,facing=south,locked=true,powered=false]", + "8822": "minecraft:repeater[delay=3,facing=south,locked=false,powered=true]", + "8823": "minecraft:repeater[delay=3,facing=south,locked=false,powered=false]", + "8824": "minecraft:repeater[delay=3,facing=west,locked=true,powered=true]", + "8825": "minecraft:repeater[delay=3,facing=west,locked=true,powered=false]", + "8826": "minecraft:repeater[delay=3,facing=west,locked=false,powered=true]", + "8827": "minecraft:repeater[delay=3,facing=west,locked=false,powered=false]", + "8828": "minecraft:repeater[delay=3,facing=east,locked=true,powered=true]", + "8829": "minecraft:repeater[delay=3,facing=east,locked=true,powered=false]", + "8830": "minecraft:repeater[delay=3,facing=east,locked=false,powered=true]", + "8831": "minecraft:repeater[delay=3,facing=east,locked=false,powered=false]", + "8832": "minecraft:repeater[delay=4,facing=north,locked=true,powered=true]", + "8833": "minecraft:repeater[delay=4,facing=north,locked=true,powered=false]", + "8834": "minecraft:repeater[delay=4,facing=north,locked=false,powered=true]", + "8835": "minecraft:repeater[delay=4,facing=north,locked=false,powered=false]", + "8836": "minecraft:repeater[delay=4,facing=south,locked=true,powered=true]", + "8837": "minecraft:repeater[delay=4,facing=south,locked=true,powered=false]", + "8838": "minecraft:repeater[delay=4,facing=south,locked=false,powered=true]", + "8839": "minecraft:repeater[delay=4,facing=south,locked=false,powered=false]", + "8840": "minecraft:repeater[delay=4,facing=west,locked=true,powered=true]", + "8841": "minecraft:repeater[delay=4,facing=west,locked=true,powered=false]", + "8842": "minecraft:repeater[delay=4,facing=west,locked=false,powered=true]", + "8843": "minecraft:repeater[delay=4,facing=west,locked=false,powered=false]", + "8844": "minecraft:repeater[delay=4,facing=east,locked=true,powered=true]", + "8845": "minecraft:repeater[delay=4,facing=east,locked=true,powered=false]", + "8846": "minecraft:repeater[delay=4,facing=east,locked=false,powered=true]", + "8847": "minecraft:repeater[delay=4,facing=east,locked=false,powered=false]", + "8848": "minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]", + "8849": "minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=false]", + "8850": "minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=false,west=true]", + "8851": "minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=false,west=false]", + "8852": "minecraft:brown_mushroom_block[down=true,east=true,north=true,south=false,up=true,west=true]", + "8853": "minecraft:brown_mushroom_block[down=true,east=true,north=true,south=false,up=true,west=false]", + "8854": "minecraft:brown_mushroom_block[down=true,east=true,north=true,south=false,up=false,west=true]", + "8855": "minecraft:brown_mushroom_block[down=true,east=true,north=true,south=false,up=false,west=false]", + "8856": "minecraft:brown_mushroom_block[down=true,east=true,north=false,south=true,up=true,west=true]", + "8857": "minecraft:brown_mushroom_block[down=true,east=true,north=false,south=true,up=true,west=false]", + "8858": "minecraft:brown_mushroom_block[down=true,east=true,north=false,south=true,up=false,west=true]", + "8859": "minecraft:brown_mushroom_block[down=true,east=true,north=false,south=true,up=false,west=false]", + "8860": "minecraft:brown_mushroom_block[down=true,east=true,north=false,south=false,up=true,west=true]", + "8861": "minecraft:brown_mushroom_block[down=true,east=true,north=false,south=false,up=true,west=false]", + "8862": "minecraft:brown_mushroom_block[down=true,east=true,north=false,south=false,up=false,west=true]", + "8863": "minecraft:brown_mushroom_block[down=true,east=true,north=false,south=false,up=false,west=false]", + "8864": "minecraft:brown_mushroom_block[down=true,east=false,north=true,south=true,up=true,west=true]", + "8865": "minecraft:brown_mushroom_block[down=true,east=false,north=true,south=true,up=true,west=false]", + "8866": "minecraft:brown_mushroom_block[down=true,east=false,north=true,south=true,up=false,west=true]", + "8867": "minecraft:brown_mushroom_block[down=true,east=false,north=true,south=true,up=false,west=false]", + "8868": "minecraft:brown_mushroom_block[down=true,east=false,north=true,south=false,up=true,west=true]", + "8869": "minecraft:brown_mushroom_block[down=true,east=false,north=true,south=false,up=true,west=false]", + "8870": "minecraft:brown_mushroom_block[down=true,east=false,north=true,south=false,up=false,west=true]", + "8871": "minecraft:brown_mushroom_block[down=true,east=false,north=true,south=false,up=false,west=false]", + "8872": "minecraft:brown_mushroom_block[down=true,east=false,north=false,south=true,up=true,west=true]", + "8873": "minecraft:brown_mushroom_block[down=true,east=false,north=false,south=true,up=true,west=false]", + "8874": "minecraft:brown_mushroom_block[down=true,east=false,north=false,south=true,up=false,west=true]", + "8875": "minecraft:brown_mushroom_block[down=true,east=false,north=false,south=true,up=false,west=false]", + "8876": "minecraft:brown_mushroom_block[down=true,east=false,north=false,south=false,up=true,west=true]", + "8877": "minecraft:brown_mushroom_block[down=true,east=false,north=false,south=false,up=true,west=false]", + "8878": "minecraft:brown_mushroom_block[down=true,east=false,north=false,south=false,up=false,west=true]", + "8879": "minecraft:brown_mushroom_block[down=true,east=false,north=false,south=false,up=false,west=false]", + "8880": "minecraft:brown_mushroom_block[down=false,east=true,north=true,south=true,up=true,west=true]", + "8881": "minecraft:brown_mushroom_block[down=false,east=true,north=true,south=true,up=true,west=false]", + "8882": "minecraft:brown_mushroom_block[down=false,east=true,north=true,south=true,up=false,west=true]", + "8883": "minecraft:brown_mushroom_block[down=false,east=true,north=true,south=true,up=false,west=false]", + "8884": "minecraft:brown_mushroom_block[down=false,east=true,north=true,south=false,up=true,west=true]", + "8885": "minecraft:brown_mushroom_block[down=false,east=true,north=true,south=false,up=true,west=false]", + "8886": "minecraft:brown_mushroom_block[down=false,east=true,north=true,south=false,up=false,west=true]", + "8887": "minecraft:brown_mushroom_block[down=false,east=true,north=true,south=false,up=false,west=false]", + "8888": "minecraft:brown_mushroom_block[down=false,east=true,north=false,south=true,up=true,west=true]", + "8889": "minecraft:brown_mushroom_block[down=false,east=true,north=false,south=true,up=true,west=false]", + "8890": "minecraft:brown_mushroom_block[down=false,east=true,north=false,south=true,up=false,west=true]", + "8891": "minecraft:brown_mushroom_block[down=false,east=true,north=false,south=true,up=false,west=false]", + "8892": "minecraft:brown_mushroom_block[down=false,east=true,north=false,south=false,up=true,west=true]", + "8893": "minecraft:brown_mushroom_block[down=false,east=true,north=false,south=false,up=true,west=false]", + "8894": "minecraft:brown_mushroom_block[down=false,east=true,north=false,south=false,up=false,west=true]", + "8895": "minecraft:brown_mushroom_block[down=false,east=true,north=false,south=false,up=false,west=false]", + "8896": "minecraft:brown_mushroom_block[down=false,east=false,north=true,south=true,up=true,west=true]", + "8897": "minecraft:brown_mushroom_block[down=false,east=false,north=true,south=true,up=true,west=false]", + "8898": "minecraft:brown_mushroom_block[down=false,east=false,north=true,south=true,up=false,west=true]", + "8899": "minecraft:brown_mushroom_block[down=false,east=false,north=true,south=true,up=false,west=false]", + "8900": "minecraft:brown_mushroom_block[down=false,east=false,north=true,south=false,up=true,west=true]", + "8901": "minecraft:brown_mushroom_block[down=false,east=false,north=true,south=false,up=true,west=false]", + "8902": "minecraft:brown_mushroom_block[down=false,east=false,north=true,south=false,up=false,west=true]", + "8903": "minecraft:brown_mushroom_block[down=false,east=false,north=true,south=false,up=false,west=false]", + "8904": "minecraft:brown_mushroom_block[down=false,east=false,north=false,south=true,up=true,west=true]", + "8905": "minecraft:brown_mushroom_block[down=false,east=false,north=false,south=true,up=true,west=false]", + "8906": "minecraft:brown_mushroom_block[down=false,east=false,north=false,south=true,up=false,west=true]", + "8907": "minecraft:brown_mushroom_block[down=false,east=false,north=false,south=true,up=false,west=false]", + "8908": "minecraft:brown_mushroom_block[down=false,east=false,north=false,south=false,up=true,west=true]", + "8909": "minecraft:brown_mushroom_block[down=false,east=false,north=false,south=false,up=true,west=false]", + "8910": "minecraft:brown_mushroom_block[down=false,east=false,north=false,south=false,up=false,west=true]", + "8911": "minecraft:brown_mushroom_block[down=false,east=false,north=false,south=false,up=false,west=false]", + "8912": "minecraft:warped_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "8913": "minecraft:warped_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "8914": "minecraft:warped_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "8915": "minecraft:warped_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "8916": "minecraft:warped_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "8917": "minecraft:warped_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "8918": "minecraft:warped_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "8919": "minecraft:warped_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "8920": "minecraft:warped_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "8921": "minecraft:warped_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "8922": "minecraft:warped_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "8923": "minecraft:warped_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "8924": "minecraft:warped_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "8925": "minecraft:warped_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "8926": "minecraft:warped_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "8927": "minecraft:warped_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "8928": "minecraft:warped_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "8929": "minecraft:warped_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "8930": "minecraft:warped_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "8931": "minecraft:warped_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "8932": "minecraft:warped_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "8933": "minecraft:warped_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "8934": "minecraft:warped_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "8935": "minecraft:warped_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "8936": "minecraft:warped_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "8937": "minecraft:warped_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "8938": "minecraft:warped_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "8939": "minecraft:warped_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "8940": "minecraft:warped_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "8941": "minecraft:warped_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "8942": "minecraft:warped_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "8943": "minecraft:warped_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "8944": "minecraft:warped_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "8945": "minecraft:warped_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "8946": "minecraft:warped_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "8947": "minecraft:warped_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "8948": "minecraft:warped_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "8949": "minecraft:warped_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "8950": "minecraft:warped_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "8951": "minecraft:warped_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "8952": "minecraft:warped_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "8953": "minecraft:warped_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "8954": "minecraft:warped_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "8955": "minecraft:warped_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "8956": "minecraft:warped_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "8957": "minecraft:warped_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "8958": "minecraft:warped_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "8959": "minecraft:warped_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "8960": "minecraft:warped_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "8961": "minecraft:warped_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "8962": "minecraft:warped_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "8963": "minecraft:warped_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "8964": "minecraft:warped_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "8965": "minecraft:warped_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "8966": "minecraft:warped_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "8967": "minecraft:warped_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "8968": "minecraft:warped_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "8969": "minecraft:warped_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "8970": "minecraft:warped_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "8971": "minecraft:warped_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "8972": "minecraft:warped_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "8973": "minecraft:warped_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "8974": "minecraft:warped_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "8975": "minecraft:warped_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "8976": "minecraft:warped_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "8977": "minecraft:warped_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "8978": "minecraft:warped_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "8979": "minecraft:warped_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "8980": "minecraft:warped_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "8981": "minecraft:warped_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "8982": "minecraft:warped_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "8983": "minecraft:warped_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "8984": "minecraft:warped_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "8985": "minecraft:warped_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "8986": "minecraft:warped_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "8987": "minecraft:warped_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "8988": "minecraft:warped_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "8989": "minecraft:warped_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "8990": "minecraft:warped_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "8991": "minecraft:warped_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "8992": "minecraft:smooth_sandstone_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "8993": "minecraft:smooth_sandstone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "8994": "minecraft:smooth_sandstone_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "8995": "minecraft:smooth_sandstone_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "8996": "minecraft:smooth_sandstone_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "8997": "minecraft:smooth_sandstone_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "8998": "minecraft:smooth_sandstone_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "8999": "minecraft:smooth_sandstone_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "9000": "minecraft:smooth_sandstone_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "9001": "minecraft:smooth_sandstone_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "9002": "minecraft:smooth_sandstone_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "9003": "minecraft:smooth_sandstone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "9004": "minecraft:smooth_sandstone_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "9005": "minecraft:smooth_sandstone_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "9006": "minecraft:smooth_sandstone_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "9007": "minecraft:smooth_sandstone_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "9008": "minecraft:smooth_sandstone_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "9009": "minecraft:smooth_sandstone_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "9010": "minecraft:smooth_sandstone_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "9011": "minecraft:smooth_sandstone_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "9012": "minecraft:smooth_sandstone_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "9013": "minecraft:smooth_sandstone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "9014": "minecraft:smooth_sandstone_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "9015": "minecraft:smooth_sandstone_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "9016": "minecraft:smooth_sandstone_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "9017": "minecraft:smooth_sandstone_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "9018": "minecraft:smooth_sandstone_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "9019": "minecraft:smooth_sandstone_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "9020": "minecraft:smooth_sandstone_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "9021": "minecraft:smooth_sandstone_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "9022": "minecraft:smooth_sandstone_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "9023": "minecraft:smooth_sandstone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "9024": "minecraft:smooth_sandstone_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "9025": "minecraft:smooth_sandstone_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "9026": "minecraft:smooth_sandstone_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "9027": "minecraft:smooth_sandstone_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "9028": "minecraft:smooth_sandstone_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "9029": "minecraft:smooth_sandstone_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "9030": "minecraft:smooth_sandstone_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "9031": "minecraft:smooth_sandstone_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "9032": "minecraft:smooth_sandstone_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "9033": "minecraft:smooth_sandstone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "9034": "minecraft:smooth_sandstone_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "9035": "minecraft:smooth_sandstone_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "9036": "minecraft:smooth_sandstone_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "9037": "minecraft:smooth_sandstone_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "9038": "minecraft:smooth_sandstone_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "9039": "minecraft:smooth_sandstone_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "9040": "minecraft:smooth_sandstone_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "9041": "minecraft:smooth_sandstone_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "9042": "minecraft:smooth_sandstone_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "9043": "minecraft:smooth_sandstone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "9044": "minecraft:smooth_sandstone_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "9045": "minecraft:smooth_sandstone_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "9046": "minecraft:smooth_sandstone_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "9047": "minecraft:smooth_sandstone_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "9048": "minecraft:smooth_sandstone_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "9049": "minecraft:smooth_sandstone_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "9050": "minecraft:smooth_sandstone_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "9051": "minecraft:smooth_sandstone_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "9052": "minecraft:smooth_sandstone_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "9053": "minecraft:smooth_sandstone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "9054": "minecraft:smooth_sandstone_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "9055": "minecraft:smooth_sandstone_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "9056": "minecraft:smooth_sandstone_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "9057": "minecraft:smooth_sandstone_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "9058": "minecraft:smooth_sandstone_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "9059": "minecraft:smooth_sandstone_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "9060": "minecraft:smooth_sandstone_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "9061": "minecraft:smooth_sandstone_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "9062": "minecraft:smooth_sandstone_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "9063": "minecraft:smooth_sandstone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "9064": "minecraft:smooth_sandstone_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "9065": "minecraft:smooth_sandstone_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "9066": "minecraft:smooth_sandstone_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "9067": "minecraft:smooth_sandstone_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "9068": "minecraft:smooth_sandstone_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "9069": "minecraft:smooth_sandstone_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "9070": "minecraft:smooth_sandstone_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "9071": "minecraft:smooth_sandstone_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "9072": "minecraft:nether_brick_fence[east=true,north=true,south=true,waterlogged=true,west=true]", + "9073": "minecraft:nether_brick_fence[east=true,north=true,south=true,waterlogged=true,west=false]", + "9074": "minecraft:nether_brick_fence[east=true,north=true,south=true,waterlogged=false,west=true]", + "9075": "minecraft:nether_brick_fence[east=true,north=true,south=true,waterlogged=false,west=false]", + "9076": "minecraft:nether_brick_fence[east=true,north=true,south=false,waterlogged=true,west=true]", + "9077": "minecraft:nether_brick_fence[east=true,north=true,south=false,waterlogged=true,west=false]", + "9078": "minecraft:nether_brick_fence[east=true,north=true,south=false,waterlogged=false,west=true]", + "9079": "minecraft:nether_brick_fence[east=true,north=true,south=false,waterlogged=false,west=false]", + "9080": "minecraft:nether_brick_fence[east=true,north=false,south=true,waterlogged=true,west=true]", + "9081": "minecraft:nether_brick_fence[east=true,north=false,south=true,waterlogged=true,west=false]", + "9082": "minecraft:nether_brick_fence[east=true,north=false,south=true,waterlogged=false,west=true]", + "9083": "minecraft:nether_brick_fence[east=true,north=false,south=true,waterlogged=false,west=false]", + "9084": "minecraft:nether_brick_fence[east=true,north=false,south=false,waterlogged=true,west=true]", + "9085": "minecraft:nether_brick_fence[east=true,north=false,south=false,waterlogged=true,west=false]", + "9086": "minecraft:nether_brick_fence[east=true,north=false,south=false,waterlogged=false,west=true]", + "9087": "minecraft:nether_brick_fence[east=true,north=false,south=false,waterlogged=false,west=false]", + "9088": "minecraft:nether_brick_fence[east=false,north=true,south=true,waterlogged=true,west=true]", + "9089": "minecraft:nether_brick_fence[east=false,north=true,south=true,waterlogged=true,west=false]", + "9090": "minecraft:nether_brick_fence[east=false,north=true,south=true,waterlogged=false,west=true]", + "9091": "minecraft:nether_brick_fence[east=false,north=true,south=true,waterlogged=false,west=false]", + "9092": "minecraft:nether_brick_fence[east=false,north=true,south=false,waterlogged=true,west=true]", + "9093": "minecraft:nether_brick_fence[east=false,north=true,south=false,waterlogged=true,west=false]", + "9094": "minecraft:nether_brick_fence[east=false,north=true,south=false,waterlogged=false,west=true]", + "9095": "minecraft:nether_brick_fence[east=false,north=true,south=false,waterlogged=false,west=false]", + "9096": "minecraft:nether_brick_fence[east=false,north=false,south=true,waterlogged=true,west=true]", + "9097": "minecraft:nether_brick_fence[east=false,north=false,south=true,waterlogged=true,west=false]", + "9098": "minecraft:nether_brick_fence[east=false,north=false,south=true,waterlogged=false,west=true]", + "9099": "minecraft:nether_brick_fence[east=false,north=false,south=true,waterlogged=false,west=false]", + "9100": "minecraft:nether_brick_fence[east=false,north=false,south=false,waterlogged=true,west=true]", + "9101": "minecraft:nether_brick_fence[east=false,north=false,south=false,waterlogged=true,west=false]", + "9102": "minecraft:nether_brick_fence[east=false,north=false,south=false,waterlogged=false,west=true]", + "9103": "minecraft:nether_brick_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "9104": "minecraft:warped_hyphae[axis=x]", + "9105": "minecraft:warped_hyphae[axis=y]", + "9106": "minecraft:warped_hyphae[axis=z]", + "9107": "minecraft:stripped_warped_stem[axis=x]", + "9108": "minecraft:stripped_warped_stem[axis=y]", + "9109": "minecraft:stripped_warped_stem[axis=z]", + "9110": "minecraft:black_stained_glass", + "9111": "minecraft:oak_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]", + "9112": "minecraft:oak_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]", + "9113": "minecraft:oak_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true]", + "9114": "minecraft:oak_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]", + "9115": "minecraft:oak_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]", + "9116": "minecraft:oak_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]", + "9117": "minecraft:oak_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true]", + "9118": "minecraft:oak_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false]", + "9119": "minecraft:oak_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]", + "9120": "minecraft:oak_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]", + "9121": "minecraft:oak_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true]", + "9122": "minecraft:oak_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false]", + "9123": "minecraft:oak_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]", + "9124": "minecraft:oak_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]", + "9125": "minecraft:oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true]", + "9126": "minecraft:oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]", + "9127": "minecraft:oak_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]", + "9128": "minecraft:oak_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]", + "9129": "minecraft:oak_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true]", + "9130": "minecraft:oak_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false]", + "9131": "minecraft:oak_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]", + "9132": "minecraft:oak_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]", + "9133": "minecraft:oak_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true]", + "9134": "minecraft:oak_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false]", + "9135": "minecraft:oak_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]", + "9136": "minecraft:oak_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]", + "9137": "minecraft:oak_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true]", + "9138": "minecraft:oak_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false]", + "9139": "minecraft:oak_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]", + "9140": "minecraft:oak_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]", + "9141": "minecraft:oak_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true]", + "9142": "minecraft:oak_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false]", + "9143": "minecraft:oak_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]", + "9144": "minecraft:oak_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]", + "9145": "minecraft:oak_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true]", + "9146": "minecraft:oak_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false]", + "9147": "minecraft:oak_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]", + "9148": "minecraft:oak_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]", + "9149": "minecraft:oak_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true]", + "9150": "minecraft:oak_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false]", + "9151": "minecraft:oak_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]", + "9152": "minecraft:oak_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]", + "9153": "minecraft:oak_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true]", + "9154": "minecraft:oak_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false]", + "9155": "minecraft:oak_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]", + "9156": "minecraft:oak_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]", + "9157": "minecraft:oak_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true]", + "9158": "minecraft:oak_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false]", + "9159": "minecraft:oak_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]", + "9160": "minecraft:oak_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]", + "9161": "minecraft:oak_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true]", + "9162": "minecraft:oak_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false]", + "9163": "minecraft:oak_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]", + "9164": "minecraft:oak_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]", + "9165": "minecraft:oak_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true]", + "9166": "minecraft:oak_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false]", + "9167": "minecraft:oak_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]", + "9168": "minecraft:oak_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]", + "9169": "minecraft:oak_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true]", + "9170": "minecraft:oak_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false]", + "9171": "minecraft:oak_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]", + "9172": "minecraft:oak_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]", + "9173": "minecraft:oak_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true]", + "9174": "minecraft:oak_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false]", + "9175": "minecraft:sea_pickle[pickles=1,waterlogged=true]", + "9176": "minecraft:sea_pickle[pickles=1,waterlogged=false]", + "9177": "minecraft:sea_pickle[pickles=2,waterlogged=true]", + "9178": "minecraft:sea_pickle[pickles=2,waterlogged=false]", + "9179": "minecraft:sea_pickle[pickles=3,waterlogged=true]", + "9180": "minecraft:sea_pickle[pickles=3,waterlogged=false]", + "9181": "minecraft:sea_pickle[pickles=4,waterlogged=true]", + "9182": "minecraft:sea_pickle[pickles=4,waterlogged=false]", + "9183": "minecraft:birch_sign[rotation=0,waterlogged=true]", + "9184": "minecraft:birch_sign[rotation=0,waterlogged=false]", + "9185": "minecraft:birch_sign[rotation=1,waterlogged=true]", + "9186": "minecraft:birch_sign[rotation=1,waterlogged=false]", + "9187": "minecraft:birch_sign[rotation=2,waterlogged=true]", + "9188": "minecraft:birch_sign[rotation=2,waterlogged=false]", + "9189": "minecraft:birch_sign[rotation=3,waterlogged=true]", + "9190": "minecraft:birch_sign[rotation=3,waterlogged=false]", + "9191": "minecraft:birch_sign[rotation=4,waterlogged=true]", + "9192": "minecraft:birch_sign[rotation=4,waterlogged=false]", + "9193": "minecraft:birch_sign[rotation=5,waterlogged=true]", + "9194": "minecraft:birch_sign[rotation=5,waterlogged=false]", + "9195": "minecraft:birch_sign[rotation=6,waterlogged=true]", + "9196": "minecraft:birch_sign[rotation=6,waterlogged=false]", + "9197": "minecraft:birch_sign[rotation=7,waterlogged=true]", + "9198": "minecraft:birch_sign[rotation=7,waterlogged=false]", + "9199": "minecraft:birch_sign[rotation=8,waterlogged=true]", + "9200": "minecraft:birch_sign[rotation=8,waterlogged=false]", + "9201": "minecraft:birch_sign[rotation=9,waterlogged=true]", + "9202": "minecraft:birch_sign[rotation=9,waterlogged=false]", + "9203": "minecraft:birch_sign[rotation=10,waterlogged=true]", + "9204": "minecraft:birch_sign[rotation=10,waterlogged=false]", + "9205": "minecraft:birch_sign[rotation=11,waterlogged=true]", + "9206": "minecraft:birch_sign[rotation=11,waterlogged=false]", + "9207": "minecraft:birch_sign[rotation=12,waterlogged=true]", + "9208": "minecraft:birch_sign[rotation=12,waterlogged=false]", + "9209": "minecraft:birch_sign[rotation=13,waterlogged=true]", + "9210": "minecraft:birch_sign[rotation=13,waterlogged=false]", + "9211": "minecraft:birch_sign[rotation=14,waterlogged=true]", + "9212": "minecraft:birch_sign[rotation=14,waterlogged=false]", + "9213": "minecraft:birch_sign[rotation=15,waterlogged=true]", + "9214": "minecraft:birch_sign[rotation=15,waterlogged=false]", + "9215": "minecraft:blue_concrete_powder", + "9216": "minecraft:tripwire_hook[attached=true,facing=north,powered=true]", + "9217": "minecraft:tripwire_hook[attached=true,facing=north,powered=false]", + "9218": "minecraft:tripwire_hook[attached=true,facing=south,powered=true]", + "9219": "minecraft:tripwire_hook[attached=true,facing=south,powered=false]", + "9220": "minecraft:tripwire_hook[attached=true,facing=west,powered=true]", + "9221": "minecraft:tripwire_hook[attached=true,facing=west,powered=false]", + "9222": "minecraft:tripwire_hook[attached=true,facing=east,powered=true]", + "9223": "minecraft:tripwire_hook[attached=true,facing=east,powered=false]", + "9224": "minecraft:tripwire_hook[attached=false,facing=north,powered=true]", + "9225": "minecraft:tripwire_hook[attached=false,facing=north,powered=false]", + "9226": "minecraft:tripwire_hook[attached=false,facing=south,powered=true]", + "9227": "minecraft:tripwire_hook[attached=false,facing=south,powered=false]", + "9228": "minecraft:tripwire_hook[attached=false,facing=west,powered=true]", + "9229": "minecraft:tripwire_hook[attached=false,facing=west,powered=false]", + "9230": "minecraft:tripwire_hook[attached=false,facing=east,powered=true]", + "9231": "minecraft:tripwire_hook[attached=false,facing=east,powered=false]", + "9232": "minecraft:infested_chiseled_stone_bricks", + "9233": "minecraft:weeping_vines_plant", + "9234": "minecraft:torch", + "9235": "minecraft:honeycomb_block", + "9236": "minecraft:dead_horn_coral_fan[waterlogged=true]", + "9237": "minecraft:dead_horn_coral_fan[waterlogged=false]", + "9238": "minecraft:purple_terracotta", + "9239": "minecraft:red_nether_brick_slab[type=top,waterlogged=true]", + "9240": "minecraft:red_nether_brick_slab[type=top,waterlogged=false]", + "9241": "minecraft:red_nether_brick_slab[type=bottom,waterlogged=true]", + "9242": "minecraft:red_nether_brick_slab[type=bottom,waterlogged=false]", + "9243": "minecraft:red_nether_brick_slab[type=double,waterlogged=true]", + "9244": "minecraft:red_nether_brick_slab[type=double,waterlogged=false]", + "9245": "minecraft:honey_block", + "9246": "minecraft:oak_fence[east=true,north=true,south=true,waterlogged=true,west=true]", + "9247": "minecraft:oak_fence[east=true,north=true,south=true,waterlogged=true,west=false]", + "9248": "minecraft:oak_fence[east=true,north=true,south=true,waterlogged=false,west=true]", + "9249": "minecraft:oak_fence[east=true,north=true,south=true,waterlogged=false,west=false]", + "9250": "minecraft:oak_fence[east=true,north=true,south=false,waterlogged=true,west=true]", + "9251": "minecraft:oak_fence[east=true,north=true,south=false,waterlogged=true,west=false]", + "9252": "minecraft:oak_fence[east=true,north=true,south=false,waterlogged=false,west=true]", + "9253": "minecraft:oak_fence[east=true,north=true,south=false,waterlogged=false,west=false]", + "9254": "minecraft:oak_fence[east=true,north=false,south=true,waterlogged=true,west=true]", + "9255": "minecraft:oak_fence[east=true,north=false,south=true,waterlogged=true,west=false]", + "9256": "minecraft:oak_fence[east=true,north=false,south=true,waterlogged=false,west=true]", + "9257": "minecraft:oak_fence[east=true,north=false,south=true,waterlogged=false,west=false]", + "9258": "minecraft:oak_fence[east=true,north=false,south=false,waterlogged=true,west=true]", + "9259": "minecraft:oak_fence[east=true,north=false,south=false,waterlogged=true,west=false]", + "9260": "minecraft:oak_fence[east=true,north=false,south=false,waterlogged=false,west=true]", + "9261": "minecraft:oak_fence[east=true,north=false,south=false,waterlogged=false,west=false]", + "9262": "minecraft:oak_fence[east=false,north=true,south=true,waterlogged=true,west=true]", + "9263": "minecraft:oak_fence[east=false,north=true,south=true,waterlogged=true,west=false]", + "9264": "minecraft:oak_fence[east=false,north=true,south=true,waterlogged=false,west=true]", + "9265": "minecraft:oak_fence[east=false,north=true,south=true,waterlogged=false,west=false]", + "9266": "minecraft:oak_fence[east=false,north=true,south=false,waterlogged=true,west=true]", + "9267": "minecraft:oak_fence[east=false,north=true,south=false,waterlogged=true,west=false]", + "9268": "minecraft:oak_fence[east=false,north=true,south=false,waterlogged=false,west=true]", + "9269": "minecraft:oak_fence[east=false,north=true,south=false,waterlogged=false,west=false]", + "9270": "minecraft:oak_fence[east=false,north=false,south=true,waterlogged=true,west=true]", + "9271": "minecraft:oak_fence[east=false,north=false,south=true,waterlogged=true,west=false]", + "9272": "minecraft:oak_fence[east=false,north=false,south=true,waterlogged=false,west=true]", + "9273": "minecraft:oak_fence[east=false,north=false,south=true,waterlogged=false,west=false]", + "9274": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=true,west=true]", + "9275": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=true,west=false]", + "9276": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=true]", + "9277": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "9278": "minecraft:andesite_slab[type=top,waterlogged=true]", + "9279": "minecraft:andesite_slab[type=top,waterlogged=false]", + "9280": "minecraft:andesite_slab[type=bottom,waterlogged=true]", + "9281": "minecraft:andesite_slab[type=bottom,waterlogged=false]", + "9282": "minecraft:andesite_slab[type=double,waterlogged=true]", + "9283": "minecraft:andesite_slab[type=double,waterlogged=false]", + "9284": "minecraft:jukebox[has_record=true]", + "9285": "minecraft:jukebox[has_record=false]", + "9286": "minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true]", + "9287": "minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=false]", + "9288": "minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=false,west=true]", + "9289": "minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=false,west=false]", + "9290": "minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,powered=false,south=true,west=true]", + "9291": "minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,powered=false,south=true,west=false]", + "9292": "minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,powered=false,south=false,west=true]", + "9293": "minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,powered=false,south=false,west=false]", + "9294": "minecraft:tripwire[attached=true,disarmed=true,east=true,north=false,powered=true,south=true,west=true]", + "9295": "minecraft:tripwire[attached=true,disarmed=true,east=true,north=false,powered=true,south=true,west=false]", + "9296": "minecraft:tripwire[attached=true,disarmed=true,east=true,north=false,powered=true,south=false,west=true]", + "9297": "minecraft:tripwire[attached=true,disarmed=true,east=true,north=false,powered=true,south=false,west=false]", + "9298": "minecraft:tripwire[attached=true,disarmed=true,east=true,north=false,powered=false,south=true,west=true]", + "9299": "minecraft:tripwire[attached=true,disarmed=true,east=true,north=false,powered=false,south=true,west=false]", + "9300": "minecraft:tripwire[attached=true,disarmed=true,east=true,north=false,powered=false,south=false,west=true]", + "9301": "minecraft:tripwire[attached=true,disarmed=true,east=true,north=false,powered=false,south=false,west=false]", + "9302": "minecraft:tripwire[attached=true,disarmed=true,east=false,north=true,powered=true,south=true,west=true]", + "9303": "minecraft:tripwire[attached=true,disarmed=true,east=false,north=true,powered=true,south=true,west=false]", + "9304": "minecraft:tripwire[attached=true,disarmed=true,east=false,north=true,powered=true,south=false,west=true]", + "9305": "minecraft:tripwire[attached=true,disarmed=true,east=false,north=true,powered=true,south=false,west=false]", + "9306": "minecraft:tripwire[attached=true,disarmed=true,east=false,north=true,powered=false,south=true,west=true]", + "9307": "minecraft:tripwire[attached=true,disarmed=true,east=false,north=true,powered=false,south=true,west=false]", + "9308": "minecraft:tripwire[attached=true,disarmed=true,east=false,north=true,powered=false,south=false,west=true]", + "9309": "minecraft:tripwire[attached=true,disarmed=true,east=false,north=true,powered=false,south=false,west=false]", + "9310": "minecraft:tripwire[attached=true,disarmed=true,east=false,north=false,powered=true,south=true,west=true]", + "9311": "minecraft:tripwire[attached=true,disarmed=true,east=false,north=false,powered=true,south=true,west=false]", + "9312": "minecraft:tripwire[attached=true,disarmed=true,east=false,north=false,powered=true,south=false,west=true]", + "9313": "minecraft:tripwire[attached=true,disarmed=true,east=false,north=false,powered=true,south=false,west=false]", + "9314": "minecraft:tripwire[attached=true,disarmed=true,east=false,north=false,powered=false,south=true,west=true]", + "9315": "minecraft:tripwire[attached=true,disarmed=true,east=false,north=false,powered=false,south=true,west=false]", + "9316": "minecraft:tripwire[attached=true,disarmed=true,east=false,north=false,powered=false,south=false,west=true]", + "9317": "minecraft:tripwire[attached=true,disarmed=true,east=false,north=false,powered=false,south=false,west=false]", + "9318": "minecraft:tripwire[attached=true,disarmed=false,east=true,north=true,powered=true,south=true,west=true]", + "9319": "minecraft:tripwire[attached=true,disarmed=false,east=true,north=true,powered=true,south=true,west=false]", + "9320": "minecraft:tripwire[attached=true,disarmed=false,east=true,north=true,powered=true,south=false,west=true]", + "9321": "minecraft:tripwire[attached=true,disarmed=false,east=true,north=true,powered=true,south=false,west=false]", + "9322": "minecraft:tripwire[attached=true,disarmed=false,east=true,north=true,powered=false,south=true,west=true]", + "9323": "minecraft:tripwire[attached=true,disarmed=false,east=true,north=true,powered=false,south=true,west=false]", + "9324": "minecraft:tripwire[attached=true,disarmed=false,east=true,north=true,powered=false,south=false,west=true]", + "9325": "minecraft:tripwire[attached=true,disarmed=false,east=true,north=true,powered=false,south=false,west=false]", + "9326": "minecraft:tripwire[attached=true,disarmed=false,east=true,north=false,powered=true,south=true,west=true]", + "9327": "minecraft:tripwire[attached=true,disarmed=false,east=true,north=false,powered=true,south=true,west=false]", + "9328": "minecraft:tripwire[attached=true,disarmed=false,east=true,north=false,powered=true,south=false,west=true]", + "9329": "minecraft:tripwire[attached=true,disarmed=false,east=true,north=false,powered=true,south=false,west=false]", + "9330": "minecraft:tripwire[attached=true,disarmed=false,east=true,north=false,powered=false,south=true,west=true]", + "9331": "minecraft:tripwire[attached=true,disarmed=false,east=true,north=false,powered=false,south=true,west=false]", + "9332": "minecraft:tripwire[attached=true,disarmed=false,east=true,north=false,powered=false,south=false,west=true]", + "9333": "minecraft:tripwire[attached=true,disarmed=false,east=true,north=false,powered=false,south=false,west=false]", + "9334": "minecraft:tripwire[attached=true,disarmed=false,east=false,north=true,powered=true,south=true,west=true]", + "9335": "minecraft:tripwire[attached=true,disarmed=false,east=false,north=true,powered=true,south=true,west=false]", + "9336": "minecraft:tripwire[attached=true,disarmed=false,east=false,north=true,powered=true,south=false,west=true]", + "9337": "minecraft:tripwire[attached=true,disarmed=false,east=false,north=true,powered=true,south=false,west=false]", + "9338": "minecraft:tripwire[attached=true,disarmed=false,east=false,north=true,powered=false,south=true,west=true]", + "9339": "minecraft:tripwire[attached=true,disarmed=false,east=false,north=true,powered=false,south=true,west=false]", + "9340": "minecraft:tripwire[attached=true,disarmed=false,east=false,north=true,powered=false,south=false,west=true]", + "9341": "minecraft:tripwire[attached=true,disarmed=false,east=false,north=true,powered=false,south=false,west=false]", + "9342": "minecraft:tripwire[attached=true,disarmed=false,east=false,north=false,powered=true,south=true,west=true]", + "9343": "minecraft:tripwire[attached=true,disarmed=false,east=false,north=false,powered=true,south=true,west=false]", + "9344": "minecraft:tripwire[attached=true,disarmed=false,east=false,north=false,powered=true,south=false,west=true]", + "9345": "minecraft:tripwire[attached=true,disarmed=false,east=false,north=false,powered=true,south=false,west=false]", + "9346": "minecraft:tripwire[attached=true,disarmed=false,east=false,north=false,powered=false,south=true,west=true]", + "9347": "minecraft:tripwire[attached=true,disarmed=false,east=false,north=false,powered=false,south=true,west=false]", + "9348": "minecraft:tripwire[attached=true,disarmed=false,east=false,north=false,powered=false,south=false,west=true]", + "9349": "minecraft:tripwire[attached=true,disarmed=false,east=false,north=false,powered=false,south=false,west=false]", + "9350": "minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true]", + "9351": "minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=false]", + "9352": "minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=false,west=true]", + "9353": "minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=false,west=false]", + "9354": "minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,powered=false,south=true,west=true]", + "9355": "minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,powered=false,south=true,west=false]", + "9356": "minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,powered=false,south=false,west=true]", + "9357": "minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,powered=false,south=false,west=false]", + "9358": "minecraft:tripwire[attached=false,disarmed=true,east=true,north=false,powered=true,south=true,west=true]", + "9359": "minecraft:tripwire[attached=false,disarmed=true,east=true,north=false,powered=true,south=true,west=false]", + "9360": "minecraft:tripwire[attached=false,disarmed=true,east=true,north=false,powered=true,south=false,west=true]", + "9361": "minecraft:tripwire[attached=false,disarmed=true,east=true,north=false,powered=true,south=false,west=false]", + "9362": "minecraft:tripwire[attached=false,disarmed=true,east=true,north=false,powered=false,south=true,west=true]", + "9363": "minecraft:tripwire[attached=false,disarmed=true,east=true,north=false,powered=false,south=true,west=false]", + "9364": "minecraft:tripwire[attached=false,disarmed=true,east=true,north=false,powered=false,south=false,west=true]", + "9365": "minecraft:tripwire[attached=false,disarmed=true,east=true,north=false,powered=false,south=false,west=false]", + "9366": "minecraft:tripwire[attached=false,disarmed=true,east=false,north=true,powered=true,south=true,west=true]", + "9367": "minecraft:tripwire[attached=false,disarmed=true,east=false,north=true,powered=true,south=true,west=false]", + "9368": "minecraft:tripwire[attached=false,disarmed=true,east=false,north=true,powered=true,south=false,west=true]", + "9369": "minecraft:tripwire[attached=false,disarmed=true,east=false,north=true,powered=true,south=false,west=false]", + "9370": "minecraft:tripwire[attached=false,disarmed=true,east=false,north=true,powered=false,south=true,west=true]", + "9371": "minecraft:tripwire[attached=false,disarmed=true,east=false,north=true,powered=false,south=true,west=false]", + "9372": "minecraft:tripwire[attached=false,disarmed=true,east=false,north=true,powered=false,south=false,west=true]", + "9373": "minecraft:tripwire[attached=false,disarmed=true,east=false,north=true,powered=false,south=false,west=false]", + "9374": "minecraft:tripwire[attached=false,disarmed=true,east=false,north=false,powered=true,south=true,west=true]", + "9375": "minecraft:tripwire[attached=false,disarmed=true,east=false,north=false,powered=true,south=true,west=false]", + "9376": "minecraft:tripwire[attached=false,disarmed=true,east=false,north=false,powered=true,south=false,west=true]", + "9377": "minecraft:tripwire[attached=false,disarmed=true,east=false,north=false,powered=true,south=false,west=false]", + "9378": "minecraft:tripwire[attached=false,disarmed=true,east=false,north=false,powered=false,south=true,west=true]", + "9379": "minecraft:tripwire[attached=false,disarmed=true,east=false,north=false,powered=false,south=true,west=false]", + "9380": "minecraft:tripwire[attached=false,disarmed=true,east=false,north=false,powered=false,south=false,west=true]", + "9381": "minecraft:tripwire[attached=false,disarmed=true,east=false,north=false,powered=false,south=false,west=false]", + "9382": "minecraft:tripwire[attached=false,disarmed=false,east=true,north=true,powered=true,south=true,west=true]", + "9383": "minecraft:tripwire[attached=false,disarmed=false,east=true,north=true,powered=true,south=true,west=false]", + "9384": "minecraft:tripwire[attached=false,disarmed=false,east=true,north=true,powered=true,south=false,west=true]", + "9385": "minecraft:tripwire[attached=false,disarmed=false,east=true,north=true,powered=true,south=false,west=false]", + "9386": "minecraft:tripwire[attached=false,disarmed=false,east=true,north=true,powered=false,south=true,west=true]", + "9387": "minecraft:tripwire[attached=false,disarmed=false,east=true,north=true,powered=false,south=true,west=false]", + "9388": "minecraft:tripwire[attached=false,disarmed=false,east=true,north=true,powered=false,south=false,west=true]", + "9389": "minecraft:tripwire[attached=false,disarmed=false,east=true,north=true,powered=false,south=false,west=false]", + "9390": "minecraft:tripwire[attached=false,disarmed=false,east=true,north=false,powered=true,south=true,west=true]", + "9391": "minecraft:tripwire[attached=false,disarmed=false,east=true,north=false,powered=true,south=true,west=false]", + "9392": "minecraft:tripwire[attached=false,disarmed=false,east=true,north=false,powered=true,south=false,west=true]", + "9393": "minecraft:tripwire[attached=false,disarmed=false,east=true,north=false,powered=true,south=false,west=false]", + "9394": "minecraft:tripwire[attached=false,disarmed=false,east=true,north=false,powered=false,south=true,west=true]", + "9395": "minecraft:tripwire[attached=false,disarmed=false,east=true,north=false,powered=false,south=true,west=false]", + "9396": "minecraft:tripwire[attached=false,disarmed=false,east=true,north=false,powered=false,south=false,west=true]", + "9397": "minecraft:tripwire[attached=false,disarmed=false,east=true,north=false,powered=false,south=false,west=false]", + "9398": "minecraft:tripwire[attached=false,disarmed=false,east=false,north=true,powered=true,south=true,west=true]", + "9399": "minecraft:tripwire[attached=false,disarmed=false,east=false,north=true,powered=true,south=true,west=false]", + "9400": "minecraft:tripwire[attached=false,disarmed=false,east=false,north=true,powered=true,south=false,west=true]", + "9401": "minecraft:tripwire[attached=false,disarmed=false,east=false,north=true,powered=true,south=false,west=false]", + "9402": "minecraft:tripwire[attached=false,disarmed=false,east=false,north=true,powered=false,south=true,west=true]", + "9403": "minecraft:tripwire[attached=false,disarmed=false,east=false,north=true,powered=false,south=true,west=false]", + "9404": "minecraft:tripwire[attached=false,disarmed=false,east=false,north=true,powered=false,south=false,west=true]", + "9405": "minecraft:tripwire[attached=false,disarmed=false,east=false,north=true,powered=false,south=false,west=false]", + "9406": "minecraft:tripwire[attached=false,disarmed=false,east=false,north=false,powered=true,south=true,west=true]", + "9407": "minecraft:tripwire[attached=false,disarmed=false,east=false,north=false,powered=true,south=true,west=false]", + "9408": "minecraft:tripwire[attached=false,disarmed=false,east=false,north=false,powered=true,south=false,west=true]", + "9409": "minecraft:tripwire[attached=false,disarmed=false,east=false,north=false,powered=true,south=false,west=false]", + "9410": "minecraft:tripwire[attached=false,disarmed=false,east=false,north=false,powered=false,south=true,west=true]", + "9411": "minecraft:tripwire[attached=false,disarmed=false,east=false,north=false,powered=false,south=true,west=false]", + "9412": "minecraft:tripwire[attached=false,disarmed=false,east=false,north=false,powered=false,south=false,west=true]", + "9413": "minecraft:tripwire[attached=false,disarmed=false,east=false,north=false,powered=false,south=false,west=false]", + "9414": "minecraft:blue_glazed_terracotta[facing=north]", + "9415": "minecraft:blue_glazed_terracotta[facing=south]", + "9416": "minecraft:blue_glazed_terracotta[facing=west]", + "9417": "minecraft:blue_glazed_terracotta[facing=east]", + "9418": "minecraft:purple_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=true]", + "9419": "minecraft:purple_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=false]", + "9420": "minecraft:purple_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=true]", + "9421": "minecraft:purple_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=false]", + "9422": "minecraft:purple_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=true]", + "9423": "minecraft:purple_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=false]", + "9424": "minecraft:purple_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=true]", + "9425": "minecraft:purple_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=false]", + "9426": "minecraft:purple_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=true]", + "9427": "minecraft:purple_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=false]", + "9428": "minecraft:purple_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=true]", + "9429": "minecraft:purple_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=false]", + "9430": "minecraft:purple_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=true]", + "9431": "minecraft:purple_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=false]", + "9432": "minecraft:purple_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=true]", + "9433": "minecraft:purple_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=false]", + "9434": "minecraft:purple_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=true]", + "9435": "minecraft:purple_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=false]", + "9436": "minecraft:purple_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=true]", + "9437": "minecraft:purple_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=false]", + "9438": "minecraft:purple_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=true]", + "9439": "minecraft:purple_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=false]", + "9440": "minecraft:purple_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=true]", + "9441": "minecraft:purple_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=false]", + "9442": "minecraft:purple_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=true]", + "9443": "minecraft:purple_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=false]", + "9444": "minecraft:purple_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=true]", + "9445": "minecraft:purple_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=false]", + "9446": "minecraft:purple_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=true]", + "9447": "minecraft:purple_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=false]", + "9448": "minecraft:purple_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=true]", + "9449": "minecraft:purple_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]", + "9450": "minecraft:potted_brown_mushroom", + "9451": "minecraft:gray_wool", + "9452": "minecraft:spruce_leaves[distance=1,persistent=true]", + "9453": "minecraft:spruce_leaves[distance=1,persistent=false]", + "9454": "minecraft:spruce_leaves[distance=2,persistent=true]", + "9455": "minecraft:spruce_leaves[distance=2,persistent=false]", + "9456": "minecraft:spruce_leaves[distance=3,persistent=true]", + "9457": "minecraft:spruce_leaves[distance=3,persistent=false]", + "9458": "minecraft:spruce_leaves[distance=4,persistent=true]", + "9459": "minecraft:spruce_leaves[distance=4,persistent=false]", + "9460": "minecraft:spruce_leaves[distance=5,persistent=true]", + "9461": "minecraft:spruce_leaves[distance=5,persistent=false]", + "9462": "minecraft:spruce_leaves[distance=6,persistent=true]", + "9463": "minecraft:spruce_leaves[distance=6,persistent=false]", + "9464": "minecraft:spruce_leaves[distance=7,persistent=true]", + "9465": "minecraft:spruce_leaves[distance=7,persistent=false]", + "9466": "minecraft:wall_torch[facing=north]", + "9467": "minecraft:wall_torch[facing=south]", + "9468": "minecraft:wall_torch[facing=west]", + "9469": "minecraft:wall_torch[facing=east]", + "9470": "minecraft:blue_ice", + "9471": "minecraft:brown_concrete", + "9472": "minecraft:blue_concrete", + "9473": "minecraft:prismarine_brick_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "9474": "minecraft:prismarine_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "9475": "minecraft:prismarine_brick_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "9476": "minecraft:prismarine_brick_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "9477": "minecraft:prismarine_brick_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "9478": "minecraft:prismarine_brick_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "9479": "minecraft:prismarine_brick_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "9480": "minecraft:prismarine_brick_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "9481": "minecraft:prismarine_brick_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "9482": "minecraft:prismarine_brick_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "9483": "minecraft:prismarine_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "9484": "minecraft:prismarine_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "9485": "minecraft:prismarine_brick_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "9486": "minecraft:prismarine_brick_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "9487": "minecraft:prismarine_brick_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "9488": "minecraft:prismarine_brick_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "9489": "minecraft:prismarine_brick_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "9490": "minecraft:prismarine_brick_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "9491": "minecraft:prismarine_brick_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "9492": "minecraft:prismarine_brick_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "9493": "minecraft:prismarine_brick_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "9494": "minecraft:prismarine_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "9495": "minecraft:prismarine_brick_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "9496": "minecraft:prismarine_brick_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "9497": "minecraft:prismarine_brick_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "9498": "minecraft:prismarine_brick_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "9499": "minecraft:prismarine_brick_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "9500": "minecraft:prismarine_brick_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "9501": "minecraft:prismarine_brick_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "9502": "minecraft:prismarine_brick_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "9503": "minecraft:prismarine_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "9504": "minecraft:prismarine_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "9505": "minecraft:prismarine_brick_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "9506": "minecraft:prismarine_brick_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "9507": "minecraft:prismarine_brick_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "9508": "minecraft:prismarine_brick_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "9509": "minecraft:prismarine_brick_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "9510": "minecraft:prismarine_brick_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "9511": "minecraft:prismarine_brick_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "9512": "minecraft:prismarine_brick_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "9513": "minecraft:prismarine_brick_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "9514": "minecraft:prismarine_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "9515": "minecraft:prismarine_brick_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "9516": "minecraft:prismarine_brick_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "9517": "minecraft:prismarine_brick_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "9518": "minecraft:prismarine_brick_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "9519": "minecraft:prismarine_brick_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "9520": "minecraft:prismarine_brick_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "9521": "minecraft:prismarine_brick_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "9522": "minecraft:prismarine_brick_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "9523": "minecraft:prismarine_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "9524": "minecraft:prismarine_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "9525": "minecraft:prismarine_brick_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "9526": "minecraft:prismarine_brick_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "9527": "minecraft:prismarine_brick_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "9528": "minecraft:prismarine_brick_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "9529": "minecraft:prismarine_brick_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "9530": "minecraft:prismarine_brick_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "9531": "minecraft:prismarine_brick_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "9532": "minecraft:prismarine_brick_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "9533": "minecraft:prismarine_brick_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "9534": "minecraft:prismarine_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "9535": "minecraft:prismarine_brick_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "9536": "minecraft:prismarine_brick_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "9537": "minecraft:prismarine_brick_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "9538": "minecraft:prismarine_brick_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "9539": "minecraft:prismarine_brick_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "9540": "minecraft:prismarine_brick_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "9541": "minecraft:prismarine_brick_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "9542": "minecraft:prismarine_brick_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "9543": "minecraft:prismarine_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "9544": "minecraft:prismarine_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "9545": "minecraft:prismarine_brick_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "9546": "minecraft:prismarine_brick_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "9547": "minecraft:prismarine_brick_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "9548": "minecraft:prismarine_brick_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "9549": "minecraft:prismarine_brick_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "9550": "minecraft:prismarine_brick_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "9551": "minecraft:prismarine_brick_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "9552": "minecraft:prismarine_brick_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "9553": "minecraft:potted_dark_oak_sapling", + "9554": "minecraft:smooth_quartz_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "9555": "minecraft:smooth_quartz_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "9556": "minecraft:smooth_quartz_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "9557": "minecraft:smooth_quartz_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "9558": "minecraft:smooth_quartz_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "9559": "minecraft:smooth_quartz_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "9560": "minecraft:smooth_quartz_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "9561": "minecraft:smooth_quartz_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "9562": "minecraft:smooth_quartz_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "9563": "minecraft:smooth_quartz_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "9564": "minecraft:smooth_quartz_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "9565": "minecraft:smooth_quartz_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "9566": "minecraft:smooth_quartz_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "9567": "minecraft:smooth_quartz_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "9568": "minecraft:smooth_quartz_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "9569": "minecraft:smooth_quartz_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "9570": "minecraft:smooth_quartz_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "9571": "minecraft:smooth_quartz_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "9572": "minecraft:smooth_quartz_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "9573": "minecraft:smooth_quartz_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "9574": "minecraft:smooth_quartz_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "9575": "minecraft:smooth_quartz_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "9576": "minecraft:smooth_quartz_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "9577": "minecraft:smooth_quartz_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "9578": "minecraft:smooth_quartz_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "9579": "minecraft:smooth_quartz_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "9580": "minecraft:smooth_quartz_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "9581": "minecraft:smooth_quartz_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "9582": "minecraft:smooth_quartz_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "9583": "minecraft:smooth_quartz_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "9584": "minecraft:smooth_quartz_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "9585": "minecraft:smooth_quartz_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "9586": "minecraft:smooth_quartz_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "9587": "minecraft:smooth_quartz_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "9588": "minecraft:smooth_quartz_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "9589": "minecraft:smooth_quartz_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "9590": "minecraft:smooth_quartz_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "9591": "minecraft:smooth_quartz_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "9592": "minecraft:smooth_quartz_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "9593": "minecraft:smooth_quartz_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "9594": "minecraft:smooth_quartz_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "9595": "minecraft:smooth_quartz_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "9596": "minecraft:smooth_quartz_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "9597": "minecraft:smooth_quartz_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "9598": "minecraft:smooth_quartz_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "9599": "minecraft:smooth_quartz_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "9600": "minecraft:smooth_quartz_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "9601": "minecraft:smooth_quartz_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "9602": "minecraft:smooth_quartz_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "9603": "minecraft:smooth_quartz_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "9604": "minecraft:smooth_quartz_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "9605": "minecraft:smooth_quartz_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "9606": "minecraft:smooth_quartz_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "9607": "minecraft:smooth_quartz_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "9608": "minecraft:smooth_quartz_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "9609": "minecraft:smooth_quartz_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "9610": "minecraft:smooth_quartz_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "9611": "minecraft:smooth_quartz_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "9612": "minecraft:smooth_quartz_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "9613": "minecraft:smooth_quartz_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "9614": "minecraft:smooth_quartz_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "9615": "minecraft:smooth_quartz_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "9616": "minecraft:smooth_quartz_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "9617": "minecraft:smooth_quartz_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "9618": "minecraft:smooth_quartz_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "9619": "minecraft:smooth_quartz_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "9620": "minecraft:smooth_quartz_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "9621": "minecraft:smooth_quartz_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "9622": "minecraft:smooth_quartz_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "9623": "minecraft:smooth_quartz_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "9624": "minecraft:smooth_quartz_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "9625": "minecraft:smooth_quartz_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "9626": "minecraft:smooth_quartz_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "9627": "minecraft:smooth_quartz_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "9628": "minecraft:smooth_quartz_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "9629": "minecraft:smooth_quartz_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "9630": "minecraft:smooth_quartz_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "9631": "minecraft:smooth_quartz_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "9632": "minecraft:smooth_quartz_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "9633": "minecraft:smooth_quartz_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "9634": "minecraft:potted_dead_bush", + "9635": "minecraft:brown_glazed_terracotta[facing=north]", + "9636": "minecraft:brown_glazed_terracotta[facing=south]", + "9637": "minecraft:brown_glazed_terracotta[facing=west]", + "9638": "minecraft:brown_glazed_terracotta[facing=east]", + "9639": "minecraft:cyan_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=true]", + "9640": "minecraft:cyan_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=false]", + "9641": "minecraft:cyan_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=true]", + "9642": "minecraft:cyan_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=false]", + "9643": "minecraft:cyan_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=true]", + "9644": "minecraft:cyan_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=false]", + "9645": "minecraft:cyan_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=true]", + "9646": "minecraft:cyan_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=false]", + "9647": "minecraft:cyan_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=true]", + "9648": "minecraft:cyan_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=false]", + "9649": "minecraft:cyan_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=true]", + "9650": "minecraft:cyan_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=false]", + "9651": "minecraft:cyan_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=true]", + "9652": "minecraft:cyan_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=false]", + "9653": "minecraft:cyan_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=true]", + "9654": "minecraft:cyan_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=false]", + "9655": "minecraft:cyan_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=true]", + "9656": "minecraft:cyan_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=false]", + "9657": "minecraft:cyan_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=true]", + "9658": "minecraft:cyan_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=false]", + "9659": "minecraft:cyan_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=true]", + "9660": "minecraft:cyan_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=false]", + "9661": "minecraft:cyan_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=true]", + "9662": "minecraft:cyan_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=false]", + "9663": "minecraft:cyan_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=true]", + "9664": "minecraft:cyan_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=false]", + "9665": "minecraft:cyan_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=true]", + "9666": "minecraft:cyan_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=false]", + "9667": "minecraft:cyan_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=true]", + "9668": "minecraft:cyan_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=false]", + "9669": "minecraft:cyan_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=true]", + "9670": "minecraft:cyan_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]", + "9671": "minecraft:white_stained_glass", + "9672": "minecraft:acacia_slab[type=top,waterlogged=true]", + "9673": "minecraft:acacia_slab[type=top,waterlogged=false]", + "9674": "minecraft:acacia_slab[type=bottom,waterlogged=true]", + "9675": "minecraft:acacia_slab[type=bottom,waterlogged=false]", + "9676": "minecraft:acacia_slab[type=double,waterlogged=true]", + "9677": "minecraft:acacia_slab[type=double,waterlogged=false]", + "9678": "minecraft:potted_fern", + "9679": "minecraft:crimson_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "9680": "minecraft:crimson_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "9681": "minecraft:crimson_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "9682": "minecraft:crimson_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "9683": "minecraft:crimson_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "9684": "minecraft:crimson_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "9685": "minecraft:crimson_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "9686": "minecraft:crimson_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "9687": "minecraft:crimson_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "9688": "minecraft:crimson_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "9689": "minecraft:crimson_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "9690": "minecraft:crimson_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "9691": "minecraft:crimson_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "9692": "minecraft:crimson_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "9693": "minecraft:crimson_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "9694": "minecraft:crimson_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "9695": "minecraft:crimson_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "9696": "minecraft:crimson_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "9697": "minecraft:crimson_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "9698": "minecraft:crimson_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "9699": "minecraft:crimson_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "9700": "minecraft:crimson_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "9701": "minecraft:crimson_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "9702": "minecraft:crimson_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "9703": "minecraft:crimson_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "9704": "minecraft:crimson_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "9705": "minecraft:crimson_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "9706": "minecraft:crimson_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "9707": "minecraft:crimson_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "9708": "minecraft:crimson_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "9709": "minecraft:crimson_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "9710": "minecraft:crimson_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "9711": "minecraft:crimson_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "9712": "minecraft:crimson_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "9713": "minecraft:crimson_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "9714": "minecraft:crimson_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "9715": "minecraft:crimson_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "9716": "minecraft:crimson_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "9717": "minecraft:crimson_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "9718": "minecraft:crimson_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "9719": "minecraft:crimson_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "9720": "minecraft:crimson_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "9721": "minecraft:crimson_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "9722": "minecraft:crimson_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "9723": "minecraft:crimson_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "9724": "minecraft:crimson_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "9725": "minecraft:crimson_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "9726": "minecraft:crimson_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "9727": "minecraft:crimson_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "9728": "minecraft:crimson_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "9729": "minecraft:crimson_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "9730": "minecraft:crimson_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "9731": "minecraft:crimson_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "9732": "minecraft:crimson_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "9733": "minecraft:crimson_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "9734": "minecraft:crimson_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "9735": "minecraft:crimson_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "9736": "minecraft:crimson_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "9737": "minecraft:crimson_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "9738": "minecraft:crimson_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "9739": "minecraft:crimson_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "9740": "minecraft:crimson_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "9741": "minecraft:crimson_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "9742": "minecraft:crimson_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "9743": "minecraft:crimson_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "9744": "minecraft:crimson_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "9745": "minecraft:crimson_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "9746": "minecraft:crimson_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "9747": "minecraft:crimson_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "9748": "minecraft:crimson_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "9749": "minecraft:crimson_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "9750": "minecraft:crimson_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "9751": "minecraft:crimson_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "9752": "minecraft:crimson_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "9753": "minecraft:crimson_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "9754": "minecraft:crimson_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "9755": "minecraft:crimson_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "9756": "minecraft:crimson_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "9757": "minecraft:crimson_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "9758": "minecraft:crimson_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "9759": "minecraft:stripped_acacia_log[axis=x]", + "9760": "minecraft:stripped_acacia_log[axis=y]", + "9761": "minecraft:stripped_acacia_log[axis=z]", + "9762": "minecraft:stripped_dark_oak_log[axis=x]", + "9763": "minecraft:stripped_dark_oak_log[axis=y]", + "9764": "minecraft:stripped_dark_oak_log[axis=z]", + "9765": "minecraft:orange_tulip", + "9766": "minecraft:white_tulip", + "9767": "minecraft:smooth_quartz", + "9768": "minecraft:white_wall_banner[facing=north]", + "9769": "minecraft:white_wall_banner[facing=south]", + "9770": "minecraft:white_wall_banner[facing=west]", + "9771": "minecraft:white_wall_banner[facing=east]", + "9772": "minecraft:stone_brick_slab[type=top,waterlogged=true]", + "9773": "minecraft:stone_brick_slab[type=top,waterlogged=false]", + "9774": "minecraft:stone_brick_slab[type=bottom,waterlogged=true]", + "9775": "minecraft:stone_brick_slab[type=bottom,waterlogged=false]", + "9776": "minecraft:stone_brick_slab[type=double,waterlogged=true]", + "9777": "minecraft:stone_brick_slab[type=double,waterlogged=false]", + "9778": "minecraft:diorite", + "9779": "minecraft:light_gray_banner[rotation=0]", + "9780": "minecraft:light_gray_banner[rotation=1]", + "9781": "minecraft:light_gray_banner[rotation=2]", + "9782": "minecraft:light_gray_banner[rotation=3]", + "9783": "minecraft:light_gray_banner[rotation=4]", + "9784": "minecraft:light_gray_banner[rotation=5]", + "9785": "minecraft:light_gray_banner[rotation=6]", + "9786": "minecraft:light_gray_banner[rotation=7]", + "9787": "minecraft:light_gray_banner[rotation=8]", + "9788": "minecraft:light_gray_banner[rotation=9]", + "9789": "minecraft:light_gray_banner[rotation=10]", + "9790": "minecraft:light_gray_banner[rotation=11]", + "9791": "minecraft:light_gray_banner[rotation=12]", + "9792": "minecraft:light_gray_banner[rotation=13]", + "9793": "minecraft:light_gray_banner[rotation=14]", + "9794": "minecraft:light_gray_banner[rotation=15]", + "9795": "minecraft:red_sandstone", + "9796": "minecraft:cobblestone", + "9797": "minecraft:dark_oak_door[facing=north,half=upper,hinge=left,open=true,powered=true]", + "9798": "minecraft:dark_oak_door[facing=north,half=upper,hinge=left,open=true,powered=false]", + "9799": "minecraft:dark_oak_door[facing=north,half=upper,hinge=left,open=false,powered=true]", + "9800": "minecraft:dark_oak_door[facing=north,half=upper,hinge=left,open=false,powered=false]", + "9801": "minecraft:dark_oak_door[facing=north,half=upper,hinge=right,open=true,powered=true]", + "9802": "minecraft:dark_oak_door[facing=north,half=upper,hinge=right,open=true,powered=false]", + "9803": "minecraft:dark_oak_door[facing=north,half=upper,hinge=right,open=false,powered=true]", + "9804": "minecraft:dark_oak_door[facing=north,half=upper,hinge=right,open=false,powered=false]", + "9805": "minecraft:dark_oak_door[facing=north,half=lower,hinge=left,open=true,powered=true]", + "9806": "minecraft:dark_oak_door[facing=north,half=lower,hinge=left,open=true,powered=false]", + "9807": "minecraft:dark_oak_door[facing=north,half=lower,hinge=left,open=false,powered=true]", + "9808": "minecraft:dark_oak_door[facing=north,half=lower,hinge=left,open=false,powered=false]", + "9809": "minecraft:dark_oak_door[facing=north,half=lower,hinge=right,open=true,powered=true]", + "9810": "minecraft:dark_oak_door[facing=north,half=lower,hinge=right,open=true,powered=false]", + "9811": "minecraft:dark_oak_door[facing=north,half=lower,hinge=right,open=false,powered=true]", + "9812": "minecraft:dark_oak_door[facing=north,half=lower,hinge=right,open=false,powered=false]", + "9813": "minecraft:dark_oak_door[facing=south,half=upper,hinge=left,open=true,powered=true]", + "9814": "minecraft:dark_oak_door[facing=south,half=upper,hinge=left,open=true,powered=false]", + "9815": "minecraft:dark_oak_door[facing=south,half=upper,hinge=left,open=false,powered=true]", + "9816": "minecraft:dark_oak_door[facing=south,half=upper,hinge=left,open=false,powered=false]", + "9817": "minecraft:dark_oak_door[facing=south,half=upper,hinge=right,open=true,powered=true]", + "9818": "minecraft:dark_oak_door[facing=south,half=upper,hinge=right,open=true,powered=false]", + "9819": "minecraft:dark_oak_door[facing=south,half=upper,hinge=right,open=false,powered=true]", + "9820": "minecraft:dark_oak_door[facing=south,half=upper,hinge=right,open=false,powered=false]", + "9821": "minecraft:dark_oak_door[facing=south,half=lower,hinge=left,open=true,powered=true]", + "9822": "minecraft:dark_oak_door[facing=south,half=lower,hinge=left,open=true,powered=false]", + "9823": "minecraft:dark_oak_door[facing=south,half=lower,hinge=left,open=false,powered=true]", + "9824": "minecraft:dark_oak_door[facing=south,half=lower,hinge=left,open=false,powered=false]", + "9825": "minecraft:dark_oak_door[facing=south,half=lower,hinge=right,open=true,powered=true]", + "9826": "minecraft:dark_oak_door[facing=south,half=lower,hinge=right,open=true,powered=false]", + "9827": "minecraft:dark_oak_door[facing=south,half=lower,hinge=right,open=false,powered=true]", + "9828": "minecraft:dark_oak_door[facing=south,half=lower,hinge=right,open=false,powered=false]", + "9829": "minecraft:dark_oak_door[facing=west,half=upper,hinge=left,open=true,powered=true]", + "9830": "minecraft:dark_oak_door[facing=west,half=upper,hinge=left,open=true,powered=false]", + "9831": "minecraft:dark_oak_door[facing=west,half=upper,hinge=left,open=false,powered=true]", + "9832": "minecraft:dark_oak_door[facing=west,half=upper,hinge=left,open=false,powered=false]", + "9833": "minecraft:dark_oak_door[facing=west,half=upper,hinge=right,open=true,powered=true]", + "9834": "minecraft:dark_oak_door[facing=west,half=upper,hinge=right,open=true,powered=false]", + "9835": "minecraft:dark_oak_door[facing=west,half=upper,hinge=right,open=false,powered=true]", + "9836": "minecraft:dark_oak_door[facing=west,half=upper,hinge=right,open=false,powered=false]", + "9837": "minecraft:dark_oak_door[facing=west,half=lower,hinge=left,open=true,powered=true]", + "9838": "minecraft:dark_oak_door[facing=west,half=lower,hinge=left,open=true,powered=false]", + "9839": "minecraft:dark_oak_door[facing=west,half=lower,hinge=left,open=false,powered=true]", + "9840": "minecraft:dark_oak_door[facing=west,half=lower,hinge=left,open=false,powered=false]", + "9841": "minecraft:dark_oak_door[facing=west,half=lower,hinge=right,open=true,powered=true]", + "9842": "minecraft:dark_oak_door[facing=west,half=lower,hinge=right,open=true,powered=false]", + "9843": "minecraft:dark_oak_door[facing=west,half=lower,hinge=right,open=false,powered=true]", + "9844": "minecraft:dark_oak_door[facing=west,half=lower,hinge=right,open=false,powered=false]", + "9845": "minecraft:dark_oak_door[facing=east,half=upper,hinge=left,open=true,powered=true]", + "9846": "minecraft:dark_oak_door[facing=east,half=upper,hinge=left,open=true,powered=false]", + "9847": "minecraft:dark_oak_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "9848": "minecraft:dark_oak_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "9849": "minecraft:dark_oak_door[facing=east,half=upper,hinge=right,open=true,powered=true]", + "9850": "minecraft:dark_oak_door[facing=east,half=upper,hinge=right,open=true,powered=false]", + "9851": "minecraft:dark_oak_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "9852": "minecraft:dark_oak_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "9853": "minecraft:dark_oak_door[facing=east,half=lower,hinge=left,open=true,powered=true]", + "9854": "minecraft:dark_oak_door[facing=east,half=lower,hinge=left,open=true,powered=false]", + "9855": "minecraft:dark_oak_door[facing=east,half=lower,hinge=left,open=false,powered=true]", + "9856": "minecraft:dark_oak_door[facing=east,half=lower,hinge=left,open=false,powered=false]", + "9857": "minecraft:dark_oak_door[facing=east,half=lower,hinge=right,open=true,powered=true]", + "9858": "minecraft:dark_oak_door[facing=east,half=lower,hinge=right,open=true,powered=false]", + "9859": "minecraft:dark_oak_door[facing=east,half=lower,hinge=right,open=false,powered=true]", + "9860": "minecraft:dark_oak_door[facing=east,half=lower,hinge=right,open=false,powered=false]", + "9861": "minecraft:stripped_oak_wood[axis=x]", + "9862": "minecraft:stripped_oak_wood[axis=y]", + "9863": "minecraft:stripped_oak_wood[axis=z]", + "9864": "minecraft:coal_block", + "9865": "minecraft:sand", + "9866": "minecraft:lapis_block", + "9867": "minecraft:birch_leaves[distance=1,persistent=true]", + "9868": "minecraft:birch_leaves[distance=1,persistent=false]", + "9869": "minecraft:birch_leaves[distance=2,persistent=true]", + "9870": "minecraft:birch_leaves[distance=2,persistent=false]", + "9871": "minecraft:birch_leaves[distance=3,persistent=true]", + "9872": "minecraft:birch_leaves[distance=3,persistent=false]", + "9873": "minecraft:birch_leaves[distance=4,persistent=true]", + "9874": "minecraft:birch_leaves[distance=4,persistent=false]", + "9875": "minecraft:birch_leaves[distance=5,persistent=true]", + "9876": "minecraft:birch_leaves[distance=5,persistent=false]", + "9877": "minecraft:birch_leaves[distance=6,persistent=true]", + "9878": "minecraft:birch_leaves[distance=6,persistent=false]", + "9879": "minecraft:birch_leaves[distance=7,persistent=true]", + "9880": "minecraft:birch_leaves[distance=7,persistent=false]", + "9881": "minecraft:cyan_carpet", + "9882": "minecraft:orange_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=true]", + "9883": "minecraft:orange_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=false]", + "9884": "minecraft:orange_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=true]", + "9885": "minecraft:orange_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=false]", + "9886": "minecraft:orange_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=true]", + "9887": "minecraft:orange_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=false]", + "9888": "minecraft:orange_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=true]", + "9889": "minecraft:orange_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=false]", + "9890": "minecraft:orange_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=true]", + "9891": "minecraft:orange_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=false]", + "9892": "minecraft:orange_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=true]", + "9893": "minecraft:orange_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=false]", + "9894": "minecraft:orange_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=true]", + "9895": "minecraft:orange_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=false]", + "9896": "minecraft:orange_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=true]", + "9897": "minecraft:orange_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=false]", + "9898": "minecraft:orange_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=true]", + "9899": "minecraft:orange_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=false]", + "9900": "minecraft:orange_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=true]", + "9901": "minecraft:orange_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=false]", + "9902": "minecraft:orange_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=true]", + "9903": "minecraft:orange_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=false]", + "9904": "minecraft:orange_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=true]", + "9905": "minecraft:orange_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=false]", + "9906": "minecraft:orange_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=true]", + "9907": "minecraft:orange_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=false]", + "9908": "minecraft:orange_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=true]", + "9909": "minecraft:orange_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=false]", + "9910": "minecraft:orange_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=true]", + "9911": "minecraft:orange_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=false]", + "9912": "minecraft:orange_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=true]", + "9913": "minecraft:orange_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]", + "9914": "minecraft:orange_carpet", + "9915": "minecraft:cyan_terracotta", + "9916": "minecraft:blue_shulker_box[facing=north]", + "9917": "minecraft:blue_shulker_box[facing=east]", + "9918": "minecraft:blue_shulker_box[facing=south]", + "9919": "minecraft:blue_shulker_box[facing=west]", + "9920": "minecraft:blue_shulker_box[facing=up]", + "9921": "minecraft:blue_shulker_box[facing=down]", + "9922": "minecraft:birch_fence[east=true,north=true,south=true,waterlogged=true,west=true]", + "9923": "minecraft:birch_fence[east=true,north=true,south=true,waterlogged=true,west=false]", + "9924": "minecraft:birch_fence[east=true,north=true,south=true,waterlogged=false,west=true]", + "9925": "minecraft:birch_fence[east=true,north=true,south=true,waterlogged=false,west=false]", + "9926": "minecraft:birch_fence[east=true,north=true,south=false,waterlogged=true,west=true]", + "9927": "minecraft:birch_fence[east=true,north=true,south=false,waterlogged=true,west=false]", + "9928": "minecraft:birch_fence[east=true,north=true,south=false,waterlogged=false,west=true]", + "9929": "minecraft:birch_fence[east=true,north=true,south=false,waterlogged=false,west=false]", + "9930": "minecraft:birch_fence[east=true,north=false,south=true,waterlogged=true,west=true]", + "9931": "minecraft:birch_fence[east=true,north=false,south=true,waterlogged=true,west=false]", + "9932": "minecraft:birch_fence[east=true,north=false,south=true,waterlogged=false,west=true]", + "9933": "minecraft:birch_fence[east=true,north=false,south=true,waterlogged=false,west=false]", + "9934": "minecraft:birch_fence[east=true,north=false,south=false,waterlogged=true,west=true]", + "9935": "minecraft:birch_fence[east=true,north=false,south=false,waterlogged=true,west=false]", + "9936": "minecraft:birch_fence[east=true,north=false,south=false,waterlogged=false,west=true]", + "9937": "minecraft:birch_fence[east=true,north=false,south=false,waterlogged=false,west=false]", + "9938": "minecraft:birch_fence[east=false,north=true,south=true,waterlogged=true,west=true]", + "9939": "minecraft:birch_fence[east=false,north=true,south=true,waterlogged=true,west=false]", + "9940": "minecraft:birch_fence[east=false,north=true,south=true,waterlogged=false,west=true]", + "9941": "minecraft:birch_fence[east=false,north=true,south=true,waterlogged=false,west=false]", + "9942": "minecraft:birch_fence[east=false,north=true,south=false,waterlogged=true,west=true]", + "9943": "minecraft:birch_fence[east=false,north=true,south=false,waterlogged=true,west=false]", + "9944": "minecraft:birch_fence[east=false,north=true,south=false,waterlogged=false,west=true]", + "9945": "minecraft:birch_fence[east=false,north=true,south=false,waterlogged=false,west=false]", + "9946": "minecraft:birch_fence[east=false,north=false,south=true,waterlogged=true,west=true]", + "9947": "minecraft:birch_fence[east=false,north=false,south=true,waterlogged=true,west=false]", + "9948": "minecraft:birch_fence[east=false,north=false,south=true,waterlogged=false,west=true]", + "9949": "minecraft:birch_fence[east=false,north=false,south=true,waterlogged=false,west=false]", + "9950": "minecraft:birch_fence[east=false,north=false,south=false,waterlogged=true,west=true]", + "9951": "minecraft:birch_fence[east=false,north=false,south=false,waterlogged=true,west=false]", + "9952": "minecraft:birch_fence[east=false,north=false,south=false,waterlogged=false,west=true]", + "9953": "minecraft:birch_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "9954": "minecraft:light_gray_wall_banner[facing=north]", + "9955": "minecraft:light_gray_wall_banner[facing=south]", + "9956": "minecraft:light_gray_wall_banner[facing=west]", + "9957": "minecraft:light_gray_wall_banner[facing=east]", + "9958": "minecraft:spruce_sapling[stage=0]", + "9959": "minecraft:spruce_sapling[stage=1]", + "9960": "minecraft:brown_concrete_powder", + "9961": "minecraft:hopper[enabled=true,facing=down]", + "9962": "minecraft:hopper[enabled=true,facing=north]", + "9963": "minecraft:hopper[enabled=true,facing=south]", + "9964": "minecraft:hopper[enabled=true,facing=west]", + "9965": "minecraft:hopper[enabled=true,facing=east]", + "9966": "minecraft:hopper[enabled=false,facing=down]", + "9967": "minecraft:hopper[enabled=false,facing=north]", + "9968": "minecraft:hopper[enabled=false,facing=south]", + "9969": "minecraft:hopper[enabled=false,facing=west]", + "9970": "minecraft:hopper[enabled=false,facing=east]", + "9971": "minecraft:piston_head[facing=north,short=true,type=normal]", + "9972": "minecraft:piston_head[facing=north,short=true,type=sticky]", + "9973": "minecraft:piston_head[facing=north,short=false,type=normal]", + "9974": "minecraft:piston_head[facing=north,short=false,type=sticky]", + "9975": "minecraft:piston_head[facing=east,short=true,type=normal]", + "9976": "minecraft:piston_head[facing=east,short=true,type=sticky]", + "9977": "minecraft:piston_head[facing=east,short=false,type=normal]", + "9978": "minecraft:piston_head[facing=east,short=false,type=sticky]", + "9979": "minecraft:piston_head[facing=south,short=true,type=normal]", + "9980": "minecraft:piston_head[facing=south,short=true,type=sticky]", + "9981": "minecraft:piston_head[facing=south,short=false,type=normal]", + "9982": "minecraft:piston_head[facing=south,short=false,type=sticky]", + "9983": "minecraft:piston_head[facing=west,short=true,type=normal]", + "9984": "minecraft:piston_head[facing=west,short=true,type=sticky]", + "9985": "minecraft:piston_head[facing=west,short=false,type=normal]", + "9986": "minecraft:piston_head[facing=west,short=false,type=sticky]", + "9987": "minecraft:piston_head[facing=up,short=true,type=normal]", + "9988": "minecraft:piston_head[facing=up,short=true,type=sticky]", + "9989": "minecraft:piston_head[facing=up,short=false,type=normal]", + "9990": "minecraft:piston_head[facing=up,short=false,type=sticky]", + "9991": "minecraft:piston_head[facing=down,short=true,type=normal]", + "9992": "minecraft:piston_head[facing=down,short=true,type=sticky]", + "9993": "minecraft:piston_head[facing=down,short=false,type=normal]", + "9994": "minecraft:piston_head[facing=down,short=false,type=sticky]", + "9995": "minecraft:damaged_anvil[facing=north]", + "9996": "minecraft:damaged_anvil[facing=south]", + "9997": "minecraft:damaged_anvil[facing=west]", + "9998": "minecraft:damaged_anvil[facing=east]", + "9999": "minecraft:player_head[rotation=0]", + "10000": "minecraft:player_head[rotation=1]", + "10001": "minecraft:player_head[rotation=2]", + "10002": "minecraft:player_head[rotation=3]", + "10003": "minecraft:player_head[rotation=4]", + "10004": "minecraft:player_head[rotation=5]", + "10005": "minecraft:player_head[rotation=6]", + "10006": "minecraft:player_head[rotation=7]", + "10007": "minecraft:player_head[rotation=8]", + "10008": "minecraft:player_head[rotation=9]", + "10009": "minecraft:player_head[rotation=10]", + "10010": "minecraft:player_head[rotation=11]", + "10011": "minecraft:player_head[rotation=12]", + "10012": "minecraft:player_head[rotation=13]", + "10013": "minecraft:player_head[rotation=14]", + "10014": "minecraft:player_head[rotation=15]", + "10015": "minecraft:brain_coral[waterlogged=true]", + "10016": "minecraft:brain_coral[waterlogged=false]", + "10017": "minecraft:dead_tube_coral_block", + "10018": "minecraft:acacia_sign[rotation=0,waterlogged=true]", + "10019": "minecraft:acacia_sign[rotation=0,waterlogged=false]", + "10020": "minecraft:acacia_sign[rotation=1,waterlogged=true]", + "10021": "minecraft:acacia_sign[rotation=1,waterlogged=false]", + "10022": "minecraft:acacia_sign[rotation=2,waterlogged=true]", + "10023": "minecraft:acacia_sign[rotation=2,waterlogged=false]", + "10024": "minecraft:acacia_sign[rotation=3,waterlogged=true]", + "10025": "minecraft:acacia_sign[rotation=3,waterlogged=false]", + "10026": "minecraft:acacia_sign[rotation=4,waterlogged=true]", + "10027": "minecraft:acacia_sign[rotation=4,waterlogged=false]", + "10028": "minecraft:acacia_sign[rotation=5,waterlogged=true]", + "10029": "minecraft:acacia_sign[rotation=5,waterlogged=false]", + "10030": "minecraft:acacia_sign[rotation=6,waterlogged=true]", + "10031": "minecraft:acacia_sign[rotation=6,waterlogged=false]", + "10032": "minecraft:acacia_sign[rotation=7,waterlogged=true]", + "10033": "minecraft:acacia_sign[rotation=7,waterlogged=false]", + "10034": "minecraft:acacia_sign[rotation=8,waterlogged=true]", + "10035": "minecraft:acacia_sign[rotation=8,waterlogged=false]", + "10036": "minecraft:acacia_sign[rotation=9,waterlogged=true]", + "10037": "minecraft:acacia_sign[rotation=9,waterlogged=false]", + "10038": "minecraft:acacia_sign[rotation=10,waterlogged=true]", + "10039": "minecraft:acacia_sign[rotation=10,waterlogged=false]", + "10040": "minecraft:acacia_sign[rotation=11,waterlogged=true]", + "10041": "minecraft:acacia_sign[rotation=11,waterlogged=false]", + "10042": "minecraft:acacia_sign[rotation=12,waterlogged=true]", + "10043": "minecraft:acacia_sign[rotation=12,waterlogged=false]", + "10044": "minecraft:acacia_sign[rotation=13,waterlogged=true]", + "10045": "minecraft:acacia_sign[rotation=13,waterlogged=false]", + "10046": "minecraft:acacia_sign[rotation=14,waterlogged=true]", + "10047": "minecraft:acacia_sign[rotation=14,waterlogged=false]", + "10048": "minecraft:acacia_sign[rotation=15,waterlogged=true]", + "10049": "minecraft:acacia_sign[rotation=15,waterlogged=false]", + "10050": "minecraft:orange_terracotta", + "10051": "minecraft:sticky_piston[extended=true,facing=north]", + "10052": "minecraft:sticky_piston[extended=true,facing=east]", + "10053": "minecraft:sticky_piston[extended=true,facing=south]", + "10054": "minecraft:sticky_piston[extended=true,facing=west]", + "10055": "minecraft:sticky_piston[extended=true,facing=up]", + "10056": "minecraft:sticky_piston[extended=true,facing=down]", + "10057": "minecraft:sticky_piston[extended=false,facing=north]", + "10058": "minecraft:sticky_piston[extended=false,facing=east]", + "10059": "minecraft:sticky_piston[extended=false,facing=south]", + "10060": "minecraft:sticky_piston[extended=false,facing=west]", + "10061": "minecraft:sticky_piston[extended=false,facing=up]", + "10062": "minecraft:sticky_piston[extended=false,facing=down]", + "10063": "minecraft:light_blue_shulker_box[facing=north]", + "10064": "minecraft:light_blue_shulker_box[facing=east]", + "10065": "minecraft:light_blue_shulker_box[facing=south]", + "10066": "minecraft:light_blue_shulker_box[facing=west]", + "10067": "minecraft:light_blue_shulker_box[facing=up]", + "10068": "minecraft:light_blue_shulker_box[facing=down]", + "10069": "minecraft:spruce_wall_sign[facing=north,waterlogged=true]", + "10070": "minecraft:spruce_wall_sign[facing=north,waterlogged=false]", + "10071": "minecraft:spruce_wall_sign[facing=south,waterlogged=true]", + "10072": "minecraft:spruce_wall_sign[facing=south,waterlogged=false]", + "10073": "minecraft:spruce_wall_sign[facing=west,waterlogged=true]", + "10074": "minecraft:spruce_wall_sign[facing=west,waterlogged=false]", + "10075": "minecraft:spruce_wall_sign[facing=east,waterlogged=true]", + "10076": "minecraft:spruce_wall_sign[facing=east,waterlogged=false]", + "10077": "minecraft:red_nether_bricks", + "10078": "minecraft:magenta_bed[facing=north,occupied=true,part=head]", + "10079": "minecraft:magenta_bed[facing=north,occupied=true,part=foot]", + "10080": "minecraft:magenta_bed[facing=north,occupied=false,part=head]", + "10081": "minecraft:magenta_bed[facing=north,occupied=false,part=foot]", + "10082": "minecraft:magenta_bed[facing=south,occupied=true,part=head]", + "10083": "minecraft:magenta_bed[facing=south,occupied=true,part=foot]", + "10084": "minecraft:magenta_bed[facing=south,occupied=false,part=head]", + "10085": "minecraft:magenta_bed[facing=south,occupied=false,part=foot]", + "10086": "minecraft:magenta_bed[facing=west,occupied=true,part=head]", + "10087": "minecraft:magenta_bed[facing=west,occupied=true,part=foot]", + "10088": "minecraft:magenta_bed[facing=west,occupied=false,part=head]", + "10089": "minecraft:magenta_bed[facing=west,occupied=false,part=foot]", + "10090": "minecraft:magenta_bed[facing=east,occupied=true,part=head]", + "10091": "minecraft:magenta_bed[facing=east,occupied=true,part=foot]", + "10092": "minecraft:magenta_bed[facing=east,occupied=false,part=head]", + "10093": "minecraft:magenta_bed[facing=east,occupied=false,part=foot]", + "10094": "minecraft:oak_pressure_plate[powered=true]", + "10095": "minecraft:oak_pressure_plate[powered=false]", + "10096": "minecraft:beetroots[age=0]", + "10097": "minecraft:beetroots[age=1]", + "10098": "minecraft:beetroots[age=2]", + "10099": "minecraft:beetroots[age=3]", + "10100": "minecraft:fire_coral_block", + "10101": "minecraft:purple_bed[facing=north,occupied=true,part=head]", + "10102": "minecraft:purple_bed[facing=north,occupied=true,part=foot]", + "10103": "minecraft:purple_bed[facing=north,occupied=false,part=head]", + "10104": "minecraft:purple_bed[facing=north,occupied=false,part=foot]", + "10105": "minecraft:purple_bed[facing=south,occupied=true,part=head]", + "10106": "minecraft:purple_bed[facing=south,occupied=true,part=foot]", + "10107": "minecraft:purple_bed[facing=south,occupied=false,part=head]", + "10108": "minecraft:purple_bed[facing=south,occupied=false,part=foot]", + "10109": "minecraft:purple_bed[facing=west,occupied=true,part=head]", + "10110": "minecraft:purple_bed[facing=west,occupied=true,part=foot]", + "10111": "minecraft:purple_bed[facing=west,occupied=false,part=head]", + "10112": "minecraft:purple_bed[facing=west,occupied=false,part=foot]", + "10113": "minecraft:purple_bed[facing=east,occupied=true,part=head]", + "10114": "minecraft:purple_bed[facing=east,occupied=true,part=foot]", + "10115": "minecraft:purple_bed[facing=east,occupied=false,part=head]", + "10116": "minecraft:purple_bed[facing=east,occupied=false,part=foot]", + "10117": "minecraft:nether_bricks", + "10118": "minecraft:white_banner[rotation=0]", + "10119": "minecraft:white_banner[rotation=1]", + "10120": "minecraft:white_banner[rotation=2]", + "10121": "minecraft:white_banner[rotation=3]", + "10122": "minecraft:white_banner[rotation=4]", + "10123": "minecraft:white_banner[rotation=5]", + "10124": "minecraft:white_banner[rotation=6]", + "10125": "minecraft:white_banner[rotation=7]", + "10126": "minecraft:white_banner[rotation=8]", + "10127": "minecraft:white_banner[rotation=9]", + "10128": "minecraft:white_banner[rotation=10]", + "10129": "minecraft:white_banner[rotation=11]", + "10130": "minecraft:white_banner[rotation=12]", + "10131": "minecraft:white_banner[rotation=13]", + "10132": "minecraft:white_banner[rotation=14]", + "10133": "minecraft:white_banner[rotation=15]", + "10134": "minecraft:tall_seagrass[half=upper]", + "10135": "minecraft:tall_seagrass[half=lower]", + "10136": "minecraft:coal_ore", + "10137": "minecraft:potted_pink_tulip", + "10138": "minecraft:oak_wall_sign[facing=north,waterlogged=true]", + "10139": "minecraft:oak_wall_sign[facing=north,waterlogged=false]", + "10140": "minecraft:oak_wall_sign[facing=south,waterlogged=true]", + "10141": "minecraft:oak_wall_sign[facing=south,waterlogged=false]", + "10142": "minecraft:oak_wall_sign[facing=west,waterlogged=true]", + "10143": "minecraft:oak_wall_sign[facing=west,waterlogged=false]", + "10144": "minecraft:oak_wall_sign[facing=east,waterlogged=true]", + "10145": "minecraft:oak_wall_sign[facing=east,waterlogged=false]", + "10146": "minecraft:yellow_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=true]", + "10147": "minecraft:yellow_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=false]", + "10148": "minecraft:yellow_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=true]", + "10149": "minecraft:yellow_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=false]", + "10150": "minecraft:yellow_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=true]", + "10151": "minecraft:yellow_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=false]", + "10152": "minecraft:yellow_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=true]", + "10153": "minecraft:yellow_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=false]", + "10154": "minecraft:yellow_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=true]", + "10155": "minecraft:yellow_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=false]", + "10156": "minecraft:yellow_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=true]", + "10157": "minecraft:yellow_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=false]", + "10158": "minecraft:yellow_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=true]", + "10159": "minecraft:yellow_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=false]", + "10160": "minecraft:yellow_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=true]", + "10161": "minecraft:yellow_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=false]", + "10162": "minecraft:yellow_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=true]", + "10163": "minecraft:yellow_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=false]", + "10164": "minecraft:yellow_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=true]", + "10165": "minecraft:yellow_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=false]", + "10166": "minecraft:yellow_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=true]", + "10167": "minecraft:yellow_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=false]", + "10168": "minecraft:yellow_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=true]", + "10169": "minecraft:yellow_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=false]", + "10170": "minecraft:yellow_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=true]", + "10171": "minecraft:yellow_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=false]", + "10172": "minecraft:yellow_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=true]", + "10173": "minecraft:yellow_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=false]", + "10174": "minecraft:yellow_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=true]", + "10175": "minecraft:yellow_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=false]", + "10176": "minecraft:yellow_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=true]", + "10177": "minecraft:yellow_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]", + "10178": "minecraft:magenta_concrete_powder", + "10179": "minecraft:purpur_pillar[axis=x]", + "10180": "minecraft:purpur_pillar[axis=y]", + "10181": "minecraft:purpur_pillar[axis=z]", + "10182": "minecraft:brown_banner[rotation=0]", + "10183": "minecraft:brown_banner[rotation=1]", + "10184": "minecraft:brown_banner[rotation=2]", + "10185": "minecraft:brown_banner[rotation=3]", + "10186": "minecraft:brown_banner[rotation=4]", + "10187": "minecraft:brown_banner[rotation=5]", + "10188": "minecraft:brown_banner[rotation=6]", + "10189": "minecraft:brown_banner[rotation=7]", + "10190": "minecraft:brown_banner[rotation=8]", + "10191": "minecraft:brown_banner[rotation=9]", + "10192": "minecraft:brown_banner[rotation=10]", + "10193": "minecraft:brown_banner[rotation=11]", + "10194": "minecraft:brown_banner[rotation=12]", + "10195": "minecraft:brown_banner[rotation=13]", + "10196": "minecraft:brown_banner[rotation=14]", + "10197": "minecraft:brown_banner[rotation=15]", + "10198": "minecraft:blue_banner[rotation=0]", + "10199": "minecraft:blue_banner[rotation=1]", + "10200": "minecraft:blue_banner[rotation=2]", + "10201": "minecraft:blue_banner[rotation=3]", + "10202": "minecraft:blue_banner[rotation=4]", + "10203": "minecraft:blue_banner[rotation=5]", + "10204": "minecraft:blue_banner[rotation=6]", + "10205": "minecraft:blue_banner[rotation=7]", + "10206": "minecraft:blue_banner[rotation=8]", + "10207": "minecraft:blue_banner[rotation=9]", + "10208": "minecraft:blue_banner[rotation=10]", + "10209": "minecraft:blue_banner[rotation=11]", + "10210": "minecraft:blue_banner[rotation=12]", + "10211": "minecraft:blue_banner[rotation=13]", + "10212": "minecraft:blue_banner[rotation=14]", + "10213": "minecraft:blue_banner[rotation=15]", + "10214": "minecraft:purpur_block", + "10215": "minecraft:seagrass", + "10216": "minecraft:piston[extended=true,facing=north]", + "10217": "minecraft:piston[extended=true,facing=east]", + "10218": "minecraft:piston[extended=true,facing=south]", + "10219": "minecraft:piston[extended=true,facing=west]", + "10220": "minecraft:piston[extended=true,facing=up]", + "10221": "minecraft:piston[extended=true,facing=down]", + "10222": "minecraft:piston[extended=false,facing=north]", + "10223": "minecraft:piston[extended=false,facing=east]", + "10224": "minecraft:piston[extended=false,facing=south]", + "10225": "minecraft:piston[extended=false,facing=west]", + "10226": "minecraft:piston[extended=false,facing=up]", + "10227": "minecraft:piston[extended=false,facing=down]", + "10228": "minecraft:chiseled_stone_bricks", + "10229": "minecraft:lime_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=true]", + "10230": "minecraft:lime_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=false]", + "10231": "minecraft:lime_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=true]", + "10232": "minecraft:lime_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=false]", + "10233": "minecraft:lime_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=true]", + "10234": "minecraft:lime_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=false]", + "10235": "minecraft:lime_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=true]", + "10236": "minecraft:lime_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=false]", + "10237": "minecraft:lime_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=true]", + "10238": "minecraft:lime_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=false]", + "10239": "minecraft:lime_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=true]", + "10240": "minecraft:lime_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=false]", + "10241": "minecraft:lime_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=true]", + "10242": "minecraft:lime_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=false]", + "10243": "minecraft:lime_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=true]", + "10244": "minecraft:lime_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=false]", + "10245": "minecraft:lime_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=true]", + "10246": "minecraft:lime_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=false]", + "10247": "minecraft:lime_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=true]", + "10248": "minecraft:lime_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=false]", + "10249": "minecraft:lime_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=true]", + "10250": "minecraft:lime_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=false]", + "10251": "minecraft:lime_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=true]", + "10252": "minecraft:lime_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=false]", + "10253": "minecraft:lime_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=true]", + "10254": "minecraft:lime_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=false]", + "10255": "minecraft:lime_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=true]", + "10256": "minecraft:lime_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=false]", + "10257": "minecraft:lime_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=true]", + "10258": "minecraft:lime_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=false]", + "10259": "minecraft:lime_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=true]", + "10260": "minecraft:lime_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]", + "10261": "minecraft:light_blue_concrete_powder", + "10262": "minecraft:orange_concrete_powder", + "10263": "minecraft:light_blue_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=true]", + "10264": "minecraft:light_blue_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=false]", + "10265": "minecraft:light_blue_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=true]", + "10266": "minecraft:light_blue_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=false]", + "10267": "minecraft:light_blue_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=true]", + "10268": "minecraft:light_blue_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=false]", + "10269": "minecraft:light_blue_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=true]", + "10270": "minecraft:light_blue_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=false]", + "10271": "minecraft:light_blue_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=true]", + "10272": "minecraft:light_blue_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=false]", + "10273": "minecraft:light_blue_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=true]", + "10274": "minecraft:light_blue_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=false]", + "10275": "minecraft:light_blue_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=true]", + "10276": "minecraft:light_blue_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=false]", + "10277": "minecraft:light_blue_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=true]", + "10278": "minecraft:light_blue_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=false]", + "10279": "minecraft:light_blue_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=true]", + "10280": "minecraft:light_blue_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=false]", + "10281": "minecraft:light_blue_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=true]", + "10282": "minecraft:light_blue_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=false]", + "10283": "minecraft:light_blue_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=true]", + "10284": "minecraft:light_blue_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=false]", + "10285": "minecraft:light_blue_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=true]", + "10286": "minecraft:light_blue_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=false]", + "10287": "minecraft:light_blue_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=true]", + "10288": "minecraft:light_blue_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=false]", + "10289": "minecraft:light_blue_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=true]", + "10290": "minecraft:light_blue_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=false]", + "10291": "minecraft:light_blue_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=true]", + "10292": "minecraft:light_blue_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=false]", + "10293": "minecraft:light_blue_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=true]", + "10294": "minecraft:light_blue_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]", + "10295": "minecraft:crimson_hyphae[axis=x]", + "10296": "minecraft:crimson_hyphae[axis=y]", + "10297": "minecraft:crimson_hyphae[axis=z]", + "10298": "minecraft:nether_sprouts", + "10299": "minecraft:stripped_crimson_stem[axis=x]", + "10300": "minecraft:stripped_crimson_stem[axis=y]", + "10301": "minecraft:stripped_crimson_stem[axis=z]", + "10302": "minecraft:crimson_stem[axis=x]", + "10303": "minecraft:crimson_stem[axis=y]", + "10304": "minecraft:crimson_stem[axis=z]", + "10305": "minecraft:mossy_stone_bricks", + "10306": "minecraft:stone_bricks", + "10307": "minecraft:cracked_stone_bricks", + "10308": "minecraft:oak_log[axis=x]", + "10309": "minecraft:oak_log[axis=y]", + "10310": "minecraft:oak_log[axis=z]", + "10311": "minecraft:pink_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=true]", + "10312": "minecraft:pink_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=false]", + "10313": "minecraft:pink_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=true]", + "10314": "minecraft:pink_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=false]", + "10315": "minecraft:pink_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=true]", + "10316": "minecraft:pink_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=false]", + "10317": "minecraft:pink_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=true]", + "10318": "minecraft:pink_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=false]", + "10319": "minecraft:pink_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=true]", + "10320": "minecraft:pink_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=false]", + "10321": "minecraft:pink_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=true]", + "10322": "minecraft:pink_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=false]", + "10323": "minecraft:pink_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=true]", + "10324": "minecraft:pink_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=false]", + "10325": "minecraft:pink_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=true]", + "10326": "minecraft:pink_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=false]", + "10327": "minecraft:pink_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=true]", + "10328": "minecraft:pink_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=false]", + "10329": "minecraft:pink_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=true]", + "10330": "minecraft:pink_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=false]", + "10331": "minecraft:pink_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=true]", + "10332": "minecraft:pink_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=false]", + "10333": "minecraft:pink_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=true]", + "10334": "minecraft:pink_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=false]", + "10335": "minecraft:pink_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=true]", + "10336": "minecraft:pink_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=false]", + "10337": "minecraft:pink_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=true]", + "10338": "minecraft:pink_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=false]", + "10339": "minecraft:pink_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=true]", + "10340": "minecraft:pink_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=false]", + "10341": "minecraft:pink_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=true]", + "10342": "minecraft:pink_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]", + "10343": "minecraft:yellow_concrete_powder", + "10344": "minecraft:magenta_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=true]", + "10345": "minecraft:magenta_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=false]", + "10346": "minecraft:magenta_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=true]", + "10347": "minecraft:magenta_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=false]", + "10348": "minecraft:magenta_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=true]", + "10349": "minecraft:magenta_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=false]", + "10350": "minecraft:magenta_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=true]", + "10351": "minecraft:magenta_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=false]", + "10352": "minecraft:magenta_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=true]", + "10353": "minecraft:magenta_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=false]", + "10354": "minecraft:magenta_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=true]", + "10355": "minecraft:magenta_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=false]", + "10356": "minecraft:magenta_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=true]", + "10357": "minecraft:magenta_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=false]", + "10358": "minecraft:magenta_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=true]", + "10359": "minecraft:magenta_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=false]", + "10360": "minecraft:magenta_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=true]", + "10361": "minecraft:magenta_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=false]", + "10362": "minecraft:magenta_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=true]", + "10363": "minecraft:magenta_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=false]", + "10364": "minecraft:magenta_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=true]", + "10365": "minecraft:magenta_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=false]", + "10366": "minecraft:magenta_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=true]", + "10367": "minecraft:magenta_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=false]", + "10368": "minecraft:magenta_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=true]", + "10369": "minecraft:magenta_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=false]", + "10370": "minecraft:magenta_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=true]", + "10371": "minecraft:magenta_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=false]", + "10372": "minecraft:magenta_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=true]", + "10373": "minecraft:magenta_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=false]", + "10374": "minecraft:magenta_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=true]", + "10375": "minecraft:magenta_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]", + "10376": "minecraft:void_air", + "10377": "minecraft:potted_cornflower", + "10378": "minecraft:white_concrete_powder", + "10379": "minecraft:black_concrete", + "10380": "minecraft:mossy_stone_brick_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "10381": "minecraft:mossy_stone_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "10382": "minecraft:mossy_stone_brick_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "10383": "minecraft:mossy_stone_brick_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "10384": "minecraft:mossy_stone_brick_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "10385": "minecraft:mossy_stone_brick_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "10386": "minecraft:mossy_stone_brick_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "10387": "minecraft:mossy_stone_brick_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "10388": "minecraft:mossy_stone_brick_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "10389": "minecraft:mossy_stone_brick_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "10390": "minecraft:mossy_stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "10391": "minecraft:mossy_stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "10392": "minecraft:mossy_stone_brick_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "10393": "minecraft:mossy_stone_brick_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "10394": "minecraft:mossy_stone_brick_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "10395": "minecraft:mossy_stone_brick_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "10396": "minecraft:mossy_stone_brick_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "10397": "minecraft:mossy_stone_brick_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "10398": "minecraft:mossy_stone_brick_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "10399": "minecraft:mossy_stone_brick_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "10400": "minecraft:mossy_stone_brick_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "10401": "minecraft:mossy_stone_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "10402": "minecraft:mossy_stone_brick_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "10403": "minecraft:mossy_stone_brick_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "10404": "minecraft:mossy_stone_brick_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "10405": "minecraft:mossy_stone_brick_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "10406": "minecraft:mossy_stone_brick_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "10407": "minecraft:mossy_stone_brick_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "10408": "minecraft:mossy_stone_brick_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "10409": "minecraft:mossy_stone_brick_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "10410": "minecraft:mossy_stone_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "10411": "minecraft:mossy_stone_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "10412": "minecraft:mossy_stone_brick_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "10413": "minecraft:mossy_stone_brick_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "10414": "minecraft:mossy_stone_brick_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "10415": "minecraft:mossy_stone_brick_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "10416": "minecraft:mossy_stone_brick_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "10417": "minecraft:mossy_stone_brick_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "10418": "minecraft:mossy_stone_brick_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "10419": "minecraft:mossy_stone_brick_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "10420": "minecraft:mossy_stone_brick_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "10421": "minecraft:mossy_stone_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "10422": "minecraft:mossy_stone_brick_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "10423": "minecraft:mossy_stone_brick_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "10424": "minecraft:mossy_stone_brick_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "10425": "minecraft:mossy_stone_brick_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "10426": "minecraft:mossy_stone_brick_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "10427": "minecraft:mossy_stone_brick_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "10428": "minecraft:mossy_stone_brick_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "10429": "minecraft:mossy_stone_brick_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "10430": "minecraft:mossy_stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "10431": "minecraft:mossy_stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "10432": "minecraft:mossy_stone_brick_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "10433": "minecraft:mossy_stone_brick_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "10434": "minecraft:mossy_stone_brick_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "10435": "minecraft:mossy_stone_brick_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "10436": "minecraft:mossy_stone_brick_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "10437": "minecraft:mossy_stone_brick_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "10438": "minecraft:mossy_stone_brick_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "10439": "minecraft:mossy_stone_brick_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "10440": "minecraft:mossy_stone_brick_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "10441": "minecraft:mossy_stone_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "10442": "minecraft:mossy_stone_brick_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "10443": "minecraft:mossy_stone_brick_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "10444": "minecraft:mossy_stone_brick_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "10445": "minecraft:mossy_stone_brick_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "10446": "minecraft:mossy_stone_brick_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "10447": "minecraft:mossy_stone_brick_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "10448": "minecraft:mossy_stone_brick_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "10449": "minecraft:mossy_stone_brick_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "10450": "minecraft:mossy_stone_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "10451": "minecraft:mossy_stone_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "10452": "minecraft:mossy_stone_brick_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "10453": "minecraft:mossy_stone_brick_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "10454": "minecraft:mossy_stone_brick_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "10455": "minecraft:mossy_stone_brick_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "10456": "minecraft:mossy_stone_brick_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "10457": "minecraft:mossy_stone_brick_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "10458": "minecraft:mossy_stone_brick_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "10459": "minecraft:mossy_stone_brick_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "10460": "minecraft:gold_ore", + "10461": "minecraft:iron_ore", + "10462": "minecraft:potted_lily_of_the_valley", + "10463": "minecraft:nether_gold_ore", + "10464": "minecraft:potted_white_tulip", + "10465": "minecraft:smooth_red_sandstone_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "10466": "minecraft:smooth_red_sandstone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "10467": "minecraft:smooth_red_sandstone_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "10468": "minecraft:smooth_red_sandstone_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "10469": "minecraft:smooth_red_sandstone_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "10470": "minecraft:smooth_red_sandstone_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "10471": "minecraft:smooth_red_sandstone_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "10472": "minecraft:smooth_red_sandstone_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "10473": "minecraft:smooth_red_sandstone_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "10474": "minecraft:smooth_red_sandstone_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "10475": "minecraft:smooth_red_sandstone_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "10476": "minecraft:smooth_red_sandstone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "10477": "minecraft:smooth_red_sandstone_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "10478": "minecraft:smooth_red_sandstone_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "10479": "minecraft:smooth_red_sandstone_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "10480": "minecraft:smooth_red_sandstone_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "10481": "minecraft:smooth_red_sandstone_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "10482": "minecraft:smooth_red_sandstone_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "10483": "minecraft:smooth_red_sandstone_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "10484": "minecraft:smooth_red_sandstone_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "10485": "minecraft:smooth_red_sandstone_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "10486": "minecraft:smooth_red_sandstone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "10487": "minecraft:smooth_red_sandstone_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "10488": "minecraft:smooth_red_sandstone_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "10489": "minecraft:smooth_red_sandstone_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "10490": "minecraft:smooth_red_sandstone_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "10491": "minecraft:smooth_red_sandstone_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "10492": "minecraft:smooth_red_sandstone_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "10493": "minecraft:smooth_red_sandstone_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "10494": "minecraft:smooth_red_sandstone_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "10495": "minecraft:smooth_red_sandstone_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "10496": "minecraft:smooth_red_sandstone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "10497": "minecraft:smooth_red_sandstone_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "10498": "minecraft:smooth_red_sandstone_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "10499": "minecraft:smooth_red_sandstone_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "10500": "minecraft:smooth_red_sandstone_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "10501": "minecraft:smooth_red_sandstone_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "10502": "minecraft:smooth_red_sandstone_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "10503": "minecraft:smooth_red_sandstone_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "10504": "minecraft:smooth_red_sandstone_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "10505": "minecraft:smooth_red_sandstone_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "10506": "minecraft:smooth_red_sandstone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "10507": "minecraft:smooth_red_sandstone_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "10508": "minecraft:smooth_red_sandstone_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "10509": "minecraft:smooth_red_sandstone_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "10510": "minecraft:smooth_red_sandstone_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "10511": "minecraft:smooth_red_sandstone_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "10512": "minecraft:smooth_red_sandstone_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "10513": "minecraft:smooth_red_sandstone_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "10514": "minecraft:smooth_red_sandstone_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "10515": "minecraft:smooth_red_sandstone_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "10516": "minecraft:smooth_red_sandstone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "10517": "minecraft:smooth_red_sandstone_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "10518": "minecraft:smooth_red_sandstone_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "10519": "minecraft:smooth_red_sandstone_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "10520": "minecraft:smooth_red_sandstone_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "10521": "minecraft:smooth_red_sandstone_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "10522": "minecraft:smooth_red_sandstone_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "10523": "minecraft:smooth_red_sandstone_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "10524": "minecraft:smooth_red_sandstone_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "10525": "minecraft:smooth_red_sandstone_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "10526": "minecraft:smooth_red_sandstone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "10527": "minecraft:smooth_red_sandstone_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "10528": "minecraft:smooth_red_sandstone_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "10529": "minecraft:smooth_red_sandstone_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "10530": "minecraft:smooth_red_sandstone_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "10531": "minecraft:smooth_red_sandstone_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "10532": "minecraft:smooth_red_sandstone_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "10533": "minecraft:smooth_red_sandstone_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "10534": "minecraft:smooth_red_sandstone_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "10535": "minecraft:smooth_red_sandstone_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "10536": "minecraft:smooth_red_sandstone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "10537": "minecraft:smooth_red_sandstone_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "10538": "minecraft:smooth_red_sandstone_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "10539": "minecraft:smooth_red_sandstone_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "10540": "minecraft:smooth_red_sandstone_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "10541": "minecraft:smooth_red_sandstone_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "10542": "minecraft:smooth_red_sandstone_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "10543": "minecraft:smooth_red_sandstone_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "10544": "minecraft:smooth_red_sandstone_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "10545": "minecraft:spruce_log[axis=x]", + "10546": "minecraft:spruce_log[axis=y]", + "10547": "minecraft:spruce_log[axis=z]", + "10548": "minecraft:potted_oxeye_daisy", + "10549": "minecraft:potted_bamboo", + "10550": "minecraft:polished_granite_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "10551": "minecraft:polished_granite_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "10552": "minecraft:polished_granite_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "10553": "minecraft:polished_granite_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "10554": "minecraft:polished_granite_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "10555": "minecraft:polished_granite_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "10556": "minecraft:polished_granite_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "10557": "minecraft:polished_granite_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "10558": "minecraft:polished_granite_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "10559": "minecraft:polished_granite_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "10560": "minecraft:polished_granite_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "10561": "minecraft:polished_granite_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "10562": "minecraft:polished_granite_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "10563": "minecraft:polished_granite_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "10564": "minecraft:polished_granite_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "10565": "minecraft:polished_granite_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "10566": "minecraft:polished_granite_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "10567": "minecraft:polished_granite_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "10568": "minecraft:polished_granite_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "10569": "minecraft:polished_granite_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "10570": "minecraft:polished_granite_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "10571": "minecraft:polished_granite_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "10572": "minecraft:polished_granite_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "10573": "minecraft:polished_granite_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "10574": "minecraft:polished_granite_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "10575": "minecraft:polished_granite_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "10576": "minecraft:polished_granite_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "10577": "minecraft:polished_granite_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "10578": "minecraft:polished_granite_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "10579": "minecraft:polished_granite_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "10580": "minecraft:polished_granite_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "10581": "minecraft:polished_granite_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "10582": "minecraft:polished_granite_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "10583": "minecraft:polished_granite_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "10584": "minecraft:polished_granite_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "10585": "minecraft:polished_granite_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "10586": "minecraft:polished_granite_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "10587": "minecraft:polished_granite_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "10588": "minecraft:polished_granite_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "10589": "minecraft:polished_granite_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "10590": "minecraft:polished_granite_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "10591": "minecraft:polished_granite_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "10592": "minecraft:polished_granite_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "10593": "minecraft:polished_granite_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "10594": "minecraft:polished_granite_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "10595": "minecraft:polished_granite_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "10596": "minecraft:polished_granite_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "10597": "minecraft:polished_granite_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "10598": "minecraft:polished_granite_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "10599": "minecraft:polished_granite_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "10600": "minecraft:polished_granite_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "10601": "minecraft:polished_granite_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "10602": "minecraft:polished_granite_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "10603": "minecraft:polished_granite_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "10604": "minecraft:polished_granite_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "10605": "minecraft:polished_granite_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "10606": "minecraft:polished_granite_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "10607": "minecraft:polished_granite_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "10608": "minecraft:polished_granite_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "10609": "minecraft:polished_granite_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "10610": "minecraft:polished_granite_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "10611": "minecraft:polished_granite_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "10612": "minecraft:polished_granite_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "10613": "minecraft:polished_granite_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "10614": "minecraft:polished_granite_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "10615": "minecraft:polished_granite_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "10616": "minecraft:polished_granite_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "10617": "minecraft:polished_granite_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "10618": "minecraft:polished_granite_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "10619": "minecraft:polished_granite_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "10620": "minecraft:polished_granite_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "10621": "minecraft:polished_granite_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "10622": "minecraft:polished_granite_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "10623": "minecraft:polished_granite_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "10624": "minecraft:polished_granite_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "10625": "minecraft:polished_granite_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "10626": "minecraft:polished_granite_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "10627": "minecraft:polished_granite_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "10628": "minecraft:polished_granite_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "10629": "minecraft:polished_granite_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "10630": "minecraft:bubble_column[drag=true]", + "10631": "minecraft:bubble_column[drag=false]", + "10632": "minecraft:cave_air", + "10633": "minecraft:potted_azure_bluet", + "10634": "minecraft:potted_red_tulip", + "10635": "minecraft:potted_orange_tulip", + "10636": "minecraft:potted_wither_rose", + "10637": "minecraft:jungle_wall_sign[facing=north,waterlogged=true]", + "10638": "minecraft:jungle_wall_sign[facing=north,waterlogged=false]", + "10639": "minecraft:jungle_wall_sign[facing=south,waterlogged=true]", + "10640": "minecraft:jungle_wall_sign[facing=south,waterlogged=false]", + "10641": "minecraft:jungle_wall_sign[facing=west,waterlogged=true]", + "10642": "minecraft:jungle_wall_sign[facing=west,waterlogged=false]", + "10643": "minecraft:jungle_wall_sign[facing=east,waterlogged=true]", + "10644": "minecraft:jungle_wall_sign[facing=east,waterlogged=false]", + "10645": "minecraft:red_sand", + "10646": "minecraft:crimson_fungus", + "10647": "minecraft:grass_path", + "10648": "minecraft:oak_door[facing=north,half=upper,hinge=left,open=true,powered=true]", + "10649": "minecraft:oak_door[facing=north,half=upper,hinge=left,open=true,powered=false]", + "10650": "minecraft:oak_door[facing=north,half=upper,hinge=left,open=false,powered=true]", + "10651": "minecraft:oak_door[facing=north,half=upper,hinge=left,open=false,powered=false]", + "10652": "minecraft:oak_door[facing=north,half=upper,hinge=right,open=true,powered=true]", + "10653": "minecraft:oak_door[facing=north,half=upper,hinge=right,open=true,powered=false]", + "10654": "minecraft:oak_door[facing=north,half=upper,hinge=right,open=false,powered=true]", + "10655": "minecraft:oak_door[facing=north,half=upper,hinge=right,open=false,powered=false]", + "10656": "minecraft:oak_door[facing=north,half=lower,hinge=left,open=true,powered=true]", + "10657": "minecraft:oak_door[facing=north,half=lower,hinge=left,open=true,powered=false]", + "10658": "minecraft:oak_door[facing=north,half=lower,hinge=left,open=false,powered=true]", + "10659": "minecraft:oak_door[facing=north,half=lower,hinge=left,open=false,powered=false]", + "10660": "minecraft:oak_door[facing=north,half=lower,hinge=right,open=true,powered=true]", + "10661": "minecraft:oak_door[facing=north,half=lower,hinge=right,open=true,powered=false]", + "10662": "minecraft:oak_door[facing=north,half=lower,hinge=right,open=false,powered=true]", + "10663": "minecraft:oak_door[facing=north,half=lower,hinge=right,open=false,powered=false]", + "10664": "minecraft:oak_door[facing=south,half=upper,hinge=left,open=true,powered=true]", + "10665": "minecraft:oak_door[facing=south,half=upper,hinge=left,open=true,powered=false]", + "10666": "minecraft:oak_door[facing=south,half=upper,hinge=left,open=false,powered=true]", + "10667": "minecraft:oak_door[facing=south,half=upper,hinge=left,open=false,powered=false]", + "10668": "minecraft:oak_door[facing=south,half=upper,hinge=right,open=true,powered=true]", + "10669": "minecraft:oak_door[facing=south,half=upper,hinge=right,open=true,powered=false]", + "10670": "minecraft:oak_door[facing=south,half=upper,hinge=right,open=false,powered=true]", + "10671": "minecraft:oak_door[facing=south,half=upper,hinge=right,open=false,powered=false]", + "10672": "minecraft:oak_door[facing=south,half=lower,hinge=left,open=true,powered=true]", + "10673": "minecraft:oak_door[facing=south,half=lower,hinge=left,open=true,powered=false]", + "10674": "minecraft:oak_door[facing=south,half=lower,hinge=left,open=false,powered=true]", + "10675": "minecraft:oak_door[facing=south,half=lower,hinge=left,open=false,powered=false]", + "10676": "minecraft:oak_door[facing=south,half=lower,hinge=right,open=true,powered=true]", + "10677": "minecraft:oak_door[facing=south,half=lower,hinge=right,open=true,powered=false]", + "10678": "minecraft:oak_door[facing=south,half=lower,hinge=right,open=false,powered=true]", + "10679": "minecraft:oak_door[facing=south,half=lower,hinge=right,open=false,powered=false]", + "10680": "minecraft:oak_door[facing=west,half=upper,hinge=left,open=true,powered=true]", + "10681": "minecraft:oak_door[facing=west,half=upper,hinge=left,open=true,powered=false]", + "10682": "minecraft:oak_door[facing=west,half=upper,hinge=left,open=false,powered=true]", + "10683": "minecraft:oak_door[facing=west,half=upper,hinge=left,open=false,powered=false]", + "10684": "minecraft:oak_door[facing=west,half=upper,hinge=right,open=true,powered=true]", + "10685": "minecraft:oak_door[facing=west,half=upper,hinge=right,open=true,powered=false]", + "10686": "minecraft:oak_door[facing=west,half=upper,hinge=right,open=false,powered=true]", + "10687": "minecraft:oak_door[facing=west,half=upper,hinge=right,open=false,powered=false]", + "10688": "minecraft:oak_door[facing=west,half=lower,hinge=left,open=true,powered=true]", + "10689": "minecraft:oak_door[facing=west,half=lower,hinge=left,open=true,powered=false]", + "10690": "minecraft:oak_door[facing=west,half=lower,hinge=left,open=false,powered=true]", + "10691": "minecraft:oak_door[facing=west,half=lower,hinge=left,open=false,powered=false]", + "10692": "minecraft:oak_door[facing=west,half=lower,hinge=right,open=true,powered=true]", + "10693": "minecraft:oak_door[facing=west,half=lower,hinge=right,open=true,powered=false]", + "10694": "minecraft:oak_door[facing=west,half=lower,hinge=right,open=false,powered=true]", + "10695": "minecraft:oak_door[facing=west,half=lower,hinge=right,open=false,powered=false]", + "10696": "minecraft:oak_door[facing=east,half=upper,hinge=left,open=true,powered=true]", + "10697": "minecraft:oak_door[facing=east,half=upper,hinge=left,open=true,powered=false]", + "10698": "minecraft:oak_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "10699": "minecraft:oak_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "10700": "minecraft:oak_door[facing=east,half=upper,hinge=right,open=true,powered=true]", + "10701": "minecraft:oak_door[facing=east,half=upper,hinge=right,open=true,powered=false]", + "10702": "minecraft:oak_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "10703": "minecraft:oak_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "10704": "minecraft:oak_door[facing=east,half=lower,hinge=left,open=true,powered=true]", + "10705": "minecraft:oak_door[facing=east,half=lower,hinge=left,open=true,powered=false]", + "10706": "minecraft:oak_door[facing=east,half=lower,hinge=left,open=false,powered=true]", + "10707": "minecraft:oak_door[facing=east,half=lower,hinge=left,open=false,powered=false]", + "10708": "minecraft:oak_door[facing=east,half=lower,hinge=right,open=true,powered=true]", + "10709": "minecraft:oak_door[facing=east,half=lower,hinge=right,open=true,powered=false]", + "10710": "minecraft:oak_door[facing=east,half=lower,hinge=right,open=false,powered=true]", + "10711": "minecraft:oak_door[facing=east,half=lower,hinge=right,open=false,powered=false]", + "10712": "minecraft:birch_log[axis=x]", + "10713": "minecraft:birch_log[axis=y]", + "10714": "minecraft:birch_log[axis=z]", + "10715": "minecraft:bamboo_sapling", + "10716": "minecraft:lime_concrete_powder", + "10717": "minecraft:end_rod[facing=north]", + "10718": "minecraft:end_rod[facing=east]", + "10719": "minecraft:end_rod[facing=south]", + "10720": "minecraft:end_rod[facing=west]", + "10721": "minecraft:end_rod[facing=up]", + "10722": "minecraft:end_rod[facing=down]", + "10723": "minecraft:green_concrete", + "10724": "minecraft:orange_wall_banner[facing=north]", + "10725": "minecraft:orange_wall_banner[facing=south]", + "10726": "minecraft:orange_wall_banner[facing=west]", + "10727": "minecraft:orange_wall_banner[facing=east]", + "10728": "minecraft:black_banner[rotation=0]", + "10729": "minecraft:black_banner[rotation=1]", + "10730": "minecraft:black_banner[rotation=2]", + "10731": "minecraft:black_banner[rotation=3]", + "10732": "minecraft:black_banner[rotation=4]", + "10733": "minecraft:black_banner[rotation=5]", + "10734": "minecraft:black_banner[rotation=6]", + "10735": "minecraft:black_banner[rotation=7]", + "10736": "minecraft:black_banner[rotation=8]", + "10737": "minecraft:black_banner[rotation=9]", + "10738": "minecraft:black_banner[rotation=10]", + "10739": "minecraft:black_banner[rotation=11]", + "10740": "minecraft:black_banner[rotation=12]", + "10741": "minecraft:black_banner[rotation=13]", + "10742": "minecraft:black_banner[rotation=14]", + "10743": "minecraft:black_banner[rotation=15]", + "10744": "minecraft:cobweb", + "10745": "minecraft:light_gray_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=true]", + "10746": "minecraft:light_gray_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=false]", + "10747": "minecraft:light_gray_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=true]", + "10748": "minecraft:light_gray_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=false]", + "10749": "minecraft:light_gray_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=true]", + "10750": "minecraft:light_gray_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=false]", + "10751": "minecraft:light_gray_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=true]", + "10752": "minecraft:light_gray_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=false]", + "10753": "minecraft:light_gray_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=true]", + "10754": "minecraft:light_gray_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=false]", + "10755": "minecraft:light_gray_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=true]", + "10756": "minecraft:light_gray_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=false]", + "10757": "minecraft:light_gray_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=true]", + "10758": "minecraft:light_gray_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=false]", + "10759": "minecraft:light_gray_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=true]", + "10760": "minecraft:light_gray_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=false]", + "10761": "minecraft:light_gray_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=true]", + "10762": "minecraft:light_gray_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=false]", + "10763": "minecraft:light_gray_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=true]", + "10764": "minecraft:light_gray_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=false]", + "10765": "minecraft:light_gray_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=true]", + "10766": "minecraft:light_gray_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=false]", + "10767": "minecraft:light_gray_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=true]", + "10768": "minecraft:light_gray_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=false]", + "10769": "minecraft:light_gray_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=true]", + "10770": "minecraft:light_gray_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=false]", + "10771": "minecraft:light_gray_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=true]", + "10772": "minecraft:light_gray_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=false]", + "10773": "minecraft:light_gray_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=true]", + "10774": "minecraft:light_gray_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=false]", + "10775": "minecraft:light_gray_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=true]", + "10776": "minecraft:light_gray_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]", + "10777": "minecraft:infested_cobblestone", + "10778": "minecraft:white_wool", + "10779": "minecraft:fern", + "10780": "minecraft:dark_oak_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]", + "10781": "minecraft:dark_oak_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]", + "10782": "minecraft:dark_oak_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true]", + "10783": "minecraft:dark_oak_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]", + "10784": "minecraft:dark_oak_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]", + "10785": "minecraft:dark_oak_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]", + "10786": "minecraft:dark_oak_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true]", + "10787": "minecraft:dark_oak_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false]", + "10788": "minecraft:dark_oak_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]", + "10789": "minecraft:dark_oak_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]", + "10790": "minecraft:dark_oak_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true]", + "10791": "minecraft:dark_oak_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false]", + "10792": "minecraft:dark_oak_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]", + "10793": "minecraft:dark_oak_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]", + "10794": "minecraft:dark_oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true]", + "10795": "minecraft:dark_oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]", + "10796": "minecraft:dark_oak_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]", + "10797": "minecraft:dark_oak_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]", + "10798": "minecraft:dark_oak_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true]", + "10799": "minecraft:dark_oak_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false]", + "10800": "minecraft:dark_oak_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]", + "10801": "minecraft:dark_oak_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]", + "10802": "minecraft:dark_oak_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true]", + "10803": "minecraft:dark_oak_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false]", + "10804": "minecraft:dark_oak_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]", + "10805": "minecraft:dark_oak_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]", + "10806": "minecraft:dark_oak_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true]", + "10807": "minecraft:dark_oak_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false]", + "10808": "minecraft:dark_oak_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]", + "10809": "minecraft:dark_oak_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]", + "10810": "minecraft:dark_oak_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true]", + "10811": "minecraft:dark_oak_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false]", + "10812": "minecraft:dark_oak_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]", + "10813": "minecraft:dark_oak_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]", + "10814": "minecraft:dark_oak_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true]", + "10815": "minecraft:dark_oak_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false]", + "10816": "minecraft:dark_oak_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]", + "10817": "minecraft:dark_oak_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]", + "10818": "minecraft:dark_oak_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true]", + "10819": "minecraft:dark_oak_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false]", + "10820": "minecraft:dark_oak_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]", + "10821": "minecraft:dark_oak_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]", + "10822": "minecraft:dark_oak_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true]", + "10823": "minecraft:dark_oak_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false]", + "10824": "minecraft:dark_oak_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]", + "10825": "minecraft:dark_oak_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]", + "10826": "minecraft:dark_oak_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true]", + "10827": "minecraft:dark_oak_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false]", + "10828": "minecraft:dark_oak_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]", + "10829": "minecraft:dark_oak_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]", + "10830": "minecraft:dark_oak_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true]", + "10831": "minecraft:dark_oak_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false]", + "10832": "minecraft:dark_oak_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]", + "10833": "minecraft:dark_oak_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]", + "10834": "minecraft:dark_oak_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true]", + "10835": "minecraft:dark_oak_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false]", + "10836": "minecraft:dark_oak_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]", + "10837": "minecraft:dark_oak_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]", + "10838": "minecraft:dark_oak_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true]", + "10839": "minecraft:dark_oak_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false]", + "10840": "minecraft:dark_oak_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]", + "10841": "minecraft:dark_oak_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]", + "10842": "minecraft:dark_oak_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true]", + "10843": "minecraft:dark_oak_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false]", + "10844": "minecraft:jungle_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]", + "10845": "minecraft:jungle_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]", + "10846": "minecraft:jungle_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true]", + "10847": "minecraft:jungle_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]", + "10848": "minecraft:jungle_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]", + "10849": "minecraft:jungle_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]", + "10850": "minecraft:jungle_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true]", + "10851": "minecraft:jungle_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false]", + "10852": "minecraft:jungle_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]", + "10853": "minecraft:jungle_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]", + "10854": "minecraft:jungle_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true]", + "10855": "minecraft:jungle_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false]", + "10856": "minecraft:jungle_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]", + "10857": "minecraft:jungle_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]", + "10858": "minecraft:jungle_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true]", + "10859": "minecraft:jungle_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]", + "10860": "minecraft:jungle_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]", + "10861": "minecraft:jungle_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]", + "10862": "minecraft:jungle_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true]", + "10863": "minecraft:jungle_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false]", + "10864": "minecraft:jungle_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]", + "10865": "minecraft:jungle_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]", + "10866": "minecraft:jungle_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true]", + "10867": "minecraft:jungle_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false]", + "10868": "minecraft:jungle_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]", + "10869": "minecraft:jungle_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]", + "10870": "minecraft:jungle_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true]", + "10871": "minecraft:jungle_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false]", + "10872": "minecraft:jungle_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]", + "10873": "minecraft:jungle_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]", + "10874": "minecraft:jungle_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true]", + "10875": "minecraft:jungle_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false]", + "10876": "minecraft:jungle_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]", + "10877": "minecraft:jungle_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]", + "10878": "minecraft:jungle_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true]", + "10879": "minecraft:jungle_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false]", + "10880": "minecraft:jungle_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]", + "10881": "minecraft:jungle_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]", + "10882": "minecraft:jungle_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true]", + "10883": "minecraft:jungle_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false]", + "10884": "minecraft:jungle_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]", + "10885": "minecraft:jungle_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]", + "10886": "minecraft:jungle_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true]", + "10887": "minecraft:jungle_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false]", + "10888": "minecraft:jungle_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]", + "10889": "minecraft:jungle_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]", + "10890": "minecraft:jungle_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true]", + "10891": "minecraft:jungle_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false]", + "10892": "minecraft:jungle_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]", + "10893": "minecraft:jungle_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]", + "10894": "minecraft:jungle_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true]", + "10895": "minecraft:jungle_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false]", + "10896": "minecraft:jungle_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]", + "10897": "minecraft:jungle_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]", + "10898": "minecraft:jungle_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true]", + "10899": "minecraft:jungle_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false]", + "10900": "minecraft:jungle_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]", + "10901": "minecraft:jungle_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]", + "10902": "minecraft:jungle_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true]", + "10903": "minecraft:jungle_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false]", + "10904": "minecraft:jungle_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]", + "10905": "minecraft:jungle_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]", + "10906": "minecraft:jungle_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true]", + "10907": "minecraft:jungle_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false]", + "10908": "minecraft:warped_nylium", + "10909": "minecraft:infested_mossy_stone_bricks", + "10910": "minecraft:warped_wart_block", + "10911": "minecraft:stripped_crimson_hyphae[axis=x]", + "10912": "minecraft:stripped_crimson_hyphae[axis=y]", + "10913": "minecraft:stripped_crimson_hyphae[axis=z]", + "10914": "minecraft:white_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=true]", + "10915": "minecraft:white_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=false]", + "10916": "minecraft:white_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=true]", + "10917": "minecraft:white_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=false]", + "10918": "minecraft:white_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=true]", + "10919": "minecraft:white_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=false]", + "10920": "minecraft:white_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=true]", + "10921": "minecraft:white_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=false]", + "10922": "minecraft:white_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=true]", + "10923": "minecraft:white_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=false]", + "10924": "minecraft:white_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=true]", + "10925": "minecraft:white_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=false]", + "10926": "minecraft:white_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=true]", + "10927": "minecraft:white_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=false]", + "10928": "minecraft:white_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=true]", + "10929": "minecraft:white_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=false]", + "10930": "minecraft:white_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=true]", + "10931": "minecraft:white_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=false]", + "10932": "minecraft:white_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=true]", + "10933": "minecraft:white_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=false]", + "10934": "minecraft:white_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=true]", + "10935": "minecraft:white_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=false]", + "10936": "minecraft:white_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=true]", + "10937": "minecraft:white_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=false]", + "10938": "minecraft:white_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=true]", + "10939": "minecraft:white_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=false]", + "10940": "minecraft:white_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=true]", + "10941": "minecraft:white_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=false]", + "10942": "minecraft:white_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=true]", + "10943": "minecraft:white_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=false]", + "10944": "minecraft:white_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=true]", + "10945": "minecraft:white_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]", + "10946": "minecraft:gray_concrete_powder", + "10947": "minecraft:magenta_wool", + "10948": "minecraft:red_terracotta", + "10949": "minecraft:birch_wall_sign[facing=north,waterlogged=true]", + "10950": "minecraft:birch_wall_sign[facing=north,waterlogged=false]", + "10951": "minecraft:birch_wall_sign[facing=south,waterlogged=true]", + "10952": "minecraft:birch_wall_sign[facing=south,waterlogged=false]", + "10953": "minecraft:birch_wall_sign[facing=west,waterlogged=true]", + "10954": "minecraft:birch_wall_sign[facing=west,waterlogged=false]", + "10955": "minecraft:birch_wall_sign[facing=east,waterlogged=true]", + "10956": "minecraft:birch_wall_sign[facing=east,waterlogged=false]", + "10957": "minecraft:lever[face=floor,facing=north,powered=true]", + "10958": "minecraft:lever[face=floor,facing=north,powered=false]", + "10959": "minecraft:lever[face=floor,facing=south,powered=true]", + "10960": "minecraft:lever[face=floor,facing=south,powered=false]", + "10961": "minecraft:lever[face=floor,facing=west,powered=true]", + "10962": "minecraft:lever[face=floor,facing=west,powered=false]", + "10963": "minecraft:lever[face=floor,facing=east,powered=true]", + "10964": "minecraft:lever[face=floor,facing=east,powered=false]", + "10965": "minecraft:lever[face=wall,facing=north,powered=true]", + "10966": "minecraft:lever[face=wall,facing=north,powered=false]", + "10967": "minecraft:lever[face=wall,facing=south,powered=true]", + "10968": "minecraft:lever[face=wall,facing=south,powered=false]", + "10969": "minecraft:lever[face=wall,facing=west,powered=true]", + "10970": "minecraft:lever[face=wall,facing=west,powered=false]", + "10971": "minecraft:lever[face=wall,facing=east,powered=true]", + "10972": "minecraft:lever[face=wall,facing=east,powered=false]", + "10973": "minecraft:lever[face=ceiling,facing=north,powered=true]", + "10974": "minecraft:lever[face=ceiling,facing=north,powered=false]", + "10975": "minecraft:lever[face=ceiling,facing=south,powered=true]", + "10976": "minecraft:lever[face=ceiling,facing=south,powered=false]", + "10977": "minecraft:lever[face=ceiling,facing=west,powered=true]", + "10978": "minecraft:lever[face=ceiling,facing=west,powered=false]", + "10979": "minecraft:lever[face=ceiling,facing=east,powered=true]", + "10980": "minecraft:lever[face=ceiling,facing=east,powered=false]", + "10981": "minecraft:repeating_command_block[conditional=true,facing=north]", + "10982": "minecraft:repeating_command_block[conditional=true,facing=east]", + "10983": "minecraft:repeating_command_block[conditional=true,facing=south]", + "10984": "minecraft:repeating_command_block[conditional=true,facing=west]", + "10985": "minecraft:repeating_command_block[conditional=true,facing=up]", + "10986": "minecraft:repeating_command_block[conditional=true,facing=down]", + "10987": "minecraft:repeating_command_block[conditional=false,facing=north]", + "10988": "minecraft:repeating_command_block[conditional=false,facing=east]", + "10989": "minecraft:repeating_command_block[conditional=false,facing=south]", + "10990": "minecraft:repeating_command_block[conditional=false,facing=west]", + "10991": "minecraft:repeating_command_block[conditional=false,facing=up]", + "10992": "minecraft:repeating_command_block[conditional=false,facing=down]", + "10993": "minecraft:end_stone_bricks", + "10994": "minecraft:rail[shape=north_south]", + "10995": "minecraft:rail[shape=east_west]", + "10996": "minecraft:rail[shape=ascending_east]", + "10997": "minecraft:rail[shape=ascending_west]", + "10998": "minecraft:rail[shape=ascending_north]", + "10999": "minecraft:rail[shape=ascending_south]", + "11000": "minecraft:rail[shape=south_east]", + "11001": "minecraft:rail[shape=south_west]", + "11002": "minecraft:rail[shape=north_west]", + "11003": "minecraft:rail[shape=north_east]", + "11004": "minecraft:acacia_door[facing=north,half=upper,hinge=left,open=true,powered=true]", + "11005": "minecraft:acacia_door[facing=north,half=upper,hinge=left,open=true,powered=false]", + "11006": "minecraft:acacia_door[facing=north,half=upper,hinge=left,open=false,powered=true]", + "11007": "minecraft:acacia_door[facing=north,half=upper,hinge=left,open=false,powered=false]", + "11008": "minecraft:acacia_door[facing=north,half=upper,hinge=right,open=true,powered=true]", + "11009": "minecraft:acacia_door[facing=north,half=upper,hinge=right,open=true,powered=false]", + "11010": "minecraft:acacia_door[facing=north,half=upper,hinge=right,open=false,powered=true]", + "11011": "minecraft:acacia_door[facing=north,half=upper,hinge=right,open=false,powered=false]", + "11012": "minecraft:acacia_door[facing=north,half=lower,hinge=left,open=true,powered=true]", + "11013": "minecraft:acacia_door[facing=north,half=lower,hinge=left,open=true,powered=false]", + "11014": "minecraft:acacia_door[facing=north,half=lower,hinge=left,open=false,powered=true]", + "11015": "minecraft:acacia_door[facing=north,half=lower,hinge=left,open=false,powered=false]", + "11016": "minecraft:acacia_door[facing=north,half=lower,hinge=right,open=true,powered=true]", + "11017": "minecraft:acacia_door[facing=north,half=lower,hinge=right,open=true,powered=false]", + "11018": "minecraft:acacia_door[facing=north,half=lower,hinge=right,open=false,powered=true]", + "11019": "minecraft:acacia_door[facing=north,half=lower,hinge=right,open=false,powered=false]", + "11020": "minecraft:acacia_door[facing=south,half=upper,hinge=left,open=true,powered=true]", + "11021": "minecraft:acacia_door[facing=south,half=upper,hinge=left,open=true,powered=false]", + "11022": "minecraft:acacia_door[facing=south,half=upper,hinge=left,open=false,powered=true]", + "11023": "minecraft:acacia_door[facing=south,half=upper,hinge=left,open=false,powered=false]", + "11024": "minecraft:acacia_door[facing=south,half=upper,hinge=right,open=true,powered=true]", + "11025": "minecraft:acacia_door[facing=south,half=upper,hinge=right,open=true,powered=false]", + "11026": "minecraft:acacia_door[facing=south,half=upper,hinge=right,open=false,powered=true]", + "11027": "minecraft:acacia_door[facing=south,half=upper,hinge=right,open=false,powered=false]", + "11028": "minecraft:acacia_door[facing=south,half=lower,hinge=left,open=true,powered=true]", + "11029": "minecraft:acacia_door[facing=south,half=lower,hinge=left,open=true,powered=false]", + "11030": "minecraft:acacia_door[facing=south,half=lower,hinge=left,open=false,powered=true]", + "11031": "minecraft:acacia_door[facing=south,half=lower,hinge=left,open=false,powered=false]", + "11032": "minecraft:acacia_door[facing=south,half=lower,hinge=right,open=true,powered=true]", + "11033": "minecraft:acacia_door[facing=south,half=lower,hinge=right,open=true,powered=false]", + "11034": "minecraft:acacia_door[facing=south,half=lower,hinge=right,open=false,powered=true]", + "11035": "minecraft:acacia_door[facing=south,half=lower,hinge=right,open=false,powered=false]", + "11036": "minecraft:acacia_door[facing=west,half=upper,hinge=left,open=true,powered=true]", + "11037": "minecraft:acacia_door[facing=west,half=upper,hinge=left,open=true,powered=false]", + "11038": "minecraft:acacia_door[facing=west,half=upper,hinge=left,open=false,powered=true]", + "11039": "minecraft:acacia_door[facing=west,half=upper,hinge=left,open=false,powered=false]", + "11040": "minecraft:acacia_door[facing=west,half=upper,hinge=right,open=true,powered=true]", + "11041": "minecraft:acacia_door[facing=west,half=upper,hinge=right,open=true,powered=false]", + "11042": "minecraft:acacia_door[facing=west,half=upper,hinge=right,open=false,powered=true]", + "11043": "minecraft:acacia_door[facing=west,half=upper,hinge=right,open=false,powered=false]", + "11044": "minecraft:acacia_door[facing=west,half=lower,hinge=left,open=true,powered=true]", + "11045": "minecraft:acacia_door[facing=west,half=lower,hinge=left,open=true,powered=false]", + "11046": "minecraft:acacia_door[facing=west,half=lower,hinge=left,open=false,powered=true]", + "11047": "minecraft:acacia_door[facing=west,half=lower,hinge=left,open=false,powered=false]", + "11048": "minecraft:acacia_door[facing=west,half=lower,hinge=right,open=true,powered=true]", + "11049": "minecraft:acacia_door[facing=west,half=lower,hinge=right,open=true,powered=false]", + "11050": "minecraft:acacia_door[facing=west,half=lower,hinge=right,open=false,powered=true]", + "11051": "minecraft:acacia_door[facing=west,half=lower,hinge=right,open=false,powered=false]", + "11052": "minecraft:acacia_door[facing=east,half=upper,hinge=left,open=true,powered=true]", + "11053": "minecraft:acacia_door[facing=east,half=upper,hinge=left,open=true,powered=false]", + "11054": "minecraft:acacia_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "11055": "minecraft:acacia_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "11056": "minecraft:acacia_door[facing=east,half=upper,hinge=right,open=true,powered=true]", + "11057": "minecraft:acacia_door[facing=east,half=upper,hinge=right,open=true,powered=false]", + "11058": "minecraft:acacia_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "11059": "minecraft:acacia_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "11060": "minecraft:acacia_door[facing=east,half=lower,hinge=left,open=true,powered=true]", + "11061": "minecraft:acacia_door[facing=east,half=lower,hinge=left,open=true,powered=false]", + "11062": "minecraft:acacia_door[facing=east,half=lower,hinge=left,open=false,powered=true]", + "11063": "minecraft:acacia_door[facing=east,half=lower,hinge=left,open=false,powered=false]", + "11064": "minecraft:acacia_door[facing=east,half=lower,hinge=right,open=true,powered=true]", + "11065": "minecraft:acacia_door[facing=east,half=lower,hinge=right,open=true,powered=false]", + "11066": "minecraft:acacia_door[facing=east,half=lower,hinge=right,open=false,powered=true]", + "11067": "minecraft:acacia_door[facing=east,half=lower,hinge=right,open=false,powered=false]", + "11068": "minecraft:detector_rail[powered=true,shape=north_south]", + "11069": "minecraft:detector_rail[powered=true,shape=east_west]", + "11070": "minecraft:detector_rail[powered=true,shape=ascending_east]", + "11071": "minecraft:detector_rail[powered=true,shape=ascending_west]", + "11072": "minecraft:detector_rail[powered=true,shape=ascending_north]", + "11073": "minecraft:detector_rail[powered=true,shape=ascending_south]", + "11074": "minecraft:detector_rail[powered=false,shape=north_south]", + "11075": "minecraft:detector_rail[powered=false,shape=east_west]", + "11076": "minecraft:detector_rail[powered=false,shape=ascending_east]", + "11077": "minecraft:detector_rail[powered=false,shape=ascending_west]", + "11078": "minecraft:detector_rail[powered=false,shape=ascending_north]", + "11079": "minecraft:detector_rail[powered=false,shape=ascending_south]", + "11080": "minecraft:jungle_sign[rotation=0,waterlogged=true]", + "11081": "minecraft:jungle_sign[rotation=0,waterlogged=false]", + "11082": "minecraft:jungle_sign[rotation=1,waterlogged=true]", + "11083": "minecraft:jungle_sign[rotation=1,waterlogged=false]", + "11084": "minecraft:jungle_sign[rotation=2,waterlogged=true]", + "11085": "minecraft:jungle_sign[rotation=2,waterlogged=false]", + "11086": "minecraft:jungle_sign[rotation=3,waterlogged=true]", + "11087": "minecraft:jungle_sign[rotation=3,waterlogged=false]", + "11088": "minecraft:jungle_sign[rotation=4,waterlogged=true]", + "11089": "minecraft:jungle_sign[rotation=4,waterlogged=false]", + "11090": "minecraft:jungle_sign[rotation=5,waterlogged=true]", + "11091": "minecraft:jungle_sign[rotation=5,waterlogged=false]", + "11092": "minecraft:jungle_sign[rotation=6,waterlogged=true]", + "11093": "minecraft:jungle_sign[rotation=6,waterlogged=false]", + "11094": "minecraft:jungle_sign[rotation=7,waterlogged=true]", + "11095": "minecraft:jungle_sign[rotation=7,waterlogged=false]", + "11096": "minecraft:jungle_sign[rotation=8,waterlogged=true]", + "11097": "minecraft:jungle_sign[rotation=8,waterlogged=false]", + "11098": "minecraft:jungle_sign[rotation=9,waterlogged=true]", + "11099": "minecraft:jungle_sign[rotation=9,waterlogged=false]", + "11100": "minecraft:jungle_sign[rotation=10,waterlogged=true]", + "11101": "minecraft:jungle_sign[rotation=10,waterlogged=false]", + "11102": "minecraft:jungle_sign[rotation=11,waterlogged=true]", + "11103": "minecraft:jungle_sign[rotation=11,waterlogged=false]", + "11104": "minecraft:jungle_sign[rotation=12,waterlogged=true]", + "11105": "minecraft:jungle_sign[rotation=12,waterlogged=false]", + "11106": "minecraft:jungle_sign[rotation=13,waterlogged=true]", + "11107": "minecraft:jungle_sign[rotation=13,waterlogged=false]", + "11108": "minecraft:jungle_sign[rotation=14,waterlogged=true]", + "11109": "minecraft:jungle_sign[rotation=14,waterlogged=false]", + "11110": "minecraft:jungle_sign[rotation=15,waterlogged=true]", + "11111": "minecraft:jungle_sign[rotation=15,waterlogged=false]", + "11112": "minecraft:chorus_flower[age=0]", + "11113": "minecraft:chorus_flower[age=1]", + "11114": "minecraft:chorus_flower[age=2]", + "11115": "minecraft:chorus_flower[age=3]", + "11116": "minecraft:chorus_flower[age=4]", + "11117": "minecraft:chorus_flower[age=5]", + "11118": "minecraft:green_banner[rotation=0]", + "11119": "minecraft:green_banner[rotation=1]", + "11120": "minecraft:green_banner[rotation=2]", + "11121": "minecraft:green_banner[rotation=3]", + "11122": "minecraft:green_banner[rotation=4]", + "11123": "minecraft:green_banner[rotation=5]", + "11124": "minecraft:green_banner[rotation=6]", + "11125": "minecraft:green_banner[rotation=7]", + "11126": "minecraft:green_banner[rotation=8]", + "11127": "minecraft:green_banner[rotation=9]", + "11128": "minecraft:green_banner[rotation=10]", + "11129": "minecraft:green_banner[rotation=11]", + "11130": "minecraft:green_banner[rotation=12]", + "11131": "minecraft:green_banner[rotation=13]", + "11132": "minecraft:green_banner[rotation=14]", + "11133": "minecraft:green_banner[rotation=15]", + "11134": "minecraft:cyan_banner[rotation=0]", + "11135": "minecraft:cyan_banner[rotation=1]", + "11136": "minecraft:cyan_banner[rotation=2]", + "11137": "minecraft:cyan_banner[rotation=3]", + "11138": "minecraft:cyan_banner[rotation=4]", + "11139": "minecraft:cyan_banner[rotation=5]", + "11140": "minecraft:cyan_banner[rotation=6]", + "11141": "minecraft:cyan_banner[rotation=7]", + "11142": "minecraft:cyan_banner[rotation=8]", + "11143": "minecraft:cyan_banner[rotation=9]", + "11144": "minecraft:cyan_banner[rotation=10]", + "11145": "minecraft:cyan_banner[rotation=11]", + "11146": "minecraft:cyan_banner[rotation=12]", + "11147": "minecraft:cyan_banner[rotation=13]", + "11148": "minecraft:cyan_banner[rotation=14]", + "11149": "minecraft:cyan_banner[rotation=15]", + "11150": "minecraft:gray_banner[rotation=0]", + "11151": "minecraft:gray_banner[rotation=1]", + "11152": "minecraft:gray_banner[rotation=2]", + "11153": "minecraft:gray_banner[rotation=3]", + "11154": "minecraft:gray_banner[rotation=4]", + "11155": "minecraft:gray_banner[rotation=5]", + "11156": "minecraft:gray_banner[rotation=6]", + "11157": "minecraft:gray_banner[rotation=7]", + "11158": "minecraft:gray_banner[rotation=8]", + "11159": "minecraft:gray_banner[rotation=9]", + "11160": "minecraft:gray_banner[rotation=10]", + "11161": "minecraft:gray_banner[rotation=11]", + "11162": "minecraft:gray_banner[rotation=12]", + "11163": "minecraft:gray_banner[rotation=13]", + "11164": "minecraft:gray_banner[rotation=14]", + "11165": "minecraft:gray_banner[rotation=15]", + "11166": "minecraft:lime_banner[rotation=0]", + "11167": "minecraft:lime_banner[rotation=1]", + "11168": "minecraft:lime_banner[rotation=2]", + "11169": "minecraft:lime_banner[rotation=3]", + "11170": "minecraft:lime_banner[rotation=4]", + "11171": "minecraft:lime_banner[rotation=5]", + "11172": "minecraft:lime_banner[rotation=6]", + "11173": "minecraft:lime_banner[rotation=7]", + "11174": "minecraft:lime_banner[rotation=8]", + "11175": "minecraft:lime_banner[rotation=9]", + "11176": "minecraft:lime_banner[rotation=10]", + "11177": "minecraft:lime_banner[rotation=11]", + "11178": "minecraft:lime_banner[rotation=12]", + "11179": "minecraft:lime_banner[rotation=13]", + "11180": "minecraft:lime_banner[rotation=14]", + "11181": "minecraft:lime_banner[rotation=15]", + "11182": "minecraft:frosted_ice[age=0]", + "11183": "minecraft:frosted_ice[age=1]", + "11184": "minecraft:frosted_ice[age=2]", + "11185": "minecraft:frosted_ice[age=3]", + "11186": "minecraft:brown_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=true]", + "11187": "minecraft:brown_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=false]", + "11188": "minecraft:brown_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=true]", + "11189": "minecraft:brown_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=false]", + "11190": "minecraft:brown_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=true]", + "11191": "minecraft:brown_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=false]", + "11192": "minecraft:brown_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=true]", + "11193": "minecraft:brown_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=false]", + "11194": "minecraft:brown_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=true]", + "11195": "minecraft:brown_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=false]", + "11196": "minecraft:brown_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=true]", + "11197": "minecraft:brown_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=false]", + "11198": "minecraft:brown_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=true]", + "11199": "minecraft:brown_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=false]", + "11200": "minecraft:brown_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=true]", + "11201": "minecraft:brown_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=false]", + "11202": "minecraft:brown_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=true]", + "11203": "minecraft:brown_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=false]", + "11204": "minecraft:brown_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=true]", + "11205": "minecraft:brown_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=false]", + "11206": "minecraft:brown_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=true]", + "11207": "minecraft:brown_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=false]", + "11208": "minecraft:brown_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=true]", + "11209": "minecraft:brown_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=false]", + "11210": "minecraft:brown_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=true]", + "11211": "minecraft:brown_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=false]", + "11212": "minecraft:brown_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=true]", + "11213": "minecraft:brown_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=false]", + "11214": "minecraft:brown_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=true]", + "11215": "minecraft:brown_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=false]", + "11216": "minecraft:brown_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=true]", + "11217": "minecraft:brown_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]", + "11218": "minecraft:purple_concrete_powder", + "11219": "minecraft:lime_wool", + "11220": "minecraft:powered_rail[powered=true,shape=north_south]", + "11221": "minecraft:powered_rail[powered=true,shape=east_west]", + "11222": "minecraft:powered_rail[powered=true,shape=ascending_east]", + "11223": "minecraft:powered_rail[powered=true,shape=ascending_west]", + "11224": "minecraft:powered_rail[powered=true,shape=ascending_north]", + "11225": "minecraft:powered_rail[powered=true,shape=ascending_south]", + "11226": "minecraft:powered_rail[powered=false,shape=north_south]", + "11227": "minecraft:powered_rail[powered=false,shape=east_west]", + "11228": "minecraft:powered_rail[powered=false,shape=ascending_east]", + "11229": "minecraft:powered_rail[powered=false,shape=ascending_west]", + "11230": "minecraft:powered_rail[powered=false,shape=ascending_north]", + "11231": "minecraft:powered_rail[powered=false,shape=ascending_south]", + "11232": "minecraft:potted_dandelion", + "11233": "minecraft:iron_door[facing=north,half=upper,hinge=left,open=true,powered=true]", + "11234": "minecraft:iron_door[facing=north,half=upper,hinge=left,open=true,powered=false]", + "11235": "minecraft:iron_door[facing=north,half=upper,hinge=left,open=false,powered=true]", + "11236": "minecraft:iron_door[facing=north,half=upper,hinge=left,open=false,powered=false]", + "11237": "minecraft:iron_door[facing=north,half=upper,hinge=right,open=true,powered=true]", + "11238": "minecraft:iron_door[facing=north,half=upper,hinge=right,open=true,powered=false]", + "11239": "minecraft:iron_door[facing=north,half=upper,hinge=right,open=false,powered=true]", + "11240": "minecraft:iron_door[facing=north,half=upper,hinge=right,open=false,powered=false]", + "11241": "minecraft:iron_door[facing=north,half=lower,hinge=left,open=true,powered=true]", + "11242": "minecraft:iron_door[facing=north,half=lower,hinge=left,open=true,powered=false]", + "11243": "minecraft:iron_door[facing=north,half=lower,hinge=left,open=false,powered=true]", + "11244": "minecraft:iron_door[facing=north,half=lower,hinge=left,open=false,powered=false]", + "11245": "minecraft:iron_door[facing=north,half=lower,hinge=right,open=true,powered=true]", + "11246": "minecraft:iron_door[facing=north,half=lower,hinge=right,open=true,powered=false]", + "11247": "minecraft:iron_door[facing=north,half=lower,hinge=right,open=false,powered=true]", + "11248": "minecraft:iron_door[facing=north,half=lower,hinge=right,open=false,powered=false]", + "11249": "minecraft:iron_door[facing=south,half=upper,hinge=left,open=true,powered=true]", + "11250": "minecraft:iron_door[facing=south,half=upper,hinge=left,open=true,powered=false]", + "11251": "minecraft:iron_door[facing=south,half=upper,hinge=left,open=false,powered=true]", + "11252": "minecraft:iron_door[facing=south,half=upper,hinge=left,open=false,powered=false]", + "11253": "minecraft:iron_door[facing=south,half=upper,hinge=right,open=true,powered=true]", + "11254": "minecraft:iron_door[facing=south,half=upper,hinge=right,open=true,powered=false]", + "11255": "minecraft:iron_door[facing=south,half=upper,hinge=right,open=false,powered=true]", + "11256": "minecraft:iron_door[facing=south,half=upper,hinge=right,open=false,powered=false]", + "11257": "minecraft:iron_door[facing=south,half=lower,hinge=left,open=true,powered=true]", + "11258": "minecraft:iron_door[facing=south,half=lower,hinge=left,open=true,powered=false]", + "11259": "minecraft:iron_door[facing=south,half=lower,hinge=left,open=false,powered=true]", + "11260": "minecraft:iron_door[facing=south,half=lower,hinge=left,open=false,powered=false]", + "11261": "minecraft:iron_door[facing=south,half=lower,hinge=right,open=true,powered=true]", + "11262": "minecraft:iron_door[facing=south,half=lower,hinge=right,open=true,powered=false]", + "11263": "minecraft:iron_door[facing=south,half=lower,hinge=right,open=false,powered=true]", + "11264": "minecraft:iron_door[facing=south,half=lower,hinge=right,open=false,powered=false]", + "11265": "minecraft:iron_door[facing=west,half=upper,hinge=left,open=true,powered=true]", + "11266": "minecraft:iron_door[facing=west,half=upper,hinge=left,open=true,powered=false]", + "11267": "minecraft:iron_door[facing=west,half=upper,hinge=left,open=false,powered=true]", + "11268": "minecraft:iron_door[facing=west,half=upper,hinge=left,open=false,powered=false]", + "11269": "minecraft:iron_door[facing=west,half=upper,hinge=right,open=true,powered=true]", + "11270": "minecraft:iron_door[facing=west,half=upper,hinge=right,open=true,powered=false]", + "11271": "minecraft:iron_door[facing=west,half=upper,hinge=right,open=false,powered=true]", + "11272": "minecraft:iron_door[facing=west,half=upper,hinge=right,open=false,powered=false]", + "11273": "minecraft:iron_door[facing=west,half=lower,hinge=left,open=true,powered=true]", + "11274": "minecraft:iron_door[facing=west,half=lower,hinge=left,open=true,powered=false]", + "11275": "minecraft:iron_door[facing=west,half=lower,hinge=left,open=false,powered=true]", + "11276": "minecraft:iron_door[facing=west,half=lower,hinge=left,open=false,powered=false]", + "11277": "minecraft:iron_door[facing=west,half=lower,hinge=right,open=true,powered=true]", + "11278": "minecraft:iron_door[facing=west,half=lower,hinge=right,open=true,powered=false]", + "11279": "minecraft:iron_door[facing=west,half=lower,hinge=right,open=false,powered=true]", + "11280": "minecraft:iron_door[facing=west,half=lower,hinge=right,open=false,powered=false]", + "11281": "minecraft:iron_door[facing=east,half=upper,hinge=left,open=true,powered=true]", + "11282": "minecraft:iron_door[facing=east,half=upper,hinge=left,open=true,powered=false]", + "11283": "minecraft:iron_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "11284": "minecraft:iron_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "11285": "minecraft:iron_door[facing=east,half=upper,hinge=right,open=true,powered=true]", + "11286": "minecraft:iron_door[facing=east,half=upper,hinge=right,open=true,powered=false]", + "11287": "minecraft:iron_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "11288": "minecraft:iron_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "11289": "minecraft:iron_door[facing=east,half=lower,hinge=left,open=true,powered=true]", + "11290": "minecraft:iron_door[facing=east,half=lower,hinge=left,open=true,powered=false]", + "11291": "minecraft:iron_door[facing=east,half=lower,hinge=left,open=false,powered=true]", + "11292": "minecraft:iron_door[facing=east,half=lower,hinge=left,open=false,powered=false]", + "11293": "minecraft:iron_door[facing=east,half=lower,hinge=right,open=true,powered=true]", + "11294": "minecraft:iron_door[facing=east,half=lower,hinge=right,open=true,powered=false]", + "11295": "minecraft:iron_door[facing=east,half=lower,hinge=right,open=false,powered=true]", + "11296": "minecraft:iron_door[facing=east,half=lower,hinge=right,open=false,powered=false]", + "11297": "minecraft:cyan_concrete", + "11298": "minecraft:horn_coral_wall_fan[facing=north,waterlogged=true]", + "11299": "minecraft:horn_coral_wall_fan[facing=north,waterlogged=false]", + "11300": "minecraft:horn_coral_wall_fan[facing=south,waterlogged=true]", + "11301": "minecraft:horn_coral_wall_fan[facing=south,waterlogged=false]", + "11302": "minecraft:horn_coral_wall_fan[facing=west,waterlogged=true]", + "11303": "minecraft:horn_coral_wall_fan[facing=west,waterlogged=false]", + "11304": "minecraft:horn_coral_wall_fan[facing=east,waterlogged=true]", + "11305": "minecraft:horn_coral_wall_fan[facing=east,waterlogged=false]", + "11306": "minecraft:purple_concrete", + "11307": "minecraft:spruce_sign[rotation=0,waterlogged=true]", + "11308": "minecraft:spruce_sign[rotation=0,waterlogged=false]", + "11309": "minecraft:spruce_sign[rotation=1,waterlogged=true]", + "11310": "minecraft:spruce_sign[rotation=1,waterlogged=false]", + "11311": "minecraft:spruce_sign[rotation=2,waterlogged=true]", + "11312": "minecraft:spruce_sign[rotation=2,waterlogged=false]", + "11313": "minecraft:spruce_sign[rotation=3,waterlogged=true]", + "11314": "minecraft:spruce_sign[rotation=3,waterlogged=false]", + "11315": "minecraft:spruce_sign[rotation=4,waterlogged=true]", + "11316": "minecraft:spruce_sign[rotation=4,waterlogged=false]", + "11317": "minecraft:spruce_sign[rotation=5,waterlogged=true]", + "11318": "minecraft:spruce_sign[rotation=5,waterlogged=false]", + "11319": "minecraft:spruce_sign[rotation=6,waterlogged=true]", + "11320": "minecraft:spruce_sign[rotation=6,waterlogged=false]", + "11321": "minecraft:spruce_sign[rotation=7,waterlogged=true]", + "11322": "minecraft:spruce_sign[rotation=7,waterlogged=false]", + "11323": "minecraft:spruce_sign[rotation=8,waterlogged=true]", + "11324": "minecraft:spruce_sign[rotation=8,waterlogged=false]", + "11325": "minecraft:spruce_sign[rotation=9,waterlogged=true]", + "11326": "minecraft:spruce_sign[rotation=9,waterlogged=false]", + "11327": "minecraft:spruce_sign[rotation=10,waterlogged=true]", + "11328": "minecraft:spruce_sign[rotation=10,waterlogged=false]", + "11329": "minecraft:spruce_sign[rotation=11,waterlogged=true]", + "11330": "minecraft:spruce_sign[rotation=11,waterlogged=false]", + "11331": "minecraft:spruce_sign[rotation=12,waterlogged=true]", + "11332": "minecraft:spruce_sign[rotation=12,waterlogged=false]", + "11333": "minecraft:spruce_sign[rotation=13,waterlogged=true]", + "11334": "minecraft:spruce_sign[rotation=13,waterlogged=false]", + "11335": "minecraft:spruce_sign[rotation=14,waterlogged=true]", + "11336": "minecraft:spruce_sign[rotation=14,waterlogged=false]", + "11337": "minecraft:spruce_sign[rotation=15,waterlogged=true]", + "11338": "minecraft:spruce_sign[rotation=15,waterlogged=false]", + "11339": "minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]", + "11340": "minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=false]", + "11341": "minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=false,west=true]", + "11342": "minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=false,west=false]", + "11343": "minecraft:red_mushroom_block[down=true,east=true,north=true,south=false,up=true,west=true]", + "11344": "minecraft:red_mushroom_block[down=true,east=true,north=true,south=false,up=true,west=false]", + "11345": "minecraft:red_mushroom_block[down=true,east=true,north=true,south=false,up=false,west=true]", + "11346": "minecraft:red_mushroom_block[down=true,east=true,north=true,south=false,up=false,west=false]", + "11347": "minecraft:red_mushroom_block[down=true,east=true,north=false,south=true,up=true,west=true]", + "11348": "minecraft:red_mushroom_block[down=true,east=true,north=false,south=true,up=true,west=false]", + "11349": "minecraft:red_mushroom_block[down=true,east=true,north=false,south=true,up=false,west=true]", + "11350": "minecraft:red_mushroom_block[down=true,east=true,north=false,south=true,up=false,west=false]", + "11351": "minecraft:red_mushroom_block[down=true,east=true,north=false,south=false,up=true,west=true]", + "11352": "minecraft:red_mushroom_block[down=true,east=true,north=false,south=false,up=true,west=false]", + "11353": "minecraft:red_mushroom_block[down=true,east=true,north=false,south=false,up=false,west=true]", + "11354": "minecraft:red_mushroom_block[down=true,east=true,north=false,south=false,up=false,west=false]", + "11355": "minecraft:red_mushroom_block[down=true,east=false,north=true,south=true,up=true,west=true]", + "11356": "minecraft:red_mushroom_block[down=true,east=false,north=true,south=true,up=true,west=false]", + "11357": "minecraft:red_mushroom_block[down=true,east=false,north=true,south=true,up=false,west=true]", + "11358": "minecraft:red_mushroom_block[down=true,east=false,north=true,south=true,up=false,west=false]", + "11359": "minecraft:red_mushroom_block[down=true,east=false,north=true,south=false,up=true,west=true]", + "11360": "minecraft:red_mushroom_block[down=true,east=false,north=true,south=false,up=true,west=false]", + "11361": "minecraft:red_mushroom_block[down=true,east=false,north=true,south=false,up=false,west=true]", + "11362": "minecraft:red_mushroom_block[down=true,east=false,north=true,south=false,up=false,west=false]", + "11363": "minecraft:red_mushroom_block[down=true,east=false,north=false,south=true,up=true,west=true]", + "11364": "minecraft:red_mushroom_block[down=true,east=false,north=false,south=true,up=true,west=false]", + "11365": "minecraft:red_mushroom_block[down=true,east=false,north=false,south=true,up=false,west=true]", + "11366": "minecraft:red_mushroom_block[down=true,east=false,north=false,south=true,up=false,west=false]", + "11367": "minecraft:red_mushroom_block[down=true,east=false,north=false,south=false,up=true,west=true]", + "11368": "minecraft:red_mushroom_block[down=true,east=false,north=false,south=false,up=true,west=false]", + "11369": "minecraft:red_mushroom_block[down=true,east=false,north=false,south=false,up=false,west=true]", + "11370": "minecraft:red_mushroom_block[down=true,east=false,north=false,south=false,up=false,west=false]", + "11371": "minecraft:red_mushroom_block[down=false,east=true,north=true,south=true,up=true,west=true]", + "11372": "minecraft:red_mushroom_block[down=false,east=true,north=true,south=true,up=true,west=false]", + "11373": "minecraft:red_mushroom_block[down=false,east=true,north=true,south=true,up=false,west=true]", + "11374": "minecraft:red_mushroom_block[down=false,east=true,north=true,south=true,up=false,west=false]", + "11375": "minecraft:red_mushroom_block[down=false,east=true,north=true,south=false,up=true,west=true]", + "11376": "minecraft:red_mushroom_block[down=false,east=true,north=true,south=false,up=true,west=false]", + "11377": "minecraft:red_mushroom_block[down=false,east=true,north=true,south=false,up=false,west=true]", + "11378": "minecraft:red_mushroom_block[down=false,east=true,north=true,south=false,up=false,west=false]", + "11379": "minecraft:red_mushroom_block[down=false,east=true,north=false,south=true,up=true,west=true]", + "11380": "minecraft:red_mushroom_block[down=false,east=true,north=false,south=true,up=true,west=false]", + "11381": "minecraft:red_mushroom_block[down=false,east=true,north=false,south=true,up=false,west=true]", + "11382": "minecraft:red_mushroom_block[down=false,east=true,north=false,south=true,up=false,west=false]", + "11383": "minecraft:red_mushroom_block[down=false,east=true,north=false,south=false,up=true,west=true]", + "11384": "minecraft:red_mushroom_block[down=false,east=true,north=false,south=false,up=true,west=false]", + "11385": "minecraft:red_mushroom_block[down=false,east=true,north=false,south=false,up=false,west=true]", + "11386": "minecraft:red_mushroom_block[down=false,east=true,north=false,south=false,up=false,west=false]", + "11387": "minecraft:red_mushroom_block[down=false,east=false,north=true,south=true,up=true,west=true]", + "11388": "minecraft:red_mushroom_block[down=false,east=false,north=true,south=true,up=true,west=false]", + "11389": "minecraft:red_mushroom_block[down=false,east=false,north=true,south=true,up=false,west=true]", + "11390": "minecraft:red_mushroom_block[down=false,east=false,north=true,south=true,up=false,west=false]", + "11391": "minecraft:red_mushroom_block[down=false,east=false,north=true,south=false,up=true,west=true]", + "11392": "minecraft:red_mushroom_block[down=false,east=false,north=true,south=false,up=true,west=false]", + "11393": "minecraft:red_mushroom_block[down=false,east=false,north=true,south=false,up=false,west=true]", + "11394": "minecraft:red_mushroom_block[down=false,east=false,north=true,south=false,up=false,west=false]", + "11395": "minecraft:red_mushroom_block[down=false,east=false,north=false,south=true,up=true,west=true]", + "11396": "minecraft:red_mushroom_block[down=false,east=false,north=false,south=true,up=true,west=false]", + "11397": "minecraft:red_mushroom_block[down=false,east=false,north=false,south=true,up=false,west=true]", + "11398": "minecraft:red_mushroom_block[down=false,east=false,north=false,south=true,up=false,west=false]", + "11399": "minecraft:red_mushroom_block[down=false,east=false,north=false,south=false,up=true,west=true]", + "11400": "minecraft:red_mushroom_block[down=false,east=false,north=false,south=false,up=true,west=false]", + "11401": "minecraft:red_mushroom_block[down=false,east=false,north=false,south=false,up=false,west=true]", + "11402": "minecraft:red_mushroom_block[down=false,east=false,north=false,south=false,up=false,west=false]", + "11403": "minecraft:potted_cactus", + "11404": "minecraft:light_blue_wall_banner[facing=north]", + "11405": "minecraft:light_blue_wall_banner[facing=south]", + "11406": "minecraft:light_blue_wall_banner[facing=west]", + "11407": "minecraft:light_blue_wall_banner[facing=east]", + "11408": "minecraft:cyan_concrete_powder", + "11409": "minecraft:carrots[age=0]", + "11410": "minecraft:carrots[age=1]", + "11411": "minecraft:carrots[age=2]", + "11412": "minecraft:carrots[age=3]", + "11413": "minecraft:carrots[age=4]", + "11414": "minecraft:carrots[age=5]", + "11415": "minecraft:carrots[age=6]", + "11416": "minecraft:carrots[age=7]", + "11417": "minecraft:pink_wool", + "11418": "minecraft:spruce_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]", + "11419": "minecraft:spruce_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]", + "11420": "minecraft:spruce_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true]", + "11421": "minecraft:spruce_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]", + "11422": "minecraft:spruce_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]", + "11423": "minecraft:spruce_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]", + "11424": "minecraft:spruce_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true]", + "11425": "minecraft:spruce_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false]", + "11426": "minecraft:spruce_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]", + "11427": "minecraft:spruce_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]", + "11428": "minecraft:spruce_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true]", + "11429": "minecraft:spruce_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false]", + "11430": "minecraft:spruce_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]", + "11431": "minecraft:spruce_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]", + "11432": "minecraft:spruce_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true]", + "11433": "minecraft:spruce_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]", + "11434": "minecraft:spruce_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]", + "11435": "minecraft:spruce_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]", + "11436": "minecraft:spruce_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true]", + "11437": "minecraft:spruce_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false]", + "11438": "minecraft:spruce_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]", + "11439": "minecraft:spruce_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]", + "11440": "minecraft:spruce_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true]", + "11441": "minecraft:spruce_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false]", + "11442": "minecraft:spruce_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]", + "11443": "minecraft:spruce_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]", + "11444": "minecraft:spruce_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true]", + "11445": "minecraft:spruce_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false]", + "11446": "minecraft:spruce_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]", + "11447": "minecraft:spruce_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]", + "11448": "minecraft:spruce_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true]", + "11449": "minecraft:spruce_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false]", + "11450": "minecraft:spruce_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]", + "11451": "minecraft:spruce_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]", + "11452": "minecraft:spruce_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true]", + "11453": "minecraft:spruce_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false]", + "11454": "minecraft:spruce_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]", + "11455": "minecraft:spruce_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]", + "11456": "minecraft:spruce_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true]", + "11457": "minecraft:spruce_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false]", + "11458": "minecraft:spruce_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]", + "11459": "minecraft:spruce_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]", + "11460": "minecraft:spruce_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true]", + "11461": "minecraft:spruce_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false]", + "11462": "minecraft:spruce_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]", + "11463": "minecraft:spruce_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]", + "11464": "minecraft:spruce_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true]", + "11465": "minecraft:spruce_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false]", + "11466": "minecraft:spruce_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]", + "11467": "minecraft:spruce_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]", + "11468": "minecraft:spruce_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true]", + "11469": "minecraft:spruce_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false]", + "11470": "minecraft:spruce_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]", + "11471": "minecraft:spruce_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]", + "11472": "minecraft:spruce_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true]", + "11473": "minecraft:spruce_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false]", + "11474": "minecraft:spruce_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]", + "11475": "minecraft:spruce_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]", + "11476": "minecraft:spruce_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true]", + "11477": "minecraft:spruce_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false]", + "11478": "minecraft:spruce_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]", + "11479": "minecraft:spruce_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]", + "11480": "minecraft:spruce_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true]", + "11481": "minecraft:spruce_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false]", + "11482": "minecraft:jungle_door[facing=north,half=upper,hinge=left,open=true,powered=true]", + "11483": "minecraft:jungle_door[facing=north,half=upper,hinge=left,open=true,powered=false]", + "11484": "minecraft:jungle_door[facing=north,half=upper,hinge=left,open=false,powered=true]", + "11485": "minecraft:jungle_door[facing=north,half=upper,hinge=left,open=false,powered=false]", + "11486": "minecraft:jungle_door[facing=north,half=upper,hinge=right,open=true,powered=true]", + "11487": "minecraft:jungle_door[facing=north,half=upper,hinge=right,open=true,powered=false]", + "11488": "minecraft:jungle_door[facing=north,half=upper,hinge=right,open=false,powered=true]", + "11489": "minecraft:jungle_door[facing=north,half=upper,hinge=right,open=false,powered=false]", + "11490": "minecraft:jungle_door[facing=north,half=lower,hinge=left,open=true,powered=true]", + "11491": "minecraft:jungle_door[facing=north,half=lower,hinge=left,open=true,powered=false]", + "11492": "minecraft:jungle_door[facing=north,half=lower,hinge=left,open=false,powered=true]", + "11493": "minecraft:jungle_door[facing=north,half=lower,hinge=left,open=false,powered=false]", + "11494": "minecraft:jungle_door[facing=north,half=lower,hinge=right,open=true,powered=true]", + "11495": "minecraft:jungle_door[facing=north,half=lower,hinge=right,open=true,powered=false]", + "11496": "minecraft:jungle_door[facing=north,half=lower,hinge=right,open=false,powered=true]", + "11497": "minecraft:jungle_door[facing=north,half=lower,hinge=right,open=false,powered=false]", + "11498": "minecraft:jungle_door[facing=south,half=upper,hinge=left,open=true,powered=true]", + "11499": "minecraft:jungle_door[facing=south,half=upper,hinge=left,open=true,powered=false]", + "11500": "minecraft:jungle_door[facing=south,half=upper,hinge=left,open=false,powered=true]", + "11501": "minecraft:jungle_door[facing=south,half=upper,hinge=left,open=false,powered=false]", + "11502": "minecraft:jungle_door[facing=south,half=upper,hinge=right,open=true,powered=true]", + "11503": "minecraft:jungle_door[facing=south,half=upper,hinge=right,open=true,powered=false]", + "11504": "minecraft:jungle_door[facing=south,half=upper,hinge=right,open=false,powered=true]", + "11505": "minecraft:jungle_door[facing=south,half=upper,hinge=right,open=false,powered=false]", + "11506": "minecraft:jungle_door[facing=south,half=lower,hinge=left,open=true,powered=true]", + "11507": "minecraft:jungle_door[facing=south,half=lower,hinge=left,open=true,powered=false]", + "11508": "minecraft:jungle_door[facing=south,half=lower,hinge=left,open=false,powered=true]", + "11509": "minecraft:jungle_door[facing=south,half=lower,hinge=left,open=false,powered=false]", + "11510": "minecraft:jungle_door[facing=south,half=lower,hinge=right,open=true,powered=true]", + "11511": "minecraft:jungle_door[facing=south,half=lower,hinge=right,open=true,powered=false]", + "11512": "minecraft:jungle_door[facing=south,half=lower,hinge=right,open=false,powered=true]", + "11513": "minecraft:jungle_door[facing=south,half=lower,hinge=right,open=false,powered=false]", + "11514": "minecraft:jungle_door[facing=west,half=upper,hinge=left,open=true,powered=true]", + "11515": "minecraft:jungle_door[facing=west,half=upper,hinge=left,open=true,powered=false]", + "11516": "minecraft:jungle_door[facing=west,half=upper,hinge=left,open=false,powered=true]", + "11517": "minecraft:jungle_door[facing=west,half=upper,hinge=left,open=false,powered=false]", + "11518": "minecraft:jungle_door[facing=west,half=upper,hinge=right,open=true,powered=true]", + "11519": "minecraft:jungle_door[facing=west,half=upper,hinge=right,open=true,powered=false]", + "11520": "minecraft:jungle_door[facing=west,half=upper,hinge=right,open=false,powered=true]", + "11521": "minecraft:jungle_door[facing=west,half=upper,hinge=right,open=false,powered=false]", + "11522": "minecraft:jungle_door[facing=west,half=lower,hinge=left,open=true,powered=true]", + "11523": "minecraft:jungle_door[facing=west,half=lower,hinge=left,open=true,powered=false]", + "11524": "minecraft:jungle_door[facing=west,half=lower,hinge=left,open=false,powered=true]", + "11525": "minecraft:jungle_door[facing=west,half=lower,hinge=left,open=false,powered=false]", + "11526": "minecraft:jungle_door[facing=west,half=lower,hinge=right,open=true,powered=true]", + "11527": "minecraft:jungle_door[facing=west,half=lower,hinge=right,open=true,powered=false]", + "11528": "minecraft:jungle_door[facing=west,half=lower,hinge=right,open=false,powered=true]", + "11529": "minecraft:jungle_door[facing=west,half=lower,hinge=right,open=false,powered=false]", + "11530": "minecraft:jungle_door[facing=east,half=upper,hinge=left,open=true,powered=true]", + "11531": "minecraft:jungle_door[facing=east,half=upper,hinge=left,open=true,powered=false]", + "11532": "minecraft:jungle_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "11533": "minecraft:jungle_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "11534": "minecraft:jungle_door[facing=east,half=upper,hinge=right,open=true,powered=true]", + "11535": "minecraft:jungle_door[facing=east,half=upper,hinge=right,open=true,powered=false]", + "11536": "minecraft:jungle_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "11537": "minecraft:jungle_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "11538": "minecraft:jungle_door[facing=east,half=lower,hinge=left,open=true,powered=true]", + "11539": "minecraft:jungle_door[facing=east,half=lower,hinge=left,open=true,powered=false]", + "11540": "minecraft:jungle_door[facing=east,half=lower,hinge=left,open=false,powered=true]", + "11541": "minecraft:jungle_door[facing=east,half=lower,hinge=left,open=false,powered=false]", + "11542": "minecraft:jungle_door[facing=east,half=lower,hinge=right,open=true,powered=true]", + "11543": "minecraft:jungle_door[facing=east,half=lower,hinge=right,open=true,powered=false]", + "11544": "minecraft:jungle_door[facing=east,half=lower,hinge=right,open=false,powered=true]", + "11545": "minecraft:jungle_door[facing=east,half=lower,hinge=right,open=false,powered=false]", + "11546": "minecraft:water[level=0]", + "11547": "minecraft:water[level=1]", + "11548": "minecraft:water[level=2]", + "11549": "minecraft:water[level=3]", + "11550": "minecraft:water[level=4]", + "11551": "minecraft:water[level=5]", + "11552": "minecraft:water[level=6]", + "11553": "minecraft:water[level=7]", + "11554": "minecraft:water[level=8]", + "11555": "minecraft:water[level=9]", + "11556": "minecraft:water[level=10]", + "11557": "minecraft:water[level=11]", + "11558": "minecraft:water[level=12]", + "11559": "minecraft:water[level=13]", + "11560": "minecraft:water[level=14]", + "11561": "minecraft:water[level=15]", + "11562": "minecraft:birch_door[facing=north,half=upper,hinge=left,open=true,powered=true]", + "11563": "minecraft:birch_door[facing=north,half=upper,hinge=left,open=true,powered=false]", + "11564": "minecraft:birch_door[facing=north,half=upper,hinge=left,open=false,powered=true]", + "11565": "minecraft:birch_door[facing=north,half=upper,hinge=left,open=false,powered=false]", + "11566": "minecraft:birch_door[facing=north,half=upper,hinge=right,open=true,powered=true]", + "11567": "minecraft:birch_door[facing=north,half=upper,hinge=right,open=true,powered=false]", + "11568": "minecraft:birch_door[facing=north,half=upper,hinge=right,open=false,powered=true]", + "11569": "minecraft:birch_door[facing=north,half=upper,hinge=right,open=false,powered=false]", + "11570": "minecraft:birch_door[facing=north,half=lower,hinge=left,open=true,powered=true]", + "11571": "minecraft:birch_door[facing=north,half=lower,hinge=left,open=true,powered=false]", + "11572": "minecraft:birch_door[facing=north,half=lower,hinge=left,open=false,powered=true]", + "11573": "minecraft:birch_door[facing=north,half=lower,hinge=left,open=false,powered=false]", + "11574": "minecraft:birch_door[facing=north,half=lower,hinge=right,open=true,powered=true]", + "11575": "minecraft:birch_door[facing=north,half=lower,hinge=right,open=true,powered=false]", + "11576": "minecraft:birch_door[facing=north,half=lower,hinge=right,open=false,powered=true]", + "11577": "minecraft:birch_door[facing=north,half=lower,hinge=right,open=false,powered=false]", + "11578": "minecraft:birch_door[facing=south,half=upper,hinge=left,open=true,powered=true]", + "11579": "minecraft:birch_door[facing=south,half=upper,hinge=left,open=true,powered=false]", + "11580": "minecraft:birch_door[facing=south,half=upper,hinge=left,open=false,powered=true]", + "11581": "minecraft:birch_door[facing=south,half=upper,hinge=left,open=false,powered=false]", + "11582": "minecraft:birch_door[facing=south,half=upper,hinge=right,open=true,powered=true]", + "11583": "minecraft:birch_door[facing=south,half=upper,hinge=right,open=true,powered=false]", + "11584": "minecraft:birch_door[facing=south,half=upper,hinge=right,open=false,powered=true]", + "11585": "minecraft:birch_door[facing=south,half=upper,hinge=right,open=false,powered=false]", + "11586": "minecraft:birch_door[facing=south,half=lower,hinge=left,open=true,powered=true]", + "11587": "minecraft:birch_door[facing=south,half=lower,hinge=left,open=true,powered=false]", + "11588": "minecraft:birch_door[facing=south,half=lower,hinge=left,open=false,powered=true]", + "11589": "minecraft:birch_door[facing=south,half=lower,hinge=left,open=false,powered=false]", + "11590": "minecraft:birch_door[facing=south,half=lower,hinge=right,open=true,powered=true]", + "11591": "minecraft:birch_door[facing=south,half=lower,hinge=right,open=true,powered=false]", + "11592": "minecraft:birch_door[facing=south,half=lower,hinge=right,open=false,powered=true]", + "11593": "minecraft:birch_door[facing=south,half=lower,hinge=right,open=false,powered=false]", + "11594": "minecraft:birch_door[facing=west,half=upper,hinge=left,open=true,powered=true]", + "11595": "minecraft:birch_door[facing=west,half=upper,hinge=left,open=true,powered=false]", + "11596": "minecraft:birch_door[facing=west,half=upper,hinge=left,open=false,powered=true]", + "11597": "minecraft:birch_door[facing=west,half=upper,hinge=left,open=false,powered=false]", + "11598": "minecraft:birch_door[facing=west,half=upper,hinge=right,open=true,powered=true]", + "11599": "minecraft:birch_door[facing=west,half=upper,hinge=right,open=true,powered=false]", + "11600": "minecraft:birch_door[facing=west,half=upper,hinge=right,open=false,powered=true]", + "11601": "minecraft:birch_door[facing=west,half=upper,hinge=right,open=false,powered=false]", + "11602": "minecraft:birch_door[facing=west,half=lower,hinge=left,open=true,powered=true]", + "11603": "minecraft:birch_door[facing=west,half=lower,hinge=left,open=true,powered=false]", + "11604": "minecraft:birch_door[facing=west,half=lower,hinge=left,open=false,powered=true]", + "11605": "minecraft:birch_door[facing=west,half=lower,hinge=left,open=false,powered=false]", + "11606": "minecraft:birch_door[facing=west,half=lower,hinge=right,open=true,powered=true]", + "11607": "minecraft:birch_door[facing=west,half=lower,hinge=right,open=true,powered=false]", + "11608": "minecraft:birch_door[facing=west,half=lower,hinge=right,open=false,powered=true]", + "11609": "minecraft:birch_door[facing=west,half=lower,hinge=right,open=false,powered=false]", + "11610": "minecraft:birch_door[facing=east,half=upper,hinge=left,open=true,powered=true]", + "11611": "minecraft:birch_door[facing=east,half=upper,hinge=left,open=true,powered=false]", + "11612": "minecraft:birch_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "11613": "minecraft:birch_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "11614": "minecraft:birch_door[facing=east,half=upper,hinge=right,open=true,powered=true]", + "11615": "minecraft:birch_door[facing=east,half=upper,hinge=right,open=true,powered=false]", + "11616": "minecraft:birch_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "11617": "minecraft:birch_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "11618": "minecraft:birch_door[facing=east,half=lower,hinge=left,open=true,powered=true]", + "11619": "minecraft:birch_door[facing=east,half=lower,hinge=left,open=true,powered=false]", + "11620": "minecraft:birch_door[facing=east,half=lower,hinge=left,open=false,powered=true]", + "11621": "minecraft:birch_door[facing=east,half=lower,hinge=left,open=false,powered=false]", + "11622": "minecraft:birch_door[facing=east,half=lower,hinge=right,open=true,powered=true]", + "11623": "minecraft:birch_door[facing=east,half=lower,hinge=right,open=true,powered=false]", + "11624": "minecraft:birch_door[facing=east,half=lower,hinge=right,open=false,powered=true]", + "11625": "minecraft:birch_door[facing=east,half=lower,hinge=right,open=false,powered=false]", + "11626": "minecraft:brown_terracotta", + "11627": "minecraft:acacia_sapling[stage=0]", + "11628": "minecraft:acacia_sapling[stage=1]", + "11629": "minecraft:blue_terracotta", + "11630": "minecraft:weeping_vines[age=0]", + "11631": "minecraft:weeping_vines[age=1]", + "11632": "minecraft:weeping_vines[age=2]", + "11633": "minecraft:weeping_vines[age=3]", + "11634": "minecraft:weeping_vines[age=4]", + "11635": "minecraft:weeping_vines[age=5]", + "11636": "minecraft:weeping_vines[age=6]", + "11637": "minecraft:weeping_vines[age=7]", + "11638": "minecraft:weeping_vines[age=8]", + "11639": "minecraft:weeping_vines[age=9]", + "11640": "minecraft:weeping_vines[age=10]", + "11641": "minecraft:weeping_vines[age=11]", + "11642": "minecraft:weeping_vines[age=12]", + "11643": "minecraft:weeping_vines[age=13]", + "11644": "minecraft:weeping_vines[age=14]", + "11645": "minecraft:weeping_vines[age=15]", + "11646": "minecraft:weeping_vines[age=16]", + "11647": "minecraft:weeping_vines[age=17]", + "11648": "minecraft:weeping_vines[age=18]", + "11649": "minecraft:weeping_vines[age=19]", + "11650": "minecraft:weeping_vines[age=20]", + "11651": "minecraft:weeping_vines[age=21]", + "11652": "minecraft:weeping_vines[age=22]", + "11653": "minecraft:weeping_vines[age=23]", + "11654": "minecraft:weeping_vines[age=24]", + "11655": "minecraft:weeping_vines[age=25]", + "11656": "minecraft:granite_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "11657": "minecraft:granite_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "11658": "minecraft:granite_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "11659": "minecraft:granite_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "11660": "minecraft:granite_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "11661": "minecraft:granite_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "11662": "minecraft:granite_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "11663": "minecraft:granite_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "11664": "minecraft:granite_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "11665": "minecraft:granite_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "11666": "minecraft:granite_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "11667": "minecraft:granite_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "11668": "minecraft:granite_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "11669": "minecraft:granite_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "11670": "minecraft:granite_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "11671": "minecraft:granite_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "11672": "minecraft:granite_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "11673": "minecraft:granite_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "11674": "minecraft:granite_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "11675": "minecraft:granite_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "11676": "minecraft:granite_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "11677": "minecraft:granite_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "11678": "minecraft:granite_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "11679": "minecraft:granite_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "11680": "minecraft:granite_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "11681": "minecraft:granite_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "11682": "minecraft:granite_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "11683": "minecraft:granite_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "11684": "minecraft:granite_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "11685": "minecraft:granite_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "11686": "minecraft:granite_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "11687": "minecraft:granite_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "11688": "minecraft:granite_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "11689": "minecraft:granite_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "11690": "minecraft:granite_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "11691": "minecraft:granite_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "11692": "minecraft:granite_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "11693": "minecraft:granite_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "11694": "minecraft:granite_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "11695": "minecraft:granite_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "11696": "minecraft:granite_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "11697": "minecraft:granite_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "11698": "minecraft:granite_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "11699": "minecraft:granite_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "11700": "minecraft:granite_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "11701": "minecraft:granite_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "11702": "minecraft:granite_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "11703": "minecraft:granite_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "11704": "minecraft:granite_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "11705": "minecraft:granite_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "11706": "minecraft:granite_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "11707": "minecraft:granite_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "11708": "minecraft:granite_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "11709": "minecraft:granite_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "11710": "minecraft:granite_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "11711": "minecraft:granite_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "11712": "minecraft:granite_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "11713": "minecraft:granite_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "11714": "minecraft:granite_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "11715": "minecraft:granite_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "11716": "minecraft:granite_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "11717": "minecraft:granite_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "11718": "minecraft:granite_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "11719": "minecraft:granite_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "11720": "minecraft:granite_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "11721": "minecraft:granite_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "11722": "minecraft:granite_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "11723": "minecraft:granite_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "11724": "minecraft:granite_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "11725": "minecraft:granite_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "11726": "minecraft:granite_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "11727": "minecraft:granite_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "11728": "minecraft:granite_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "11729": "minecraft:granite_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "11730": "minecraft:granite_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "11731": "minecraft:granite_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "11732": "minecraft:granite_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "11733": "minecraft:granite_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "11734": "minecraft:granite_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "11735": "minecraft:granite_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "11736": "minecraft:acacia_log[axis=x]", + "11737": "minecraft:acacia_log[axis=y]", + "11738": "minecraft:acacia_log[axis=z]", + "11739": "minecraft:end_stone_brick_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "11740": "minecraft:end_stone_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "11741": "minecraft:end_stone_brick_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "11742": "minecraft:end_stone_brick_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "11743": "minecraft:end_stone_brick_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "11744": "minecraft:end_stone_brick_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "11745": "minecraft:end_stone_brick_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "11746": "minecraft:end_stone_brick_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "11747": "minecraft:end_stone_brick_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "11748": "minecraft:end_stone_brick_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "11749": "minecraft:end_stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "11750": "minecraft:end_stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "11751": "minecraft:end_stone_brick_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "11752": "minecraft:end_stone_brick_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "11753": "minecraft:end_stone_brick_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "11754": "minecraft:end_stone_brick_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "11755": "minecraft:end_stone_brick_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "11756": "minecraft:end_stone_brick_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "11757": "minecraft:end_stone_brick_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "11758": "minecraft:end_stone_brick_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "11759": "minecraft:end_stone_brick_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "11760": "minecraft:end_stone_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "11761": "minecraft:end_stone_brick_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "11762": "minecraft:end_stone_brick_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "11763": "minecraft:end_stone_brick_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "11764": "minecraft:end_stone_brick_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "11765": "minecraft:end_stone_brick_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "11766": "minecraft:end_stone_brick_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "11767": "minecraft:end_stone_brick_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "11768": "minecraft:end_stone_brick_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "11769": "minecraft:end_stone_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "11770": "minecraft:end_stone_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "11771": "minecraft:end_stone_brick_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "11772": "minecraft:end_stone_brick_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "11773": "minecraft:end_stone_brick_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "11774": "minecraft:end_stone_brick_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "11775": "minecraft:end_stone_brick_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "11776": "minecraft:end_stone_brick_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "11777": "minecraft:end_stone_brick_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "11778": "minecraft:end_stone_brick_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "11779": "minecraft:end_stone_brick_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "11780": "minecraft:end_stone_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "11781": "minecraft:end_stone_brick_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "11782": "minecraft:end_stone_brick_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "11783": "minecraft:end_stone_brick_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "11784": "minecraft:end_stone_brick_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "11785": "minecraft:end_stone_brick_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "11786": "minecraft:end_stone_brick_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "11787": "minecraft:end_stone_brick_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "11788": "minecraft:end_stone_brick_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "11789": "minecraft:end_stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "11790": "minecraft:end_stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "11791": "minecraft:end_stone_brick_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "11792": "minecraft:end_stone_brick_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "11793": "minecraft:end_stone_brick_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "11794": "minecraft:end_stone_brick_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "11795": "minecraft:end_stone_brick_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "11796": "minecraft:end_stone_brick_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "11797": "minecraft:end_stone_brick_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "11798": "minecraft:end_stone_brick_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "11799": "minecraft:end_stone_brick_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "11800": "minecraft:end_stone_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "11801": "minecraft:end_stone_brick_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "11802": "minecraft:end_stone_brick_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "11803": "minecraft:end_stone_brick_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "11804": "minecraft:end_stone_brick_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "11805": "minecraft:end_stone_brick_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "11806": "minecraft:end_stone_brick_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "11807": "minecraft:end_stone_brick_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "11808": "minecraft:end_stone_brick_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "11809": "minecraft:end_stone_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "11810": "minecraft:end_stone_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "11811": "minecraft:end_stone_brick_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "11812": "minecraft:end_stone_brick_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "11813": "minecraft:end_stone_brick_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "11814": "minecraft:end_stone_brick_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "11815": "minecraft:end_stone_brick_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "11816": "minecraft:end_stone_brick_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "11817": "minecraft:end_stone_brick_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "11818": "minecraft:end_stone_brick_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "11819": "minecraft:lava[level=0]", + "11820": "minecraft:lava[level=1]", + "11821": "minecraft:lava[level=2]", + "11822": "minecraft:lava[level=3]", + "11823": "minecraft:lava[level=4]", + "11824": "minecraft:lava[level=5]", + "11825": "minecraft:lava[level=6]", + "11826": "minecraft:lava[level=7]", + "11827": "minecraft:lava[level=8]", + "11828": "minecraft:lava[level=9]", + "11829": "minecraft:lava[level=10]", + "11830": "minecraft:lava[level=11]", + "11831": "minecraft:lava[level=12]", + "11832": "minecraft:lava[level=13]", + "11833": "minecraft:lava[level=14]", + "11834": "minecraft:lava[level=15]", + "11835": "minecraft:conduit[waterlogged=true]", + "11836": "minecraft:conduit[waterlogged=false]", + "11837": "minecraft:birch_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]", + "11838": "minecraft:birch_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]", + "11839": "minecraft:birch_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true]", + "11840": "minecraft:birch_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]", + "11841": "minecraft:birch_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]", + "11842": "minecraft:birch_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]", + "11843": "minecraft:birch_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true]", + "11844": "minecraft:birch_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false]", + "11845": "minecraft:birch_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]", + "11846": "minecraft:birch_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]", + "11847": "minecraft:birch_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true]", + "11848": "minecraft:birch_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false]", + "11849": "minecraft:birch_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]", + "11850": "minecraft:birch_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]", + "11851": "minecraft:birch_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true]", + "11852": "minecraft:birch_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]", + "11853": "minecraft:birch_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]", + "11854": "minecraft:birch_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]", + "11855": "minecraft:birch_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true]", + "11856": "minecraft:birch_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false]", + "11857": "minecraft:birch_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]", + "11858": "minecraft:birch_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]", + "11859": "minecraft:birch_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true]", + "11860": "minecraft:birch_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false]", + "11861": "minecraft:birch_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]", + "11862": "minecraft:birch_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]", + "11863": "minecraft:birch_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true]", + "11864": "minecraft:birch_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false]", + "11865": "minecraft:birch_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]", + "11866": "minecraft:birch_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]", + "11867": "minecraft:birch_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true]", + "11868": "minecraft:birch_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false]", + "11869": "minecraft:birch_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]", + "11870": "minecraft:birch_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]", + "11871": "minecraft:birch_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true]", + "11872": "minecraft:birch_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false]", + "11873": "minecraft:birch_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]", + "11874": "minecraft:birch_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]", + "11875": "minecraft:birch_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true]", + "11876": "minecraft:birch_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false]", + "11877": "minecraft:birch_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]", + "11878": "minecraft:birch_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]", + "11879": "minecraft:birch_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true]", + "11880": "minecraft:birch_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false]", + "11881": "minecraft:birch_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]", + "11882": "minecraft:birch_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]", + "11883": "minecraft:birch_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true]", + "11884": "minecraft:birch_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false]", + "11885": "minecraft:birch_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]", + "11886": "minecraft:birch_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]", + "11887": "minecraft:birch_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true]", + "11888": "minecraft:birch_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false]", + "11889": "minecraft:birch_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]", + "11890": "minecraft:birch_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]", + "11891": "minecraft:birch_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true]", + "11892": "minecraft:birch_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false]", + "11893": "minecraft:birch_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]", + "11894": "minecraft:birch_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]", + "11895": "minecraft:birch_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true]", + "11896": "minecraft:birch_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false]", + "11897": "minecraft:birch_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]", + "11898": "minecraft:birch_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]", + "11899": "minecraft:birch_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true]", + "11900": "minecraft:birch_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false]", + "11901": "minecraft:potted_acacia_sapling", + "11902": "minecraft:crimson_roots", + "11903": "minecraft:fire_coral_wall_fan[facing=north,waterlogged=true]", + "11904": "minecraft:fire_coral_wall_fan[facing=north,waterlogged=false]", + "11905": "minecraft:fire_coral_wall_fan[facing=south,waterlogged=true]", + "11906": "minecraft:fire_coral_wall_fan[facing=south,waterlogged=false]", + "11907": "minecraft:fire_coral_wall_fan[facing=west,waterlogged=true]", + "11908": "minecraft:fire_coral_wall_fan[facing=west,waterlogged=false]", + "11909": "minecraft:fire_coral_wall_fan[facing=east,waterlogged=true]", + "11910": "minecraft:fire_coral_wall_fan[facing=east,waterlogged=false]", + "11911": "minecraft:twisting_vines_plant", + "11912": "minecraft:andesite_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "11913": "minecraft:andesite_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "11914": "minecraft:andesite_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "11915": "minecraft:andesite_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "11916": "minecraft:andesite_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "11917": "minecraft:andesite_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "11918": "minecraft:andesite_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "11919": "minecraft:andesite_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "11920": "minecraft:andesite_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "11921": "minecraft:andesite_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "11922": "minecraft:andesite_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "11923": "minecraft:andesite_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "11924": "minecraft:andesite_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "11925": "minecraft:andesite_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "11926": "minecraft:andesite_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "11927": "minecraft:andesite_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "11928": "minecraft:andesite_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "11929": "minecraft:andesite_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "11930": "minecraft:andesite_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "11931": "minecraft:andesite_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "11932": "minecraft:andesite_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "11933": "minecraft:andesite_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "11934": "minecraft:andesite_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "11935": "minecraft:andesite_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "11936": "minecraft:andesite_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "11937": "minecraft:andesite_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "11938": "minecraft:andesite_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "11939": "minecraft:andesite_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "11940": "minecraft:andesite_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "11941": "minecraft:andesite_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "11942": "minecraft:andesite_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "11943": "minecraft:andesite_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "11944": "minecraft:andesite_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "11945": "minecraft:andesite_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "11946": "minecraft:andesite_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "11947": "minecraft:andesite_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "11948": "minecraft:andesite_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "11949": "minecraft:andesite_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "11950": "minecraft:andesite_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "11951": "minecraft:andesite_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "11952": "minecraft:andesite_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "11953": "minecraft:andesite_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "11954": "minecraft:andesite_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "11955": "minecraft:andesite_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "11956": "minecraft:andesite_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "11957": "minecraft:andesite_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "11958": "minecraft:andesite_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "11959": "minecraft:andesite_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "11960": "minecraft:andesite_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "11961": "minecraft:andesite_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "11962": "minecraft:andesite_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "11963": "minecraft:andesite_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "11964": "minecraft:andesite_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "11965": "minecraft:andesite_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "11966": "minecraft:andesite_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "11967": "minecraft:andesite_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "11968": "minecraft:andesite_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "11969": "minecraft:andesite_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "11970": "minecraft:andesite_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "11971": "minecraft:andesite_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "11972": "minecraft:andesite_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "11973": "minecraft:andesite_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "11974": "minecraft:andesite_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "11975": "minecraft:andesite_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "11976": "minecraft:andesite_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "11977": "minecraft:andesite_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "11978": "minecraft:andesite_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "11979": "minecraft:andesite_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "11980": "minecraft:andesite_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "11981": "minecraft:andesite_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "11982": "minecraft:andesite_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "11983": "minecraft:andesite_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "11984": "minecraft:andesite_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "11985": "minecraft:andesite_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "11986": "minecraft:andesite_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "11987": "minecraft:andesite_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "11988": "minecraft:andesite_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "11989": "minecraft:andesite_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "11990": "minecraft:andesite_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "11991": "minecraft:andesite_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "11992": "minecraft:potted_red_mushroom", + "11993": "minecraft:red_stained_glass", + "11994": "minecraft:green_stained_glass", + "11995": "minecraft:blue_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=true]", + "11996": "minecraft:blue_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=false]", + "11997": "minecraft:blue_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=true]", + "11998": "minecraft:blue_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=false]", + "11999": "minecraft:blue_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=true]", + "12000": "minecraft:blue_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=false]", + "12001": "minecraft:blue_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=true]", + "12002": "minecraft:blue_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=false]", + "12003": "minecraft:blue_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=true]", + "12004": "minecraft:blue_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=false]", + "12005": "minecraft:blue_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=true]", + "12006": "minecraft:blue_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=false]", + "12007": "minecraft:blue_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=true]", + "12008": "minecraft:blue_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=false]", + "12009": "minecraft:blue_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=true]", + "12010": "minecraft:blue_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=false]", + "12011": "minecraft:blue_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=true]", + "12012": "minecraft:blue_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=false]", + "12013": "minecraft:blue_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=true]", + "12014": "minecraft:blue_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=false]", + "12015": "minecraft:blue_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=true]", + "12016": "minecraft:blue_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=false]", + "12017": "minecraft:blue_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=true]", + "12018": "minecraft:blue_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=false]", + "12019": "minecraft:blue_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=true]", + "12020": "minecraft:blue_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=false]", + "12021": "minecraft:blue_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=true]", + "12022": "minecraft:blue_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=false]", + "12023": "minecraft:blue_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=true]", + "12024": "minecraft:blue_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=false]", + "12025": "minecraft:blue_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=true]", + "12026": "minecraft:blue_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]", + "12027": "minecraft:black_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=true]", + "12028": "minecraft:black_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=false]", + "12029": "minecraft:black_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=true]", + "12030": "minecraft:black_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=false]", + "12031": "minecraft:black_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=true]", + "12032": "minecraft:black_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=false]", + "12033": "minecraft:black_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=true]", + "12034": "minecraft:black_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=false]", + "12035": "minecraft:black_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=true]", + "12036": "minecraft:black_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=false]", + "12037": "minecraft:black_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=true]", + "12038": "minecraft:black_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=false]", + "12039": "minecraft:black_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=true]", + "12040": "minecraft:black_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=false]", + "12041": "minecraft:black_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=true]", + "12042": "minecraft:black_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=false]", + "12043": "minecraft:black_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=true]", + "12044": "minecraft:black_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=false]", + "12045": "minecraft:black_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=true]", + "12046": "minecraft:black_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=false]", + "12047": "minecraft:black_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=true]", + "12048": "minecraft:black_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=false]", + "12049": "minecraft:black_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=true]", + "12050": "minecraft:black_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=false]", + "12051": "minecraft:black_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=true]", + "12052": "minecraft:black_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=false]", + "12053": "minecraft:black_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=true]", + "12054": "minecraft:black_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=false]", + "12055": "minecraft:black_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=true]", + "12056": "minecraft:black_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=false]", + "12057": "minecraft:black_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=true]", + "12058": "minecraft:black_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]", + "12059": "minecraft:jungle_log[axis=x]", + "12060": "minecraft:jungle_log[axis=y]", + "12061": "minecraft:jungle_log[axis=z]", + "12062": "minecraft:stone_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "12063": "minecraft:stone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "12064": "minecraft:stone_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "12065": "minecraft:stone_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "12066": "minecraft:stone_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "12067": "minecraft:stone_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "12068": "minecraft:stone_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "12069": "minecraft:stone_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "12070": "minecraft:stone_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "12071": "minecraft:stone_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "12072": "minecraft:stone_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "12073": "minecraft:stone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "12074": "minecraft:stone_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "12075": "minecraft:stone_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "12076": "minecraft:stone_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "12077": "minecraft:stone_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "12078": "minecraft:stone_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "12079": "minecraft:stone_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "12080": "minecraft:stone_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "12081": "minecraft:stone_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "12082": "minecraft:stone_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "12083": "minecraft:stone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "12084": "minecraft:stone_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "12085": "minecraft:stone_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "12086": "minecraft:stone_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "12087": "minecraft:stone_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "12088": "minecraft:stone_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "12089": "minecraft:stone_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "12090": "minecraft:stone_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "12091": "minecraft:stone_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "12092": "minecraft:stone_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "12093": "minecraft:stone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "12094": "minecraft:stone_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "12095": "minecraft:stone_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "12096": "minecraft:stone_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "12097": "minecraft:stone_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "12098": "minecraft:stone_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "12099": "minecraft:stone_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "12100": "minecraft:stone_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "12101": "minecraft:stone_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "12102": "minecraft:stone_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "12103": "minecraft:stone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "12104": "minecraft:stone_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "12105": "minecraft:stone_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "12106": "minecraft:stone_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "12107": "minecraft:stone_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "12108": "minecraft:stone_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "12109": "minecraft:stone_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "12110": "minecraft:stone_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "12111": "minecraft:stone_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "12112": "minecraft:stone_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "12113": "minecraft:stone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "12114": "minecraft:stone_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "12115": "minecraft:stone_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "12116": "minecraft:stone_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "12117": "minecraft:stone_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "12118": "minecraft:stone_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "12119": "minecraft:stone_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "12120": "minecraft:stone_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "12121": "minecraft:stone_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "12122": "minecraft:stone_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "12123": "minecraft:stone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "12124": "minecraft:stone_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "12125": "minecraft:stone_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "12126": "minecraft:stone_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "12127": "minecraft:stone_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "12128": "minecraft:stone_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "12129": "minecraft:stone_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "12130": "minecraft:stone_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "12131": "minecraft:stone_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "12132": "minecraft:stone_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "12133": "minecraft:stone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "12134": "minecraft:stone_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "12135": "minecraft:stone_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "12136": "minecraft:stone_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "12137": "minecraft:stone_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "12138": "minecraft:stone_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "12139": "minecraft:stone_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "12140": "minecraft:stone_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "12141": "minecraft:stone_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "12142": "minecraft:pink_concrete", + "12143": "minecraft:potted_poppy", + "12144": "minecraft:stripped_birch_log[axis=x]", + "12145": "minecraft:stripped_birch_log[axis=y]", + "12146": "minecraft:stripped_birch_log[axis=z]", + "12147": "minecraft:stripped_jungle_log[axis=x]", + "12148": "minecraft:stripped_jungle_log[axis=y]", + "12149": "minecraft:stripped_jungle_log[axis=z]", + "12150": "minecraft:red_concrete_powder", + "12151": "minecraft:orange_wool", + "12152": "minecraft:cyan_wool", + "12153": "minecraft:red_concrete", + "12154": "minecraft:potted_jungle_sapling", + "12155": "minecraft:gray_terracotta", + "12156": "minecraft:grass", + "12157": "minecraft:gravel", + "12158": "minecraft:gray_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=true]", + "12159": "minecraft:gray_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=false]", + "12160": "minecraft:gray_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=true]", + "12161": "minecraft:gray_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=false]", + "12162": "minecraft:gray_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=true]", + "12163": "minecraft:gray_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=false]", + "12164": "minecraft:gray_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=true]", + "12165": "minecraft:gray_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=false]", + "12166": "minecraft:gray_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=true]", + "12167": "minecraft:gray_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=false]", + "12168": "minecraft:gray_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=true]", + "12169": "minecraft:gray_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=false]", + "12170": "minecraft:gray_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=true]", + "12171": "minecraft:gray_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=false]", + "12172": "minecraft:gray_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=true]", + "12173": "minecraft:gray_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=false]", + "12174": "minecraft:gray_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=true]", + "12175": "minecraft:gray_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=false]", + "12176": "minecraft:gray_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=true]", + "12177": "minecraft:gray_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=false]", + "12178": "minecraft:gray_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=true]", + "12179": "minecraft:gray_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=false]", + "12180": "minecraft:gray_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=true]", + "12181": "minecraft:gray_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=false]", + "12182": "minecraft:gray_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=true]", + "12183": "minecraft:gray_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=false]", + "12184": "minecraft:gray_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=true]", + "12185": "minecraft:gray_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=false]", + "12186": "minecraft:gray_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=true]", + "12187": "minecraft:gray_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=false]", + "12188": "minecraft:gray_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=true]", + "12189": "minecraft:gray_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]", + "12190": "minecraft:shroomlight", + "12191": "minecraft:dead_horn_coral_wall_fan[facing=north,waterlogged=true]", + "12192": "minecraft:dead_horn_coral_wall_fan[facing=north,waterlogged=false]", + "12193": "minecraft:dead_horn_coral_wall_fan[facing=south,waterlogged=true]", + "12194": "minecraft:dead_horn_coral_wall_fan[facing=south,waterlogged=false]", + "12195": "minecraft:dead_horn_coral_wall_fan[facing=west,waterlogged=true]", + "12196": "minecraft:dead_horn_coral_wall_fan[facing=west,waterlogged=false]", + "12197": "minecraft:dead_horn_coral_wall_fan[facing=east,waterlogged=true]", + "12198": "minecraft:dead_horn_coral_wall_fan[facing=east,waterlogged=false]", + "12199": "minecraft:birch_button[face=floor,facing=north,powered=true]", + "12200": "minecraft:birch_button[face=floor,facing=north,powered=false]", + "12201": "minecraft:birch_button[face=floor,facing=south,powered=true]", + "12202": "minecraft:birch_button[face=floor,facing=south,powered=false]", + "12203": "minecraft:birch_button[face=floor,facing=west,powered=true]", + "12204": "minecraft:birch_button[face=floor,facing=west,powered=false]", + "12205": "minecraft:birch_button[face=floor,facing=east,powered=true]", + "12206": "minecraft:birch_button[face=floor,facing=east,powered=false]", + "12207": "minecraft:birch_button[face=wall,facing=north,powered=true]", + "12208": "minecraft:birch_button[face=wall,facing=north,powered=false]", + "12209": "minecraft:birch_button[face=wall,facing=south,powered=true]", + "12210": "minecraft:birch_button[face=wall,facing=south,powered=false]", + "12211": "minecraft:birch_button[face=wall,facing=west,powered=true]", + "12212": "minecraft:birch_button[face=wall,facing=west,powered=false]", + "12213": "minecraft:birch_button[face=wall,facing=east,powered=true]", + "12214": "minecraft:birch_button[face=wall,facing=east,powered=false]", + "12215": "minecraft:birch_button[face=ceiling,facing=north,powered=true]", + "12216": "minecraft:birch_button[face=ceiling,facing=north,powered=false]", + "12217": "minecraft:birch_button[face=ceiling,facing=south,powered=true]", + "12218": "minecraft:birch_button[face=ceiling,facing=south,powered=false]", + "12219": "minecraft:birch_button[face=ceiling,facing=west,powered=true]", + "12220": "minecraft:birch_button[face=ceiling,facing=west,powered=false]", + "12221": "minecraft:birch_button[face=ceiling,facing=east,powered=true]", + "12222": "minecraft:birch_button[face=ceiling,facing=east,powered=false]", + "12223": "minecraft:wheat[age=0]", + "12224": "minecraft:wheat[age=1]", + "12225": "minecraft:wheat[age=2]", + "12226": "minecraft:wheat[age=3]", + "12227": "minecraft:wheat[age=4]", + "12228": "minecraft:wheat[age=5]", + "12229": "minecraft:wheat[age=6]", + "12230": "minecraft:wheat[age=7]", + "12231": "minecraft:acacia_fence[east=true,north=true,south=true,waterlogged=true,west=true]", + "12232": "minecraft:acacia_fence[east=true,north=true,south=true,waterlogged=true,west=false]", + "12233": "minecraft:acacia_fence[east=true,north=true,south=true,waterlogged=false,west=true]", + "12234": "minecraft:acacia_fence[east=true,north=true,south=true,waterlogged=false,west=false]", + "12235": "minecraft:acacia_fence[east=true,north=true,south=false,waterlogged=true,west=true]", + "12236": "minecraft:acacia_fence[east=true,north=true,south=false,waterlogged=true,west=false]", + "12237": "minecraft:acacia_fence[east=true,north=true,south=false,waterlogged=false,west=true]", + "12238": "minecraft:acacia_fence[east=true,north=true,south=false,waterlogged=false,west=false]", + "12239": "minecraft:acacia_fence[east=true,north=false,south=true,waterlogged=true,west=true]", + "12240": "minecraft:acacia_fence[east=true,north=false,south=true,waterlogged=true,west=false]", + "12241": "minecraft:acacia_fence[east=true,north=false,south=true,waterlogged=false,west=true]", + "12242": "minecraft:acacia_fence[east=true,north=false,south=true,waterlogged=false,west=false]", + "12243": "minecraft:acacia_fence[east=true,north=false,south=false,waterlogged=true,west=true]", + "12244": "minecraft:acacia_fence[east=true,north=false,south=false,waterlogged=true,west=false]", + "12245": "minecraft:acacia_fence[east=true,north=false,south=false,waterlogged=false,west=true]", + "12246": "minecraft:acacia_fence[east=true,north=false,south=false,waterlogged=false,west=false]", + "12247": "minecraft:acacia_fence[east=false,north=true,south=true,waterlogged=true,west=true]", + "12248": "minecraft:acacia_fence[east=false,north=true,south=true,waterlogged=true,west=false]", + "12249": "minecraft:acacia_fence[east=false,north=true,south=true,waterlogged=false,west=true]", + "12250": "minecraft:acacia_fence[east=false,north=true,south=true,waterlogged=false,west=false]", + "12251": "minecraft:acacia_fence[east=false,north=true,south=false,waterlogged=true,west=true]", + "12252": "minecraft:acacia_fence[east=false,north=true,south=false,waterlogged=true,west=false]", + "12253": "minecraft:acacia_fence[east=false,north=true,south=false,waterlogged=false,west=true]", + "12254": "minecraft:acacia_fence[east=false,north=true,south=false,waterlogged=false,west=false]", + "12255": "minecraft:acacia_fence[east=false,north=false,south=true,waterlogged=true,west=true]", + "12256": "minecraft:acacia_fence[east=false,north=false,south=true,waterlogged=true,west=false]", + "12257": "minecraft:acacia_fence[east=false,north=false,south=true,waterlogged=false,west=true]", + "12258": "minecraft:acacia_fence[east=false,north=false,south=true,waterlogged=false,west=false]", + "12259": "minecraft:acacia_fence[east=false,north=false,south=false,waterlogged=true,west=true]", + "12260": "minecraft:acacia_fence[east=false,north=false,south=false,waterlogged=true,west=false]", + "12261": "minecraft:acacia_fence[east=false,north=false,south=false,waterlogged=false,west=true]", + "12262": "minecraft:acacia_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "12263": "minecraft:warped_roots", + "12264": "minecraft:pink_concrete_powder", + "12265": "minecraft:jungle_sapling[stage=0]", + "12266": "minecraft:jungle_sapling[stage=1]", + "12267": "minecraft:black_terracotta", + "12268": "minecraft:pink_wall_banner[facing=north]", + "12269": "minecraft:pink_wall_banner[facing=south]", + "12270": "minecraft:pink_wall_banner[facing=west]", + "12271": "minecraft:pink_wall_banner[facing=east]", + "12272": "minecraft:infested_cracked_stone_bricks", + "12273": "minecraft:bell[attachment=floor,facing=north,powered=true]", + "12274": "minecraft:bell[attachment=floor,facing=north,powered=false]", + "12275": "minecraft:bell[attachment=floor,facing=south,powered=true]", + "12276": "minecraft:bell[attachment=floor,facing=south,powered=false]", + "12277": "minecraft:bell[attachment=floor,facing=west,powered=true]", + "12278": "minecraft:bell[attachment=floor,facing=west,powered=false]", + "12279": "minecraft:bell[attachment=floor,facing=east,powered=true]", + "12280": "minecraft:bell[attachment=floor,facing=east,powered=false]", + "12281": "minecraft:bell[attachment=ceiling,facing=north,powered=true]", + "12282": "minecraft:bell[attachment=ceiling,facing=north,powered=false]", + "12283": "minecraft:bell[attachment=ceiling,facing=south,powered=true]", + "12284": "minecraft:bell[attachment=ceiling,facing=south,powered=false]", + "12285": "minecraft:bell[attachment=ceiling,facing=west,powered=true]", + "12286": "minecraft:bell[attachment=ceiling,facing=west,powered=false]", + "12287": "minecraft:bell[attachment=ceiling,facing=east,powered=true]", + "12288": "minecraft:bell[attachment=ceiling,facing=east,powered=false]", + "12289": "minecraft:bell[attachment=single_wall,facing=north,powered=true]", + "12290": "minecraft:bell[attachment=single_wall,facing=north,powered=false]", + "12291": "minecraft:bell[attachment=single_wall,facing=south,powered=true]", + "12292": "minecraft:bell[attachment=single_wall,facing=south,powered=false]", + "12293": "minecraft:bell[attachment=single_wall,facing=west,powered=true]", + "12294": "minecraft:bell[attachment=single_wall,facing=west,powered=false]", + "12295": "minecraft:bell[attachment=single_wall,facing=east,powered=true]", + "12296": "minecraft:bell[attachment=single_wall,facing=east,powered=false]", + "12297": "minecraft:bell[attachment=double_wall,facing=north,powered=true]", + "12298": "minecraft:bell[attachment=double_wall,facing=north,powered=false]", + "12299": "minecraft:bell[attachment=double_wall,facing=south,powered=true]", + "12300": "minecraft:bell[attachment=double_wall,facing=south,powered=false]", + "12301": "minecraft:bell[attachment=double_wall,facing=west,powered=true]", + "12302": "minecraft:bell[attachment=double_wall,facing=west,powered=false]", + "12303": "minecraft:bell[attachment=double_wall,facing=east,powered=true]", + "12304": "minecraft:bell[attachment=double_wall,facing=east,powered=false]", + "12305": "minecraft:infested_stone", + "12306": "minecraft:purple_banner[rotation=0]", + "12307": "minecraft:purple_banner[rotation=1]", + "12308": "minecraft:purple_banner[rotation=2]", + "12309": "minecraft:purple_banner[rotation=3]", + "12310": "minecraft:purple_banner[rotation=4]", + "12311": "minecraft:purple_banner[rotation=5]", + "12312": "minecraft:purple_banner[rotation=6]", + "12313": "minecraft:purple_banner[rotation=7]", + "12314": "minecraft:purple_banner[rotation=8]", + "12315": "minecraft:purple_banner[rotation=9]", + "12316": "minecraft:purple_banner[rotation=10]", + "12317": "minecraft:purple_banner[rotation=11]", + "12318": "minecraft:purple_banner[rotation=12]", + "12319": "minecraft:purple_banner[rotation=13]", + "12320": "minecraft:purple_banner[rotation=14]", + "12321": "minecraft:purple_banner[rotation=15]", + "12322": "minecraft:attached_pumpkin_stem[facing=north]", + "12323": "minecraft:attached_pumpkin_stem[facing=south]", + "12324": "minecraft:attached_pumpkin_stem[facing=west]", + "12325": "minecraft:attached_pumpkin_stem[facing=east]", + "12326": "minecraft:stripped_warped_hyphae[axis=x]", + "12327": "minecraft:stripped_warped_hyphae[axis=y]", + "12328": "minecraft:stripped_warped_hyphae[axis=z]", + "12329": "minecraft:magenta_wall_banner[facing=north]", + "12330": "minecraft:magenta_wall_banner[facing=south]", + "12331": "minecraft:magenta_wall_banner[facing=west]", + "12332": "minecraft:magenta_wall_banner[facing=east]", + "12333": "minecraft:sweet_berry_bush[age=0]", + "12334": "minecraft:sweet_berry_bush[age=1]", + "12335": "minecraft:sweet_berry_bush[age=2]", + "12336": "minecraft:sweet_berry_bush[age=3]", + "12337": "minecraft:structure_void", + "12338": "minecraft:redstone_ore[lit=true]", + "12339": "minecraft:redstone_ore[lit=false]", + "12340": "minecraft:magma_block", + "12341": "minecraft:birch_pressure_plate[powered=true]", + "12342": "minecraft:birch_pressure_plate[powered=false]", + "12343": "minecraft:red_banner[rotation=0]", + "12344": "minecraft:red_banner[rotation=1]", + "12345": "minecraft:red_banner[rotation=2]", + "12346": "minecraft:red_banner[rotation=3]", + "12347": "minecraft:red_banner[rotation=4]", + "12348": "minecraft:red_banner[rotation=5]", + "12349": "minecraft:red_banner[rotation=6]", + "12350": "minecraft:red_banner[rotation=7]", + "12351": "minecraft:red_banner[rotation=8]", + "12352": "minecraft:red_banner[rotation=9]", + "12353": "minecraft:red_banner[rotation=10]", + "12354": "minecraft:red_banner[rotation=11]", + "12355": "minecraft:red_banner[rotation=12]", + "12356": "minecraft:red_banner[rotation=13]", + "12357": "minecraft:red_banner[rotation=14]", + "12358": "minecraft:red_banner[rotation=15]", + "12359": "minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true]", + "12360": "minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=false]", + "12361": "minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=false,west=true]", + "12362": "minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=false,west=false]", + "12363": "minecraft:chorus_plant[down=true,east=true,north=true,south=false,up=true,west=true]", + "12364": "minecraft:chorus_plant[down=true,east=true,north=true,south=false,up=true,west=false]", + "12365": "minecraft:chorus_plant[down=true,east=true,north=true,south=false,up=false,west=true]", + "12366": "minecraft:chorus_plant[down=true,east=true,north=true,south=false,up=false,west=false]", + "12367": "minecraft:chorus_plant[down=true,east=true,north=false,south=true,up=true,west=true]", + "12368": "minecraft:chorus_plant[down=true,east=true,north=false,south=true,up=true,west=false]", + "12369": "minecraft:chorus_plant[down=true,east=true,north=false,south=true,up=false,west=true]", + "12370": "minecraft:chorus_plant[down=true,east=true,north=false,south=true,up=false,west=false]", + "12371": "minecraft:chorus_plant[down=true,east=true,north=false,south=false,up=true,west=true]", + "12372": "minecraft:chorus_plant[down=true,east=true,north=false,south=false,up=true,west=false]", + "12373": "minecraft:chorus_plant[down=true,east=true,north=false,south=false,up=false,west=true]", + "12374": "minecraft:chorus_plant[down=true,east=true,north=false,south=false,up=false,west=false]", + "12375": "minecraft:chorus_plant[down=true,east=false,north=true,south=true,up=true,west=true]", + "12376": "minecraft:chorus_plant[down=true,east=false,north=true,south=true,up=true,west=false]", + "12377": "minecraft:chorus_plant[down=true,east=false,north=true,south=true,up=false,west=true]", + "12378": "minecraft:chorus_plant[down=true,east=false,north=true,south=true,up=false,west=false]", + "12379": "minecraft:chorus_plant[down=true,east=false,north=true,south=false,up=true,west=true]", + "12380": "minecraft:chorus_plant[down=true,east=false,north=true,south=false,up=true,west=false]", + "12381": "minecraft:chorus_plant[down=true,east=false,north=true,south=false,up=false,west=true]", + "12382": "minecraft:chorus_plant[down=true,east=false,north=true,south=false,up=false,west=false]", + "12383": "minecraft:chorus_plant[down=true,east=false,north=false,south=true,up=true,west=true]", + "12384": "minecraft:chorus_plant[down=true,east=false,north=false,south=true,up=true,west=false]", + "12385": "minecraft:chorus_plant[down=true,east=false,north=false,south=true,up=false,west=true]", + "12386": "minecraft:chorus_plant[down=true,east=false,north=false,south=true,up=false,west=false]", + "12387": "minecraft:chorus_plant[down=true,east=false,north=false,south=false,up=true,west=true]", + "12388": "minecraft:chorus_plant[down=true,east=false,north=false,south=false,up=true,west=false]", + "12389": "minecraft:chorus_plant[down=true,east=false,north=false,south=false,up=false,west=true]", + "12390": "minecraft:chorus_plant[down=true,east=false,north=false,south=false,up=false,west=false]", + "12391": "minecraft:chorus_plant[down=false,east=true,north=true,south=true,up=true,west=true]", + "12392": "minecraft:chorus_plant[down=false,east=true,north=true,south=true,up=true,west=false]", + "12393": "minecraft:chorus_plant[down=false,east=true,north=true,south=true,up=false,west=true]", + "12394": "minecraft:chorus_plant[down=false,east=true,north=true,south=true,up=false,west=false]", + "12395": "minecraft:chorus_plant[down=false,east=true,north=true,south=false,up=true,west=true]", + "12396": "minecraft:chorus_plant[down=false,east=true,north=true,south=false,up=true,west=false]", + "12397": "minecraft:chorus_plant[down=false,east=true,north=true,south=false,up=false,west=true]", + "12398": "minecraft:chorus_plant[down=false,east=true,north=true,south=false,up=false,west=false]", + "12399": "minecraft:chorus_plant[down=false,east=true,north=false,south=true,up=true,west=true]", + "12400": "minecraft:chorus_plant[down=false,east=true,north=false,south=true,up=true,west=false]", + "12401": "minecraft:chorus_plant[down=false,east=true,north=false,south=true,up=false,west=true]", + "12402": "minecraft:chorus_plant[down=false,east=true,north=false,south=true,up=false,west=false]", + "12403": "minecraft:chorus_plant[down=false,east=true,north=false,south=false,up=true,west=true]", + "12404": "minecraft:chorus_plant[down=false,east=true,north=false,south=false,up=true,west=false]", + "12405": "minecraft:chorus_plant[down=false,east=true,north=false,south=false,up=false,west=true]", + "12406": "minecraft:chorus_plant[down=false,east=true,north=false,south=false,up=false,west=false]", + "12407": "minecraft:chorus_plant[down=false,east=false,north=true,south=true,up=true,west=true]", + "12408": "minecraft:chorus_plant[down=false,east=false,north=true,south=true,up=true,west=false]", + "12409": "minecraft:chorus_plant[down=false,east=false,north=true,south=true,up=false,west=true]", + "12410": "minecraft:chorus_plant[down=false,east=false,north=true,south=true,up=false,west=false]", + "12411": "minecraft:chorus_plant[down=false,east=false,north=true,south=false,up=true,west=true]", + "12412": "minecraft:chorus_plant[down=false,east=false,north=true,south=false,up=true,west=false]", + "12413": "minecraft:chorus_plant[down=false,east=false,north=true,south=false,up=false,west=true]", + "12414": "minecraft:chorus_plant[down=false,east=false,north=true,south=false,up=false,west=false]", + "12415": "minecraft:chorus_plant[down=false,east=false,north=false,south=true,up=true,west=true]", + "12416": "minecraft:chorus_plant[down=false,east=false,north=false,south=true,up=true,west=false]", + "12417": "minecraft:chorus_plant[down=false,east=false,north=false,south=true,up=false,west=true]", + "12418": "minecraft:chorus_plant[down=false,east=false,north=false,south=true,up=false,west=false]", + "12419": "minecraft:chorus_plant[down=false,east=false,north=false,south=false,up=true,west=true]", + "12420": "minecraft:chorus_plant[down=false,east=false,north=false,south=false,up=true,west=false]", + "12421": "minecraft:chorus_plant[down=false,east=false,north=false,south=false,up=false,west=true]", + "12422": "minecraft:chorus_plant[down=false,east=false,north=false,south=false,up=false,west=false]", + "12423": "minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true]", + "12424": "minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=false]", + "12425": "minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=false,west=true]", + "12426": "minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=false,west=false]", + "12427": "minecraft:mushroom_stem[down=true,east=true,north=true,south=false,up=true,west=true]", + "12428": "minecraft:mushroom_stem[down=true,east=true,north=true,south=false,up=true,west=false]", + "12429": "minecraft:mushroom_stem[down=true,east=true,north=true,south=false,up=false,west=true]", + "12430": "minecraft:mushroom_stem[down=true,east=true,north=true,south=false,up=false,west=false]", + "12431": "minecraft:mushroom_stem[down=true,east=true,north=false,south=true,up=true,west=true]", + "12432": "minecraft:mushroom_stem[down=true,east=true,north=false,south=true,up=true,west=false]", + "12433": "minecraft:mushroom_stem[down=true,east=true,north=false,south=true,up=false,west=true]", + "12434": "minecraft:mushroom_stem[down=true,east=true,north=false,south=true,up=false,west=false]", + "12435": "minecraft:mushroom_stem[down=true,east=true,north=false,south=false,up=true,west=true]", + "12436": "minecraft:mushroom_stem[down=true,east=true,north=false,south=false,up=true,west=false]", + "12437": "minecraft:mushroom_stem[down=true,east=true,north=false,south=false,up=false,west=true]", + "12438": "minecraft:mushroom_stem[down=true,east=true,north=false,south=false,up=false,west=false]", + "12439": "minecraft:mushroom_stem[down=true,east=false,north=true,south=true,up=true,west=true]", + "12440": "minecraft:mushroom_stem[down=true,east=false,north=true,south=true,up=true,west=false]", + "12441": "minecraft:mushroom_stem[down=true,east=false,north=true,south=true,up=false,west=true]", + "12442": "minecraft:mushroom_stem[down=true,east=false,north=true,south=true,up=false,west=false]", + "12443": "minecraft:mushroom_stem[down=true,east=false,north=true,south=false,up=true,west=true]", + "12444": "minecraft:mushroom_stem[down=true,east=false,north=true,south=false,up=true,west=false]", + "12445": "minecraft:mushroom_stem[down=true,east=false,north=true,south=false,up=false,west=true]", + "12446": "minecraft:mushroom_stem[down=true,east=false,north=true,south=false,up=false,west=false]", + "12447": "minecraft:mushroom_stem[down=true,east=false,north=false,south=true,up=true,west=true]", + "12448": "minecraft:mushroom_stem[down=true,east=false,north=false,south=true,up=true,west=false]", + "12449": "minecraft:mushroom_stem[down=true,east=false,north=false,south=true,up=false,west=true]", + "12450": "minecraft:mushroom_stem[down=true,east=false,north=false,south=true,up=false,west=false]", + "12451": "minecraft:mushroom_stem[down=true,east=false,north=false,south=false,up=true,west=true]", + "12452": "minecraft:mushroom_stem[down=true,east=false,north=false,south=false,up=true,west=false]", + "12453": "minecraft:mushroom_stem[down=true,east=false,north=false,south=false,up=false,west=true]", + "12454": "minecraft:mushroom_stem[down=true,east=false,north=false,south=false,up=false,west=false]", + "12455": "minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=true,west=true]", + "12456": "minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=true,west=false]", + "12457": "minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=false,west=true]", + "12458": "minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=false,west=false]", + "12459": "minecraft:mushroom_stem[down=false,east=true,north=true,south=false,up=true,west=true]", + "12460": "minecraft:mushroom_stem[down=false,east=true,north=true,south=false,up=true,west=false]", + "12461": "minecraft:mushroom_stem[down=false,east=true,north=true,south=false,up=false,west=true]", + "12462": "minecraft:mushroom_stem[down=false,east=true,north=true,south=false,up=false,west=false]", + "12463": "minecraft:mushroom_stem[down=false,east=true,north=false,south=true,up=true,west=true]", + "12464": "minecraft:mushroom_stem[down=false,east=true,north=false,south=true,up=true,west=false]", + "12465": "minecraft:mushroom_stem[down=false,east=true,north=false,south=true,up=false,west=true]", + "12466": "minecraft:mushroom_stem[down=false,east=true,north=false,south=true,up=false,west=false]", + "12467": "minecraft:mushroom_stem[down=false,east=true,north=false,south=false,up=true,west=true]", + "12468": "minecraft:mushroom_stem[down=false,east=true,north=false,south=false,up=true,west=false]", + "12469": "minecraft:mushroom_stem[down=false,east=true,north=false,south=false,up=false,west=true]", + "12470": "minecraft:mushroom_stem[down=false,east=true,north=false,south=false,up=false,west=false]", + "12471": "minecraft:mushroom_stem[down=false,east=false,north=true,south=true,up=true,west=true]", + "12472": "minecraft:mushroom_stem[down=false,east=false,north=true,south=true,up=true,west=false]", + "12473": "minecraft:mushroom_stem[down=false,east=false,north=true,south=true,up=false,west=true]", + "12474": "minecraft:mushroom_stem[down=false,east=false,north=true,south=true,up=false,west=false]", + "12475": "minecraft:mushroom_stem[down=false,east=false,north=true,south=false,up=true,west=true]", + "12476": "minecraft:mushroom_stem[down=false,east=false,north=true,south=false,up=true,west=false]", + "12477": "minecraft:mushroom_stem[down=false,east=false,north=true,south=false,up=false,west=true]", + "12478": "minecraft:mushroom_stem[down=false,east=false,north=true,south=false,up=false,west=false]", + "12479": "minecraft:mushroom_stem[down=false,east=false,north=false,south=true,up=true,west=true]", + "12480": "minecraft:mushroom_stem[down=false,east=false,north=false,south=true,up=true,west=false]", + "12481": "minecraft:mushroom_stem[down=false,east=false,north=false,south=true,up=false,west=true]", + "12482": "minecraft:mushroom_stem[down=false,east=false,north=false,south=true,up=false,west=false]", + "12483": "minecraft:mushroom_stem[down=false,east=false,north=false,south=false,up=true,west=true]", + "12484": "minecraft:mushroom_stem[down=false,east=false,north=false,south=false,up=true,west=false]", + "12485": "minecraft:mushroom_stem[down=false,east=false,north=false,south=false,up=false,west=true]", + "12486": "minecraft:mushroom_stem[down=false,east=false,north=false,south=false,up=false,west=false]", + "12487": "minecraft:acacia_wall_sign[facing=north,waterlogged=true]", + "12488": "minecraft:acacia_wall_sign[facing=north,waterlogged=false]", + "12489": "minecraft:acacia_wall_sign[facing=south,waterlogged=true]", + "12490": "minecraft:acacia_wall_sign[facing=south,waterlogged=false]", + "12491": "minecraft:acacia_wall_sign[facing=west,waterlogged=true]", + "12492": "minecraft:acacia_wall_sign[facing=west,waterlogged=false]", + "12493": "minecraft:acacia_wall_sign[facing=east,waterlogged=true]", + "12494": "minecraft:acacia_wall_sign[facing=east,waterlogged=false]", + "12495": "minecraft:end_gateway", + "12496": "minecraft:cobblestone_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "12497": "minecraft:cobblestone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "12498": "minecraft:cobblestone_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "12499": "minecraft:cobblestone_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "12500": "minecraft:cobblestone_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "12501": "minecraft:cobblestone_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "12502": "minecraft:cobblestone_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "12503": "minecraft:cobblestone_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "12504": "minecraft:cobblestone_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "12505": "minecraft:cobblestone_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "12506": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "12507": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "12508": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "12509": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "12510": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "12511": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "12512": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "12513": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "12514": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "12515": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "12516": "minecraft:cobblestone_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "12517": "minecraft:cobblestone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "12518": "minecraft:cobblestone_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "12519": "minecraft:cobblestone_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "12520": "minecraft:cobblestone_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "12521": "minecraft:cobblestone_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "12522": "minecraft:cobblestone_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "12523": "minecraft:cobblestone_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "12524": "minecraft:cobblestone_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "12525": "minecraft:cobblestone_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "12526": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "12527": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "12528": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "12529": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "12530": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "12531": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "12532": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "12533": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "12534": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "12535": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "12536": "minecraft:cobblestone_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "12537": "minecraft:cobblestone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "12538": "minecraft:cobblestone_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "12539": "minecraft:cobblestone_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "12540": "minecraft:cobblestone_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "12541": "minecraft:cobblestone_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "12542": "minecraft:cobblestone_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "12543": "minecraft:cobblestone_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "12544": "minecraft:cobblestone_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "12545": "minecraft:cobblestone_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "12546": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "12547": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "12548": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "12549": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "12550": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "12551": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "12552": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "12553": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "12554": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "12555": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "12556": "minecraft:cobblestone_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "12557": "minecraft:cobblestone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "12558": "minecraft:cobblestone_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "12559": "minecraft:cobblestone_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "12560": "minecraft:cobblestone_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "12561": "minecraft:cobblestone_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "12562": "minecraft:cobblestone_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "12563": "minecraft:cobblestone_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "12564": "minecraft:cobblestone_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "12565": "minecraft:cobblestone_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "12566": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "12567": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "12568": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "12569": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "12570": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "12571": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "12572": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "12573": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "12574": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "12575": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "12576": "minecraft:dark_oak_sign[rotation=0,waterlogged=true]", + "12577": "minecraft:dark_oak_sign[rotation=0,waterlogged=false]", + "12578": "minecraft:dark_oak_sign[rotation=1,waterlogged=true]", + "12579": "minecraft:dark_oak_sign[rotation=1,waterlogged=false]", + "12580": "minecraft:dark_oak_sign[rotation=2,waterlogged=true]", + "12581": "minecraft:dark_oak_sign[rotation=2,waterlogged=false]", + "12582": "minecraft:dark_oak_sign[rotation=3,waterlogged=true]", + "12583": "minecraft:dark_oak_sign[rotation=3,waterlogged=false]", + "12584": "minecraft:dark_oak_sign[rotation=4,waterlogged=true]", + "12585": "minecraft:dark_oak_sign[rotation=4,waterlogged=false]", + "12586": "minecraft:dark_oak_sign[rotation=5,waterlogged=true]", + "12587": "minecraft:dark_oak_sign[rotation=5,waterlogged=false]", + "12588": "minecraft:dark_oak_sign[rotation=6,waterlogged=true]", + "12589": "minecraft:dark_oak_sign[rotation=6,waterlogged=false]", + "12590": "minecraft:dark_oak_sign[rotation=7,waterlogged=true]", + "12591": "minecraft:dark_oak_sign[rotation=7,waterlogged=false]", + "12592": "minecraft:dark_oak_sign[rotation=8,waterlogged=true]", + "12593": "minecraft:dark_oak_sign[rotation=8,waterlogged=false]", + "12594": "minecraft:dark_oak_sign[rotation=9,waterlogged=true]", + "12595": "minecraft:dark_oak_sign[rotation=9,waterlogged=false]", + "12596": "minecraft:dark_oak_sign[rotation=10,waterlogged=true]", + "12597": "minecraft:dark_oak_sign[rotation=10,waterlogged=false]", + "12598": "minecraft:dark_oak_sign[rotation=11,waterlogged=true]", + "12599": "minecraft:dark_oak_sign[rotation=11,waterlogged=false]", + "12600": "minecraft:dark_oak_sign[rotation=12,waterlogged=true]", + "12601": "minecraft:dark_oak_sign[rotation=12,waterlogged=false]", + "12602": "minecraft:dark_oak_sign[rotation=13,waterlogged=true]", + "12603": "minecraft:dark_oak_sign[rotation=13,waterlogged=false]", + "12604": "minecraft:dark_oak_sign[rotation=14,waterlogged=true]", + "12605": "minecraft:dark_oak_sign[rotation=14,waterlogged=false]", + "12606": "minecraft:dark_oak_sign[rotation=15,waterlogged=true]", + "12607": "minecraft:dark_oak_sign[rotation=15,waterlogged=false]", + "12608": "minecraft:purpur_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "12609": "minecraft:purpur_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "12610": "minecraft:purpur_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "12611": "minecraft:purpur_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "12612": "minecraft:purpur_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "12613": "minecraft:purpur_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "12614": "minecraft:purpur_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "12615": "minecraft:purpur_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "12616": "minecraft:purpur_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "12617": "minecraft:purpur_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "12618": "minecraft:purpur_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "12619": "minecraft:purpur_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "12620": "minecraft:purpur_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "12621": "minecraft:purpur_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "12622": "minecraft:purpur_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "12623": "minecraft:purpur_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "12624": "minecraft:purpur_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "12625": "minecraft:purpur_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "12626": "minecraft:purpur_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "12627": "minecraft:purpur_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "12628": "minecraft:purpur_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "12629": "minecraft:purpur_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "12630": "minecraft:purpur_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "12631": "minecraft:purpur_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "12632": "minecraft:purpur_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "12633": "minecraft:purpur_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "12634": "minecraft:purpur_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "12635": "minecraft:purpur_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "12636": "minecraft:purpur_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "12637": "minecraft:purpur_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "12638": "minecraft:purpur_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "12639": "minecraft:purpur_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "12640": "minecraft:purpur_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "12641": "minecraft:purpur_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "12642": "minecraft:purpur_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "12643": "minecraft:purpur_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "12644": "minecraft:purpur_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "12645": "minecraft:purpur_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "12646": "minecraft:purpur_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "12647": "minecraft:purpur_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "12648": "minecraft:purpur_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "12649": "minecraft:purpur_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "12650": "minecraft:purpur_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "12651": "minecraft:purpur_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "12652": "minecraft:purpur_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "12653": "minecraft:purpur_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "12654": "minecraft:purpur_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "12655": "minecraft:purpur_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "12656": "minecraft:purpur_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "12657": "minecraft:purpur_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "12658": "minecraft:purpur_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "12659": "minecraft:purpur_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "12660": "minecraft:purpur_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "12661": "minecraft:purpur_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "12662": "minecraft:purpur_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "12663": "minecraft:purpur_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "12664": "minecraft:purpur_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "12665": "minecraft:purpur_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "12666": "minecraft:purpur_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "12667": "minecraft:purpur_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "12668": "minecraft:purpur_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "12669": "minecraft:purpur_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "12670": "minecraft:purpur_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "12671": "minecraft:purpur_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "12672": "minecraft:purpur_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "12673": "minecraft:purpur_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "12674": "minecraft:purpur_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "12675": "minecraft:purpur_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "12676": "minecraft:purpur_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "12677": "minecraft:purpur_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "12678": "minecraft:purpur_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "12679": "minecraft:purpur_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "12680": "minecraft:purpur_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "12681": "minecraft:purpur_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "12682": "minecraft:purpur_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "12683": "minecraft:purpur_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "12684": "minecraft:purpur_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "12685": "minecraft:purpur_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "12686": "minecraft:purpur_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "12687": "minecraft:purpur_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "12688": "minecraft:tall_grass[half=upper]", + "12689": "minecraft:tall_grass[half=lower]", + "12690": "minecraft:stone_pressure_plate[powered=true]", + "12691": "minecraft:stone_pressure_plate[powered=false]", + "12692": "minecraft:magenta_banner[rotation=0]", + "12693": "minecraft:magenta_banner[rotation=1]", + "12694": "minecraft:magenta_banner[rotation=2]", + "12695": "minecraft:magenta_banner[rotation=3]", + "12696": "minecraft:magenta_banner[rotation=4]", + "12697": "minecraft:magenta_banner[rotation=5]", + "12698": "minecraft:magenta_banner[rotation=6]", + "12699": "minecraft:magenta_banner[rotation=7]", + "12700": "minecraft:magenta_banner[rotation=8]", + "12701": "minecraft:magenta_banner[rotation=9]", + "12702": "minecraft:magenta_banner[rotation=10]", + "12703": "minecraft:magenta_banner[rotation=11]", + "12704": "minecraft:magenta_banner[rotation=12]", + "12705": "minecraft:magenta_banner[rotation=13]", + "12706": "minecraft:magenta_banner[rotation=14]", + "12707": "minecraft:magenta_banner[rotation=15]", + "12708": "minecraft:light_gray_bed[facing=north,occupied=true,part=head]", + "12709": "minecraft:light_gray_bed[facing=north,occupied=true,part=foot]", + "12710": "minecraft:light_gray_bed[facing=north,occupied=false,part=head]", + "12711": "minecraft:light_gray_bed[facing=north,occupied=false,part=foot]", + "12712": "minecraft:light_gray_bed[facing=south,occupied=true,part=head]", + "12713": "minecraft:light_gray_bed[facing=south,occupied=true,part=foot]", + "12714": "minecraft:light_gray_bed[facing=south,occupied=false,part=head]", + "12715": "minecraft:light_gray_bed[facing=south,occupied=false,part=foot]", + "12716": "minecraft:light_gray_bed[facing=west,occupied=true,part=head]", + "12717": "minecraft:light_gray_bed[facing=west,occupied=true,part=foot]", + "12718": "minecraft:light_gray_bed[facing=west,occupied=false,part=head]", + "12719": "minecraft:light_gray_bed[facing=west,occupied=false,part=foot]", + "12720": "minecraft:light_gray_bed[facing=east,occupied=true,part=head]", + "12721": "minecraft:light_gray_bed[facing=east,occupied=true,part=foot]", + "12722": "minecraft:light_gray_bed[facing=east,occupied=false,part=head]", + "12723": "minecraft:light_gray_bed[facing=east,occupied=false,part=foot]", + "12724": "minecraft:pink_banner[rotation=0]", + "12725": "minecraft:pink_banner[rotation=1]", + "12726": "minecraft:pink_banner[rotation=2]", + "12727": "minecraft:pink_banner[rotation=3]", + "12728": "minecraft:pink_banner[rotation=4]", + "12729": "minecraft:pink_banner[rotation=5]", + "12730": "minecraft:pink_banner[rotation=6]", + "12731": "minecraft:pink_banner[rotation=7]", + "12732": "minecraft:pink_banner[rotation=8]", + "12733": "minecraft:pink_banner[rotation=9]", + "12734": "minecraft:pink_banner[rotation=10]", + "12735": "minecraft:pink_banner[rotation=11]", + "12736": "minecraft:pink_banner[rotation=12]", + "12737": "minecraft:pink_banner[rotation=13]", + "12738": "minecraft:pink_banner[rotation=14]", + "12739": "minecraft:pink_banner[rotation=15]", + "12740": "minecraft:brown_bed[facing=north,occupied=true,part=head]", + "12741": "minecraft:brown_bed[facing=north,occupied=true,part=foot]", + "12742": "minecraft:brown_bed[facing=north,occupied=false,part=head]", + "12743": "minecraft:brown_bed[facing=north,occupied=false,part=foot]", + "12744": "minecraft:brown_bed[facing=south,occupied=true,part=head]", + "12745": "minecraft:brown_bed[facing=south,occupied=true,part=foot]", + "12746": "minecraft:brown_bed[facing=south,occupied=false,part=head]", + "12747": "minecraft:brown_bed[facing=south,occupied=false,part=foot]", + "12748": "minecraft:brown_bed[facing=west,occupied=true,part=head]", + "12749": "minecraft:brown_bed[facing=west,occupied=true,part=foot]", + "12750": "minecraft:brown_bed[facing=west,occupied=false,part=head]", + "12751": "minecraft:brown_bed[facing=west,occupied=false,part=foot]", + "12752": "minecraft:brown_bed[facing=east,occupied=true,part=head]", + "12753": "minecraft:brown_bed[facing=east,occupied=true,part=foot]", + "12754": "minecraft:brown_bed[facing=east,occupied=false,part=head]", + "12755": "minecraft:brown_bed[facing=east,occupied=false,part=foot]", + "12756": "minecraft:white_shulker_box[facing=north]", + "12757": "minecraft:white_shulker_box[facing=east]", + "12758": "minecraft:white_shulker_box[facing=south]", + "12759": "minecraft:white_shulker_box[facing=west]", + "12760": "minecraft:white_shulker_box[facing=up]", + "12761": "minecraft:white_shulker_box[facing=down]", + "12762": "minecraft:jungle_fence_gate[facing=north,in_wall=true,open=true,powered=true]", + "12763": "minecraft:jungle_fence_gate[facing=north,in_wall=true,open=true,powered=false]", + "12764": "minecraft:jungle_fence_gate[facing=north,in_wall=true,open=false,powered=true]", + "12765": "minecraft:jungle_fence_gate[facing=north,in_wall=true,open=false,powered=false]", + "12766": "minecraft:jungle_fence_gate[facing=north,in_wall=false,open=true,powered=true]", + "12767": "minecraft:jungle_fence_gate[facing=north,in_wall=false,open=true,powered=false]", + "12768": "minecraft:jungle_fence_gate[facing=north,in_wall=false,open=false,powered=true]", + "12769": "minecraft:jungle_fence_gate[facing=north,in_wall=false,open=false,powered=false]", + "12770": "minecraft:jungle_fence_gate[facing=south,in_wall=true,open=true,powered=true]", + "12771": "minecraft:jungle_fence_gate[facing=south,in_wall=true,open=true,powered=false]", + "12772": "minecraft:jungle_fence_gate[facing=south,in_wall=true,open=false,powered=true]", + "12773": "minecraft:jungle_fence_gate[facing=south,in_wall=true,open=false,powered=false]", + "12774": "minecraft:jungle_fence_gate[facing=south,in_wall=false,open=true,powered=true]", + "12775": "minecraft:jungle_fence_gate[facing=south,in_wall=false,open=true,powered=false]", + "12776": "minecraft:jungle_fence_gate[facing=south,in_wall=false,open=false,powered=true]", + "12777": "minecraft:jungle_fence_gate[facing=south,in_wall=false,open=false,powered=false]", + "12778": "minecraft:jungle_fence_gate[facing=west,in_wall=true,open=true,powered=true]", + "12779": "minecraft:jungle_fence_gate[facing=west,in_wall=true,open=true,powered=false]", + "12780": "minecraft:jungle_fence_gate[facing=west,in_wall=true,open=false,powered=true]", + "12781": "minecraft:jungle_fence_gate[facing=west,in_wall=true,open=false,powered=false]", + "12782": "minecraft:jungle_fence_gate[facing=west,in_wall=false,open=true,powered=true]", + "12783": "minecraft:jungle_fence_gate[facing=west,in_wall=false,open=true,powered=false]", + "12784": "minecraft:jungle_fence_gate[facing=west,in_wall=false,open=false,powered=true]", + "12785": "minecraft:jungle_fence_gate[facing=west,in_wall=false,open=false,powered=false]", + "12786": "minecraft:jungle_fence_gate[facing=east,in_wall=true,open=true,powered=true]", + "12787": "minecraft:jungle_fence_gate[facing=east,in_wall=true,open=true,powered=false]", + "12788": "minecraft:jungle_fence_gate[facing=east,in_wall=true,open=false,powered=true]", + "12789": "minecraft:jungle_fence_gate[facing=east,in_wall=true,open=false,powered=false]", + "12790": "minecraft:jungle_fence_gate[facing=east,in_wall=false,open=true,powered=true]", + "12791": "minecraft:jungle_fence_gate[facing=east,in_wall=false,open=true,powered=false]", + "12792": "minecraft:jungle_fence_gate[facing=east,in_wall=false,open=false,powered=true]", + "12793": "minecraft:jungle_fence_gate[facing=east,in_wall=false,open=false,powered=false]", + "12794": "minecraft:brown_wall_banner[facing=north]", + "12795": "minecraft:brown_wall_banner[facing=south]", + "12796": "minecraft:brown_wall_banner[facing=west]", + "12797": "minecraft:brown_wall_banner[facing=east]", + "12798": "minecraft:lilac[half=upper]", + "12799": "minecraft:lilac[half=lower]", + "12800": "minecraft:birch_wood[axis=x]", + "12801": "minecraft:birch_wood[axis=y]", + "12802": "minecraft:birch_wood[axis=z]", + "12803": "minecraft:jungle_wood[axis=x]", + "12804": "minecraft:jungle_wood[axis=y]", + "12805": "minecraft:jungle_wood[axis=z]", + "12806": "minecraft:orange_shulker_box[facing=north]", + "12807": "minecraft:orange_shulker_box[facing=east]", + "12808": "minecraft:orange_shulker_box[facing=south]", + "12809": "minecraft:orange_shulker_box[facing=west]", + "12810": "minecraft:orange_shulker_box[facing=up]", + "12811": "minecraft:orange_shulker_box[facing=down]", + "12812": "minecraft:yellow_terracotta", + "12813": "minecraft:green_wool", + "12814": "minecraft:lodestone", + "12815": "minecraft:acacia_fence_gate[facing=north,in_wall=true,open=true,powered=true]", + "12816": "minecraft:acacia_fence_gate[facing=north,in_wall=true,open=true,powered=false]", + "12817": "minecraft:acacia_fence_gate[facing=north,in_wall=true,open=false,powered=true]", + "12818": "minecraft:acacia_fence_gate[facing=north,in_wall=true,open=false,powered=false]", + "12819": "minecraft:acacia_fence_gate[facing=north,in_wall=false,open=true,powered=true]", + "12820": "minecraft:acacia_fence_gate[facing=north,in_wall=false,open=true,powered=false]", + "12821": "minecraft:acacia_fence_gate[facing=north,in_wall=false,open=false,powered=true]", + "12822": "minecraft:acacia_fence_gate[facing=north,in_wall=false,open=false,powered=false]", + "12823": "minecraft:acacia_fence_gate[facing=south,in_wall=true,open=true,powered=true]", + "12824": "minecraft:acacia_fence_gate[facing=south,in_wall=true,open=true,powered=false]", + "12825": "minecraft:acacia_fence_gate[facing=south,in_wall=true,open=false,powered=true]", + "12826": "minecraft:acacia_fence_gate[facing=south,in_wall=true,open=false,powered=false]", + "12827": "minecraft:acacia_fence_gate[facing=south,in_wall=false,open=true,powered=true]", + "12828": "minecraft:acacia_fence_gate[facing=south,in_wall=false,open=true,powered=false]", + "12829": "minecraft:acacia_fence_gate[facing=south,in_wall=false,open=false,powered=true]", + "12830": "minecraft:acacia_fence_gate[facing=south,in_wall=false,open=false,powered=false]", + "12831": "minecraft:acacia_fence_gate[facing=west,in_wall=true,open=true,powered=true]", + "12832": "minecraft:acacia_fence_gate[facing=west,in_wall=true,open=true,powered=false]", + "12833": "minecraft:acacia_fence_gate[facing=west,in_wall=true,open=false,powered=true]", + "12834": "minecraft:acacia_fence_gate[facing=west,in_wall=true,open=false,powered=false]", + "12835": "minecraft:acacia_fence_gate[facing=west,in_wall=false,open=true,powered=true]", + "12836": "minecraft:acacia_fence_gate[facing=west,in_wall=false,open=true,powered=false]", + "12837": "minecraft:acacia_fence_gate[facing=west,in_wall=false,open=false,powered=true]", + "12838": "minecraft:acacia_fence_gate[facing=west,in_wall=false,open=false,powered=false]", + "12839": "minecraft:acacia_fence_gate[facing=east,in_wall=true,open=true,powered=true]", + "12840": "minecraft:acacia_fence_gate[facing=east,in_wall=true,open=true,powered=false]", + "12841": "minecraft:acacia_fence_gate[facing=east,in_wall=true,open=false,powered=true]", + "12842": "minecraft:acacia_fence_gate[facing=east,in_wall=true,open=false,powered=false]", + "12843": "minecraft:acacia_fence_gate[facing=east,in_wall=false,open=true,powered=true]", + "12844": "minecraft:acacia_fence_gate[facing=east,in_wall=false,open=true,powered=false]", + "12845": "minecraft:acacia_fence_gate[facing=east,in_wall=false,open=false,powered=true]", + "12846": "minecraft:acacia_fence_gate[facing=east,in_wall=false,open=false,powered=false]", + "12847": "minecraft:blue_wall_banner[facing=north]", + "12848": "minecraft:blue_wall_banner[facing=south]", + "12849": "minecraft:blue_wall_banner[facing=west]", + "12850": "minecraft:blue_wall_banner[facing=east]", + "12851": "minecraft:birch_fence_gate[facing=north,in_wall=true,open=true,powered=true]", + "12852": "minecraft:birch_fence_gate[facing=north,in_wall=true,open=true,powered=false]", + "12853": "minecraft:birch_fence_gate[facing=north,in_wall=true,open=false,powered=true]", + "12854": "minecraft:birch_fence_gate[facing=north,in_wall=true,open=false,powered=false]", + "12855": "minecraft:birch_fence_gate[facing=north,in_wall=false,open=true,powered=true]", + "12856": "minecraft:birch_fence_gate[facing=north,in_wall=false,open=true,powered=false]", + "12857": "minecraft:birch_fence_gate[facing=north,in_wall=false,open=false,powered=true]", + "12858": "minecraft:birch_fence_gate[facing=north,in_wall=false,open=false,powered=false]", + "12859": "minecraft:birch_fence_gate[facing=south,in_wall=true,open=true,powered=true]", + "12860": "minecraft:birch_fence_gate[facing=south,in_wall=true,open=true,powered=false]", + "12861": "minecraft:birch_fence_gate[facing=south,in_wall=true,open=false,powered=true]", + "12862": "minecraft:birch_fence_gate[facing=south,in_wall=true,open=false,powered=false]", + "12863": "minecraft:birch_fence_gate[facing=south,in_wall=false,open=true,powered=true]", + "12864": "minecraft:birch_fence_gate[facing=south,in_wall=false,open=true,powered=false]", + "12865": "minecraft:birch_fence_gate[facing=south,in_wall=false,open=false,powered=true]", + "12866": "minecraft:birch_fence_gate[facing=south,in_wall=false,open=false,powered=false]", + "12867": "minecraft:birch_fence_gate[facing=west,in_wall=true,open=true,powered=true]", + "12868": "minecraft:birch_fence_gate[facing=west,in_wall=true,open=true,powered=false]", + "12869": "minecraft:birch_fence_gate[facing=west,in_wall=true,open=false,powered=true]", + "12870": "minecraft:birch_fence_gate[facing=west,in_wall=true,open=false,powered=false]", + "12871": "minecraft:birch_fence_gate[facing=west,in_wall=false,open=true,powered=true]", + "12872": "minecraft:birch_fence_gate[facing=west,in_wall=false,open=true,powered=false]", + "12873": "minecraft:birch_fence_gate[facing=west,in_wall=false,open=false,powered=true]", + "12874": "minecraft:birch_fence_gate[facing=west,in_wall=false,open=false,powered=false]", + "12875": "minecraft:birch_fence_gate[facing=east,in_wall=true,open=true,powered=true]", + "12876": "minecraft:birch_fence_gate[facing=east,in_wall=true,open=true,powered=false]", + "12877": "minecraft:birch_fence_gate[facing=east,in_wall=true,open=false,powered=true]", + "12878": "minecraft:birch_fence_gate[facing=east,in_wall=true,open=false,powered=false]", + "12879": "minecraft:birch_fence_gate[facing=east,in_wall=false,open=true,powered=true]", + "12880": "minecraft:birch_fence_gate[facing=east,in_wall=false,open=true,powered=false]", + "12881": "minecraft:birch_fence_gate[facing=east,in_wall=false,open=false,powered=true]", + "12882": "minecraft:birch_fence_gate[facing=east,in_wall=false,open=false,powered=false]", + "12883": "minecraft:green_wall_banner[facing=north]", + "12884": "minecraft:green_wall_banner[facing=south]", + "12885": "minecraft:green_wall_banner[facing=west]", + "12886": "minecraft:green_wall_banner[facing=east]", + "12887": "minecraft:jungle_planks", + "12888": "minecraft:acacia_planks", + "12889": "minecraft:dead_tube_coral_wall_fan[facing=north,waterlogged=true]", + "12890": "minecraft:dead_tube_coral_wall_fan[facing=north,waterlogged=false]", + "12891": "minecraft:dead_tube_coral_wall_fan[facing=south,waterlogged=true]", + "12892": "minecraft:dead_tube_coral_wall_fan[facing=south,waterlogged=false]", + "12893": "minecraft:dead_tube_coral_wall_fan[facing=west,waterlogged=true]", + "12894": "minecraft:dead_tube_coral_wall_fan[facing=west,waterlogged=false]", + "12895": "minecraft:dead_tube_coral_wall_fan[facing=east,waterlogged=true]", + "12896": "minecraft:dead_tube_coral_wall_fan[facing=east,waterlogged=false]", + "12897": "minecraft:dark_oak_planks", + "12898": "minecraft:chest[facing=north,type=single,waterlogged=true]", + "12899": "minecraft:chest[facing=north,type=single,waterlogged=false]", + "12900": "minecraft:chest[facing=north,type=left,waterlogged=true]", + "12901": "minecraft:chest[facing=north,type=left,waterlogged=false]", + "12902": "minecraft:chest[facing=north,type=right,waterlogged=true]", + "12903": "minecraft:chest[facing=north,type=right,waterlogged=false]", + "12904": "minecraft:chest[facing=south,type=single,waterlogged=true]", + "12905": "minecraft:chest[facing=south,type=single,waterlogged=false]", + "12906": "minecraft:chest[facing=south,type=left,waterlogged=true]", + "12907": "minecraft:chest[facing=south,type=left,waterlogged=false]", + "12908": "minecraft:chest[facing=south,type=right,waterlogged=true]", + "12909": "minecraft:chest[facing=south,type=right,waterlogged=false]", + "12910": "minecraft:chest[facing=west,type=single,waterlogged=true]", + "12911": "minecraft:chest[facing=west,type=single,waterlogged=false]", + "12912": "minecraft:chest[facing=west,type=left,waterlogged=true]", + "12913": "minecraft:chest[facing=west,type=left,waterlogged=false]", + "12914": "minecraft:chest[facing=west,type=right,waterlogged=true]", + "12915": "minecraft:chest[facing=west,type=right,waterlogged=false]", + "12916": "minecraft:chest[facing=east,type=single,waterlogged=true]", + "12917": "minecraft:chest[facing=east,type=single,waterlogged=false]", + "12918": "minecraft:chest[facing=east,type=left,waterlogged=true]", + "12919": "minecraft:chest[facing=east,type=left,waterlogged=false]", + "12920": "minecraft:chest[facing=east,type=right,waterlogged=true]", + "12921": "minecraft:chest[facing=east,type=right,waterlogged=false]", + "12922": "minecraft:skeleton_skull[rotation=0]", + "12923": "minecraft:skeleton_skull[rotation=1]", + "12924": "minecraft:skeleton_skull[rotation=2]", + "12925": "minecraft:skeleton_skull[rotation=3]", + "12926": "minecraft:skeleton_skull[rotation=4]", + "12927": "minecraft:skeleton_skull[rotation=5]", + "12928": "minecraft:skeleton_skull[rotation=6]", + "12929": "minecraft:skeleton_skull[rotation=7]", + "12930": "minecraft:skeleton_skull[rotation=8]", + "12931": "minecraft:skeleton_skull[rotation=9]", + "12932": "minecraft:skeleton_skull[rotation=10]", + "12933": "minecraft:skeleton_skull[rotation=11]", + "12934": "minecraft:skeleton_skull[rotation=12]", + "12935": "minecraft:skeleton_skull[rotation=13]", + "12936": "minecraft:skeleton_skull[rotation=14]", + "12937": "minecraft:skeleton_skull[rotation=15]", + "12938": "minecraft:skeleton_wall_skull[facing=north]", + "12939": "minecraft:skeleton_wall_skull[facing=south]", + "12940": "minecraft:skeleton_wall_skull[facing=west]", + "12941": "minecraft:skeleton_wall_skull[facing=east]", + "12942": "minecraft:warped_fence[east=true,north=true,south=true,waterlogged=true,west=true]", + "12943": "minecraft:warped_fence[east=true,north=true,south=true,waterlogged=true,west=false]", + "12944": "minecraft:warped_fence[east=true,north=true,south=true,waterlogged=false,west=true]", + "12945": "minecraft:warped_fence[east=true,north=true,south=true,waterlogged=false,west=false]", + "12946": "minecraft:warped_fence[east=true,north=true,south=false,waterlogged=true,west=true]", + "12947": "minecraft:warped_fence[east=true,north=true,south=false,waterlogged=true,west=false]", + "12948": "minecraft:warped_fence[east=true,north=true,south=false,waterlogged=false,west=true]", + "12949": "minecraft:warped_fence[east=true,north=true,south=false,waterlogged=false,west=false]", + "12950": "minecraft:warped_fence[east=true,north=false,south=true,waterlogged=true,west=true]", + "12951": "minecraft:warped_fence[east=true,north=false,south=true,waterlogged=true,west=false]", + "12952": "minecraft:warped_fence[east=true,north=false,south=true,waterlogged=false,west=true]", + "12953": "minecraft:warped_fence[east=true,north=false,south=true,waterlogged=false,west=false]", + "12954": "minecraft:warped_fence[east=true,north=false,south=false,waterlogged=true,west=true]", + "12955": "minecraft:warped_fence[east=true,north=false,south=false,waterlogged=true,west=false]", + "12956": "minecraft:warped_fence[east=true,north=false,south=false,waterlogged=false,west=true]", + "12957": "minecraft:warped_fence[east=true,north=false,south=false,waterlogged=false,west=false]", + "12958": "minecraft:warped_fence[east=false,north=true,south=true,waterlogged=true,west=true]", + "12959": "minecraft:warped_fence[east=false,north=true,south=true,waterlogged=true,west=false]", + "12960": "minecraft:warped_fence[east=false,north=true,south=true,waterlogged=false,west=true]", + "12961": "minecraft:warped_fence[east=false,north=true,south=true,waterlogged=false,west=false]", + "12962": "minecraft:warped_fence[east=false,north=true,south=false,waterlogged=true,west=true]", + "12963": "minecraft:warped_fence[east=false,north=true,south=false,waterlogged=true,west=false]", + "12964": "minecraft:warped_fence[east=false,north=true,south=false,waterlogged=false,west=true]", + "12965": "minecraft:warped_fence[east=false,north=true,south=false,waterlogged=false,west=false]", + "12966": "minecraft:warped_fence[east=false,north=false,south=true,waterlogged=true,west=true]", + "12967": "minecraft:warped_fence[east=false,north=false,south=true,waterlogged=true,west=false]", + "12968": "minecraft:warped_fence[east=false,north=false,south=true,waterlogged=false,west=true]", + "12969": "minecraft:warped_fence[east=false,north=false,south=true,waterlogged=false,west=false]", + "12970": "minecraft:warped_fence[east=false,north=false,south=false,waterlogged=true,west=true]", + "12971": "minecraft:warped_fence[east=false,north=false,south=false,waterlogged=true,west=false]", + "12972": "minecraft:warped_fence[east=false,north=false,south=false,waterlogged=false,west=true]", + "12973": "minecraft:warped_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "12974": "minecraft:diorite_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "12975": "minecraft:diorite_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "12976": "minecraft:diorite_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "12977": "minecraft:diorite_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "12978": "minecraft:diorite_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "12979": "minecraft:diorite_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "12980": "minecraft:diorite_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "12981": "minecraft:diorite_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "12982": "minecraft:diorite_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "12983": "minecraft:diorite_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "12984": "minecraft:diorite_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "12985": "minecraft:diorite_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "12986": "minecraft:diorite_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "12987": "minecraft:diorite_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "12988": "minecraft:diorite_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "12989": "minecraft:diorite_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "12990": "minecraft:diorite_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "12991": "minecraft:diorite_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "12992": "minecraft:diorite_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "12993": "minecraft:diorite_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "12994": "minecraft:diorite_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "12995": "minecraft:diorite_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "12996": "minecraft:diorite_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "12997": "minecraft:diorite_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "12998": "minecraft:diorite_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "12999": "minecraft:diorite_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "13000": "minecraft:diorite_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "13001": "minecraft:diorite_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "13002": "minecraft:diorite_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "13003": "minecraft:diorite_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "13004": "minecraft:diorite_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "13005": "minecraft:diorite_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "13006": "minecraft:diorite_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "13007": "minecraft:diorite_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "13008": "minecraft:diorite_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "13009": "minecraft:diorite_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "13010": "minecraft:diorite_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "13011": "minecraft:diorite_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "13012": "minecraft:diorite_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "13013": "minecraft:diorite_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "13014": "minecraft:diorite_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "13015": "minecraft:diorite_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "13016": "minecraft:diorite_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "13017": "minecraft:diorite_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "13018": "minecraft:diorite_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "13019": "minecraft:diorite_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "13020": "minecraft:diorite_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "13021": "minecraft:diorite_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "13022": "minecraft:diorite_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "13023": "minecraft:diorite_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "13024": "minecraft:diorite_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "13025": "minecraft:diorite_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "13026": "minecraft:diorite_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "13027": "minecraft:diorite_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "13028": "minecraft:diorite_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "13029": "minecraft:diorite_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "13030": "minecraft:diorite_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "13031": "minecraft:diorite_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "13032": "minecraft:diorite_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "13033": "minecraft:diorite_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "13034": "minecraft:diorite_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "13035": "minecraft:diorite_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "13036": "minecraft:diorite_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "13037": "minecraft:diorite_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "13038": "minecraft:diorite_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "13039": "minecraft:diorite_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "13040": "minecraft:diorite_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "13041": "minecraft:diorite_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "13042": "minecraft:diorite_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "13043": "minecraft:diorite_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "13044": "minecraft:diorite_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "13045": "minecraft:diorite_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "13046": "minecraft:diorite_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "13047": "minecraft:diorite_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "13048": "minecraft:diorite_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "13049": "minecraft:diorite_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "13050": "minecraft:diorite_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "13051": "minecraft:diorite_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "13052": "minecraft:diorite_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "13053": "minecraft:diorite_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "13054": "minecraft:black_glazed_terracotta[facing=north]", + "13055": "minecraft:black_glazed_terracotta[facing=south]", + "13056": "minecraft:black_glazed_terracotta[facing=west]", + "13057": "minecraft:black_glazed_terracotta[facing=east]", + "13058": "minecraft:spruce_fence_gate[facing=north,in_wall=true,open=true,powered=true]", + "13059": "minecraft:spruce_fence_gate[facing=north,in_wall=true,open=true,powered=false]", + "13060": "minecraft:spruce_fence_gate[facing=north,in_wall=true,open=false,powered=true]", + "13061": "minecraft:spruce_fence_gate[facing=north,in_wall=true,open=false,powered=false]", + "13062": "minecraft:spruce_fence_gate[facing=north,in_wall=false,open=true,powered=true]", + "13063": "minecraft:spruce_fence_gate[facing=north,in_wall=false,open=true,powered=false]", + "13064": "minecraft:spruce_fence_gate[facing=north,in_wall=false,open=false,powered=true]", + "13065": "minecraft:spruce_fence_gate[facing=north,in_wall=false,open=false,powered=false]", + "13066": "minecraft:spruce_fence_gate[facing=south,in_wall=true,open=true,powered=true]", + "13067": "minecraft:spruce_fence_gate[facing=south,in_wall=true,open=true,powered=false]", + "13068": "minecraft:spruce_fence_gate[facing=south,in_wall=true,open=false,powered=true]", + "13069": "minecraft:spruce_fence_gate[facing=south,in_wall=true,open=false,powered=false]", + "13070": "minecraft:spruce_fence_gate[facing=south,in_wall=false,open=true,powered=true]", + "13071": "minecraft:spruce_fence_gate[facing=south,in_wall=false,open=true,powered=false]", + "13072": "minecraft:spruce_fence_gate[facing=south,in_wall=false,open=false,powered=true]", + "13073": "minecraft:spruce_fence_gate[facing=south,in_wall=false,open=false,powered=false]", + "13074": "minecraft:spruce_fence_gate[facing=west,in_wall=true,open=true,powered=true]", + "13075": "minecraft:spruce_fence_gate[facing=west,in_wall=true,open=true,powered=false]", + "13076": "minecraft:spruce_fence_gate[facing=west,in_wall=true,open=false,powered=true]", + "13077": "minecraft:spruce_fence_gate[facing=west,in_wall=true,open=false,powered=false]", + "13078": "minecraft:spruce_fence_gate[facing=west,in_wall=false,open=true,powered=true]", + "13079": "minecraft:spruce_fence_gate[facing=west,in_wall=false,open=true,powered=false]", + "13080": "minecraft:spruce_fence_gate[facing=west,in_wall=false,open=false,powered=true]", + "13081": "minecraft:spruce_fence_gate[facing=west,in_wall=false,open=false,powered=false]", + "13082": "minecraft:spruce_fence_gate[facing=east,in_wall=true,open=true,powered=true]", + "13083": "minecraft:spruce_fence_gate[facing=east,in_wall=true,open=true,powered=false]", + "13084": "minecraft:spruce_fence_gate[facing=east,in_wall=true,open=false,powered=true]", + "13085": "minecraft:spruce_fence_gate[facing=east,in_wall=true,open=false,powered=false]", + "13086": "minecraft:spruce_fence_gate[facing=east,in_wall=false,open=true,powered=true]", + "13087": "minecraft:spruce_fence_gate[facing=east,in_wall=false,open=true,powered=false]", + "13088": "minecraft:spruce_fence_gate[facing=east,in_wall=false,open=false,powered=true]", + "13089": "minecraft:spruce_fence_gate[facing=east,in_wall=false,open=false,powered=false]", + "13090": "minecraft:red_wall_banner[facing=north]", + "13091": "minecraft:red_wall_banner[facing=south]", + "13092": "minecraft:red_wall_banner[facing=west]", + "13093": "minecraft:red_wall_banner[facing=east]", + "13094": "minecraft:spruce_wood[axis=x]", + "13095": "minecraft:spruce_wood[axis=y]", + "13096": "minecraft:spruce_wood[axis=z]", + "13097": "minecraft:oak_wood[axis=x]", + "13098": "minecraft:oak_wood[axis=y]", + "13099": "minecraft:oak_wood[axis=z]", + "13100": "minecraft:brown_wool", + "13101": "minecraft:purple_stained_glass", + "13102": "minecraft:potted_oak_sapling", + "13103": "minecraft:blue_wool", + "13104": "minecraft:potted_spruce_sapling", + "13105": "minecraft:crimson_slab[type=top,waterlogged=true]", + "13106": "minecraft:crimson_slab[type=top,waterlogged=false]", + "13107": "minecraft:crimson_slab[type=bottom,waterlogged=true]", + "13108": "minecraft:crimson_slab[type=bottom,waterlogged=false]", + "13109": "minecraft:crimson_slab[type=double,waterlogged=true]", + "13110": "minecraft:crimson_slab[type=double,waterlogged=false]", + "13111": "minecraft:cursor", + "13112": "minecraft:white_concrete", + "13113": "minecraft:warped_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]", + "13114": "minecraft:warped_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]", + "13115": "minecraft:warped_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true]", + "13116": "minecraft:warped_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]", + "13117": "minecraft:warped_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]", + "13118": "minecraft:warped_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]", + "13119": "minecraft:warped_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true]", + "13120": "minecraft:warped_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false]", + "13121": "minecraft:warped_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]", + "13122": "minecraft:warped_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]", + "13123": "minecraft:warped_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true]", + "13124": "minecraft:warped_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false]", + "13125": "minecraft:warped_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]", + "13126": "minecraft:warped_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]", + "13127": "minecraft:warped_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true]", + "13128": "minecraft:warped_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]", + "13129": "minecraft:warped_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]", + "13130": "minecraft:warped_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]", + "13131": "minecraft:warped_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true]", + "13132": "minecraft:warped_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false]", + "13133": "minecraft:warped_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]", + "13134": "minecraft:warped_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]", + "13135": "minecraft:warped_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true]", + "13136": "minecraft:warped_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false]", + "13137": "minecraft:warped_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]", + "13138": "minecraft:warped_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]", + "13139": "minecraft:warped_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true]", + "13140": "minecraft:warped_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false]", + "13141": "minecraft:warped_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]", + "13142": "minecraft:warped_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]", + "13143": "minecraft:warped_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true]", + "13144": "minecraft:warped_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false]", + "13145": "minecraft:warped_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]", + "13146": "minecraft:warped_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]", + "13147": "minecraft:warped_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true]", + "13148": "minecraft:warped_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false]", + "13149": "minecraft:warped_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]", + "13150": "minecraft:warped_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]", + "13151": "minecraft:warped_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true]", + "13152": "minecraft:warped_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false]", + "13153": "minecraft:warped_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]", + "13154": "minecraft:warped_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]", + "13155": "minecraft:warped_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true]", + "13156": "minecraft:warped_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false]", + "13157": "minecraft:warped_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]", + "13158": "minecraft:warped_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]", + "13159": "minecraft:warped_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true]", + "13160": "minecraft:warped_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false]", + "13161": "minecraft:warped_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]", + "13162": "minecraft:warped_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]", + "13163": "minecraft:warped_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true]", + "13164": "minecraft:warped_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false]", + "13165": "minecraft:warped_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]", + "13166": "minecraft:warped_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]", + "13167": "minecraft:warped_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true]", + "13168": "minecraft:warped_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false]", + "13169": "minecraft:warped_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]", + "13170": "minecraft:warped_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]", + "13171": "minecraft:warped_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true]", + "13172": "minecraft:warped_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false]", + "13173": "minecraft:warped_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]", + "13174": "minecraft:warped_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]", + "13175": "minecraft:warped_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true]", + "13176": "minecraft:warped_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false]", + "13177": "minecraft:red_glazed_terracotta[facing=north]", + "13178": "minecraft:red_glazed_terracotta[facing=south]", + "13179": "minecraft:red_glazed_terracotta[facing=west]", + "13180": "minecraft:red_glazed_terracotta[facing=east]", + "13181": "minecraft:prismarine_bricks", + "13182": "minecraft:crimson_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]", + "13183": "minecraft:crimson_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]", + "13184": "minecraft:crimson_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true]", + "13185": "minecraft:crimson_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]", + "13186": "minecraft:crimson_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]", + "13187": "minecraft:crimson_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]", + "13188": "minecraft:crimson_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true]", + "13189": "minecraft:crimson_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false]", + "13190": "minecraft:crimson_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]", + "13191": "minecraft:crimson_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]", + "13192": "minecraft:crimson_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true]", + "13193": "minecraft:crimson_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false]", + "13194": "minecraft:crimson_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]", + "13195": "minecraft:crimson_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]", + "13196": "minecraft:crimson_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true]", + "13197": "minecraft:crimson_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]", + "13198": "minecraft:crimson_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]", + "13199": "minecraft:crimson_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]", + "13200": "minecraft:crimson_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true]", + "13201": "minecraft:crimson_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false]", + "13202": "minecraft:crimson_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]", + "13203": "minecraft:crimson_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]", + "13204": "minecraft:crimson_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true]", + "13205": "minecraft:crimson_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false]", + "13206": "minecraft:crimson_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]", + "13207": "minecraft:crimson_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]", + "13208": "minecraft:crimson_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true]", + "13209": "minecraft:crimson_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false]", + "13210": "minecraft:crimson_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]", + "13211": "minecraft:crimson_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]", + "13212": "minecraft:crimson_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true]", + "13213": "minecraft:crimson_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false]", + "13214": "minecraft:crimson_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]", + "13215": "minecraft:crimson_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]", + "13216": "minecraft:crimson_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true]", + "13217": "minecraft:crimson_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false]", + "13218": "minecraft:crimson_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]", + "13219": "minecraft:crimson_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]", + "13220": "minecraft:crimson_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true]", + "13221": "minecraft:crimson_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false]", + "13222": "minecraft:crimson_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]", + "13223": "minecraft:crimson_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]", + "13224": "minecraft:crimson_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true]", + "13225": "minecraft:crimson_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false]", + "13226": "minecraft:crimson_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]", + "13227": "minecraft:crimson_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]", + "13228": "minecraft:crimson_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true]", + "13229": "minecraft:crimson_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false]", + "13230": "minecraft:crimson_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]", + "13231": "minecraft:crimson_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]", + "13232": "minecraft:crimson_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true]", + "13233": "minecraft:crimson_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false]", + "13234": "minecraft:crimson_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]", + "13235": "minecraft:crimson_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]", + "13236": "minecraft:crimson_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true]", + "13237": "minecraft:crimson_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false]", + "13238": "minecraft:crimson_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]", + "13239": "minecraft:crimson_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]", + "13240": "minecraft:crimson_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true]", + "13241": "minecraft:crimson_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false]", + "13242": "minecraft:crimson_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]", + "13243": "minecraft:crimson_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]", + "13244": "minecraft:crimson_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true]", + "13245": "minecraft:crimson_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false]", + "13246": "minecraft:orange_concrete", + "13247": "minecraft:lime_stained_glass", + "13248": "minecraft:prismarine", + "13249": "minecraft:iron_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]", + "13250": "minecraft:iron_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]", + "13251": "minecraft:iron_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true]", + "13252": "minecraft:iron_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]", + "13253": "minecraft:iron_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]", + "13254": "minecraft:iron_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]", + "13255": "minecraft:iron_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true]", + "13256": "minecraft:iron_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false]", + "13257": "minecraft:iron_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]", + "13258": "minecraft:iron_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]", + "13259": "minecraft:iron_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true]", + "13260": "minecraft:iron_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false]", + "13261": "minecraft:iron_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]", + "13262": "minecraft:iron_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]", + "13263": "minecraft:iron_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true]", + "13264": "minecraft:iron_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]", + "13265": "minecraft:iron_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]", + "13266": "minecraft:iron_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]", + "13267": "minecraft:iron_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true]", + "13268": "minecraft:iron_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false]", + "13269": "minecraft:iron_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]", + "13270": "minecraft:iron_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]", + "13271": "minecraft:iron_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true]", + "13272": "minecraft:iron_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false]", + "13273": "minecraft:iron_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]", + "13274": "minecraft:iron_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]", + "13275": "minecraft:iron_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true]", + "13276": "minecraft:iron_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false]", + "13277": "minecraft:iron_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]", + "13278": "minecraft:iron_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]", + "13279": "minecraft:iron_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true]", + "13280": "minecraft:iron_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false]", + "13281": "minecraft:iron_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]", + "13282": "minecraft:iron_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]", + "13283": "minecraft:iron_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true]", + "13284": "minecraft:iron_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false]", + "13285": "minecraft:iron_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]", + "13286": "minecraft:iron_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]", + "13287": "minecraft:iron_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true]", + "13288": "minecraft:iron_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false]", + "13289": "minecraft:iron_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]", + "13290": "minecraft:iron_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]", + "13291": "minecraft:iron_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true]", + "13292": "minecraft:iron_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false]", + "13293": "minecraft:iron_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]", + "13294": "minecraft:iron_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]", + "13295": "minecraft:iron_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true]", + "13296": "minecraft:iron_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false]", + "13297": "minecraft:iron_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]", + "13298": "minecraft:iron_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]", + "13299": "minecraft:iron_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true]", + "13300": "minecraft:iron_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false]", + "13301": "minecraft:iron_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]", + "13302": "minecraft:iron_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]", + "13303": "minecraft:iron_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true]", + "13304": "minecraft:iron_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false]", + "13305": "minecraft:iron_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]", + "13306": "minecraft:iron_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]", + "13307": "minecraft:iron_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true]", + "13308": "minecraft:iron_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false]", + "13309": "minecraft:iron_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]", + "13310": "minecraft:iron_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]", + "13311": "minecraft:iron_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true]", + "13312": "minecraft:iron_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false]", + "13313": "minecraft:yellow_stained_glass", + "13314": "minecraft:zone", + "13315": "minecraft:respawn_anchor[charges=0]", + "13316": "minecraft:respawn_anchor[charges=1]", + "13317": "minecraft:respawn_anchor[charges=2]", + "13318": "minecraft:respawn_anchor[charges=3]", + "13319": "minecraft:respawn_anchor[charges=4]", + "13320": "minecraft:warped_planks", + "13321": "minecraft:red_nether_brick_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "13322": "minecraft:red_nether_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "13323": "minecraft:red_nether_brick_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "13324": "minecraft:red_nether_brick_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "13325": "minecraft:red_nether_brick_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "13326": "minecraft:red_nether_brick_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "13327": "minecraft:red_nether_brick_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "13328": "minecraft:red_nether_brick_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "13329": "minecraft:red_nether_brick_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "13330": "minecraft:red_nether_brick_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "13331": "minecraft:red_nether_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "13332": "minecraft:red_nether_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "13333": "minecraft:red_nether_brick_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "13334": "minecraft:red_nether_brick_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "13335": "minecraft:red_nether_brick_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "13336": "minecraft:red_nether_brick_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "13337": "minecraft:red_nether_brick_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "13338": "minecraft:red_nether_brick_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "13339": "minecraft:red_nether_brick_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "13340": "minecraft:red_nether_brick_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "13341": "minecraft:red_nether_brick_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "13342": "minecraft:red_nether_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "13343": "minecraft:red_nether_brick_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "13344": "minecraft:red_nether_brick_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "13345": "minecraft:red_nether_brick_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "13346": "minecraft:red_nether_brick_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "13347": "minecraft:red_nether_brick_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "13348": "minecraft:red_nether_brick_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "13349": "minecraft:red_nether_brick_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "13350": "minecraft:red_nether_brick_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "13351": "minecraft:red_nether_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "13352": "minecraft:red_nether_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "13353": "minecraft:red_nether_brick_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "13354": "minecraft:red_nether_brick_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "13355": "minecraft:red_nether_brick_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "13356": "minecraft:red_nether_brick_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "13357": "minecraft:red_nether_brick_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "13358": "minecraft:red_nether_brick_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "13359": "minecraft:red_nether_brick_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "13360": "minecraft:red_nether_brick_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "13361": "minecraft:red_nether_brick_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "13362": "minecraft:red_nether_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "13363": "minecraft:red_nether_brick_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "13364": "minecraft:red_nether_brick_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "13365": "minecraft:red_nether_brick_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "13366": "minecraft:red_nether_brick_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "13367": "minecraft:red_nether_brick_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "13368": "minecraft:red_nether_brick_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "13369": "minecraft:red_nether_brick_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "13370": "minecraft:red_nether_brick_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "13371": "minecraft:red_nether_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "13372": "minecraft:red_nether_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "13373": "minecraft:red_nether_brick_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "13374": "minecraft:red_nether_brick_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "13375": "minecraft:red_nether_brick_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "13376": "minecraft:red_nether_brick_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "13377": "minecraft:red_nether_brick_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "13378": "minecraft:red_nether_brick_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "13379": "minecraft:red_nether_brick_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "13380": "minecraft:red_nether_brick_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "13381": "minecraft:red_nether_brick_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "13382": "minecraft:red_nether_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "13383": "minecraft:red_nether_brick_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "13384": "minecraft:red_nether_brick_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "13385": "minecraft:red_nether_brick_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "13386": "minecraft:red_nether_brick_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "13387": "minecraft:red_nether_brick_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "13388": "minecraft:red_nether_brick_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "13389": "minecraft:red_nether_brick_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "13390": "minecraft:red_nether_brick_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "13391": "minecraft:red_nether_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "13392": "minecraft:red_nether_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "13393": "minecraft:red_nether_brick_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "13394": "minecraft:red_nether_brick_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "13395": "minecraft:red_nether_brick_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "13396": "minecraft:red_nether_brick_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "13397": "minecraft:red_nether_brick_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "13398": "minecraft:red_nether_brick_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "13399": "minecraft:red_nether_brick_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "13400": "minecraft:red_nether_brick_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "13401": "minecraft:end_stone_brick_slab[type=top,waterlogged=true]", + "13402": "minecraft:end_stone_brick_slab[type=top,waterlogged=false]", + "13403": "minecraft:end_stone_brick_slab[type=bottom,waterlogged=true]", + "13404": "minecraft:end_stone_brick_slab[type=bottom,waterlogged=false]", + "13405": "minecraft:end_stone_brick_slab[type=double,waterlogged=true]", + "13406": "minecraft:end_stone_brick_slab[type=double,waterlogged=false]", + "13407": "minecraft:tube_coral_wall_fan[facing=north,waterlogged=true]", + "13408": "minecraft:tube_coral_wall_fan[facing=north,waterlogged=false]", + "13409": "minecraft:tube_coral_wall_fan[facing=south,waterlogged=true]", + "13410": "minecraft:tube_coral_wall_fan[facing=south,waterlogged=false]", + "13411": "minecraft:tube_coral_wall_fan[facing=west,waterlogged=true]", + "13412": "minecraft:tube_coral_wall_fan[facing=west,waterlogged=false]", + "13413": "minecraft:tube_coral_wall_fan[facing=east,waterlogged=true]", + "13414": "minecraft:tube_coral_wall_fan[facing=east,waterlogged=false]", + "13415": "minecraft:bubble_coral_fan[waterlogged=true]", + "13416": "minecraft:bubble_coral_fan[waterlogged=false]", + "13417": "minecraft:jungle_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "13418": "minecraft:jungle_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "13419": "minecraft:jungle_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "13420": "minecraft:jungle_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "13421": "minecraft:jungle_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "13422": "minecraft:jungle_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "13423": "minecraft:jungle_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "13424": "minecraft:jungle_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "13425": "minecraft:jungle_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "13426": "minecraft:jungle_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "13427": "minecraft:jungle_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "13428": "minecraft:jungle_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "13429": "minecraft:jungle_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "13430": "minecraft:jungle_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "13431": "minecraft:jungle_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "13432": "minecraft:jungle_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "13433": "minecraft:jungle_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "13434": "minecraft:jungle_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "13435": "minecraft:jungle_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "13436": "minecraft:jungle_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "13437": "minecraft:jungle_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "13438": "minecraft:jungle_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "13439": "minecraft:jungle_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "13440": "minecraft:jungle_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "13441": "minecraft:jungle_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "13442": "minecraft:jungle_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "13443": "minecraft:jungle_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "13444": "minecraft:jungle_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "13445": "minecraft:jungle_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "13446": "minecraft:jungle_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "13447": "minecraft:jungle_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "13448": "minecraft:jungle_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "13449": "minecraft:jungle_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "13450": "minecraft:jungle_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "13451": "minecraft:jungle_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "13452": "minecraft:jungle_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "13453": "minecraft:jungle_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "13454": "minecraft:jungle_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "13455": "minecraft:jungle_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "13456": "minecraft:jungle_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "13457": "minecraft:jungle_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "13458": "minecraft:jungle_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "13459": "minecraft:jungle_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "13460": "minecraft:jungle_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "13461": "minecraft:jungle_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "13462": "minecraft:jungle_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "13463": "minecraft:jungle_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "13464": "minecraft:jungle_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "13465": "minecraft:jungle_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "13466": "minecraft:jungle_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "13467": "minecraft:jungle_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "13468": "minecraft:jungle_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "13469": "minecraft:jungle_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "13470": "minecraft:jungle_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "13471": "minecraft:jungle_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "13472": "minecraft:jungle_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "13473": "minecraft:jungle_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "13474": "minecraft:jungle_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "13475": "minecraft:jungle_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "13476": "minecraft:jungle_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "13477": "minecraft:jungle_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "13478": "minecraft:jungle_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "13479": "minecraft:jungle_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "13480": "minecraft:jungle_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "13481": "minecraft:jungle_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "13482": "minecraft:jungle_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "13483": "minecraft:jungle_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "13484": "minecraft:jungle_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "13485": "minecraft:jungle_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "13486": "minecraft:jungle_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "13487": "minecraft:jungle_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "13488": "minecraft:jungle_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "13489": "minecraft:jungle_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "13490": "minecraft:jungle_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "13491": "minecraft:jungle_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "13492": "minecraft:jungle_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "13493": "minecraft:jungle_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "13494": "minecraft:jungle_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "13495": "minecraft:jungle_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "13496": "minecraft:jungle_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "13497": "minecraft:blue_stained_glass", + "13498": "minecraft:poppy", + "13499": "minecraft:spruce_button[face=floor,facing=north,powered=true]", + "13500": "minecraft:spruce_button[face=floor,facing=north,powered=false]", + "13501": "minecraft:spruce_button[face=floor,facing=south,powered=true]", + "13502": "minecraft:spruce_button[face=floor,facing=south,powered=false]", + "13503": "minecraft:spruce_button[face=floor,facing=west,powered=true]", + "13504": "minecraft:spruce_button[face=floor,facing=west,powered=false]", + "13505": "minecraft:spruce_button[face=floor,facing=east,powered=true]", + "13506": "minecraft:spruce_button[face=floor,facing=east,powered=false]", + "13507": "minecraft:spruce_button[face=wall,facing=north,powered=true]", + "13508": "minecraft:spruce_button[face=wall,facing=north,powered=false]", + "13509": "minecraft:spruce_button[face=wall,facing=south,powered=true]", + "13510": "minecraft:spruce_button[face=wall,facing=south,powered=false]", + "13511": "minecraft:spruce_button[face=wall,facing=west,powered=true]", + "13512": "minecraft:spruce_button[face=wall,facing=west,powered=false]", + "13513": "minecraft:spruce_button[face=wall,facing=east,powered=true]", + "13514": "minecraft:spruce_button[face=wall,facing=east,powered=false]", + "13515": "minecraft:spruce_button[face=ceiling,facing=north,powered=true]", + "13516": "minecraft:spruce_button[face=ceiling,facing=north,powered=false]", + "13517": "minecraft:spruce_button[face=ceiling,facing=south,powered=true]", + "13518": "minecraft:spruce_button[face=ceiling,facing=south,powered=false]", + "13519": "minecraft:spruce_button[face=ceiling,facing=west,powered=true]", + "13520": "minecraft:spruce_button[face=ceiling,facing=west,powered=false]", + "13521": "minecraft:spruce_button[face=ceiling,facing=east,powered=true]", + "13522": "minecraft:spruce_button[face=ceiling,facing=east,powered=false]", + "13523": "minecraft:potted_birch_sapling", + "13524": "minecraft:farmland[moisture=0]", + "13525": "minecraft:farmland[moisture=1]", + "13526": "minecraft:farmland[moisture=2]", + "13527": "minecraft:farmland[moisture=3]", + "13528": "minecraft:farmland[moisture=4]", + "13529": "minecraft:farmland[moisture=5]", + "13530": "minecraft:farmland[moisture=6]", + "13531": "minecraft:farmland[moisture=7]", + "13532": "minecraft:purple_wool", + "13533": "minecraft:melon", + "13534": "minecraft:campfire[facing=north,lit=true,signal_fire=true,waterlogged=true]", + "13535": "minecraft:campfire[facing=north,lit=true,signal_fire=true,waterlogged=false]", + "13536": "minecraft:campfire[facing=north,lit=true,signal_fire=false,waterlogged=true]", + "13537": "minecraft:campfire[facing=north,lit=true,signal_fire=false,waterlogged=false]", + "13538": "minecraft:campfire[facing=north,lit=false,signal_fire=true,waterlogged=true]", + "13539": "minecraft:campfire[facing=north,lit=false,signal_fire=true,waterlogged=false]", + "13540": "minecraft:campfire[facing=north,lit=false,signal_fire=false,waterlogged=true]", + "13541": "minecraft:campfire[facing=north,lit=false,signal_fire=false,waterlogged=false]", + "13542": "minecraft:campfire[facing=south,lit=true,signal_fire=true,waterlogged=true]", + "13543": "minecraft:campfire[facing=south,lit=true,signal_fire=true,waterlogged=false]", + "13544": "minecraft:campfire[facing=south,lit=true,signal_fire=false,waterlogged=true]", + "13545": "minecraft:campfire[facing=south,lit=true,signal_fire=false,waterlogged=false]", + "13546": "minecraft:campfire[facing=south,lit=false,signal_fire=true,waterlogged=true]", + "13547": "minecraft:campfire[facing=south,lit=false,signal_fire=true,waterlogged=false]", + "13548": "minecraft:campfire[facing=south,lit=false,signal_fire=false,waterlogged=true]", + "13549": "minecraft:campfire[facing=south,lit=false,signal_fire=false,waterlogged=false]", + "13550": "minecraft:campfire[facing=west,lit=true,signal_fire=true,waterlogged=true]", + "13551": "minecraft:campfire[facing=west,lit=true,signal_fire=true,waterlogged=false]", + "13552": "minecraft:campfire[facing=west,lit=true,signal_fire=false,waterlogged=true]", + "13553": "minecraft:campfire[facing=west,lit=true,signal_fire=false,waterlogged=false]", + "13554": "minecraft:campfire[facing=west,lit=false,signal_fire=true,waterlogged=true]", + "13555": "minecraft:campfire[facing=west,lit=false,signal_fire=true,waterlogged=false]", + "13556": "minecraft:campfire[facing=west,lit=false,signal_fire=false,waterlogged=true]", + "13557": "minecraft:campfire[facing=west,lit=false,signal_fire=false,waterlogged=false]", + "13558": "minecraft:campfire[facing=east,lit=true,signal_fire=true,waterlogged=true]", + "13559": "minecraft:campfire[facing=east,lit=true,signal_fire=true,waterlogged=false]", + "13560": "minecraft:campfire[facing=east,lit=true,signal_fire=false,waterlogged=true]", + "13561": "minecraft:campfire[facing=east,lit=true,signal_fire=false,waterlogged=false]", + "13562": "minecraft:campfire[facing=east,lit=false,signal_fire=true,waterlogged=true]", + "13563": "minecraft:campfire[facing=east,lit=false,signal_fire=true,waterlogged=false]", + "13564": "minecraft:campfire[facing=east,lit=false,signal_fire=false,waterlogged=true]", + "13565": "minecraft:campfire[facing=east,lit=false,signal_fire=false,waterlogged=false]", + "13566": "minecraft:jungle_pressure_plate[powered=true]", + "13567": "minecraft:jungle_pressure_plate[powered=false]", + "13568": "minecraft:black_concrete_powder", + "13569": "minecraft:ice", + "13570": "minecraft:cactus[age=0]", + "13571": "minecraft:cactus[age=1]", + "13572": "minecraft:cactus[age=2]", + "13573": "minecraft:cactus[age=3]", + "13574": "minecraft:cactus[age=4]", + "13575": "minecraft:cactus[age=5]", + "13576": "minecraft:cactus[age=6]", + "13577": "minecraft:cactus[age=7]", + "13578": "minecraft:cactus[age=8]", + "13579": "minecraft:cactus[age=9]", + "13580": "minecraft:cactus[age=10]", + "13581": "minecraft:cactus[age=11]", + "13582": "minecraft:cactus[age=12]", + "13583": "minecraft:cactus[age=13]", + "13584": "minecraft:cactus[age=14]", + "13585": "minecraft:cactus[age=15]", + "13586": "minecraft:wither_skeleton_wall_skull[facing=north]", + "13587": "minecraft:wither_skeleton_wall_skull[facing=south]", + "13588": "minecraft:wither_skeleton_wall_skull[facing=west]", + "13589": "minecraft:wither_skeleton_wall_skull[facing=east]", + "13590": "minecraft:smooth_quartz_slab[type=top,waterlogged=true]", + "13591": "minecraft:smooth_quartz_slab[type=top,waterlogged=false]", + "13592": "minecraft:smooth_quartz_slab[type=bottom,waterlogged=true]", + "13593": "minecraft:smooth_quartz_slab[type=bottom,waterlogged=false]", + "13594": "minecraft:smooth_quartz_slab[type=double,waterlogged=true]", + "13595": "minecraft:smooth_quartz_slab[type=double,waterlogged=false]", + "13596": "minecraft:spawner", + "13597": "minecraft:horn_coral_fan[waterlogged=true]", + "13598": "minecraft:horn_coral_fan[waterlogged=false]", + "13599": "minecraft:ancient_debris", + "13600": "minecraft:red_carpet", + "13601": "minecraft:ant[facing=north]", + "13602": "minecraft:ant[facing=south]", + "13603": "minecraft:ant[facing=west]", + "13604": "minecraft:ant[facing=east]", + "13605": "minecraft:lantern[hanging=true]", + "13606": "minecraft:lantern[hanging=false]", + "13607": "minecraft:pink_shulker_box[facing=north]", + "13608": "minecraft:pink_shulker_box[facing=east]", + "13609": "minecraft:pink_shulker_box[facing=south]", + "13610": "minecraft:pink_shulker_box[facing=west]", + "13611": "minecraft:pink_shulker_box[facing=up]", + "13612": "minecraft:pink_shulker_box[facing=down]", + "13613": "minecraft:observer[facing=north,powered=true]", + "13614": "minecraft:observer[facing=north,powered=false]", + "13615": "minecraft:observer[facing=east,powered=true]", + "13616": "minecraft:observer[facing=east,powered=false]", + "13617": "minecraft:observer[facing=south,powered=true]", + "13618": "minecraft:observer[facing=south,powered=false]", + "13619": "minecraft:observer[facing=west,powered=true]", + "13620": "minecraft:observer[facing=west,powered=false]", + "13621": "minecraft:observer[facing=up,powered=true]", + "13622": "minecraft:observer[facing=up,powered=false]", + "13623": "minecraft:observer[facing=down,powered=true]", + "13624": "minecraft:observer[facing=down,powered=false]", + "13625": "minecraft:peony[half=upper]", + "13626": "minecraft:peony[half=lower]", + "13627": "minecraft:birch_planks", + "13628": "minecraft:oak_sign[rotation=0,waterlogged=true]", + "13629": "minecraft:oak_sign[rotation=0,waterlogged=false]", + "13630": "minecraft:oak_sign[rotation=1,waterlogged=true]", + "13631": "minecraft:oak_sign[rotation=1,waterlogged=false]", + "13632": "minecraft:oak_sign[rotation=2,waterlogged=true]", + "13633": "minecraft:oak_sign[rotation=2,waterlogged=false]", + "13634": "minecraft:oak_sign[rotation=3,waterlogged=true]", + "13635": "minecraft:oak_sign[rotation=3,waterlogged=false]", + "13636": "minecraft:oak_sign[rotation=4,waterlogged=true]", + "13637": "minecraft:oak_sign[rotation=4,waterlogged=false]", + "13638": "minecraft:oak_sign[rotation=5,waterlogged=true]", + "13639": "minecraft:oak_sign[rotation=5,waterlogged=false]", + "13640": "minecraft:oak_sign[rotation=6,waterlogged=true]", + "13641": "minecraft:oak_sign[rotation=6,waterlogged=false]", + "13642": "minecraft:oak_sign[rotation=7,waterlogged=true]", + "13643": "minecraft:oak_sign[rotation=7,waterlogged=false]", + "13644": "minecraft:oak_sign[rotation=8,waterlogged=true]", + "13645": "minecraft:oak_sign[rotation=8,waterlogged=false]", + "13646": "minecraft:oak_sign[rotation=9,waterlogged=true]", + "13647": "minecraft:oak_sign[rotation=9,waterlogged=false]", + "13648": "minecraft:oak_sign[rotation=10,waterlogged=true]", + "13649": "minecraft:oak_sign[rotation=10,waterlogged=false]", + "13650": "minecraft:oak_sign[rotation=11,waterlogged=true]", + "13651": "minecraft:oak_sign[rotation=11,waterlogged=false]", + "13652": "minecraft:oak_sign[rotation=12,waterlogged=true]", + "13653": "minecraft:oak_sign[rotation=12,waterlogged=false]", + "13654": "minecraft:oak_sign[rotation=13,waterlogged=true]", + "13655": "minecraft:oak_sign[rotation=13,waterlogged=false]", + "13656": "minecraft:oak_sign[rotation=14,waterlogged=true]", + "13657": "minecraft:oak_sign[rotation=14,waterlogged=false]", + "13658": "minecraft:oak_sign[rotation=15,waterlogged=true]", + "13659": "minecraft:oak_sign[rotation=15,waterlogged=false]", + "13660": "minecraft:pink_terracotta", + "13661": "minecraft:fletching_table", + "13662": "minecraft:iron_bars[east=true,north=true,south=true,waterlogged=true,west=true]", + "13663": "minecraft:iron_bars[east=true,north=true,south=true,waterlogged=true,west=false]", + "13664": "minecraft:iron_bars[east=true,north=true,south=true,waterlogged=false,west=true]", + "13665": "minecraft:iron_bars[east=true,north=true,south=true,waterlogged=false,west=false]", + "13666": "minecraft:iron_bars[east=true,north=true,south=false,waterlogged=true,west=true]", + "13667": "minecraft:iron_bars[east=true,north=true,south=false,waterlogged=true,west=false]", + "13668": "minecraft:iron_bars[east=true,north=true,south=false,waterlogged=false,west=true]", + "13669": "minecraft:iron_bars[east=true,north=true,south=false,waterlogged=false,west=false]", + "13670": "minecraft:iron_bars[east=true,north=false,south=true,waterlogged=true,west=true]", + "13671": "minecraft:iron_bars[east=true,north=false,south=true,waterlogged=true,west=false]", + "13672": "minecraft:iron_bars[east=true,north=false,south=true,waterlogged=false,west=true]", + "13673": "minecraft:iron_bars[east=true,north=false,south=true,waterlogged=false,west=false]", + "13674": "minecraft:iron_bars[east=true,north=false,south=false,waterlogged=true,west=true]", + "13675": "minecraft:iron_bars[east=true,north=false,south=false,waterlogged=true,west=false]", + "13676": "minecraft:iron_bars[east=true,north=false,south=false,waterlogged=false,west=true]", + "13677": "minecraft:iron_bars[east=true,north=false,south=false,waterlogged=false,west=false]", + "13678": "minecraft:iron_bars[east=false,north=true,south=true,waterlogged=true,west=true]", + "13679": "minecraft:iron_bars[east=false,north=true,south=true,waterlogged=true,west=false]", + "13680": "minecraft:iron_bars[east=false,north=true,south=true,waterlogged=false,west=true]", + "13681": "minecraft:iron_bars[east=false,north=true,south=true,waterlogged=false,west=false]", + "13682": "minecraft:iron_bars[east=false,north=true,south=false,waterlogged=true,west=true]", + "13683": "minecraft:iron_bars[east=false,north=true,south=false,waterlogged=true,west=false]", + "13684": "minecraft:iron_bars[east=false,north=true,south=false,waterlogged=false,west=true]", + "13685": "minecraft:iron_bars[east=false,north=true,south=false,waterlogged=false,west=false]", + "13686": "minecraft:iron_bars[east=false,north=false,south=true,waterlogged=true,west=true]", + "13687": "minecraft:iron_bars[east=false,north=false,south=true,waterlogged=true,west=false]", + "13688": "minecraft:iron_bars[east=false,north=false,south=true,waterlogged=false,west=true]", + "13689": "minecraft:iron_bars[east=false,north=false,south=true,waterlogged=false,west=false]", + "13690": "minecraft:iron_bars[east=false,north=false,south=false,waterlogged=true,west=true]", + "13691": "minecraft:iron_bars[east=false,north=false,south=false,waterlogged=true,west=false]", + "13692": "minecraft:iron_bars[east=false,north=false,south=false,waterlogged=false,west=true]", + "13693": "minecraft:iron_bars[east=false,north=false,south=false,waterlogged=false,west=false]", + "13694": "minecraft:kelp_plant", + "13695": "minecraft:dark_oak_pressure_plate[powered=true]", + "13696": "minecraft:dark_oak_pressure_plate[powered=false]", + "13697": "minecraft:blast_furnace[facing=north,lit=true]", + "13698": "minecraft:blast_furnace[facing=north,lit=false]", + "13699": "minecraft:blast_furnace[facing=south,lit=true]", + "13700": "minecraft:blast_furnace[facing=south,lit=false]", + "13701": "minecraft:blast_furnace[facing=west,lit=true]", + "13702": "minecraft:blast_furnace[facing=west,lit=false]", + "13703": "minecraft:blast_furnace[facing=east,lit=true]", + "13704": "minecraft:blast_furnace[facing=east,lit=false]", + "13705": "minecraft:dead_fire_coral_block", + "13706": "minecraft:light_blue_banner[rotation=0]", + "13707": "minecraft:light_blue_banner[rotation=1]", + "13708": "minecraft:light_blue_banner[rotation=2]", + "13709": "minecraft:light_blue_banner[rotation=3]", + "13710": "minecraft:light_blue_banner[rotation=4]", + "13711": "minecraft:light_blue_banner[rotation=5]", + "13712": "minecraft:light_blue_banner[rotation=6]", + "13713": "minecraft:light_blue_banner[rotation=7]", + "13714": "minecraft:light_blue_banner[rotation=8]", + "13715": "minecraft:light_blue_banner[rotation=9]", + "13716": "minecraft:light_blue_banner[rotation=10]", + "13717": "minecraft:light_blue_banner[rotation=11]", + "13718": "minecraft:light_blue_banner[rotation=12]", + "13719": "minecraft:light_blue_banner[rotation=13]", + "13720": "minecraft:light_blue_banner[rotation=14]", + "13721": "minecraft:light_blue_banner[rotation=15]", + "13722": "minecraft:quartz_pillar[axis=x]", + "13723": "minecraft:quartz_pillar[axis=y]", + "13724": "minecraft:quartz_pillar[axis=z]", + "13725": "minecraft:lime_bed[facing=north,occupied=true,part=head]", + "13726": "minecraft:lime_bed[facing=north,occupied=true,part=foot]", + "13727": "minecraft:lime_bed[facing=north,occupied=false,part=head]", + "13728": "minecraft:lime_bed[facing=north,occupied=false,part=foot]", + "13729": "minecraft:lime_bed[facing=south,occupied=true,part=head]", + "13730": "minecraft:lime_bed[facing=south,occupied=true,part=foot]", + "13731": "minecraft:lime_bed[facing=south,occupied=false,part=head]", + "13732": "minecraft:lime_bed[facing=south,occupied=false,part=foot]", + "13733": "minecraft:lime_bed[facing=west,occupied=true,part=head]", + "13734": "minecraft:lime_bed[facing=west,occupied=true,part=foot]", + "13735": "minecraft:lime_bed[facing=west,occupied=false,part=head]", + "13736": "minecraft:lime_bed[facing=west,occupied=false,part=foot]", + "13737": "minecraft:lime_bed[facing=east,occupied=true,part=head]", + "13738": "minecraft:lime_bed[facing=east,occupied=true,part=foot]", + "13739": "minecraft:lime_bed[facing=east,occupied=false,part=head]", + "13740": "minecraft:lime_bed[facing=east,occupied=false,part=foot]", + "13741": "minecraft:gray_bed[facing=north,occupied=true,part=head]", + "13742": "minecraft:gray_bed[facing=north,occupied=true,part=foot]", + "13743": "minecraft:gray_bed[facing=north,occupied=false,part=head]", + "13744": "minecraft:gray_bed[facing=north,occupied=false,part=foot]", + "13745": "minecraft:gray_bed[facing=south,occupied=true,part=head]", + "13746": "minecraft:gray_bed[facing=south,occupied=true,part=foot]", + "13747": "minecraft:gray_bed[facing=south,occupied=false,part=head]", + "13748": "minecraft:gray_bed[facing=south,occupied=false,part=foot]", + "13749": "minecraft:gray_bed[facing=west,occupied=true,part=head]", + "13750": "minecraft:gray_bed[facing=west,occupied=true,part=foot]", + "13751": "minecraft:gray_bed[facing=west,occupied=false,part=head]", + "13752": "minecraft:gray_bed[facing=west,occupied=false,part=foot]", + "13753": "minecraft:gray_bed[facing=east,occupied=true,part=head]", + "13754": "minecraft:gray_bed[facing=east,occupied=true,part=foot]", + "13755": "minecraft:gray_bed[facing=east,occupied=false,part=head]", + "13756": "minecraft:gray_bed[facing=east,occupied=false,part=foot]", + "13757": "minecraft:black_bed[facing=north,occupied=true,part=head]", + "13758": "minecraft:black_bed[facing=north,occupied=true,part=foot]", + "13759": "minecraft:black_bed[facing=north,occupied=false,part=head]", + "13760": "minecraft:black_bed[facing=north,occupied=false,part=foot]", + "13761": "minecraft:black_bed[facing=south,occupied=true,part=head]", + "13762": "minecraft:black_bed[facing=south,occupied=true,part=foot]", + "13763": "minecraft:black_bed[facing=south,occupied=false,part=head]", + "13764": "minecraft:black_bed[facing=south,occupied=false,part=foot]", + "13765": "minecraft:black_bed[facing=west,occupied=true,part=head]", + "13766": "minecraft:black_bed[facing=west,occupied=true,part=foot]", + "13767": "minecraft:black_bed[facing=west,occupied=false,part=head]", + "13768": "minecraft:black_bed[facing=west,occupied=false,part=foot]", + "13769": "minecraft:black_bed[facing=east,occupied=true,part=head]", + "13770": "minecraft:black_bed[facing=east,occupied=true,part=foot]", + "13771": "minecraft:black_bed[facing=east,occupied=false,part=head]", + "13772": "minecraft:black_bed[facing=east,occupied=false,part=foot]", + "13773": "minecraft:green_bed[facing=north,occupied=true,part=head]", + "13774": "minecraft:green_bed[facing=north,occupied=true,part=foot]", + "13775": "minecraft:green_bed[facing=north,occupied=false,part=head]", + "13776": "minecraft:green_bed[facing=north,occupied=false,part=foot]", + "13777": "minecraft:green_bed[facing=south,occupied=true,part=head]", + "13778": "minecraft:green_bed[facing=south,occupied=true,part=foot]", + "13779": "minecraft:green_bed[facing=south,occupied=false,part=head]", + "13780": "minecraft:green_bed[facing=south,occupied=false,part=foot]", + "13781": "minecraft:green_bed[facing=west,occupied=true,part=head]", + "13782": "minecraft:green_bed[facing=west,occupied=true,part=foot]", + "13783": "minecraft:green_bed[facing=west,occupied=false,part=head]", + "13784": "minecraft:green_bed[facing=west,occupied=false,part=foot]", + "13785": "minecraft:green_bed[facing=east,occupied=true,part=head]", + "13786": "minecraft:green_bed[facing=east,occupied=true,part=foot]", + "13787": "minecraft:green_bed[facing=east,occupied=false,part=head]", + "13788": "minecraft:green_bed[facing=east,occupied=false,part=foot]", + "13789": "minecraft:activator_rail[powered=true,shape=north_south]", + "13790": "minecraft:activator_rail[powered=true,shape=east_west]", + "13791": "minecraft:activator_rail[powered=true,shape=ascending_east]", + "13792": "minecraft:activator_rail[powered=true,shape=ascending_west]", + "13793": "minecraft:activator_rail[powered=true,shape=ascending_north]", + "13794": "minecraft:activator_rail[powered=true,shape=ascending_south]", + "13795": "minecraft:activator_rail[powered=false,shape=north_south]", + "13796": "minecraft:activator_rail[powered=false,shape=east_west]", + "13797": "minecraft:activator_rail[powered=false,shape=ascending_east]", + "13798": "minecraft:activator_rail[powered=false,shape=ascending_west]", + "13799": "minecraft:activator_rail[powered=false,shape=ascending_north]", + "13800": "minecraft:activator_rail[powered=false,shape=ascending_south]", + "13801": "minecraft:stone_brick_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "13802": "minecraft:stone_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "13803": "minecraft:stone_brick_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "13804": "minecraft:stone_brick_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "13805": "minecraft:stone_brick_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "13806": "minecraft:stone_brick_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "13807": "minecraft:stone_brick_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "13808": "minecraft:stone_brick_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "13809": "minecraft:stone_brick_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "13810": "minecraft:stone_brick_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "13811": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "13812": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "13813": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "13814": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "13815": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "13816": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "13817": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "13818": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "13819": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "13820": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "13821": "minecraft:stone_brick_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "13822": "minecraft:stone_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "13823": "minecraft:stone_brick_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "13824": "minecraft:stone_brick_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "13825": "minecraft:stone_brick_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "13826": "minecraft:stone_brick_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "13827": "minecraft:stone_brick_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "13828": "minecraft:stone_brick_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "13829": "minecraft:stone_brick_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "13830": "minecraft:stone_brick_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "13831": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "13832": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "13833": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "13834": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "13835": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "13836": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "13837": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "13838": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "13839": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "13840": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "13841": "minecraft:stone_brick_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "13842": "minecraft:stone_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "13843": "minecraft:stone_brick_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "13844": "minecraft:stone_brick_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "13845": "minecraft:stone_brick_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "13846": "minecraft:stone_brick_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "13847": "minecraft:stone_brick_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "13848": "minecraft:stone_brick_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "13849": "minecraft:stone_brick_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "13850": "minecraft:stone_brick_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "13851": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "13852": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "13853": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "13854": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "13855": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "13856": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "13857": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "13858": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "13859": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "13860": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "13861": "minecraft:stone_brick_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "13862": "minecraft:stone_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "13863": "minecraft:stone_brick_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "13864": "minecraft:stone_brick_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "13865": "minecraft:stone_brick_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "13866": "minecraft:stone_brick_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "13867": "minecraft:stone_brick_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "13868": "minecraft:stone_brick_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "13869": "minecraft:stone_brick_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "13870": "minecraft:stone_brick_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "13871": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "13872": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "13873": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "13874": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "13875": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "13876": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "13877": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "13878": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "13879": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "13880": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "13881": "minecraft:oak_fence_gate[facing=north,in_wall=true,open=true,powered=true]", + "13882": "minecraft:oak_fence_gate[facing=north,in_wall=true,open=true,powered=false]", + "13883": "minecraft:oak_fence_gate[facing=north,in_wall=true,open=false,powered=true]", + "13884": "minecraft:oak_fence_gate[facing=north,in_wall=true,open=false,powered=false]", + "13885": "minecraft:oak_fence_gate[facing=north,in_wall=false,open=true,powered=true]", + "13886": "minecraft:oak_fence_gate[facing=north,in_wall=false,open=true,powered=false]", + "13887": "minecraft:oak_fence_gate[facing=north,in_wall=false,open=false,powered=true]", + "13888": "minecraft:oak_fence_gate[facing=north,in_wall=false,open=false,powered=false]", + "13889": "minecraft:oak_fence_gate[facing=south,in_wall=true,open=true,powered=true]", + "13890": "minecraft:oak_fence_gate[facing=south,in_wall=true,open=true,powered=false]", + "13891": "minecraft:oak_fence_gate[facing=south,in_wall=true,open=false,powered=true]", + "13892": "minecraft:oak_fence_gate[facing=south,in_wall=true,open=false,powered=false]", + "13893": "minecraft:oak_fence_gate[facing=south,in_wall=false,open=true,powered=true]", + "13894": "minecraft:oak_fence_gate[facing=south,in_wall=false,open=true,powered=false]", + "13895": "minecraft:oak_fence_gate[facing=south,in_wall=false,open=false,powered=true]", + "13896": "minecraft:oak_fence_gate[facing=south,in_wall=false,open=false,powered=false]", + "13897": "minecraft:oak_fence_gate[facing=west,in_wall=true,open=true,powered=true]", + "13898": "minecraft:oak_fence_gate[facing=west,in_wall=true,open=true,powered=false]", + "13899": "minecraft:oak_fence_gate[facing=west,in_wall=true,open=false,powered=true]", + "13900": "minecraft:oak_fence_gate[facing=west,in_wall=true,open=false,powered=false]", + "13901": "minecraft:oak_fence_gate[facing=west,in_wall=false,open=true,powered=true]", + "13902": "minecraft:oak_fence_gate[facing=west,in_wall=false,open=true,powered=false]", + "13903": "minecraft:oak_fence_gate[facing=west,in_wall=false,open=false,powered=true]", + "13904": "minecraft:oak_fence_gate[facing=west,in_wall=false,open=false,powered=false]", + "13905": "minecraft:oak_fence_gate[facing=east,in_wall=true,open=true,powered=true]", + "13906": "minecraft:oak_fence_gate[facing=east,in_wall=true,open=true,powered=false]", + "13907": "minecraft:oak_fence_gate[facing=east,in_wall=true,open=false,powered=true]", + "13908": "minecraft:oak_fence_gate[facing=east,in_wall=true,open=false,powered=false]", + "13909": "minecraft:oak_fence_gate[facing=east,in_wall=false,open=true,powered=true]", + "13910": "minecraft:oak_fence_gate[facing=east,in_wall=false,open=true,powered=false]", + "13911": "minecraft:oak_fence_gate[facing=east,in_wall=false,open=false,powered=true]", + "13912": "minecraft:oak_fence_gate[facing=east,in_wall=false,open=false,powered=false]", + "13913": "minecraft:tube_coral_block", + "13914": "minecraft:cut_red_sandstone_slab[type=top,waterlogged=true]", + "13915": "minecraft:cut_red_sandstone_slab[type=top,waterlogged=false]", + "13916": "minecraft:cut_red_sandstone_slab[type=bottom,waterlogged=true]", + "13917": "minecraft:cut_red_sandstone_slab[type=bottom,waterlogged=false]", + "13918": "minecraft:cut_red_sandstone_slab[type=double,waterlogged=true]", + "13919": "minecraft:cut_red_sandstone_slab[type=double,waterlogged=false]", + "13920": "minecraft:yellow_wall_banner[facing=north]", + "13921": "minecraft:yellow_wall_banner[facing=south]", + "13922": "minecraft:yellow_wall_banner[facing=west]", + "13923": "minecraft:yellow_wall_banner[facing=east]", + "13924": "minecraft:bedrock", + "13925": "minecraft:light_gray_shulker_box[facing=north]", + "13926": "minecraft:light_gray_shulker_box[facing=east]", + "13927": "minecraft:light_gray_shulker_box[facing=south]", + "13928": "minecraft:light_gray_shulker_box[facing=west]", + "13929": "minecraft:light_gray_shulker_box[facing=up]", + "13930": "minecraft:light_gray_shulker_box[facing=down]", + "13931": "minecraft:spruce_slab[type=top,waterlogged=true]", + "13932": "minecraft:spruce_slab[type=top,waterlogged=false]", + "13933": "minecraft:spruce_slab[type=bottom,waterlogged=true]", + "13934": "minecraft:spruce_slab[type=bottom,waterlogged=false]", + "13935": "minecraft:spruce_slab[type=double,waterlogged=true]", + "13936": "minecraft:spruce_slab[type=double,waterlogged=false]", + "13937": "minecraft:brown_carpet", + "13938": "minecraft:oak_slab[type=top,waterlogged=true]", + "13939": "minecraft:oak_slab[type=top,waterlogged=false]", + "13940": "minecraft:oak_slab[type=bottom,waterlogged=true]", + "13941": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "13942": "minecraft:oak_slab[type=double,waterlogged=true]", + "13943": "minecraft:oak_slab[type=double,waterlogged=false]", + "13944": "minecraft:grass_block[snowy=true]", + "13945": "minecraft:grass_block[snowy=false]", + "13946": "minecraft:dirt", + "13947": "minecraft:light_gray_glazed_terracotta[facing=north]", + "13948": "minecraft:light_gray_glazed_terracotta[facing=south]", + "13949": "minecraft:light_gray_glazed_terracotta[facing=west]", + "13950": "minecraft:light_gray_glazed_terracotta[facing=east]", + "13951": "minecraft:prismarine_brick_slab[type=top,waterlogged=true]", + "13952": "minecraft:prismarine_brick_slab[type=top,waterlogged=false]", + "13953": "minecraft:prismarine_brick_slab[type=bottom,waterlogged=true]", + "13954": "minecraft:prismarine_brick_slab[type=bottom,waterlogged=false]", + "13955": "minecraft:prismarine_brick_slab[type=double,waterlogged=true]", + "13956": "minecraft:prismarine_brick_slab[type=double,waterlogged=false]", + "13957": "minecraft:green_carpet", + "13958": "minecraft:lime_wall_banner[facing=north]", + "13959": "minecraft:lime_wall_banner[facing=south]", + "13960": "minecraft:lime_wall_banner[facing=west]", + "13961": "minecraft:lime_wall_banner[facing=east]", + "13962": "minecraft:dark_oak_sapling[stage=0]", + "13963": "minecraft:dark_oak_sapling[stage=1]", + "13964": "minecraft:stripped_acacia_wood[axis=x]", + "13965": "minecraft:stripped_acacia_wood[axis=y]", + "13966": "minecraft:stripped_acacia_wood[axis=z]", + "13967": "minecraft:spruce_door[facing=north,half=upper,hinge=left,open=true,powered=true]", + "13968": "minecraft:spruce_door[facing=north,half=upper,hinge=left,open=true,powered=false]", + "13969": "minecraft:spruce_door[facing=north,half=upper,hinge=left,open=false,powered=true]", + "13970": "minecraft:spruce_door[facing=north,half=upper,hinge=left,open=false,powered=false]", + "13971": "minecraft:spruce_door[facing=north,half=upper,hinge=right,open=true,powered=true]", + "13972": "minecraft:spruce_door[facing=north,half=upper,hinge=right,open=true,powered=false]", + "13973": "minecraft:spruce_door[facing=north,half=upper,hinge=right,open=false,powered=true]", + "13974": "minecraft:spruce_door[facing=north,half=upper,hinge=right,open=false,powered=false]", + "13975": "minecraft:spruce_door[facing=north,half=lower,hinge=left,open=true,powered=true]", + "13976": "minecraft:spruce_door[facing=north,half=lower,hinge=left,open=true,powered=false]", + "13977": "minecraft:spruce_door[facing=north,half=lower,hinge=left,open=false,powered=true]", + "13978": "minecraft:spruce_door[facing=north,half=lower,hinge=left,open=false,powered=false]", + "13979": "minecraft:spruce_door[facing=north,half=lower,hinge=right,open=true,powered=true]", + "13980": "minecraft:spruce_door[facing=north,half=lower,hinge=right,open=true,powered=false]", + "13981": "minecraft:spruce_door[facing=north,half=lower,hinge=right,open=false,powered=true]", + "13982": "minecraft:spruce_door[facing=north,half=lower,hinge=right,open=false,powered=false]", + "13983": "minecraft:spruce_door[facing=south,half=upper,hinge=left,open=true,powered=true]", + "13984": "minecraft:spruce_door[facing=south,half=upper,hinge=left,open=true,powered=false]", + "13985": "minecraft:spruce_door[facing=south,half=upper,hinge=left,open=false,powered=true]", + "13986": "minecraft:spruce_door[facing=south,half=upper,hinge=left,open=false,powered=false]", + "13987": "minecraft:spruce_door[facing=south,half=upper,hinge=right,open=true,powered=true]", + "13988": "minecraft:spruce_door[facing=south,half=upper,hinge=right,open=true,powered=false]", + "13989": "minecraft:spruce_door[facing=south,half=upper,hinge=right,open=false,powered=true]", + "13990": "minecraft:spruce_door[facing=south,half=upper,hinge=right,open=false,powered=false]", + "13991": "minecraft:spruce_door[facing=south,half=lower,hinge=left,open=true,powered=true]", + "13992": "minecraft:spruce_door[facing=south,half=lower,hinge=left,open=true,powered=false]", + "13993": "minecraft:spruce_door[facing=south,half=lower,hinge=left,open=false,powered=true]", + "13994": "minecraft:spruce_door[facing=south,half=lower,hinge=left,open=false,powered=false]", + "13995": "minecraft:spruce_door[facing=south,half=lower,hinge=right,open=true,powered=true]", + "13996": "minecraft:spruce_door[facing=south,half=lower,hinge=right,open=true,powered=false]", + "13997": "minecraft:spruce_door[facing=south,half=lower,hinge=right,open=false,powered=true]", + "13998": "minecraft:spruce_door[facing=south,half=lower,hinge=right,open=false,powered=false]", + "13999": "minecraft:spruce_door[facing=west,half=upper,hinge=left,open=true,powered=true]", + "14000": "minecraft:spruce_door[facing=west,half=upper,hinge=left,open=true,powered=false]", + "14001": "minecraft:spruce_door[facing=west,half=upper,hinge=left,open=false,powered=true]", + "14002": "minecraft:spruce_door[facing=west,half=upper,hinge=left,open=false,powered=false]", + "14003": "minecraft:spruce_door[facing=west,half=upper,hinge=right,open=true,powered=true]", + "14004": "minecraft:spruce_door[facing=west,half=upper,hinge=right,open=true,powered=false]", + "14005": "minecraft:spruce_door[facing=west,half=upper,hinge=right,open=false,powered=true]", + "14006": "minecraft:spruce_door[facing=west,half=upper,hinge=right,open=false,powered=false]", + "14007": "minecraft:spruce_door[facing=west,half=lower,hinge=left,open=true,powered=true]", + "14008": "minecraft:spruce_door[facing=west,half=lower,hinge=left,open=true,powered=false]", + "14009": "minecraft:spruce_door[facing=west,half=lower,hinge=left,open=false,powered=true]", + "14010": "minecraft:spruce_door[facing=west,half=lower,hinge=left,open=false,powered=false]", + "14011": "minecraft:spruce_door[facing=west,half=lower,hinge=right,open=true,powered=true]", + "14012": "minecraft:spruce_door[facing=west,half=lower,hinge=right,open=true,powered=false]", + "14013": "minecraft:spruce_door[facing=west,half=lower,hinge=right,open=false,powered=true]", + "14014": "minecraft:spruce_door[facing=west,half=lower,hinge=right,open=false,powered=false]", + "14015": "minecraft:spruce_door[facing=east,half=upper,hinge=left,open=true,powered=true]", + "14016": "minecraft:spruce_door[facing=east,half=upper,hinge=left,open=true,powered=false]", + "14017": "minecraft:spruce_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "14018": "minecraft:spruce_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "14019": "minecraft:spruce_door[facing=east,half=upper,hinge=right,open=true,powered=true]", + "14020": "minecraft:spruce_door[facing=east,half=upper,hinge=right,open=true,powered=false]", + "14021": "minecraft:spruce_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "14022": "minecraft:spruce_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "14023": "minecraft:spruce_door[facing=east,half=lower,hinge=left,open=true,powered=true]", + "14024": "minecraft:spruce_door[facing=east,half=lower,hinge=left,open=true,powered=false]", + "14025": "minecraft:spruce_door[facing=east,half=lower,hinge=left,open=false,powered=true]", + "14026": "minecraft:spruce_door[facing=east,half=lower,hinge=left,open=false,powered=false]", + "14027": "minecraft:spruce_door[facing=east,half=lower,hinge=right,open=true,powered=true]", + "14028": "minecraft:spruce_door[facing=east,half=lower,hinge=right,open=true,powered=false]", + "14029": "minecraft:spruce_door[facing=east,half=lower,hinge=right,open=false,powered=true]", + "14030": "minecraft:spruce_door[facing=east,half=lower,hinge=right,open=false,powered=false]", + "14031": "minecraft:dark_oak_fence[east=true,north=true,south=true,waterlogged=true,west=true]", + "14032": "minecraft:dark_oak_fence[east=true,north=true,south=true,waterlogged=true,west=false]", + "14033": "minecraft:dark_oak_fence[east=true,north=true,south=true,waterlogged=false,west=true]", + "14034": "minecraft:dark_oak_fence[east=true,north=true,south=true,waterlogged=false,west=false]", + "14035": "minecraft:dark_oak_fence[east=true,north=true,south=false,waterlogged=true,west=true]", + "14036": "minecraft:dark_oak_fence[east=true,north=true,south=false,waterlogged=true,west=false]", + "14037": "minecraft:dark_oak_fence[east=true,north=true,south=false,waterlogged=false,west=true]", + "14038": "minecraft:dark_oak_fence[east=true,north=true,south=false,waterlogged=false,west=false]", + "14039": "minecraft:dark_oak_fence[east=true,north=false,south=true,waterlogged=true,west=true]", + "14040": "minecraft:dark_oak_fence[east=true,north=false,south=true,waterlogged=true,west=false]", + "14041": "minecraft:dark_oak_fence[east=true,north=false,south=true,waterlogged=false,west=true]", + "14042": "minecraft:dark_oak_fence[east=true,north=false,south=true,waterlogged=false,west=false]", + "14043": "minecraft:dark_oak_fence[east=true,north=false,south=false,waterlogged=true,west=true]", + "14044": "minecraft:dark_oak_fence[east=true,north=false,south=false,waterlogged=true,west=false]", + "14045": "minecraft:dark_oak_fence[east=true,north=false,south=false,waterlogged=false,west=true]", + "14046": "minecraft:dark_oak_fence[east=true,north=false,south=false,waterlogged=false,west=false]", + "14047": "minecraft:dark_oak_fence[east=false,north=true,south=true,waterlogged=true,west=true]", + "14048": "minecraft:dark_oak_fence[east=false,north=true,south=true,waterlogged=true,west=false]", + "14049": "minecraft:dark_oak_fence[east=false,north=true,south=true,waterlogged=false,west=true]", + "14050": "minecraft:dark_oak_fence[east=false,north=true,south=true,waterlogged=false,west=false]", + "14051": "minecraft:dark_oak_fence[east=false,north=true,south=false,waterlogged=true,west=true]", + "14052": "minecraft:dark_oak_fence[east=false,north=true,south=false,waterlogged=true,west=false]", + "14053": "minecraft:dark_oak_fence[east=false,north=true,south=false,waterlogged=false,west=true]", + "14054": "minecraft:dark_oak_fence[east=false,north=true,south=false,waterlogged=false,west=false]", + "14055": "minecraft:dark_oak_fence[east=false,north=false,south=true,waterlogged=true,west=true]", + "14056": "minecraft:dark_oak_fence[east=false,north=false,south=true,waterlogged=true,west=false]", + "14057": "minecraft:dark_oak_fence[east=false,north=false,south=true,waterlogged=false,west=true]", + "14058": "minecraft:dark_oak_fence[east=false,north=false,south=true,waterlogged=false,west=false]", + "14059": "minecraft:dark_oak_fence[east=false,north=false,south=false,waterlogged=true,west=true]", + "14060": "minecraft:dark_oak_fence[east=false,north=false,south=false,waterlogged=true,west=false]", + "14061": "minecraft:dark_oak_fence[east=false,north=false,south=false,waterlogged=false,west=true]", + "14062": "minecraft:dark_oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "14063": "minecraft:light_gray_concrete_powder", + "14064": "minecraft:yellow_wool", + "14065": "minecraft:green_terracotta", + "14066": "minecraft:bookshelf", + "14067": "minecraft:potatoes[age=0]", + "14068": "minecraft:potatoes[age=1]", + "14069": "minecraft:potatoes[age=2]", + "14070": "minecraft:potatoes[age=3]", + "14071": "minecraft:potatoes[age=4]", + "14072": "minecraft:potatoes[age=5]", + "14073": "minecraft:potatoes[age=6]", + "14074": "minecraft:potatoes[age=7]", + "14075": "minecraft:gray_concrete", + "14076": "minecraft:stripped_jungle_wood[axis=x]", + "14077": "minecraft:stripped_jungle_wood[axis=y]", + "14078": "minecraft:stripped_jungle_wood[axis=z]", + "14079": "minecraft:allium", + "14080": "minecraft:red_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=true]", + "14081": "minecraft:red_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=false]", + "14082": "minecraft:red_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=true]", + "14083": "minecraft:red_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=false]", + "14084": "minecraft:red_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=true]", + "14085": "minecraft:red_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=false]", + "14086": "minecraft:red_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=true]", + "14087": "minecraft:red_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=false]", + "14088": "minecraft:red_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=true]", + "14089": "minecraft:red_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=false]", + "14090": "minecraft:red_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=true]", + "14091": "minecraft:red_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=false]", + "14092": "minecraft:red_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=true]", + "14093": "minecraft:red_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=false]", + "14094": "minecraft:red_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=true]", + "14095": "minecraft:red_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=false]", + "14096": "minecraft:red_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=true]", + "14097": "minecraft:red_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=false]", + "14098": "minecraft:red_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=true]", + "14099": "minecraft:red_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=false]", + "14100": "minecraft:red_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=true]", + "14101": "minecraft:red_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=false]", + "14102": "minecraft:red_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=true]", + "14103": "minecraft:red_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=false]", + "14104": "minecraft:red_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=true]", + "14105": "minecraft:red_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=false]", + "14106": "minecraft:red_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=true]", + "14107": "minecraft:red_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=false]", + "14108": "minecraft:red_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=true]", + "14109": "minecraft:red_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=false]", + "14110": "minecraft:red_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=true]", + "14111": "minecraft:red_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]", + "14112": "minecraft:crimson_door[facing=north,half=upper,hinge=left,open=true,powered=true]", + "14113": "minecraft:crimson_door[facing=north,half=upper,hinge=left,open=true,powered=false]", + "14114": "minecraft:crimson_door[facing=north,half=upper,hinge=left,open=false,powered=true]", + "14115": "minecraft:crimson_door[facing=north,half=upper,hinge=left,open=false,powered=false]", + "14116": "minecraft:crimson_door[facing=north,half=upper,hinge=right,open=true,powered=true]", + "14117": "minecraft:crimson_door[facing=north,half=upper,hinge=right,open=true,powered=false]", + "14118": "minecraft:crimson_door[facing=north,half=upper,hinge=right,open=false,powered=true]", + "14119": "minecraft:crimson_door[facing=north,half=upper,hinge=right,open=false,powered=false]", + "14120": "minecraft:crimson_door[facing=north,half=lower,hinge=left,open=true,powered=true]", + "14121": "minecraft:crimson_door[facing=north,half=lower,hinge=left,open=true,powered=false]", + "14122": "minecraft:crimson_door[facing=north,half=lower,hinge=left,open=false,powered=true]", + "14123": "minecraft:crimson_door[facing=north,half=lower,hinge=left,open=false,powered=false]", + "14124": "minecraft:crimson_door[facing=north,half=lower,hinge=right,open=true,powered=true]", + "14125": "minecraft:crimson_door[facing=north,half=lower,hinge=right,open=true,powered=false]", + "14126": "minecraft:crimson_door[facing=north,half=lower,hinge=right,open=false,powered=true]", + "14127": "minecraft:crimson_door[facing=north,half=lower,hinge=right,open=false,powered=false]", + "14128": "minecraft:crimson_door[facing=south,half=upper,hinge=left,open=true,powered=true]", + "14129": "minecraft:crimson_door[facing=south,half=upper,hinge=left,open=true,powered=false]", + "14130": "minecraft:crimson_door[facing=south,half=upper,hinge=left,open=false,powered=true]", + "14131": "minecraft:crimson_door[facing=south,half=upper,hinge=left,open=false,powered=false]", + "14132": "minecraft:crimson_door[facing=south,half=upper,hinge=right,open=true,powered=true]", + "14133": "minecraft:crimson_door[facing=south,half=upper,hinge=right,open=true,powered=false]", + "14134": "minecraft:crimson_door[facing=south,half=upper,hinge=right,open=false,powered=true]", + "14135": "minecraft:crimson_door[facing=south,half=upper,hinge=right,open=false,powered=false]", + "14136": "minecraft:crimson_door[facing=south,half=lower,hinge=left,open=true,powered=true]", + "14137": "minecraft:crimson_door[facing=south,half=lower,hinge=left,open=true,powered=false]", + "14138": "minecraft:crimson_door[facing=south,half=lower,hinge=left,open=false,powered=true]", + "14139": "minecraft:crimson_door[facing=south,half=lower,hinge=left,open=false,powered=false]", + "14140": "minecraft:crimson_door[facing=south,half=lower,hinge=right,open=true,powered=true]", + "14141": "minecraft:crimson_door[facing=south,half=lower,hinge=right,open=true,powered=false]", + "14142": "minecraft:crimson_door[facing=south,half=lower,hinge=right,open=false,powered=true]", + "14143": "minecraft:crimson_door[facing=south,half=lower,hinge=right,open=false,powered=false]", + "14144": "minecraft:crimson_door[facing=west,half=upper,hinge=left,open=true,powered=true]", + "14145": "minecraft:crimson_door[facing=west,half=upper,hinge=left,open=true,powered=false]", + "14146": "minecraft:crimson_door[facing=west,half=upper,hinge=left,open=false,powered=true]", + "14147": "minecraft:crimson_door[facing=west,half=upper,hinge=left,open=false,powered=false]", + "14148": "minecraft:crimson_door[facing=west,half=upper,hinge=right,open=true,powered=true]", + "14149": "minecraft:crimson_door[facing=west,half=upper,hinge=right,open=true,powered=false]", + "14150": "minecraft:crimson_door[facing=west,half=upper,hinge=right,open=false,powered=true]", + "14151": "minecraft:crimson_door[facing=west,half=upper,hinge=right,open=false,powered=false]", + "14152": "minecraft:crimson_door[facing=west,half=lower,hinge=left,open=true,powered=true]", + "14153": "minecraft:crimson_door[facing=west,half=lower,hinge=left,open=true,powered=false]", + "14154": "minecraft:crimson_door[facing=west,half=lower,hinge=left,open=false,powered=true]", + "14155": "minecraft:crimson_door[facing=west,half=lower,hinge=left,open=false,powered=false]", + "14156": "minecraft:crimson_door[facing=west,half=lower,hinge=right,open=true,powered=true]", + "14157": "minecraft:crimson_door[facing=west,half=lower,hinge=right,open=true,powered=false]", + "14158": "minecraft:crimson_door[facing=west,half=lower,hinge=right,open=false,powered=true]", + "14159": "minecraft:crimson_door[facing=west,half=lower,hinge=right,open=false,powered=false]", + "14160": "minecraft:crimson_door[facing=east,half=upper,hinge=left,open=true,powered=true]", + "14161": "minecraft:crimson_door[facing=east,half=upper,hinge=left,open=true,powered=false]", + "14162": "minecraft:crimson_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "14163": "minecraft:crimson_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "14164": "minecraft:crimson_door[facing=east,half=upper,hinge=right,open=true,powered=true]", + "14165": "minecraft:crimson_door[facing=east,half=upper,hinge=right,open=true,powered=false]", + "14166": "minecraft:crimson_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "14167": "minecraft:crimson_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "14168": "minecraft:crimson_door[facing=east,half=lower,hinge=left,open=true,powered=true]", + "14169": "minecraft:crimson_door[facing=east,half=lower,hinge=left,open=true,powered=false]", + "14170": "minecraft:crimson_door[facing=east,half=lower,hinge=left,open=false,powered=true]", + "14171": "minecraft:crimson_door[facing=east,half=lower,hinge=left,open=false,powered=false]", + "14172": "minecraft:crimson_door[facing=east,half=lower,hinge=right,open=true,powered=true]", + "14173": "minecraft:crimson_door[facing=east,half=lower,hinge=right,open=true,powered=false]", + "14174": "minecraft:crimson_door[facing=east,half=lower,hinge=right,open=false,powered=true]", + "14175": "minecraft:crimson_door[facing=east,half=lower,hinge=right,open=false,powered=false]", + "14176": "minecraft:dark_prismarine_slab[type=top,waterlogged=true]", + "14177": "minecraft:dark_prismarine_slab[type=top,waterlogged=false]", + "14178": "minecraft:dark_prismarine_slab[type=bottom,waterlogged=true]", + "14179": "minecraft:dark_prismarine_slab[type=bottom,waterlogged=false]", + "14180": "minecraft:dark_prismarine_slab[type=double,waterlogged=true]", + "14181": "minecraft:dark_prismarine_slab[type=double,waterlogged=false]", + "14182": "minecraft:bubble_coral_wall_fan[facing=north,waterlogged=true]", + "14183": "minecraft:bubble_coral_wall_fan[facing=north,waterlogged=false]", + "14184": "minecraft:bubble_coral_wall_fan[facing=south,waterlogged=true]", + "14185": "minecraft:bubble_coral_wall_fan[facing=south,waterlogged=false]", + "14186": "minecraft:bubble_coral_wall_fan[facing=west,waterlogged=true]", + "14187": "minecraft:bubble_coral_wall_fan[facing=west,waterlogged=false]", + "14188": "minecraft:bubble_coral_wall_fan[facing=east,waterlogged=true]", + "14189": "minecraft:bubble_coral_wall_fan[facing=east,waterlogged=false]", + "14190": "minecraft:gray_glazed_terracotta[facing=north]", + "14191": "minecraft:gray_glazed_terracotta[facing=south]", + "14192": "minecraft:gray_glazed_terracotta[facing=west]", + "14193": "minecraft:gray_glazed_terracotta[facing=east]", + "14194": "minecraft:crimson_planks", + "14195": "minecraft:carved_pumpkin[facing=north]", + "14196": "minecraft:carved_pumpkin[facing=south]", + "14197": "minecraft:carved_pumpkin[facing=west]", + "14198": "minecraft:carved_pumpkin[facing=east]", + "14199": "minecraft:mossy_cobblestone_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "14200": "minecraft:mossy_cobblestone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "14201": "minecraft:mossy_cobblestone_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "14202": "minecraft:mossy_cobblestone_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "14203": "minecraft:mossy_cobblestone_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "14204": "minecraft:mossy_cobblestone_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "14205": "minecraft:mossy_cobblestone_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "14206": "minecraft:mossy_cobblestone_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "14207": "minecraft:mossy_cobblestone_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "14208": "minecraft:mossy_cobblestone_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "14209": "minecraft:mossy_cobblestone_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "14210": "minecraft:mossy_cobblestone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "14211": "minecraft:mossy_cobblestone_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "14212": "minecraft:mossy_cobblestone_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "14213": "minecraft:mossy_cobblestone_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "14214": "minecraft:mossy_cobblestone_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "14215": "minecraft:mossy_cobblestone_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "14216": "minecraft:mossy_cobblestone_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "14217": "minecraft:mossy_cobblestone_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "14218": "minecraft:mossy_cobblestone_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "14219": "minecraft:mossy_cobblestone_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "14220": "minecraft:mossy_cobblestone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "14221": "minecraft:mossy_cobblestone_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "14222": "minecraft:mossy_cobblestone_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "14223": "minecraft:mossy_cobblestone_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "14224": "minecraft:mossy_cobblestone_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "14225": "minecraft:mossy_cobblestone_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "14226": "minecraft:mossy_cobblestone_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "14227": "minecraft:mossy_cobblestone_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "14228": "minecraft:mossy_cobblestone_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "14229": "minecraft:mossy_cobblestone_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "14230": "minecraft:mossy_cobblestone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "14231": "minecraft:mossy_cobblestone_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "14232": "minecraft:mossy_cobblestone_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "14233": "minecraft:mossy_cobblestone_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "14234": "minecraft:mossy_cobblestone_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "14235": "minecraft:mossy_cobblestone_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "14236": "minecraft:mossy_cobblestone_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "14237": "minecraft:mossy_cobblestone_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "14238": "minecraft:mossy_cobblestone_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "14239": "minecraft:mossy_cobblestone_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "14240": "minecraft:mossy_cobblestone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "14241": "minecraft:mossy_cobblestone_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "14242": "minecraft:mossy_cobblestone_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "14243": "minecraft:mossy_cobblestone_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "14244": "minecraft:mossy_cobblestone_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "14245": "minecraft:mossy_cobblestone_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "14246": "minecraft:mossy_cobblestone_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "14247": "minecraft:mossy_cobblestone_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "14248": "minecraft:mossy_cobblestone_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "14249": "minecraft:mossy_cobblestone_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "14250": "minecraft:mossy_cobblestone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "14251": "minecraft:mossy_cobblestone_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "14252": "minecraft:mossy_cobblestone_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "14253": "minecraft:mossy_cobblestone_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "14254": "minecraft:mossy_cobblestone_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "14255": "minecraft:mossy_cobblestone_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "14256": "minecraft:mossy_cobblestone_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "14257": "minecraft:mossy_cobblestone_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "14258": "minecraft:mossy_cobblestone_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "14259": "minecraft:mossy_cobblestone_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "14260": "minecraft:mossy_cobblestone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "14261": "minecraft:mossy_cobblestone_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "14262": "minecraft:mossy_cobblestone_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "14263": "minecraft:mossy_cobblestone_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "14264": "minecraft:mossy_cobblestone_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "14265": "minecraft:mossy_cobblestone_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "14266": "minecraft:mossy_cobblestone_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "14267": "minecraft:mossy_cobblestone_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "14268": "minecraft:mossy_cobblestone_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "14269": "minecraft:mossy_cobblestone_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "14270": "minecraft:mossy_cobblestone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "14271": "minecraft:mossy_cobblestone_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "14272": "minecraft:mossy_cobblestone_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "14273": "minecraft:mossy_cobblestone_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "14274": "minecraft:mossy_cobblestone_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "14275": "minecraft:mossy_cobblestone_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "14276": "minecraft:mossy_cobblestone_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "14277": "minecraft:mossy_cobblestone_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "14278": "minecraft:mossy_cobblestone_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "14279": "minecraft:red_sandstone_slab[type=top,waterlogged=true]", + "14280": "minecraft:red_sandstone_slab[type=top,waterlogged=false]", + "14281": "minecraft:red_sandstone_slab[type=bottom,waterlogged=true]", + "14282": "minecraft:red_sandstone_slab[type=bottom,waterlogged=false]", + "14283": "minecraft:red_sandstone_slab[type=double,waterlogged=true]", + "14284": "minecraft:red_sandstone_slab[type=double,waterlogged=false]", + "14285": "minecraft:light_gray_concrete", + "14286": "minecraft:blue_orchid", + "14287": "minecraft:green_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=true]", + "14288": "minecraft:green_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=false]", + "14289": "minecraft:green_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=true]", + "14290": "minecraft:green_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=false]", + "14291": "minecraft:green_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=true]", + "14292": "minecraft:green_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=false]", + "14293": "minecraft:green_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=true]", + "14294": "minecraft:green_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=false]", + "14295": "minecraft:green_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=true]", + "14296": "minecraft:green_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=false]", + "14297": "minecraft:green_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=true]", + "14298": "minecraft:green_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=false]", + "14299": "minecraft:green_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=true]", + "14300": "minecraft:green_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=false]", + "14301": "minecraft:green_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=true]", + "14302": "minecraft:green_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=false]", + "14303": "minecraft:green_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=true]", + "14304": "minecraft:green_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=false]", + "14305": "minecraft:green_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=true]", + "14306": "minecraft:green_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=false]", + "14307": "minecraft:green_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=true]", + "14308": "minecraft:green_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=false]", + "14309": "minecraft:green_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=true]", + "14310": "minecraft:green_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=false]", + "14311": "minecraft:green_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=true]", + "14312": "minecraft:green_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=false]", + "14313": "minecraft:green_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=true]", + "14314": "minecraft:green_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=false]", + "14315": "minecraft:green_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=true]", + "14316": "minecraft:green_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=false]", + "14317": "minecraft:green_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=true]", + "14318": "minecraft:green_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]", + "14319": "minecraft:polished_diorite_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "14320": "minecraft:polished_diorite_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "14321": "minecraft:polished_diorite_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "14322": "minecraft:polished_diorite_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "14323": "minecraft:polished_diorite_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "14324": "minecraft:polished_diorite_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "14325": "minecraft:polished_diorite_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "14326": "minecraft:polished_diorite_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "14327": "minecraft:polished_diorite_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "14328": "minecraft:polished_diorite_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "14329": "minecraft:polished_diorite_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "14330": "minecraft:polished_diorite_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "14331": "minecraft:polished_diorite_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "14332": "minecraft:polished_diorite_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "14333": "minecraft:polished_diorite_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "14334": "minecraft:polished_diorite_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "14335": "minecraft:polished_diorite_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "14336": "minecraft:polished_diorite_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "14337": "minecraft:polished_diorite_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "14338": "minecraft:polished_diorite_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "14339": "minecraft:polished_diorite_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "14340": "minecraft:polished_diorite_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "14341": "minecraft:polished_diorite_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "14342": "minecraft:polished_diorite_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "14343": "minecraft:polished_diorite_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "14344": "minecraft:polished_diorite_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "14345": "minecraft:polished_diorite_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "14346": "minecraft:polished_diorite_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "14347": "minecraft:polished_diorite_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "14348": "minecraft:polished_diorite_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "14349": "minecraft:polished_diorite_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "14350": "minecraft:polished_diorite_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "14351": "minecraft:polished_diorite_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "14352": "minecraft:polished_diorite_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "14353": "minecraft:polished_diorite_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "14354": "minecraft:polished_diorite_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "14355": "minecraft:polished_diorite_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "14356": "minecraft:polished_diorite_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "14357": "minecraft:polished_diorite_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "14358": "minecraft:polished_diorite_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "14359": "minecraft:polished_diorite_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "14360": "minecraft:polished_diorite_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "14361": "minecraft:polished_diorite_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "14362": "minecraft:polished_diorite_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "14363": "minecraft:polished_diorite_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "14364": "minecraft:polished_diorite_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "14365": "minecraft:polished_diorite_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "14366": "minecraft:polished_diorite_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "14367": "minecraft:polished_diorite_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "14368": "minecraft:polished_diorite_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "14369": "minecraft:polished_diorite_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "14370": "minecraft:polished_diorite_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "14371": "minecraft:polished_diorite_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "14372": "minecraft:polished_diorite_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "14373": "minecraft:polished_diorite_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "14374": "minecraft:polished_diorite_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "14375": "minecraft:polished_diorite_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "14376": "minecraft:polished_diorite_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "14377": "minecraft:polished_diorite_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "14378": "minecraft:polished_diorite_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "14379": "minecraft:polished_diorite_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "14380": "minecraft:polished_diorite_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "14381": "minecraft:polished_diorite_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "14382": "minecraft:polished_diorite_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "14383": "minecraft:polished_diorite_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "14384": "minecraft:polished_diorite_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "14385": "minecraft:polished_diorite_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "14386": "minecraft:polished_diorite_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "14387": "minecraft:polished_diorite_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "14388": "minecraft:polished_diorite_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "14389": "minecraft:polished_diorite_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "14390": "minecraft:polished_diorite_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "14391": "minecraft:polished_diorite_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "14392": "minecraft:polished_diorite_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "14393": "minecraft:polished_diorite_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "14394": "minecraft:polished_diorite_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "14395": "minecraft:polished_diorite_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "14396": "minecraft:polished_diorite_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "14397": "minecraft:polished_diorite_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "14398": "minecraft:polished_diorite_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "14399": "minecraft:dark_oak_log[axis=x]", + "14400": "minecraft:dark_oak_log[axis=y]", + "14401": "minecraft:dark_oak_log[axis=z]", + "14402": "minecraft:stripped_spruce_log[axis=x]", + "14403": "minecraft:stripped_spruce_log[axis=y]", + "14404": "minecraft:stripped_spruce_log[axis=z]", + "14405": "minecraft:potted_blue_orchid", + "14406": "minecraft:light_blue_stained_glass", + "14407": "minecraft:potted_allium", + "14408": "minecraft:cartography_table", + "14409": "minecraft:infested_stone_bricks", + "14410": "minecraft:sandstone_wall[east=none,north=none,south=none,up=true,waterlogged=true,west=none]", + "14411": "minecraft:sandstone_wall[east=none,north=none,south=none,up=true,waterlogged=true,west=low]", + "14412": "minecraft:sandstone_wall[east=none,north=none,south=none,up=true,waterlogged=true,west=tall]", + "14413": "minecraft:sandstone_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=none]", + "14414": "minecraft:sandstone_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=low]", + "14415": "minecraft:sandstone_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=tall]", + "14416": "minecraft:sandstone_wall[east=none,north=none,south=none,up=false,waterlogged=true,west=none]", + "14417": "minecraft:sandstone_wall[east=none,north=none,south=none,up=false,waterlogged=true,west=low]", + "14418": "minecraft:sandstone_wall[east=none,north=none,south=none,up=false,waterlogged=true,west=tall]", + "14419": "minecraft:sandstone_wall[east=none,north=none,south=none,up=false,waterlogged=false,west=none]", + "14420": "minecraft:sandstone_wall[east=none,north=none,south=none,up=false,waterlogged=false,west=low]", + "14421": "minecraft:sandstone_wall[east=none,north=none,south=none,up=false,waterlogged=false,west=tall]", + "14422": "minecraft:sandstone_wall[east=none,north=none,south=low,up=true,waterlogged=true,west=none]", + "14423": "minecraft:sandstone_wall[east=none,north=none,south=low,up=true,waterlogged=true,west=low]", + "14424": "minecraft:sandstone_wall[east=none,north=none,south=low,up=true,waterlogged=true,west=tall]", + "14425": "minecraft:sandstone_wall[east=none,north=none,south=low,up=true,waterlogged=false,west=none]", + "14426": "minecraft:sandstone_wall[east=none,north=none,south=low,up=true,waterlogged=false,west=low]", + "14427": "minecraft:sandstone_wall[east=none,north=none,south=low,up=true,waterlogged=false,west=tall]", + "14428": "minecraft:sandstone_wall[east=none,north=none,south=low,up=false,waterlogged=true,west=none]", + "14429": "minecraft:sandstone_wall[east=none,north=none,south=low,up=false,waterlogged=true,west=low]", + "14430": "minecraft:sandstone_wall[east=none,north=none,south=low,up=false,waterlogged=true,west=tall]", + "14431": "minecraft:sandstone_wall[east=none,north=none,south=low,up=false,waterlogged=false,west=none]", + "14432": "minecraft:sandstone_wall[east=none,north=none,south=low,up=false,waterlogged=false,west=low]", + "14433": "minecraft:sandstone_wall[east=none,north=none,south=low,up=false,waterlogged=false,west=tall]", + "14434": "minecraft:sandstone_wall[east=none,north=none,south=tall,up=true,waterlogged=true,west=none]", + "14435": "minecraft:sandstone_wall[east=none,north=none,south=tall,up=true,waterlogged=true,west=low]", + "14436": "minecraft:sandstone_wall[east=none,north=none,south=tall,up=true,waterlogged=true,west=tall]", + "14437": "minecraft:sandstone_wall[east=none,north=none,south=tall,up=true,waterlogged=false,west=none]", + "14438": "minecraft:sandstone_wall[east=none,north=none,south=tall,up=true,waterlogged=false,west=low]", + "14439": "minecraft:sandstone_wall[east=none,north=none,south=tall,up=true,waterlogged=false,west=tall]", + "14440": "minecraft:sandstone_wall[east=none,north=none,south=tall,up=false,waterlogged=true,west=none]", + "14441": "minecraft:sandstone_wall[east=none,north=none,south=tall,up=false,waterlogged=true,west=low]", + "14442": "minecraft:sandstone_wall[east=none,north=none,south=tall,up=false,waterlogged=true,west=tall]", + "14443": "minecraft:sandstone_wall[east=none,north=none,south=tall,up=false,waterlogged=false,west=none]", + "14444": "minecraft:sandstone_wall[east=none,north=none,south=tall,up=false,waterlogged=false,west=low]", + "14445": "minecraft:sandstone_wall[east=none,north=none,south=tall,up=false,waterlogged=false,west=tall]", + "14446": "minecraft:sandstone_wall[east=none,north=low,south=none,up=true,waterlogged=true,west=none]", + "14447": "minecraft:sandstone_wall[east=none,north=low,south=none,up=true,waterlogged=true,west=low]", + "14448": "minecraft:sandstone_wall[east=none,north=low,south=none,up=true,waterlogged=true,west=tall]", + "14449": "minecraft:sandstone_wall[east=none,north=low,south=none,up=true,waterlogged=false,west=none]", + "14450": "minecraft:sandstone_wall[east=none,north=low,south=none,up=true,waterlogged=false,west=low]", + "14451": "minecraft:sandstone_wall[east=none,north=low,south=none,up=true,waterlogged=false,west=tall]", + "14452": "minecraft:sandstone_wall[east=none,north=low,south=none,up=false,waterlogged=true,west=none]", + "14453": "minecraft:sandstone_wall[east=none,north=low,south=none,up=false,waterlogged=true,west=low]", + "14454": "minecraft:sandstone_wall[east=none,north=low,south=none,up=false,waterlogged=true,west=tall]", + "14455": "minecraft:sandstone_wall[east=none,north=low,south=none,up=false,waterlogged=false,west=none]", + "14456": "minecraft:sandstone_wall[east=none,north=low,south=none,up=false,waterlogged=false,west=low]", + "14457": "minecraft:sandstone_wall[east=none,north=low,south=none,up=false,waterlogged=false,west=tall]", + "14458": "minecraft:sandstone_wall[east=none,north=low,south=low,up=true,waterlogged=true,west=none]", + "14459": "minecraft:sandstone_wall[east=none,north=low,south=low,up=true,waterlogged=true,west=low]", + "14460": "minecraft:sandstone_wall[east=none,north=low,south=low,up=true,waterlogged=true,west=tall]", + "14461": "minecraft:sandstone_wall[east=none,north=low,south=low,up=true,waterlogged=false,west=none]", + "14462": "minecraft:sandstone_wall[east=none,north=low,south=low,up=true,waterlogged=false,west=low]", + "14463": "minecraft:sandstone_wall[east=none,north=low,south=low,up=true,waterlogged=false,west=tall]", + "14464": "minecraft:sandstone_wall[east=none,north=low,south=low,up=false,waterlogged=true,west=none]", + "14465": "minecraft:sandstone_wall[east=none,north=low,south=low,up=false,waterlogged=true,west=low]", + "14466": "minecraft:sandstone_wall[east=none,north=low,south=low,up=false,waterlogged=true,west=tall]", + "14467": "minecraft:sandstone_wall[east=none,north=low,south=low,up=false,waterlogged=false,west=none]", + "14468": "minecraft:sandstone_wall[east=none,north=low,south=low,up=false,waterlogged=false,west=low]", + "14469": "minecraft:sandstone_wall[east=none,north=low,south=low,up=false,waterlogged=false,west=tall]", + "14470": "minecraft:sandstone_wall[east=none,north=low,south=tall,up=true,waterlogged=true,west=none]", + "14471": "minecraft:sandstone_wall[east=none,north=low,south=tall,up=true,waterlogged=true,west=low]", + "14472": "minecraft:sandstone_wall[east=none,north=low,south=tall,up=true,waterlogged=true,west=tall]", + "14473": "minecraft:sandstone_wall[east=none,north=low,south=tall,up=true,waterlogged=false,west=none]", + "14474": "minecraft:sandstone_wall[east=none,north=low,south=tall,up=true,waterlogged=false,west=low]", + "14475": "minecraft:sandstone_wall[east=none,north=low,south=tall,up=true,waterlogged=false,west=tall]", + "14476": "minecraft:sandstone_wall[east=none,north=low,south=tall,up=false,waterlogged=true,west=none]", + "14477": "minecraft:sandstone_wall[east=none,north=low,south=tall,up=false,waterlogged=true,west=low]", + "14478": "minecraft:sandstone_wall[east=none,north=low,south=tall,up=false,waterlogged=true,west=tall]", + "14479": "minecraft:sandstone_wall[east=none,north=low,south=tall,up=false,waterlogged=false,west=none]", + "14480": "minecraft:sandstone_wall[east=none,north=low,south=tall,up=false,waterlogged=false,west=low]", + "14481": "minecraft:sandstone_wall[east=none,north=low,south=tall,up=false,waterlogged=false,west=tall]", + "14482": "minecraft:sandstone_wall[east=none,north=tall,south=none,up=true,waterlogged=true,west=none]", + "14483": "minecraft:sandstone_wall[east=none,north=tall,south=none,up=true,waterlogged=true,west=low]", + "14484": "minecraft:sandstone_wall[east=none,north=tall,south=none,up=true,waterlogged=true,west=tall]", + "14485": "minecraft:sandstone_wall[east=none,north=tall,south=none,up=true,waterlogged=false,west=none]", + "14486": "minecraft:sandstone_wall[east=none,north=tall,south=none,up=true,waterlogged=false,west=low]", + "14487": "minecraft:sandstone_wall[east=none,north=tall,south=none,up=true,waterlogged=false,west=tall]", + "14488": "minecraft:sandstone_wall[east=none,north=tall,south=none,up=false,waterlogged=true,west=none]", + "14489": "minecraft:sandstone_wall[east=none,north=tall,south=none,up=false,waterlogged=true,west=low]", + "14490": "minecraft:sandstone_wall[east=none,north=tall,south=none,up=false,waterlogged=true,west=tall]", + "14491": "minecraft:sandstone_wall[east=none,north=tall,south=none,up=false,waterlogged=false,west=none]", + "14492": "minecraft:sandstone_wall[east=none,north=tall,south=none,up=false,waterlogged=false,west=low]", + "14493": "minecraft:sandstone_wall[east=none,north=tall,south=none,up=false,waterlogged=false,west=tall]", + "14494": "minecraft:sandstone_wall[east=none,north=tall,south=low,up=true,waterlogged=true,west=none]", + "14495": "minecraft:sandstone_wall[east=none,north=tall,south=low,up=true,waterlogged=true,west=low]", + "14496": "minecraft:sandstone_wall[east=none,north=tall,south=low,up=true,waterlogged=true,west=tall]", + "14497": "minecraft:sandstone_wall[east=none,north=tall,south=low,up=true,waterlogged=false,west=none]", + "14498": "minecraft:sandstone_wall[east=none,north=tall,south=low,up=true,waterlogged=false,west=low]", + "14499": "minecraft:sandstone_wall[east=none,north=tall,south=low,up=true,waterlogged=false,west=tall]", + "14500": "minecraft:sandstone_wall[east=none,north=tall,south=low,up=false,waterlogged=true,west=none]", + "14501": "minecraft:sandstone_wall[east=none,north=tall,south=low,up=false,waterlogged=true,west=low]", + "14502": "minecraft:sandstone_wall[east=none,north=tall,south=low,up=false,waterlogged=true,west=tall]", + "14503": "minecraft:sandstone_wall[east=none,north=tall,south=low,up=false,waterlogged=false,west=none]", + "14504": "minecraft:sandstone_wall[east=none,north=tall,south=low,up=false,waterlogged=false,west=low]", + "14505": "minecraft:sandstone_wall[east=none,north=tall,south=low,up=false,waterlogged=false,west=tall]", + "14506": "minecraft:sandstone_wall[east=none,north=tall,south=tall,up=true,waterlogged=true,west=none]", + "14507": "minecraft:sandstone_wall[east=none,north=tall,south=tall,up=true,waterlogged=true,west=low]", + "14508": "minecraft:sandstone_wall[east=none,north=tall,south=tall,up=true,waterlogged=true,west=tall]", + "14509": "minecraft:sandstone_wall[east=none,north=tall,south=tall,up=true,waterlogged=false,west=none]", + "14510": "minecraft:sandstone_wall[east=none,north=tall,south=tall,up=true,waterlogged=false,west=low]", + "14511": "minecraft:sandstone_wall[east=none,north=tall,south=tall,up=true,waterlogged=false,west=tall]", + "14512": "minecraft:sandstone_wall[east=none,north=tall,south=tall,up=false,waterlogged=true,west=none]", + "14513": "minecraft:sandstone_wall[east=none,north=tall,south=tall,up=false,waterlogged=true,west=low]", + "14514": "minecraft:sandstone_wall[east=none,north=tall,south=tall,up=false,waterlogged=true,west=tall]", + "14515": "minecraft:sandstone_wall[east=none,north=tall,south=tall,up=false,waterlogged=false,west=none]", + "14516": "minecraft:sandstone_wall[east=none,north=tall,south=tall,up=false,waterlogged=false,west=low]", + "14517": "minecraft:sandstone_wall[east=none,north=tall,south=tall,up=false,waterlogged=false,west=tall]", + "14518": "minecraft:sandstone_wall[east=low,north=none,south=none,up=true,waterlogged=true,west=none]", + "14519": "minecraft:sandstone_wall[east=low,north=none,south=none,up=true,waterlogged=true,west=low]", + "14520": "minecraft:sandstone_wall[east=low,north=none,south=none,up=true,waterlogged=true,west=tall]", + "14521": "minecraft:sandstone_wall[east=low,north=none,south=none,up=true,waterlogged=false,west=none]", + "14522": "minecraft:sandstone_wall[east=low,north=none,south=none,up=true,waterlogged=false,west=low]", + "14523": "minecraft:sandstone_wall[east=low,north=none,south=none,up=true,waterlogged=false,west=tall]", + "14524": "minecraft:sandstone_wall[east=low,north=none,south=none,up=false,waterlogged=true,west=none]", + "14525": "minecraft:sandstone_wall[east=low,north=none,south=none,up=false,waterlogged=true,west=low]", + "14526": "minecraft:sandstone_wall[east=low,north=none,south=none,up=false,waterlogged=true,west=tall]", + "14527": "minecraft:sandstone_wall[east=low,north=none,south=none,up=false,waterlogged=false,west=none]", + "14528": "minecraft:sandstone_wall[east=low,north=none,south=none,up=false,waterlogged=false,west=low]", + "14529": "minecraft:sandstone_wall[east=low,north=none,south=none,up=false,waterlogged=false,west=tall]", + "14530": "minecraft:sandstone_wall[east=low,north=none,south=low,up=true,waterlogged=true,west=none]", + "14531": "minecraft:sandstone_wall[east=low,north=none,south=low,up=true,waterlogged=true,west=low]", + "14532": "minecraft:sandstone_wall[east=low,north=none,south=low,up=true,waterlogged=true,west=tall]", + "14533": "minecraft:sandstone_wall[east=low,north=none,south=low,up=true,waterlogged=false,west=none]", + "14534": "minecraft:sandstone_wall[east=low,north=none,south=low,up=true,waterlogged=false,west=low]", + "14535": "minecraft:sandstone_wall[east=low,north=none,south=low,up=true,waterlogged=false,west=tall]", + "14536": "minecraft:sandstone_wall[east=low,north=none,south=low,up=false,waterlogged=true,west=none]", + "14537": "minecraft:sandstone_wall[east=low,north=none,south=low,up=false,waterlogged=true,west=low]", + "14538": "minecraft:sandstone_wall[east=low,north=none,south=low,up=false,waterlogged=true,west=tall]", + "14539": "minecraft:sandstone_wall[east=low,north=none,south=low,up=false,waterlogged=false,west=none]", + "14540": "minecraft:sandstone_wall[east=low,north=none,south=low,up=false,waterlogged=false,west=low]", + "14541": "minecraft:sandstone_wall[east=low,north=none,south=low,up=false,waterlogged=false,west=tall]", + "14542": "minecraft:sandstone_wall[east=low,north=none,south=tall,up=true,waterlogged=true,west=none]", + "14543": "minecraft:sandstone_wall[east=low,north=none,south=tall,up=true,waterlogged=true,west=low]", + "14544": "minecraft:sandstone_wall[east=low,north=none,south=tall,up=true,waterlogged=true,west=tall]", + "14545": "minecraft:sandstone_wall[east=low,north=none,south=tall,up=true,waterlogged=false,west=none]", + "14546": "minecraft:sandstone_wall[east=low,north=none,south=tall,up=true,waterlogged=false,west=low]", + "14547": "minecraft:sandstone_wall[east=low,north=none,south=tall,up=true,waterlogged=false,west=tall]", + "14548": "minecraft:sandstone_wall[east=low,north=none,south=tall,up=false,waterlogged=true,west=none]", + "14549": "minecraft:sandstone_wall[east=low,north=none,south=tall,up=false,waterlogged=true,west=low]", + "14550": "minecraft:sandstone_wall[east=low,north=none,south=tall,up=false,waterlogged=true,west=tall]", + "14551": "minecraft:sandstone_wall[east=low,north=none,south=tall,up=false,waterlogged=false,west=none]", + "14552": "minecraft:sandstone_wall[east=low,north=none,south=tall,up=false,waterlogged=false,west=low]", + "14553": "minecraft:sandstone_wall[east=low,north=none,south=tall,up=false,waterlogged=false,west=tall]", + "14554": "minecraft:sandstone_wall[east=low,north=low,south=none,up=true,waterlogged=true,west=none]", + "14555": "minecraft:sandstone_wall[east=low,north=low,south=none,up=true,waterlogged=true,west=low]", + "14556": "minecraft:sandstone_wall[east=low,north=low,south=none,up=true,waterlogged=true,west=tall]", + "14557": "minecraft:sandstone_wall[east=low,north=low,south=none,up=true,waterlogged=false,west=none]", + "14558": "minecraft:sandstone_wall[east=low,north=low,south=none,up=true,waterlogged=false,west=low]", + "14559": "minecraft:sandstone_wall[east=low,north=low,south=none,up=true,waterlogged=false,west=tall]", + "14560": "minecraft:sandstone_wall[east=low,north=low,south=none,up=false,waterlogged=true,west=none]", + "14561": "minecraft:sandstone_wall[east=low,north=low,south=none,up=false,waterlogged=true,west=low]", + "14562": "minecraft:sandstone_wall[east=low,north=low,south=none,up=false,waterlogged=true,west=tall]", + "14563": "minecraft:sandstone_wall[east=low,north=low,south=none,up=false,waterlogged=false,west=none]", + "14564": "minecraft:sandstone_wall[east=low,north=low,south=none,up=false,waterlogged=false,west=low]", + "14565": "minecraft:sandstone_wall[east=low,north=low,south=none,up=false,waterlogged=false,west=tall]", + "14566": "minecraft:sandstone_wall[east=low,north=low,south=low,up=true,waterlogged=true,west=none]", + "14567": "minecraft:sandstone_wall[east=low,north=low,south=low,up=true,waterlogged=true,west=low]", + "14568": "minecraft:sandstone_wall[east=low,north=low,south=low,up=true,waterlogged=true,west=tall]", + "14569": "minecraft:sandstone_wall[east=low,north=low,south=low,up=true,waterlogged=false,west=none]", + "14570": "minecraft:sandstone_wall[east=low,north=low,south=low,up=true,waterlogged=false,west=low]", + "14571": "minecraft:sandstone_wall[east=low,north=low,south=low,up=true,waterlogged=false,west=tall]", + "14572": "minecraft:sandstone_wall[east=low,north=low,south=low,up=false,waterlogged=true,west=none]", + "14573": "minecraft:sandstone_wall[east=low,north=low,south=low,up=false,waterlogged=true,west=low]", + "14574": "minecraft:sandstone_wall[east=low,north=low,south=low,up=false,waterlogged=true,west=tall]", + "14575": "minecraft:sandstone_wall[east=low,north=low,south=low,up=false,waterlogged=false,west=none]", + "14576": "minecraft:sandstone_wall[east=low,north=low,south=low,up=false,waterlogged=false,west=low]", + "14577": "minecraft:sandstone_wall[east=low,north=low,south=low,up=false,waterlogged=false,west=tall]", + "14578": "minecraft:sandstone_wall[east=low,north=low,south=tall,up=true,waterlogged=true,west=none]", + "14579": "minecraft:sandstone_wall[east=low,north=low,south=tall,up=true,waterlogged=true,west=low]", + "14580": "minecraft:sandstone_wall[east=low,north=low,south=tall,up=true,waterlogged=true,west=tall]", + "14581": "minecraft:sandstone_wall[east=low,north=low,south=tall,up=true,waterlogged=false,west=none]", + "14582": "minecraft:sandstone_wall[east=low,north=low,south=tall,up=true,waterlogged=false,west=low]", + "14583": "minecraft:sandstone_wall[east=low,north=low,south=tall,up=true,waterlogged=false,west=tall]", + "14584": "minecraft:sandstone_wall[east=low,north=low,south=tall,up=false,waterlogged=true,west=none]", + "14585": "minecraft:sandstone_wall[east=low,north=low,south=tall,up=false,waterlogged=true,west=low]", + "14586": "minecraft:sandstone_wall[east=low,north=low,south=tall,up=false,waterlogged=true,west=tall]", + "14587": "minecraft:sandstone_wall[east=low,north=low,south=tall,up=false,waterlogged=false,west=none]", + "14588": "minecraft:sandstone_wall[east=low,north=low,south=tall,up=false,waterlogged=false,west=low]", + "14589": "minecraft:sandstone_wall[east=low,north=low,south=tall,up=false,waterlogged=false,west=tall]", + "14590": "minecraft:sandstone_wall[east=low,north=tall,south=none,up=true,waterlogged=true,west=none]", + "14591": "minecraft:sandstone_wall[east=low,north=tall,south=none,up=true,waterlogged=true,west=low]", + "14592": "minecraft:sandstone_wall[east=low,north=tall,south=none,up=true,waterlogged=true,west=tall]", + "14593": "minecraft:sandstone_wall[east=low,north=tall,south=none,up=true,waterlogged=false,west=none]", + "14594": "minecraft:sandstone_wall[east=low,north=tall,south=none,up=true,waterlogged=false,west=low]", + "14595": "minecraft:sandstone_wall[east=low,north=tall,south=none,up=true,waterlogged=false,west=tall]", + "14596": "minecraft:sandstone_wall[east=low,north=tall,south=none,up=false,waterlogged=true,west=none]", + "14597": "minecraft:sandstone_wall[east=low,north=tall,south=none,up=false,waterlogged=true,west=low]", + "14598": "minecraft:sandstone_wall[east=low,north=tall,south=none,up=false,waterlogged=true,west=tall]", + "14599": "minecraft:sandstone_wall[east=low,north=tall,south=none,up=false,waterlogged=false,west=none]", + "14600": "minecraft:sandstone_wall[east=low,north=tall,south=none,up=false,waterlogged=false,west=low]", + "14601": "minecraft:sandstone_wall[east=low,north=tall,south=none,up=false,waterlogged=false,west=tall]", + "14602": "minecraft:sandstone_wall[east=low,north=tall,south=low,up=true,waterlogged=true,west=none]", + "14603": "minecraft:sandstone_wall[east=low,north=tall,south=low,up=true,waterlogged=true,west=low]", + "14604": "minecraft:sandstone_wall[east=low,north=tall,south=low,up=true,waterlogged=true,west=tall]", + "14605": "minecraft:sandstone_wall[east=low,north=tall,south=low,up=true,waterlogged=false,west=none]", + "14606": "minecraft:sandstone_wall[east=low,north=tall,south=low,up=true,waterlogged=false,west=low]", + "14607": "minecraft:sandstone_wall[east=low,north=tall,south=low,up=true,waterlogged=false,west=tall]", + "14608": "minecraft:sandstone_wall[east=low,north=tall,south=low,up=false,waterlogged=true,west=none]", + "14609": "minecraft:sandstone_wall[east=low,north=tall,south=low,up=false,waterlogged=true,west=low]", + "14610": "minecraft:sandstone_wall[east=low,north=tall,south=low,up=false,waterlogged=true,west=tall]", + "14611": "minecraft:sandstone_wall[east=low,north=tall,south=low,up=false,waterlogged=false,west=none]", + "14612": "minecraft:sandstone_wall[east=low,north=tall,south=low,up=false,waterlogged=false,west=low]", + "14613": "minecraft:sandstone_wall[east=low,north=tall,south=low,up=false,waterlogged=false,west=tall]", + "14614": "minecraft:sandstone_wall[east=low,north=tall,south=tall,up=true,waterlogged=true,west=none]", + "14615": "minecraft:sandstone_wall[east=low,north=tall,south=tall,up=true,waterlogged=true,west=low]", + "14616": "minecraft:sandstone_wall[east=low,north=tall,south=tall,up=true,waterlogged=true,west=tall]", + "14617": "minecraft:sandstone_wall[east=low,north=tall,south=tall,up=true,waterlogged=false,west=none]", + "14618": "minecraft:sandstone_wall[east=low,north=tall,south=tall,up=true,waterlogged=false,west=low]", + "14619": "minecraft:sandstone_wall[east=low,north=tall,south=tall,up=true,waterlogged=false,west=tall]", + "14620": "minecraft:sandstone_wall[east=low,north=tall,south=tall,up=false,waterlogged=true,west=none]", + "14621": "minecraft:sandstone_wall[east=low,north=tall,south=tall,up=false,waterlogged=true,west=low]", + "14622": "minecraft:sandstone_wall[east=low,north=tall,south=tall,up=false,waterlogged=true,west=tall]", + "14623": "minecraft:sandstone_wall[east=low,north=tall,south=tall,up=false,waterlogged=false,west=none]", + "14624": "minecraft:sandstone_wall[east=low,north=tall,south=tall,up=false,waterlogged=false,west=low]", + "14625": "minecraft:sandstone_wall[east=low,north=tall,south=tall,up=false,waterlogged=false,west=tall]", + "14626": "minecraft:sandstone_wall[east=tall,north=none,south=none,up=true,waterlogged=true,west=none]", + "14627": "minecraft:sandstone_wall[east=tall,north=none,south=none,up=true,waterlogged=true,west=low]", + "14628": "minecraft:sandstone_wall[east=tall,north=none,south=none,up=true,waterlogged=true,west=tall]", + "14629": "minecraft:sandstone_wall[east=tall,north=none,south=none,up=true,waterlogged=false,west=none]", + "14630": "minecraft:sandstone_wall[east=tall,north=none,south=none,up=true,waterlogged=false,west=low]", + "14631": "minecraft:sandstone_wall[east=tall,north=none,south=none,up=true,waterlogged=false,west=tall]", + "14632": "minecraft:sandstone_wall[east=tall,north=none,south=none,up=false,waterlogged=true,west=none]", + "14633": "minecraft:sandstone_wall[east=tall,north=none,south=none,up=false,waterlogged=true,west=low]", + "14634": "minecraft:sandstone_wall[east=tall,north=none,south=none,up=false,waterlogged=true,west=tall]", + "14635": "minecraft:sandstone_wall[east=tall,north=none,south=none,up=false,waterlogged=false,west=none]", + "14636": "minecraft:sandstone_wall[east=tall,north=none,south=none,up=false,waterlogged=false,west=low]", + "14637": "minecraft:sandstone_wall[east=tall,north=none,south=none,up=false,waterlogged=false,west=tall]", + "14638": "minecraft:sandstone_wall[east=tall,north=none,south=low,up=true,waterlogged=true,west=none]", + "14639": "minecraft:sandstone_wall[east=tall,north=none,south=low,up=true,waterlogged=true,west=low]", + "14640": "minecraft:sandstone_wall[east=tall,north=none,south=low,up=true,waterlogged=true,west=tall]", + "14641": "minecraft:sandstone_wall[east=tall,north=none,south=low,up=true,waterlogged=false,west=none]", + "14642": "minecraft:sandstone_wall[east=tall,north=none,south=low,up=true,waterlogged=false,west=low]", + "14643": "minecraft:sandstone_wall[east=tall,north=none,south=low,up=true,waterlogged=false,west=tall]", + "14644": "minecraft:sandstone_wall[east=tall,north=none,south=low,up=false,waterlogged=true,west=none]", + "14645": "minecraft:sandstone_wall[east=tall,north=none,south=low,up=false,waterlogged=true,west=low]", + "14646": "minecraft:sandstone_wall[east=tall,north=none,south=low,up=false,waterlogged=true,west=tall]", + "14647": "minecraft:sandstone_wall[east=tall,north=none,south=low,up=false,waterlogged=false,west=none]", + "14648": "minecraft:sandstone_wall[east=tall,north=none,south=low,up=false,waterlogged=false,west=low]", + "14649": "minecraft:sandstone_wall[east=tall,north=none,south=low,up=false,waterlogged=false,west=tall]", + "14650": "minecraft:sandstone_wall[east=tall,north=none,south=tall,up=true,waterlogged=true,west=none]", + "14651": "minecraft:sandstone_wall[east=tall,north=none,south=tall,up=true,waterlogged=true,west=low]", + "14652": "minecraft:sandstone_wall[east=tall,north=none,south=tall,up=true,waterlogged=true,west=tall]", + "14653": "minecraft:sandstone_wall[east=tall,north=none,south=tall,up=true,waterlogged=false,west=none]", + "14654": "minecraft:sandstone_wall[east=tall,north=none,south=tall,up=true,waterlogged=false,west=low]", + "14655": "minecraft:sandstone_wall[east=tall,north=none,south=tall,up=true,waterlogged=false,west=tall]", + "14656": "minecraft:sandstone_wall[east=tall,north=none,south=tall,up=false,waterlogged=true,west=none]", + "14657": "minecraft:sandstone_wall[east=tall,north=none,south=tall,up=false,waterlogged=true,west=low]", + "14658": "minecraft:sandstone_wall[east=tall,north=none,south=tall,up=false,waterlogged=true,west=tall]", + "14659": "minecraft:sandstone_wall[east=tall,north=none,south=tall,up=false,waterlogged=false,west=none]", + "14660": "minecraft:sandstone_wall[east=tall,north=none,south=tall,up=false,waterlogged=false,west=low]", + "14661": "minecraft:sandstone_wall[east=tall,north=none,south=tall,up=false,waterlogged=false,west=tall]", + "14662": "minecraft:sandstone_wall[east=tall,north=low,south=none,up=true,waterlogged=true,west=none]", + "14663": "minecraft:sandstone_wall[east=tall,north=low,south=none,up=true,waterlogged=true,west=low]", + "14664": "minecraft:sandstone_wall[east=tall,north=low,south=none,up=true,waterlogged=true,west=tall]", + "14665": "minecraft:sandstone_wall[east=tall,north=low,south=none,up=true,waterlogged=false,west=none]", + "14666": "minecraft:sandstone_wall[east=tall,north=low,south=none,up=true,waterlogged=false,west=low]", + "14667": "minecraft:sandstone_wall[east=tall,north=low,south=none,up=true,waterlogged=false,west=tall]", + "14668": "minecraft:sandstone_wall[east=tall,north=low,south=none,up=false,waterlogged=true,west=none]", + "14669": "minecraft:sandstone_wall[east=tall,north=low,south=none,up=false,waterlogged=true,west=low]", + "14670": "minecraft:sandstone_wall[east=tall,north=low,south=none,up=false,waterlogged=true,west=tall]", + "14671": "minecraft:sandstone_wall[east=tall,north=low,south=none,up=false,waterlogged=false,west=none]", + "14672": "minecraft:sandstone_wall[east=tall,north=low,south=none,up=false,waterlogged=false,west=low]", + "14673": "minecraft:sandstone_wall[east=tall,north=low,south=none,up=false,waterlogged=false,west=tall]", + "14674": "minecraft:sandstone_wall[east=tall,north=low,south=low,up=true,waterlogged=true,west=none]", + "14675": "minecraft:sandstone_wall[east=tall,north=low,south=low,up=true,waterlogged=true,west=low]", + "14676": "minecraft:sandstone_wall[east=tall,north=low,south=low,up=true,waterlogged=true,west=tall]", + "14677": "minecraft:sandstone_wall[east=tall,north=low,south=low,up=true,waterlogged=false,west=none]", + "14678": "minecraft:sandstone_wall[east=tall,north=low,south=low,up=true,waterlogged=false,west=low]", + "14679": "minecraft:sandstone_wall[east=tall,north=low,south=low,up=true,waterlogged=false,west=tall]", + "14680": "minecraft:sandstone_wall[east=tall,north=low,south=low,up=false,waterlogged=true,west=none]", + "14681": "minecraft:sandstone_wall[east=tall,north=low,south=low,up=false,waterlogged=true,west=low]", + "14682": "minecraft:sandstone_wall[east=tall,north=low,south=low,up=false,waterlogged=true,west=tall]", + "14683": "minecraft:sandstone_wall[east=tall,north=low,south=low,up=false,waterlogged=false,west=none]", + "14684": "minecraft:sandstone_wall[east=tall,north=low,south=low,up=false,waterlogged=false,west=low]", + "14685": "minecraft:sandstone_wall[east=tall,north=low,south=low,up=false,waterlogged=false,west=tall]", + "14686": "minecraft:sandstone_wall[east=tall,north=low,south=tall,up=true,waterlogged=true,west=none]", + "14687": "minecraft:sandstone_wall[east=tall,north=low,south=tall,up=true,waterlogged=true,west=low]", + "14688": "minecraft:sandstone_wall[east=tall,north=low,south=tall,up=true,waterlogged=true,west=tall]", + "14689": "minecraft:sandstone_wall[east=tall,north=low,south=tall,up=true,waterlogged=false,west=none]", + "14690": "minecraft:sandstone_wall[east=tall,north=low,south=tall,up=true,waterlogged=false,west=low]", + "14691": "minecraft:sandstone_wall[east=tall,north=low,south=tall,up=true,waterlogged=false,west=tall]", + "14692": "minecraft:sandstone_wall[east=tall,north=low,south=tall,up=false,waterlogged=true,west=none]", + "14693": "minecraft:sandstone_wall[east=tall,north=low,south=tall,up=false,waterlogged=true,west=low]", + "14694": "minecraft:sandstone_wall[east=tall,north=low,south=tall,up=false,waterlogged=true,west=tall]", + "14695": "minecraft:sandstone_wall[east=tall,north=low,south=tall,up=false,waterlogged=false,west=none]", + "14696": "minecraft:sandstone_wall[east=tall,north=low,south=tall,up=false,waterlogged=false,west=low]", + "14697": "minecraft:sandstone_wall[east=tall,north=low,south=tall,up=false,waterlogged=false,west=tall]", + "14698": "minecraft:sandstone_wall[east=tall,north=tall,south=none,up=true,waterlogged=true,west=none]", + "14699": "minecraft:sandstone_wall[east=tall,north=tall,south=none,up=true,waterlogged=true,west=low]", + "14700": "minecraft:sandstone_wall[east=tall,north=tall,south=none,up=true,waterlogged=true,west=tall]", + "14701": "minecraft:sandstone_wall[east=tall,north=tall,south=none,up=true,waterlogged=false,west=none]", + "14702": "minecraft:sandstone_wall[east=tall,north=tall,south=none,up=true,waterlogged=false,west=low]", + "14703": "minecraft:sandstone_wall[east=tall,north=tall,south=none,up=true,waterlogged=false,west=tall]", + "14704": "minecraft:sandstone_wall[east=tall,north=tall,south=none,up=false,waterlogged=true,west=none]", + "14705": "minecraft:sandstone_wall[east=tall,north=tall,south=none,up=false,waterlogged=true,west=low]", + "14706": "minecraft:sandstone_wall[east=tall,north=tall,south=none,up=false,waterlogged=true,west=tall]", + "14707": "minecraft:sandstone_wall[east=tall,north=tall,south=none,up=false,waterlogged=false,west=none]", + "14708": "minecraft:sandstone_wall[east=tall,north=tall,south=none,up=false,waterlogged=false,west=low]", + "14709": "minecraft:sandstone_wall[east=tall,north=tall,south=none,up=false,waterlogged=false,west=tall]", + "14710": "minecraft:sandstone_wall[east=tall,north=tall,south=low,up=true,waterlogged=true,west=none]", + "14711": "minecraft:sandstone_wall[east=tall,north=tall,south=low,up=true,waterlogged=true,west=low]", + "14712": "minecraft:sandstone_wall[east=tall,north=tall,south=low,up=true,waterlogged=true,west=tall]", + "14713": "minecraft:sandstone_wall[east=tall,north=tall,south=low,up=true,waterlogged=false,west=none]", + "14714": "minecraft:sandstone_wall[east=tall,north=tall,south=low,up=true,waterlogged=false,west=low]", + "14715": "minecraft:sandstone_wall[east=tall,north=tall,south=low,up=true,waterlogged=false,west=tall]", + "14716": "minecraft:sandstone_wall[east=tall,north=tall,south=low,up=false,waterlogged=true,west=none]", + "14717": "minecraft:sandstone_wall[east=tall,north=tall,south=low,up=false,waterlogged=true,west=low]", + "14718": "minecraft:sandstone_wall[east=tall,north=tall,south=low,up=false,waterlogged=true,west=tall]", + "14719": "minecraft:sandstone_wall[east=tall,north=tall,south=low,up=false,waterlogged=false,west=none]", + "14720": "minecraft:sandstone_wall[east=tall,north=tall,south=low,up=false,waterlogged=false,west=low]", + "14721": "minecraft:sandstone_wall[east=tall,north=tall,south=low,up=false,waterlogged=false,west=tall]", + "14722": "minecraft:sandstone_wall[east=tall,north=tall,south=tall,up=true,waterlogged=true,west=none]", + "14723": "minecraft:sandstone_wall[east=tall,north=tall,south=tall,up=true,waterlogged=true,west=low]", + "14724": "minecraft:sandstone_wall[east=tall,north=tall,south=tall,up=true,waterlogged=true,west=tall]", + "14725": "minecraft:sandstone_wall[east=tall,north=tall,south=tall,up=true,waterlogged=false,west=none]", + "14726": "minecraft:sandstone_wall[east=tall,north=tall,south=tall,up=true,waterlogged=false,west=low]", + "14727": "minecraft:sandstone_wall[east=tall,north=tall,south=tall,up=true,waterlogged=false,west=tall]", + "14728": "minecraft:sandstone_wall[east=tall,north=tall,south=tall,up=false,waterlogged=true,west=none]", + "14729": "minecraft:sandstone_wall[east=tall,north=tall,south=tall,up=false,waterlogged=true,west=low]", + "14730": "minecraft:sandstone_wall[east=tall,north=tall,south=tall,up=false,waterlogged=true,west=tall]", + "14731": "minecraft:sandstone_wall[east=tall,north=tall,south=tall,up=false,waterlogged=false,west=none]", + "14732": "minecraft:sandstone_wall[east=tall,north=tall,south=tall,up=false,waterlogged=false,west=low]", + "14733": "minecraft:sandstone_wall[east=tall,north=tall,south=tall,up=false,waterlogged=false,west=tall]", + "14734": "minecraft:neither_portal[axis=x]", + "14735": "minecraft:neither_portal[axis=z]", + "14736": "minecraft:acacia_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]", + "14737": "minecraft:acacia_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]", + "14738": "minecraft:acacia_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true]", + "14739": "minecraft:acacia_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]", + "14740": "minecraft:acacia_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]", + "14741": "minecraft:acacia_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]", + "14742": "minecraft:acacia_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true]", + "14743": "minecraft:acacia_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false]", + "14744": "minecraft:acacia_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]", + "14745": "minecraft:acacia_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]", + "14746": "minecraft:acacia_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true]", + "14747": "minecraft:acacia_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false]", + "14748": "minecraft:acacia_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]", + "14749": "minecraft:acacia_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]", + "14750": "minecraft:acacia_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true]", + "14751": "minecraft:acacia_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]", + "14752": "minecraft:acacia_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]", + "14753": "minecraft:acacia_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]", + "14754": "minecraft:acacia_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true]", + "14755": "minecraft:acacia_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false]", + "14756": "minecraft:acacia_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]", + "14757": "minecraft:acacia_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]", + "14758": "minecraft:acacia_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true]", + "14759": "minecraft:acacia_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false]", + "14760": "minecraft:acacia_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]", + "14761": "minecraft:acacia_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]", + "14762": "minecraft:acacia_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true]", + "14763": "minecraft:acacia_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false]", + "14764": "minecraft:acacia_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]", + "14765": "minecraft:acacia_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]", + "14766": "minecraft:acacia_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true]", + "14767": "minecraft:acacia_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false]", + "14768": "minecraft:acacia_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]", + "14769": "minecraft:acacia_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]", + "14770": "minecraft:acacia_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true]", + "14771": "minecraft:acacia_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false]", + "14772": "minecraft:acacia_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]", + "14773": "minecraft:acacia_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]", + "14774": "minecraft:acacia_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true]", + "14775": "minecraft:acacia_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false]", + "14776": "minecraft:acacia_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]", + "14777": "minecraft:acacia_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]", + "14778": "minecraft:acacia_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true]", + "14779": "minecraft:acacia_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false]", + "14780": "minecraft:acacia_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]", + "14781": "minecraft:acacia_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]", + "14782": "minecraft:acacia_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true]", + "14783": "minecraft:acacia_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false]", + "14784": "minecraft:acacia_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]", + "14785": "minecraft:acacia_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]", + "14786": "minecraft:acacia_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true]", + "14787": "minecraft:acacia_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false]", + "14788": "minecraft:acacia_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]", + "14789": "minecraft:acacia_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]", + "14790": "minecraft:acacia_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true]", + "14791": "minecraft:acacia_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false]", + "14792": "minecraft:acacia_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]", + "14793": "minecraft:acacia_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]", + "14794": "minecraft:acacia_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true]", + "14795": "minecraft:acacia_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false]", + "14796": "minecraft:acacia_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]", + "14797": "minecraft:acacia_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]", + "14798": "minecraft:acacia_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true]", + "14799": "minecraft:acacia_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false]", + "14800": "minecraft:prismarine_wall[east=none,north=none,south=none,up=true,waterlogged=true,west=none]", + "14801": "minecraft:prismarine_wall[east=none,north=none,south=none,up=true,waterlogged=true,west=low]", + "14802": "minecraft:prismarine_wall[east=none,north=none,south=none,up=true,waterlogged=true,west=tall]", + "14803": "minecraft:prismarine_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=none]", + "14804": "minecraft:prismarine_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=low]", + "14805": "minecraft:prismarine_wall[east=none,north=none,south=none,up=true,waterlogged=false,west=tall]", + "14806": "minecraft:prismarine_wall[east=none,north=none,south=none,up=false,waterlogged=true,west=none]", + "14807": "minecraft:prismarine_wall[east=none,north=none,south=none,up=false,waterlogged=true,west=low]", + "14808": "minecraft:prismarine_wall[east=none,north=none,south=none,up=false,waterlogged=true,west=tall]", + "14809": "minecraft:prismarine_wall[east=none,north=none,south=none,up=false,waterlogged=false,west=none]", + "14810": "minecraft:prismarine_wall[east=none,north=none,south=none,up=false,waterlogged=false,west=low]", + "14811": "minecraft:prismarine_wall[east=none,north=none,south=none,up=false,waterlogged=false,west=tall]", + "14812": "minecraft:prismarine_wall[east=none,north=none,south=low,up=true,waterlogged=true,west=none]", + "14813": "minecraft:prismarine_wall[east=none,north=none,south=low,up=true,waterlogged=true,west=low]", + "14814": "minecraft:prismarine_wall[east=none,north=none,south=low,up=true,waterlogged=true,west=tall]", + "14815": "minecraft:prismarine_wall[east=none,north=none,south=low,up=true,waterlogged=false,west=none]", + "14816": "minecraft:prismarine_wall[east=none,north=none,south=low,up=true,waterlogged=false,west=low]", + "14817": "minecraft:prismarine_wall[east=none,north=none,south=low,up=true,waterlogged=false,west=tall]", + "14818": "minecraft:prismarine_wall[east=none,north=none,south=low,up=false,waterlogged=true,west=none]", + "14819": "minecraft:prismarine_wall[east=none,north=none,south=low,up=false,waterlogged=true,west=low]", + "14820": "minecraft:prismarine_wall[east=none,north=none,south=low,up=false,waterlogged=true,west=tall]", + "14821": "minecraft:prismarine_wall[east=none,north=none,south=low,up=false,waterlogged=false,west=none]", + "14822": "minecraft:prismarine_wall[east=none,north=none,south=low,up=false,waterlogged=false,west=low]", + "14823": "minecraft:prismarine_wall[east=none,north=none,south=low,up=false,waterlogged=false,west=tall]", + "14824": "minecraft:prismarine_wall[east=none,north=none,south=tall,up=true,waterlogged=true,west=none]", + "14825": "minecraft:prismarine_wall[east=none,north=none,south=tall,up=true,waterlogged=true,west=low]", + "14826": "minecraft:prismarine_wall[east=none,north=none,south=tall,up=true,waterlogged=true,west=tall]", + "14827": "minecraft:prismarine_wall[east=none,north=none,south=tall,up=true,waterlogged=false,west=none]", + "14828": "minecraft:prismarine_wall[east=none,north=none,south=tall,up=true,waterlogged=false,west=low]", + "14829": "minecraft:prismarine_wall[east=none,north=none,south=tall,up=true,waterlogged=false,west=tall]", + "14830": "minecraft:prismarine_wall[east=none,north=none,south=tall,up=false,waterlogged=true,west=none]", + "14831": "minecraft:prismarine_wall[east=none,north=none,south=tall,up=false,waterlogged=true,west=low]", + "14832": "minecraft:prismarine_wall[east=none,north=none,south=tall,up=false,waterlogged=true,west=tall]", + "14833": "minecraft:prismarine_wall[east=none,north=none,south=tall,up=false,waterlogged=false,west=none]", + "14834": "minecraft:prismarine_wall[east=none,north=none,south=tall,up=false,waterlogged=false,west=low]", + "14835": "minecraft:prismarine_wall[east=none,north=none,south=tall,up=false,waterlogged=false,west=tall]", + "14836": "minecraft:prismarine_wall[east=none,north=low,south=none,up=true,waterlogged=true,west=none]", + "14837": "minecraft:prismarine_wall[east=none,north=low,south=none,up=true,waterlogged=true,west=low]", + "14838": "minecraft:prismarine_wall[east=none,north=low,south=none,up=true,waterlogged=true,west=tall]", + "14839": "minecraft:prismarine_wall[east=none,north=low,south=none,up=true,waterlogged=false,west=none]", + "14840": "minecraft:prismarine_wall[east=none,north=low,south=none,up=true,waterlogged=false,west=low]", + "14841": "minecraft:prismarine_wall[east=none,north=low,south=none,up=true,waterlogged=false,west=tall]", + "14842": "minecraft:prismarine_wall[east=none,north=low,south=none,up=false,waterlogged=true,west=none]", + "14843": "minecraft:prismarine_wall[east=none,north=low,south=none,up=false,waterlogged=true,west=low]", + "14844": "minecraft:prismarine_wall[east=none,north=low,south=none,up=false,waterlogged=true,west=tall]", + "14845": "minecraft:prismarine_wall[east=none,north=low,south=none,up=false,waterlogged=false,west=none]", + "14846": "minecraft:prismarine_wall[east=none,north=low,south=none,up=false,waterlogged=false,west=low]", + "14847": "minecraft:prismarine_wall[east=none,north=low,south=none,up=false,waterlogged=false,west=tall]", + "14848": "minecraft:prismarine_wall[east=none,north=low,south=low,up=true,waterlogged=true,west=none]", + "14849": "minecraft:prismarine_wall[east=none,north=low,south=low,up=true,waterlogged=true,west=low]", + "14850": "minecraft:prismarine_wall[east=none,north=low,south=low,up=true,waterlogged=true,west=tall]", + "14851": "minecraft:prismarine_wall[east=none,north=low,south=low,up=true,waterlogged=false,west=none]", + "14852": "minecraft:prismarine_wall[east=none,north=low,south=low,up=true,waterlogged=false,west=low]", + "14853": "minecraft:prismarine_wall[east=none,north=low,south=low,up=true,waterlogged=false,west=tall]", + "14854": "minecraft:prismarine_wall[east=none,north=low,south=low,up=false,waterlogged=true,west=none]", + "14855": "minecraft:prismarine_wall[east=none,north=low,south=low,up=false,waterlogged=true,west=low]", + "14856": "minecraft:prismarine_wall[east=none,north=low,south=low,up=false,waterlogged=true,west=tall]", + "14857": "minecraft:prismarine_wall[east=none,north=low,south=low,up=false,waterlogged=false,west=none]", + "14858": "minecraft:prismarine_wall[east=none,north=low,south=low,up=false,waterlogged=false,west=low]", + "14859": "minecraft:prismarine_wall[east=none,north=low,south=low,up=false,waterlogged=false,west=tall]", + "14860": "minecraft:prismarine_wall[east=none,north=low,south=tall,up=true,waterlogged=true,west=none]", + "14861": "minecraft:prismarine_wall[east=none,north=low,south=tall,up=true,waterlogged=true,west=low]", + "14862": "minecraft:prismarine_wall[east=none,north=low,south=tall,up=true,waterlogged=true,west=tall]", + "14863": "minecraft:prismarine_wall[east=none,north=low,south=tall,up=true,waterlogged=false,west=none]", + "14864": "minecraft:prismarine_wall[east=none,north=low,south=tall,up=true,waterlogged=false,west=low]", + "14865": "minecraft:prismarine_wall[east=none,north=low,south=tall,up=true,waterlogged=false,west=tall]", + "14866": "minecraft:prismarine_wall[east=none,north=low,south=tall,up=false,waterlogged=true,west=none]", + "14867": "minecraft:prismarine_wall[east=none,north=low,south=tall,up=false,waterlogged=true,west=low]", + "14868": "minecraft:prismarine_wall[east=none,north=low,south=tall,up=false,waterlogged=true,west=tall]", + "14869": "minecraft:prismarine_wall[east=none,north=low,south=tall,up=false,waterlogged=false,west=none]", + "14870": "minecraft:prismarine_wall[east=none,north=low,south=tall,up=false,waterlogged=false,west=low]", + "14871": "minecraft:prismarine_wall[east=none,north=low,south=tall,up=false,waterlogged=false,west=tall]", + "14872": "minecraft:prismarine_wall[east=none,north=tall,south=none,up=true,waterlogged=true,west=none]", + "14873": "minecraft:prismarine_wall[east=none,north=tall,south=none,up=true,waterlogged=true,west=low]", + "14874": "minecraft:prismarine_wall[east=none,north=tall,south=none,up=true,waterlogged=true,west=tall]", + "14875": "minecraft:prismarine_wall[east=none,north=tall,south=none,up=true,waterlogged=false,west=none]", + "14876": "minecraft:prismarine_wall[east=none,north=tall,south=none,up=true,waterlogged=false,west=low]", + "14877": "minecraft:prismarine_wall[east=none,north=tall,south=none,up=true,waterlogged=false,west=tall]", + "14878": "minecraft:prismarine_wall[east=none,north=tall,south=none,up=false,waterlogged=true,west=none]", + "14879": "minecraft:prismarine_wall[east=none,north=tall,south=none,up=false,waterlogged=true,west=low]", + "14880": "minecraft:prismarine_wall[east=none,north=tall,south=none,up=false,waterlogged=true,west=tall]", + "14881": "minecraft:prismarine_wall[east=none,north=tall,south=none,up=false,waterlogged=false,west=none]", + "14882": "minecraft:prismarine_wall[east=none,north=tall,south=none,up=false,waterlogged=false,west=low]", + "14883": "minecraft:prismarine_wall[east=none,north=tall,south=none,up=false,waterlogged=false,west=tall]", + "14884": "minecraft:prismarine_wall[east=none,north=tall,south=low,up=true,waterlogged=true,west=none]", + "14885": "minecraft:prismarine_wall[east=none,north=tall,south=low,up=true,waterlogged=true,west=low]", + "14886": "minecraft:prismarine_wall[east=none,north=tall,south=low,up=true,waterlogged=true,west=tall]", + "14887": "minecraft:prismarine_wall[east=none,north=tall,south=low,up=true,waterlogged=false,west=none]", + "14888": "minecraft:prismarine_wall[east=none,north=tall,south=low,up=true,waterlogged=false,west=low]", + "14889": "minecraft:prismarine_wall[east=none,north=tall,south=low,up=true,waterlogged=false,west=tall]", + "14890": "minecraft:prismarine_wall[east=none,north=tall,south=low,up=false,waterlogged=true,west=none]", + "14891": "minecraft:prismarine_wall[east=none,north=tall,south=low,up=false,waterlogged=true,west=low]", + "14892": "minecraft:prismarine_wall[east=none,north=tall,south=low,up=false,waterlogged=true,west=tall]", + "14893": "minecraft:prismarine_wall[east=none,north=tall,south=low,up=false,waterlogged=false,west=none]", + "14894": "minecraft:prismarine_wall[east=none,north=tall,south=low,up=false,waterlogged=false,west=low]", + "14895": "minecraft:prismarine_wall[east=none,north=tall,south=low,up=false,waterlogged=false,west=tall]", + "14896": "minecraft:prismarine_wall[east=none,north=tall,south=tall,up=true,waterlogged=true,west=none]", + "14897": "minecraft:prismarine_wall[east=none,north=tall,south=tall,up=true,waterlogged=true,west=low]", + "14898": "minecraft:prismarine_wall[east=none,north=tall,south=tall,up=true,waterlogged=true,west=tall]", + "14899": "minecraft:prismarine_wall[east=none,north=tall,south=tall,up=true,waterlogged=false,west=none]", + "14900": "minecraft:prismarine_wall[east=none,north=tall,south=tall,up=true,waterlogged=false,west=low]", + "14901": "minecraft:prismarine_wall[east=none,north=tall,south=tall,up=true,waterlogged=false,west=tall]", + "14902": "minecraft:prismarine_wall[east=none,north=tall,south=tall,up=false,waterlogged=true,west=none]", + "14903": "minecraft:prismarine_wall[east=none,north=tall,south=tall,up=false,waterlogged=true,west=low]", + "14904": "minecraft:prismarine_wall[east=none,north=tall,south=tall,up=false,waterlogged=true,west=tall]", + "14905": "minecraft:prismarine_wall[east=none,north=tall,south=tall,up=false,waterlogged=false,west=none]", + "14906": "minecraft:prismarine_wall[east=none,north=tall,south=tall,up=false,waterlogged=false,west=low]", + "14907": "minecraft:prismarine_wall[east=none,north=tall,south=tall,up=false,waterlogged=false,west=tall]", + "14908": "minecraft:prismarine_wall[east=low,north=none,south=none,up=true,waterlogged=true,west=none]", + "14909": "minecraft:prismarine_wall[east=low,north=none,south=none,up=true,waterlogged=true,west=low]", + "14910": "minecraft:prismarine_wall[east=low,north=none,south=none,up=true,waterlogged=true,west=tall]", + "14911": "minecraft:prismarine_wall[east=low,north=none,south=none,up=true,waterlogged=false,west=none]", + "14912": "minecraft:prismarine_wall[east=low,north=none,south=none,up=true,waterlogged=false,west=low]", + "14913": "minecraft:prismarine_wall[east=low,north=none,south=none,up=true,waterlogged=false,west=tall]", + "14914": "minecraft:prismarine_wall[east=low,north=none,south=none,up=false,waterlogged=true,west=none]", + "14915": "minecraft:prismarine_wall[east=low,north=none,south=none,up=false,waterlogged=true,west=low]", + "14916": "minecraft:prismarine_wall[east=low,north=none,south=none,up=false,waterlogged=true,west=tall]", + "14917": "minecraft:prismarine_wall[east=low,north=none,south=none,up=false,waterlogged=false,west=none]", + "14918": "minecraft:prismarine_wall[east=low,north=none,south=none,up=false,waterlogged=false,west=low]", + "14919": "minecraft:prismarine_wall[east=low,north=none,south=none,up=false,waterlogged=false,west=tall]", + "14920": "minecraft:prismarine_wall[east=low,north=none,south=low,up=true,waterlogged=true,west=none]", + "14921": "minecraft:prismarine_wall[east=low,north=none,south=low,up=true,waterlogged=true,west=low]", + "14922": "minecraft:prismarine_wall[east=low,north=none,south=low,up=true,waterlogged=true,west=tall]", + "14923": "minecraft:prismarine_wall[east=low,north=none,south=low,up=true,waterlogged=false,west=none]", + "14924": "minecraft:prismarine_wall[east=low,north=none,south=low,up=true,waterlogged=false,west=low]", + "14925": "minecraft:prismarine_wall[east=low,north=none,south=low,up=true,waterlogged=false,west=tall]", + "14926": "minecraft:prismarine_wall[east=low,north=none,south=low,up=false,waterlogged=true,west=none]", + "14927": "minecraft:prismarine_wall[east=low,north=none,south=low,up=false,waterlogged=true,west=low]", + "14928": "minecraft:prismarine_wall[east=low,north=none,south=low,up=false,waterlogged=true,west=tall]", + "14929": "minecraft:prismarine_wall[east=low,north=none,south=low,up=false,waterlogged=false,west=none]", + "14930": "minecraft:prismarine_wall[east=low,north=none,south=low,up=false,waterlogged=false,west=low]", + "14931": "minecraft:prismarine_wall[east=low,north=none,south=low,up=false,waterlogged=false,west=tall]", + "14932": "minecraft:prismarine_wall[east=low,north=none,south=tall,up=true,waterlogged=true,west=none]", + "14933": "minecraft:prismarine_wall[east=low,north=none,south=tall,up=true,waterlogged=true,west=low]", + "14934": "minecraft:prismarine_wall[east=low,north=none,south=tall,up=true,waterlogged=true,west=tall]", + "14935": "minecraft:prismarine_wall[east=low,north=none,south=tall,up=true,waterlogged=false,west=none]", + "14936": "minecraft:prismarine_wall[east=low,north=none,south=tall,up=true,waterlogged=false,west=low]", + "14937": "minecraft:prismarine_wall[east=low,north=none,south=tall,up=true,waterlogged=false,west=tall]", + "14938": "minecraft:prismarine_wall[east=low,north=none,south=tall,up=false,waterlogged=true,west=none]", + "14939": "minecraft:prismarine_wall[east=low,north=none,south=tall,up=false,waterlogged=true,west=low]", + "14940": "minecraft:prismarine_wall[east=low,north=none,south=tall,up=false,waterlogged=true,west=tall]", + "14941": "minecraft:prismarine_wall[east=low,north=none,south=tall,up=false,waterlogged=false,west=none]", + "14942": "minecraft:prismarine_wall[east=low,north=none,south=tall,up=false,waterlogged=false,west=low]", + "14943": "minecraft:prismarine_wall[east=low,north=none,south=tall,up=false,waterlogged=false,west=tall]", + "14944": "minecraft:prismarine_wall[east=low,north=low,south=none,up=true,waterlogged=true,west=none]", + "14945": "minecraft:prismarine_wall[east=low,north=low,south=none,up=true,waterlogged=true,west=low]", + "14946": "minecraft:prismarine_wall[east=low,north=low,south=none,up=true,waterlogged=true,west=tall]", + "14947": "minecraft:prismarine_wall[east=low,north=low,south=none,up=true,waterlogged=false,west=none]", + "14948": "minecraft:prismarine_wall[east=low,north=low,south=none,up=true,waterlogged=false,west=low]", + "14949": "minecraft:prismarine_wall[east=low,north=low,south=none,up=true,waterlogged=false,west=tall]", + "14950": "minecraft:prismarine_wall[east=low,north=low,south=none,up=false,waterlogged=true,west=none]", + "14951": "minecraft:prismarine_wall[east=low,north=low,south=none,up=false,waterlogged=true,west=low]", + "14952": "minecraft:prismarine_wall[east=low,north=low,south=none,up=false,waterlogged=true,west=tall]", + "14953": "minecraft:prismarine_wall[east=low,north=low,south=none,up=false,waterlogged=false,west=none]", + "14954": "minecraft:prismarine_wall[east=low,north=low,south=none,up=false,waterlogged=false,west=low]", + "14955": "minecraft:prismarine_wall[east=low,north=low,south=none,up=false,waterlogged=false,west=tall]", + "14956": "minecraft:prismarine_wall[east=low,north=low,south=low,up=true,waterlogged=true,west=none]", + "14957": "minecraft:prismarine_wall[east=low,north=low,south=low,up=true,waterlogged=true,west=low]", + "14958": "minecraft:prismarine_wall[east=low,north=low,south=low,up=true,waterlogged=true,west=tall]", + "14959": "minecraft:prismarine_wall[east=low,north=low,south=low,up=true,waterlogged=false,west=none]", + "14960": "minecraft:prismarine_wall[east=low,north=low,south=low,up=true,waterlogged=false,west=low]", + "14961": "minecraft:prismarine_wall[east=low,north=low,south=low,up=true,waterlogged=false,west=tall]", + "14962": "minecraft:prismarine_wall[east=low,north=low,south=low,up=false,waterlogged=true,west=none]", + "14963": "minecraft:prismarine_wall[east=low,north=low,south=low,up=false,waterlogged=true,west=low]", + "14964": "minecraft:prismarine_wall[east=low,north=low,south=low,up=false,waterlogged=true,west=tall]", + "14965": "minecraft:prismarine_wall[east=low,north=low,south=low,up=false,waterlogged=false,west=none]", + "14966": "minecraft:prismarine_wall[east=low,north=low,south=low,up=false,waterlogged=false,west=low]", + "14967": "minecraft:prismarine_wall[east=low,north=low,south=low,up=false,waterlogged=false,west=tall]", + "14968": "minecraft:prismarine_wall[east=low,north=low,south=tall,up=true,waterlogged=true,west=none]", + "14969": "minecraft:prismarine_wall[east=low,north=low,south=tall,up=true,waterlogged=true,west=low]", + "14970": "minecraft:prismarine_wall[east=low,north=low,south=tall,up=true,waterlogged=true,west=tall]", + "14971": "minecraft:prismarine_wall[east=low,north=low,south=tall,up=true,waterlogged=false,west=none]", + "14972": "minecraft:prismarine_wall[east=low,north=low,south=tall,up=true,waterlogged=false,west=low]", + "14973": "minecraft:prismarine_wall[east=low,north=low,south=tall,up=true,waterlogged=false,west=tall]", + "14974": "minecraft:prismarine_wall[east=low,north=low,south=tall,up=false,waterlogged=true,west=none]", + "14975": "minecraft:prismarine_wall[east=low,north=low,south=tall,up=false,waterlogged=true,west=low]", + "14976": "minecraft:prismarine_wall[east=low,north=low,south=tall,up=false,waterlogged=true,west=tall]", + "14977": "minecraft:prismarine_wall[east=low,north=low,south=tall,up=false,waterlogged=false,west=none]", + "14978": "minecraft:prismarine_wall[east=low,north=low,south=tall,up=false,waterlogged=false,west=low]", + "14979": "minecraft:prismarine_wall[east=low,north=low,south=tall,up=false,waterlogged=false,west=tall]", + "14980": "minecraft:prismarine_wall[east=low,north=tall,south=none,up=true,waterlogged=true,west=none]", + "14981": "minecraft:prismarine_wall[east=low,north=tall,south=none,up=true,waterlogged=true,west=low]", + "14982": "minecraft:prismarine_wall[east=low,north=tall,south=none,up=true,waterlogged=true,west=tall]", + "14983": "minecraft:prismarine_wall[east=low,north=tall,south=none,up=true,waterlogged=false,west=none]", + "14984": "minecraft:prismarine_wall[east=low,north=tall,south=none,up=true,waterlogged=false,west=low]", + "14985": "minecraft:prismarine_wall[east=low,north=tall,south=none,up=true,waterlogged=false,west=tall]", + "14986": "minecraft:prismarine_wall[east=low,north=tall,south=none,up=false,waterlogged=true,west=none]", + "14987": "minecraft:prismarine_wall[east=low,north=tall,south=none,up=false,waterlogged=true,west=low]", + "14988": "minecraft:prismarine_wall[east=low,north=tall,south=none,up=false,waterlogged=true,west=tall]", + "14989": "minecraft:prismarine_wall[east=low,north=tall,south=none,up=false,waterlogged=false,west=none]", + "14990": "minecraft:prismarine_wall[east=low,north=tall,south=none,up=false,waterlogged=false,west=low]", + "14991": "minecraft:prismarine_wall[east=low,north=tall,south=none,up=false,waterlogged=false,west=tall]", + "14992": "minecraft:prismarine_wall[east=low,north=tall,south=low,up=true,waterlogged=true,west=none]", + "14993": "minecraft:prismarine_wall[east=low,north=tall,south=low,up=true,waterlogged=true,west=low]", + "14994": "minecraft:prismarine_wall[east=low,north=tall,south=low,up=true,waterlogged=true,west=tall]", + "14995": "minecraft:prismarine_wall[east=low,north=tall,south=low,up=true,waterlogged=false,west=none]", + "14996": "minecraft:prismarine_wall[east=low,north=tall,south=low,up=true,waterlogged=false,west=low]", + "14997": "minecraft:prismarine_wall[east=low,north=tall,south=low,up=true,waterlogged=false,west=tall]", + "14998": "minecraft:prismarine_wall[east=low,north=tall,south=low,up=false,waterlogged=true,west=none]", + "14999": "minecraft:prismarine_wall[east=low,north=tall,south=low,up=false,waterlogged=true,west=low]", + "15000": "minecraft:prismarine_wall[east=low,north=tall,south=low,up=false,waterlogged=true,west=tall]", + "15001": "minecraft:prismarine_wall[east=low,north=tall,south=low,up=false,waterlogged=false,west=none]", + "15002": "minecraft:prismarine_wall[east=low,north=tall,south=low,up=false,waterlogged=false,west=low]", + "15003": "minecraft:prismarine_wall[east=low,north=tall,south=low,up=false,waterlogged=false,west=tall]", + "15004": "minecraft:prismarine_wall[east=low,north=tall,south=tall,up=true,waterlogged=true,west=none]", + "15005": "minecraft:prismarine_wall[east=low,north=tall,south=tall,up=true,waterlogged=true,west=low]", + "15006": "minecraft:prismarine_wall[east=low,north=tall,south=tall,up=true,waterlogged=true,west=tall]", + "15007": "minecraft:prismarine_wall[east=low,north=tall,south=tall,up=true,waterlogged=false,west=none]", + "15008": "minecraft:prismarine_wall[east=low,north=tall,south=tall,up=true,waterlogged=false,west=low]", + "15009": "minecraft:prismarine_wall[east=low,north=tall,south=tall,up=true,waterlogged=false,west=tall]", + "15010": "minecraft:prismarine_wall[east=low,north=tall,south=tall,up=false,waterlogged=true,west=none]", + "15011": "minecraft:prismarine_wall[east=low,north=tall,south=tall,up=false,waterlogged=true,west=low]", + "15012": "minecraft:prismarine_wall[east=low,north=tall,south=tall,up=false,waterlogged=true,west=tall]", + "15013": "minecraft:prismarine_wall[east=low,north=tall,south=tall,up=false,waterlogged=false,west=none]", + "15014": "minecraft:prismarine_wall[east=low,north=tall,south=tall,up=false,waterlogged=false,west=low]", + "15015": "minecraft:prismarine_wall[east=low,north=tall,south=tall,up=false,waterlogged=false,west=tall]", + "15016": "minecraft:prismarine_wall[east=tall,north=none,south=none,up=true,waterlogged=true,west=none]", + "15017": "minecraft:prismarine_wall[east=tall,north=none,south=none,up=true,waterlogged=true,west=low]", + "15018": "minecraft:prismarine_wall[east=tall,north=none,south=none,up=true,waterlogged=true,west=tall]", + "15019": "minecraft:prismarine_wall[east=tall,north=none,south=none,up=true,waterlogged=false,west=none]", + "15020": "minecraft:prismarine_wall[east=tall,north=none,south=none,up=true,waterlogged=false,west=low]", + "15021": "minecraft:prismarine_wall[east=tall,north=none,south=none,up=true,waterlogged=false,west=tall]", + "15022": "minecraft:prismarine_wall[east=tall,north=none,south=none,up=false,waterlogged=true,west=none]", + "15023": "minecraft:prismarine_wall[east=tall,north=none,south=none,up=false,waterlogged=true,west=low]", + "15024": "minecraft:prismarine_wall[east=tall,north=none,south=none,up=false,waterlogged=true,west=tall]", + "15025": "minecraft:prismarine_wall[east=tall,north=none,south=none,up=false,waterlogged=false,west=none]", + "15026": "minecraft:prismarine_wall[east=tall,north=none,south=none,up=false,waterlogged=false,west=low]", + "15027": "minecraft:prismarine_wall[east=tall,north=none,south=none,up=false,waterlogged=false,west=tall]", + "15028": "minecraft:prismarine_wall[east=tall,north=none,south=low,up=true,waterlogged=true,west=none]", + "15029": "minecraft:prismarine_wall[east=tall,north=none,south=low,up=true,waterlogged=true,west=low]", + "15030": "minecraft:prismarine_wall[east=tall,north=none,south=low,up=true,waterlogged=true,west=tall]", + "15031": "minecraft:prismarine_wall[east=tall,north=none,south=low,up=true,waterlogged=false,west=none]", + "15032": "minecraft:prismarine_wall[east=tall,north=none,south=low,up=true,waterlogged=false,west=low]", + "15033": "minecraft:prismarine_wall[east=tall,north=none,south=low,up=true,waterlogged=false,west=tall]", + "15034": "minecraft:prismarine_wall[east=tall,north=none,south=low,up=false,waterlogged=true,west=none]", + "15035": "minecraft:prismarine_wall[east=tall,north=none,south=low,up=false,waterlogged=true,west=low]", + "15036": "minecraft:prismarine_wall[east=tall,north=none,south=low,up=false,waterlogged=true,west=tall]", + "15037": "minecraft:prismarine_wall[east=tall,north=none,south=low,up=false,waterlogged=false,west=none]", + "15038": "minecraft:prismarine_wall[east=tall,north=none,south=low,up=false,waterlogged=false,west=low]", + "15039": "minecraft:prismarine_wall[east=tall,north=none,south=low,up=false,waterlogged=false,west=tall]", + "15040": "minecraft:prismarine_wall[east=tall,north=none,south=tall,up=true,waterlogged=true,west=none]", + "15041": "minecraft:prismarine_wall[east=tall,north=none,south=tall,up=true,waterlogged=true,west=low]", + "15042": "minecraft:prismarine_wall[east=tall,north=none,south=tall,up=true,waterlogged=true,west=tall]", + "15043": "minecraft:prismarine_wall[east=tall,north=none,south=tall,up=true,waterlogged=false,west=none]", + "15044": "minecraft:prismarine_wall[east=tall,north=none,south=tall,up=true,waterlogged=false,west=low]", + "15045": "minecraft:prismarine_wall[east=tall,north=none,south=tall,up=true,waterlogged=false,west=tall]", + "15046": "minecraft:prismarine_wall[east=tall,north=none,south=tall,up=false,waterlogged=true,west=none]", + "15047": "minecraft:prismarine_wall[east=tall,north=none,south=tall,up=false,waterlogged=true,west=low]", + "15048": "minecraft:prismarine_wall[east=tall,north=none,south=tall,up=false,waterlogged=true,west=tall]", + "15049": "minecraft:prismarine_wall[east=tall,north=none,south=tall,up=false,waterlogged=false,west=none]", + "15050": "minecraft:prismarine_wall[east=tall,north=none,south=tall,up=false,waterlogged=false,west=low]", + "15051": "minecraft:prismarine_wall[east=tall,north=none,south=tall,up=false,waterlogged=false,west=tall]", + "15052": "minecraft:prismarine_wall[east=tall,north=low,south=none,up=true,waterlogged=true,west=none]", + "15053": "minecraft:prismarine_wall[east=tall,north=low,south=none,up=true,waterlogged=true,west=low]", + "15054": "minecraft:prismarine_wall[east=tall,north=low,south=none,up=true,waterlogged=true,west=tall]", + "15055": "minecraft:prismarine_wall[east=tall,north=low,south=none,up=true,waterlogged=false,west=none]", + "15056": "minecraft:prismarine_wall[east=tall,north=low,south=none,up=true,waterlogged=false,west=low]", + "15057": "minecraft:prismarine_wall[east=tall,north=low,south=none,up=true,waterlogged=false,west=tall]", + "15058": "minecraft:prismarine_wall[east=tall,north=low,south=none,up=false,waterlogged=true,west=none]", + "15059": "minecraft:prismarine_wall[east=tall,north=low,south=none,up=false,waterlogged=true,west=low]", + "15060": "minecraft:prismarine_wall[east=tall,north=low,south=none,up=false,waterlogged=true,west=tall]", + "15061": "minecraft:prismarine_wall[east=tall,north=low,south=none,up=false,waterlogged=false,west=none]", + "15062": "minecraft:prismarine_wall[east=tall,north=low,south=none,up=false,waterlogged=false,west=low]", + "15063": "minecraft:prismarine_wall[east=tall,north=low,south=none,up=false,waterlogged=false,west=tall]", + "15064": "minecraft:prismarine_wall[east=tall,north=low,south=low,up=true,waterlogged=true,west=none]", + "15065": "minecraft:prismarine_wall[east=tall,north=low,south=low,up=true,waterlogged=true,west=low]", + "15066": "minecraft:prismarine_wall[east=tall,north=low,south=low,up=true,waterlogged=true,west=tall]", + "15067": "minecraft:prismarine_wall[east=tall,north=low,south=low,up=true,waterlogged=false,west=none]", + "15068": "minecraft:prismarine_wall[east=tall,north=low,south=low,up=true,waterlogged=false,west=low]", + "15069": "minecraft:prismarine_wall[east=tall,north=low,south=low,up=true,waterlogged=false,west=tall]", + "15070": "minecraft:prismarine_wall[east=tall,north=low,south=low,up=false,waterlogged=true,west=none]", + "15071": "minecraft:prismarine_wall[east=tall,north=low,south=low,up=false,waterlogged=true,west=low]", + "15072": "minecraft:prismarine_wall[east=tall,north=low,south=low,up=false,waterlogged=true,west=tall]", + "15073": "minecraft:prismarine_wall[east=tall,north=low,south=low,up=false,waterlogged=false,west=none]", + "15074": "minecraft:prismarine_wall[east=tall,north=low,south=low,up=false,waterlogged=false,west=low]", + "15075": "minecraft:prismarine_wall[east=tall,north=low,south=low,up=false,waterlogged=false,west=tall]", + "15076": "minecraft:prismarine_wall[east=tall,north=low,south=tall,up=true,waterlogged=true,west=none]", + "15077": "minecraft:prismarine_wall[east=tall,north=low,south=tall,up=true,waterlogged=true,west=low]", + "15078": "minecraft:prismarine_wall[east=tall,north=low,south=tall,up=true,waterlogged=true,west=tall]", + "15079": "minecraft:prismarine_wall[east=tall,north=low,south=tall,up=true,waterlogged=false,west=none]", + "15080": "minecraft:prismarine_wall[east=tall,north=low,south=tall,up=true,waterlogged=false,west=low]", + "15081": "minecraft:prismarine_wall[east=tall,north=low,south=tall,up=true,waterlogged=false,west=tall]", + "15082": "minecraft:prismarine_wall[east=tall,north=low,south=tall,up=false,waterlogged=true,west=none]", + "15083": "minecraft:prismarine_wall[east=tall,north=low,south=tall,up=false,waterlogged=true,west=low]", + "15084": "minecraft:prismarine_wall[east=tall,north=low,south=tall,up=false,waterlogged=true,west=tall]", + "15085": "minecraft:prismarine_wall[east=tall,north=low,south=tall,up=false,waterlogged=false,west=none]", + "15086": "minecraft:prismarine_wall[east=tall,north=low,south=tall,up=false,waterlogged=false,west=low]", + "15087": "minecraft:prismarine_wall[east=tall,north=low,south=tall,up=false,waterlogged=false,west=tall]", + "15088": "minecraft:prismarine_wall[east=tall,north=tall,south=none,up=true,waterlogged=true,west=none]", + "15089": "minecraft:prismarine_wall[east=tall,north=tall,south=none,up=true,waterlogged=true,west=low]", + "15090": "minecraft:prismarine_wall[east=tall,north=tall,south=none,up=true,waterlogged=true,west=tall]", + "15091": "minecraft:prismarine_wall[east=tall,north=tall,south=none,up=true,waterlogged=false,west=none]", + "15092": "minecraft:prismarine_wall[east=tall,north=tall,south=none,up=true,waterlogged=false,west=low]", + "15093": "minecraft:prismarine_wall[east=tall,north=tall,south=none,up=true,waterlogged=false,west=tall]", + "15094": "minecraft:prismarine_wall[east=tall,north=tall,south=none,up=false,waterlogged=true,west=none]", + "15095": "minecraft:prismarine_wall[east=tall,north=tall,south=none,up=false,waterlogged=true,west=low]", + "15096": "minecraft:prismarine_wall[east=tall,north=tall,south=none,up=false,waterlogged=true,west=tall]", + "15097": "minecraft:prismarine_wall[east=tall,north=tall,south=none,up=false,waterlogged=false,west=none]", + "15098": "minecraft:prismarine_wall[east=tall,north=tall,south=none,up=false,waterlogged=false,west=low]", + "15099": "minecraft:prismarine_wall[east=tall,north=tall,south=none,up=false,waterlogged=false,west=tall]", + "15100": "minecraft:prismarine_wall[east=tall,north=tall,south=low,up=true,waterlogged=true,west=none]", + "15101": "minecraft:prismarine_wall[east=tall,north=tall,south=low,up=true,waterlogged=true,west=low]", + "15102": "minecraft:prismarine_wall[east=tall,north=tall,south=low,up=true,waterlogged=true,west=tall]", + "15103": "minecraft:prismarine_wall[east=tall,north=tall,south=low,up=true,waterlogged=false,west=none]", + "15104": "minecraft:prismarine_wall[east=tall,north=tall,south=low,up=true,waterlogged=false,west=low]", + "15105": "minecraft:prismarine_wall[east=tall,north=tall,south=low,up=true,waterlogged=false,west=tall]", + "15106": "minecraft:prismarine_wall[east=tall,north=tall,south=low,up=false,waterlogged=true,west=none]", + "15107": "minecraft:prismarine_wall[east=tall,north=tall,south=low,up=false,waterlogged=true,west=low]", + "15108": "minecraft:prismarine_wall[east=tall,north=tall,south=low,up=false,waterlogged=true,west=tall]", + "15109": "minecraft:prismarine_wall[east=tall,north=tall,south=low,up=false,waterlogged=false,west=none]", + "15110": "minecraft:prismarine_wall[east=tall,north=tall,south=low,up=false,waterlogged=false,west=low]", + "15111": "minecraft:prismarine_wall[east=tall,north=tall,south=low,up=false,waterlogged=false,west=tall]", + "15112": "minecraft:prismarine_wall[east=tall,north=tall,south=tall,up=true,waterlogged=true,west=none]", + "15113": "minecraft:prismarine_wall[east=tall,north=tall,south=tall,up=true,waterlogged=true,west=low]", + "15114": "minecraft:prismarine_wall[east=tall,north=tall,south=tall,up=true,waterlogged=true,west=tall]", + "15115": "minecraft:prismarine_wall[east=tall,north=tall,south=tall,up=true,waterlogged=false,west=none]", + "15116": "minecraft:prismarine_wall[east=tall,north=tall,south=tall,up=true,waterlogged=false,west=low]", + "15117": "minecraft:prismarine_wall[east=tall,north=tall,south=tall,up=true,waterlogged=false,west=tall]", + "15118": "minecraft:prismarine_wall[east=tall,north=tall,south=tall,up=false,waterlogged=true,west=none]", + "15119": "minecraft:prismarine_wall[east=tall,north=tall,south=tall,up=false,waterlogged=true,west=low]", + "15120": "minecraft:prismarine_wall[east=tall,north=tall,south=tall,up=false,waterlogged=true,west=tall]", + "15121": "minecraft:prismarine_wall[east=tall,north=tall,south=tall,up=false,waterlogged=false,west=none]", + "15122": "minecraft:prismarine_wall[east=tall,north=tall,south=tall,up=false,waterlogged=false,west=low]", + "15123": "minecraft:prismarine_wall[east=tall,north=tall,south=tall,up=false,waterlogged=false,west=tall]", + "15124": "minecraft:soul_sand", + "15125": "minecraft:bamboo[age=0,leaves=none,stage=0]", + "15126": "minecraft:bamboo[age=0,leaves=none,stage=1]", + "15127": "minecraft:bamboo[age=0,leaves=small,stage=0]", + "15128": "minecraft:bamboo[age=0,leaves=small,stage=1]", + "15129": "minecraft:bamboo[age=0,leaves=large,stage=0]", + "15130": "minecraft:bamboo[age=0,leaves=large,stage=1]", + "15131": "minecraft:bamboo[age=1,leaves=none,stage=0]", + "15132": "minecraft:bamboo[age=1,leaves=none,stage=1]", + "15133": "minecraft:bamboo[age=1,leaves=small,stage=0]", + "15134": "minecraft:bamboo[age=1,leaves=small,stage=1]", + "15135": "minecraft:bamboo[age=1,leaves=large,stage=0]", + "15136": "minecraft:bamboo[age=1,leaves=large,stage=1]", + "15137": "minecraft:brown_stained_glass", + "15138": "minecraft:warped_door[facing=north,half=upper,hinge=left,open=true,powered=true]", + "15139": "minecraft:warped_door[facing=north,half=upper,hinge=left,open=true,powered=false]", + "15140": "minecraft:warped_door[facing=north,half=upper,hinge=left,open=false,powered=true]", + "15141": "minecraft:warped_door[facing=north,half=upper,hinge=left,open=false,powered=false]", + "15142": "minecraft:warped_door[facing=north,half=upper,hinge=right,open=true,powered=true]", + "15143": "minecraft:warped_door[facing=north,half=upper,hinge=right,open=true,powered=false]", + "15144": "minecraft:warped_door[facing=north,half=upper,hinge=right,open=false,powered=true]", + "15145": "minecraft:warped_door[facing=north,half=upper,hinge=right,open=false,powered=false]", + "15146": "minecraft:warped_door[facing=north,half=lower,hinge=left,open=true,powered=true]", + "15147": "minecraft:warped_door[facing=north,half=lower,hinge=left,open=true,powered=false]", + "15148": "minecraft:warped_door[facing=north,half=lower,hinge=left,open=false,powered=true]", + "15149": "minecraft:warped_door[facing=north,half=lower,hinge=left,open=false,powered=false]", + "15150": "minecraft:warped_door[facing=north,half=lower,hinge=right,open=true,powered=true]", + "15151": "minecraft:warped_door[facing=north,half=lower,hinge=right,open=true,powered=false]", + "15152": "minecraft:warped_door[facing=north,half=lower,hinge=right,open=false,powered=true]", + "15153": "minecraft:warped_door[facing=north,half=lower,hinge=right,open=false,powered=false]", + "15154": "minecraft:warped_door[facing=south,half=upper,hinge=left,open=true,powered=true]", + "15155": "minecraft:warped_door[facing=south,half=upper,hinge=left,open=true,powered=false]", + "15156": "minecraft:warped_door[facing=south,half=upper,hinge=left,open=false,powered=true]", + "15157": "minecraft:warped_door[facing=south,half=upper,hinge=left,open=false,powered=false]", + "15158": "minecraft:warped_door[facing=south,half=upper,hinge=right,open=true,powered=true]", + "15159": "minecraft:warped_door[facing=south,half=upper,hinge=right,open=true,powered=false]", + "15160": "minecraft:warped_door[facing=south,half=upper,hinge=right,open=false,powered=true]", + "15161": "minecraft:warped_door[facing=south,half=upper,hinge=right,open=false,powered=false]", + "15162": "minecraft:warped_door[facing=south,half=lower,hinge=left,open=true,powered=true]", + "15163": "minecraft:warped_door[facing=south,half=lower,hinge=left,open=true,powered=false]", + "15164": "minecraft:warped_door[facing=south,half=lower,hinge=left,open=false,powered=true]", + "15165": "minecraft:warped_door[facing=south,half=lower,hinge=left,open=false,powered=false]", + "15166": "minecraft:warped_door[facing=south,half=lower,hinge=right,open=true,powered=true]", + "15167": "minecraft:warped_door[facing=south,half=lower,hinge=right,open=true,powered=false]", + "15168": "minecraft:warped_door[facing=south,half=lower,hinge=right,open=false,powered=true]", + "15169": "minecraft:warped_door[facing=south,half=lower,hinge=right,open=false,powered=false]", + "15170": "minecraft:warped_door[facing=west,half=upper,hinge=left,open=true,powered=true]", + "15171": "minecraft:warped_door[facing=west,half=upper,hinge=left,open=true,powered=false]", + "15172": "minecraft:warped_door[facing=west,half=upper,hinge=left,open=false,powered=true]", + "15173": "minecraft:warped_door[facing=west,half=upper,hinge=left,open=false,powered=false]", + "15174": "minecraft:warped_door[facing=west,half=upper,hinge=right,open=true,powered=true]", + "15175": "minecraft:warped_door[facing=west,half=upper,hinge=right,open=true,powered=false]", + "15176": "minecraft:warped_door[facing=west,half=upper,hinge=right,open=false,powered=true]", + "15177": "minecraft:warped_door[facing=west,half=upper,hinge=right,open=false,powered=false]", + "15178": "minecraft:warped_door[facing=west,half=lower,hinge=left,open=true,powered=true]", + "15179": "minecraft:warped_door[facing=west,half=lower,hinge=left,open=true,powered=false]", + "15180": "minecraft:warped_door[facing=west,half=lower,hinge=left,open=false,powered=true]", + "15181": "minecraft:warped_door[facing=west,half=lower,hinge=left,open=false,powered=false]", + "15182": "minecraft:warped_door[facing=west,half=lower,hinge=right,open=true,powered=true]", + "15183": "minecraft:warped_door[facing=west,half=lower,hinge=right,open=true,powered=false]", + "15184": "minecraft:warped_door[facing=west,half=lower,hinge=right,open=false,powered=true]", + "15185": "minecraft:warped_door[facing=west,half=lower,hinge=right,open=false,powered=false]", + "15186": "minecraft:warped_door[facing=east,half=upper,hinge=left,open=true,powered=true]", + "15187": "minecraft:warped_door[facing=east,half=upper,hinge=left,open=true,powered=false]", + "15188": "minecraft:warped_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "15189": "minecraft:warped_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "15190": "minecraft:warped_door[facing=east,half=upper,hinge=right,open=true,powered=true]", + "15191": "minecraft:warped_door[facing=east,half=upper,hinge=right,open=true,powered=false]", + "15192": "minecraft:warped_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "15193": "minecraft:warped_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "15194": "minecraft:warped_door[facing=east,half=lower,hinge=left,open=true,powered=true]", + "15195": "minecraft:warped_door[facing=east,half=lower,hinge=left,open=true,powered=false]", + "15196": "minecraft:warped_door[facing=east,half=lower,hinge=left,open=false,powered=true]", + "15197": "minecraft:warped_door[facing=east,half=lower,hinge=left,open=false,powered=false]", + "15198": "minecraft:warped_door[facing=east,half=lower,hinge=right,open=true,powered=true]", + "15199": "minecraft:warped_door[facing=east,half=lower,hinge=right,open=true,powered=false]", + "15200": "minecraft:warped_door[facing=east,half=lower,hinge=right,open=false,powered=true]", + "15201": "minecraft:warped_door[facing=east,half=lower,hinge=right,open=false,powered=false]", + "15202": "minecraft:soul_fire_lantern[hanging=true]", + "15203": "minecraft:soul_fire_lantern[hanging=false]", + "15204": "minecraft:glass_pane[east=true,north=true,south=true,waterlogged=true,west=true]", + "15205": "minecraft:glass_pane[east=true,north=true,south=true,waterlogged=true,west=false]", + "15206": "minecraft:glass_pane[east=true,north=true,south=true,waterlogged=false,west=true]", + "15207": "minecraft:glass_pane[east=true,north=true,south=true,waterlogged=false,west=false]", + "15208": "minecraft:glass_pane[east=true,north=true,south=false,waterlogged=true,west=true]", + "15209": "minecraft:glass_pane[east=true,north=true,south=false,waterlogged=true,west=false]", + "15210": "minecraft:glass_pane[east=true,north=true,south=false,waterlogged=false,west=true]", + "15211": "minecraft:glass_pane[east=true,north=true,south=false,waterlogged=false,west=false]", + "15212": "minecraft:glass_pane[east=true,north=false,south=true,waterlogged=true,west=true]", + "15213": "minecraft:glass_pane[east=true,north=false,south=true,waterlogged=true,west=false]", + "15214": "minecraft:glass_pane[east=true,north=false,south=true,waterlogged=false,west=true]", + "15215": "minecraft:glass_pane[east=true,north=false,south=true,waterlogged=false,west=false]", + "15216": "minecraft:glass_pane[east=true,north=false,south=false,waterlogged=true,west=true]", + "15217": "minecraft:glass_pane[east=true,north=false,south=false,waterlogged=true,west=false]", + "15218": "minecraft:glass_pane[east=true,north=false,south=false,waterlogged=false,west=true]", + "15219": "minecraft:glass_pane[east=true,north=false,south=false,waterlogged=false,west=false]", + "15220": "minecraft:glass_pane[east=false,north=true,south=true,waterlogged=true,west=true]", + "15221": "minecraft:glass_pane[east=false,north=true,south=true,waterlogged=true,west=false]", + "15222": "minecraft:glass_pane[east=false,north=true,south=true,waterlogged=false,west=true]", + "15223": "minecraft:glass_pane[east=false,north=true,south=true,waterlogged=false,west=false]", + "15224": "minecraft:glass_pane[east=false,north=true,south=false,waterlogged=true,west=true]", + "15225": "minecraft:glass_pane[east=false,north=true,south=false,waterlogged=true,west=false]", + "15226": "minecraft:glass_pane[east=false,north=true,south=false,waterlogged=false,west=true]", + "15227": "minecraft:glass_pane[east=false,north=true,south=false,waterlogged=false,west=false]", + "15228": "minecraft:glass_pane[east=false,north=false,south=true,waterlogged=true,west=true]", + "15229": "minecraft:glass_pane[east=false,north=false,south=true,waterlogged=true,west=false]", + "15230": "minecraft:glass_pane[east=false,north=false,south=true,waterlogged=false,west=true]", + "15231": "minecraft:glass_pane[east=false,north=false,south=true,waterlogged=false,west=false]", + "15232": "minecraft:glass_pane[east=false,north=false,south=false,waterlogged=true,west=true]", + "15233": "minecraft:glass_pane[east=false,north=false,south=false,waterlogged=true,west=false]", + "15234": "minecraft:glass_pane[east=false,north=false,south=false,waterlogged=false,west=true]", + "15235": "minecraft:glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]", + "15236": "minecraft:polished_andesite_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "15237": "minecraft:polished_andesite_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "15238": "minecraft:polished_andesite_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "15239": "minecraft:polished_andesite_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "15240": "minecraft:polished_andesite_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "15241": "minecraft:polished_andesite_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "15242": "minecraft:polished_andesite_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "15243": "minecraft:polished_andesite_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "15244": "minecraft:polished_andesite_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "15245": "minecraft:polished_andesite_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "15246": "minecraft:polished_andesite_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "15247": "minecraft:polished_andesite_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "15248": "minecraft:polished_andesite_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "15249": "minecraft:polished_andesite_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "15250": "minecraft:polished_andesite_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "15251": "minecraft:polished_andesite_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "15252": "minecraft:polished_andesite_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "15253": "minecraft:polished_andesite_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "15254": "minecraft:polished_andesite_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "15255": "minecraft:polished_andesite_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "15256": "minecraft:polished_andesite_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "15257": "minecraft:polished_andesite_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "15258": "minecraft:polished_andesite_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "15259": "minecraft:polished_andesite_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "15260": "minecraft:polished_andesite_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "15261": "minecraft:polished_andesite_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "15262": "minecraft:polished_andesite_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "15263": "minecraft:polished_andesite_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "15264": "minecraft:polished_andesite_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "15265": "minecraft:polished_andesite_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "15266": "minecraft:polished_andesite_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "15267": "minecraft:polished_andesite_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "15268": "minecraft:polished_andesite_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "15269": "minecraft:polished_andesite_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "15270": "minecraft:polished_andesite_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "15271": "minecraft:polished_andesite_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "15272": "minecraft:polished_andesite_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "15273": "minecraft:polished_andesite_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "15274": "minecraft:polished_andesite_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "15275": "minecraft:polished_andesite_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "15276": "minecraft:polished_andesite_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "15277": "minecraft:polished_andesite_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "15278": "minecraft:polished_andesite_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "15279": "minecraft:polished_andesite_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "15280": "minecraft:polished_andesite_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "15281": "minecraft:polished_andesite_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "15282": "minecraft:polished_andesite_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "15283": "minecraft:polished_andesite_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "15284": "minecraft:polished_andesite_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "15285": "minecraft:polished_andesite_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "15286": "minecraft:polished_andesite_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "15287": "minecraft:polished_andesite_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "15288": "minecraft:polished_andesite_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "15289": "minecraft:polished_andesite_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "15290": "minecraft:polished_andesite_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "15291": "minecraft:polished_andesite_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "15292": "minecraft:polished_andesite_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "15293": "minecraft:polished_andesite_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "15294": "minecraft:polished_andesite_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "15295": "minecraft:polished_andesite_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "15296": "minecraft:polished_andesite_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "15297": "minecraft:polished_andesite_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "15298": "minecraft:polished_andesite_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "15299": "minecraft:polished_andesite_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "15300": "minecraft:polished_andesite_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "15301": "minecraft:polished_andesite_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "15302": "minecraft:polished_andesite_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "15303": "minecraft:polished_andesite_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "15304": "minecraft:polished_andesite_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "15305": "minecraft:polished_andesite_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "15306": "minecraft:polished_andesite_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "15307": "minecraft:polished_andesite_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "15308": "minecraft:polished_andesite_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "15309": "minecraft:polished_andesite_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "15310": "minecraft:polished_andesite_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "15311": "minecraft:polished_andesite_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "15312": "minecraft:polished_andesite_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "15313": "minecraft:polished_andesite_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "15314": "minecraft:polished_andesite_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "15315": "minecraft:polished_andesite_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "15316": "minecraft:acacia_pressure_plate[powered=true]", + "15317": "minecraft:acacia_pressure_plate[powered=false]", + "15318": "minecraft:crying_obsidian", + "15319": "minecraft:fire_coral_fan[waterlogged=true]", + "15320": "minecraft:fire_coral_fan[waterlogged=false]", + "15321": "minecraft:crimson_nylium", + "15322": "minecraft:birch_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "15323": "minecraft:birch_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "15324": "minecraft:birch_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "15325": "minecraft:birch_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "15326": "minecraft:birch_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "15327": "minecraft:birch_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "15328": "minecraft:birch_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "15329": "minecraft:birch_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "15330": "minecraft:birch_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "15331": "minecraft:birch_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "15332": "minecraft:birch_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "15333": "minecraft:birch_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "15334": "minecraft:birch_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "15335": "minecraft:birch_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "15336": "minecraft:birch_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "15337": "minecraft:birch_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "15338": "minecraft:birch_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "15339": "minecraft:birch_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "15340": "minecraft:birch_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "15341": "minecraft:birch_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "15342": "minecraft:birch_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "15343": "minecraft:birch_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "15344": "minecraft:birch_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "15345": "minecraft:birch_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "15346": "minecraft:birch_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "15347": "minecraft:birch_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "15348": "minecraft:birch_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "15349": "minecraft:birch_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "15350": "minecraft:birch_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "15351": "minecraft:birch_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "15352": "minecraft:birch_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "15353": "minecraft:birch_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "15354": "minecraft:birch_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "15355": "minecraft:birch_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "15356": "minecraft:birch_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "15357": "minecraft:birch_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "15358": "minecraft:birch_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "15359": "minecraft:birch_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "15360": "minecraft:birch_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "15361": "minecraft:birch_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "15362": "minecraft:birch_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "15363": "minecraft:birch_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "15364": "minecraft:birch_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "15365": "minecraft:birch_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "15366": "minecraft:birch_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "15367": "minecraft:birch_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "15368": "minecraft:birch_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "15369": "minecraft:birch_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "15370": "minecraft:birch_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "15371": "minecraft:birch_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "15372": "minecraft:birch_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "15373": "minecraft:birch_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "15374": "minecraft:birch_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "15375": "minecraft:birch_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "15376": "minecraft:birch_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "15377": "minecraft:birch_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "15378": "minecraft:birch_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "15379": "minecraft:birch_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "15380": "minecraft:birch_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "15381": "minecraft:birch_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "15382": "minecraft:birch_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "15383": "minecraft:birch_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "15384": "minecraft:birch_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "15385": "minecraft:birch_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "15386": "minecraft:birch_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "15387": "minecraft:birch_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "15388": "minecraft:birch_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "15389": "minecraft:birch_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "15390": "minecraft:birch_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "15391": "minecraft:birch_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "15392": "minecraft:birch_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "15393": "minecraft:birch_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "15394": "minecraft:birch_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "15395": "minecraft:birch_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "15396": "minecraft:birch_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "15397": "minecraft:birch_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "15398": "minecraft:birch_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "15399": "minecraft:birch_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "15400": "minecraft:birch_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "15401": "minecraft:birch_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "15402": "minecraft:brain_coral_wall_fan[facing=north,waterlogged=true]", + "15403": "minecraft:brain_coral_wall_fan[facing=north,waterlogged=false]", + "15404": "minecraft:brain_coral_wall_fan[facing=south,waterlogged=true]", + "15405": "minecraft:brain_coral_wall_fan[facing=south,waterlogged=false]", + "15406": "minecraft:brain_coral_wall_fan[facing=west,waterlogged=true]", + "15407": "minecraft:brain_coral_wall_fan[facing=west,waterlogged=false]", + "15408": "minecraft:brain_coral_wall_fan[facing=east,waterlogged=true]", + "15409": "minecraft:brain_coral_wall_fan[facing=east,waterlogged=false]", + "15410": "minecraft:oak_button[face=floor,facing=north,powered=true]", + "15411": "minecraft:oak_button[face=floor,facing=north,powered=false]", + "15412": "minecraft:oak_button[face=floor,facing=south,powered=true]", + "15413": "minecraft:oak_button[face=floor,facing=south,powered=false]", + "15414": "minecraft:oak_button[face=floor,facing=west,powered=true]", + "15415": "minecraft:oak_button[face=floor,facing=west,powered=false]", + "15416": "minecraft:oak_button[face=floor,facing=east,powered=true]", + "15417": "minecraft:oak_button[face=floor,facing=east,powered=false]", + "15418": "minecraft:oak_button[face=wall,facing=north,powered=true]", + "15419": "minecraft:oak_button[face=wall,facing=north,powered=false]", + "15420": "minecraft:oak_button[face=wall,facing=south,powered=true]", + "15421": "minecraft:oak_button[face=wall,facing=south,powered=false]", + "15422": "minecraft:oak_button[face=wall,facing=west,powered=true]", + "15423": "minecraft:oak_button[face=wall,facing=west,powered=false]", + "15424": "minecraft:oak_button[face=wall,facing=east,powered=true]", + "15425": "minecraft:oak_button[face=wall,facing=east,powered=false]", + "15426": "minecraft:oak_button[face=ceiling,facing=north,powered=true]", + "15427": "minecraft:oak_button[face=ceiling,facing=north,powered=false]", + "15428": "minecraft:oak_button[face=ceiling,facing=south,powered=true]", + "15429": "minecraft:oak_button[face=ceiling,facing=south,powered=false]", + "15430": "minecraft:oak_button[face=ceiling,facing=west,powered=true]", + "15431": "minecraft:oak_button[face=ceiling,facing=west,powered=false]", + "15432": "minecraft:oak_button[face=ceiling,facing=east,powered=true]", + "15433": "minecraft:oak_button[face=ceiling,facing=east,powered=false]", + "15434": "minecraft:target[power=0]", + "15435": "minecraft:target[power=1]", + "15436": "minecraft:target[power=2]", + "15437": "minecraft:target[power=3]", + "15438": "minecraft:target[power=4]", + "15439": "minecraft:target[power=5]", + "15440": "minecraft:target[power=6]", + "15441": "minecraft:target[power=7]", + "15442": "minecraft:target[power=8]", + "15443": "minecraft:target[power=9]", + "15444": "minecraft:target[power=10]", + "15445": "minecraft:target[power=11]", + "15446": "minecraft:target[power=12]", + "15447": "minecraft:target[power=13]", + "15448": "minecraft:target[power=14]", + "15449": "minecraft:target[power=15]", + "15450": "minecraft:cocoa[age=0,facing=north]", + "15451": "minecraft:cocoa[age=0,facing=south]", + "15452": "minecraft:cocoa[age=0,facing=west]", + "15453": "minecraft:cocoa[age=0,facing=east]", + "15454": "minecraft:cocoa[age=1,facing=north]", + "15455": "minecraft:cocoa[age=1,facing=south]", + "15456": "minecraft:cocoa[age=1,facing=west]", + "15457": "minecraft:cocoa[age=1,facing=east]", + "15458": "minecraft:cocoa[age=2,facing=north]", + "15459": "minecraft:cocoa[age=2,facing=south]", + "15460": "minecraft:cocoa[age=2,facing=west]", + "15461": "minecraft:cocoa[age=2,facing=east]", + "15462": "minecraft:warped_fungus", + "15463": "minecraft:wither_skeleton_skull[rotation=0]", + "15464": "minecraft:wither_skeleton_skull[rotation=1]", + "15465": "minecraft:wither_skeleton_skull[rotation=2]", + "15466": "minecraft:wither_skeleton_skull[rotation=3]", + "15467": "minecraft:wither_skeleton_skull[rotation=4]", + "15468": "minecraft:wither_skeleton_skull[rotation=5]", + "15469": "minecraft:wither_skeleton_skull[rotation=6]", + "15470": "minecraft:wither_skeleton_skull[rotation=7]", + "15471": "minecraft:wither_skeleton_skull[rotation=8]", + "15472": "minecraft:wither_skeleton_skull[rotation=9]", + "15473": "minecraft:wither_skeleton_skull[rotation=10]", + "15474": "minecraft:wither_skeleton_skull[rotation=11]", + "15475": "minecraft:wither_skeleton_skull[rotation=12]", + "15476": "minecraft:wither_skeleton_skull[rotation=13]", + "15477": "minecraft:wither_skeleton_skull[rotation=14]", + "15478": "minecraft:wither_skeleton_skull[rotation=15]", + "15479": "minecraft:smooth_sandstone_slab[type=top,waterlogged=true]", + "15480": "minecraft:smooth_sandstone_slab[type=top,waterlogged=false]", + "15481": "minecraft:smooth_sandstone_slab[type=bottom,waterlogged=true]", + "15482": "minecraft:smooth_sandstone_slab[type=bottom,waterlogged=false]", + "15483": "minecraft:smooth_sandstone_slab[type=double,waterlogged=true]", + "15484": "minecraft:smooth_sandstone_slab[type=double,waterlogged=false]", + "15485": "minecraft:snow_block", + "15486": "minecraft:light_blue_wool", + "15487": "minecraft:oak_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "15488": "minecraft:oak_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "15489": "minecraft:oak_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "15490": "minecraft:oak_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "15491": "minecraft:oak_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "15492": "minecraft:oak_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "15493": "minecraft:oak_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "15494": "minecraft:oak_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "15495": "minecraft:oak_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "15496": "minecraft:oak_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "15497": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "15498": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "15499": "minecraft:oak_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "15500": "minecraft:oak_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "15501": "minecraft:oak_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "15502": "minecraft:oak_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "15503": "minecraft:oak_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "15504": "minecraft:oak_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "15505": "minecraft:oak_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "15506": "minecraft:oak_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "15507": "minecraft:oak_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "15508": "minecraft:oak_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "15509": "minecraft:oak_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "15510": "minecraft:oak_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "15511": "minecraft:oak_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "15512": "minecraft:oak_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "15513": "minecraft:oak_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "15514": "minecraft:oak_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "15515": "minecraft:oak_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "15516": "minecraft:oak_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "15517": "minecraft:oak_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "15518": "minecraft:oak_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "15519": "minecraft:oak_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "15520": "minecraft:oak_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "15521": "minecraft:oak_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "15522": "minecraft:oak_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "15523": "minecraft:oak_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "15524": "minecraft:oak_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "15525": "minecraft:oak_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "15526": "minecraft:oak_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "15527": "minecraft:oak_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "15528": "minecraft:oak_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "15529": "minecraft:oak_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "15530": "minecraft:oak_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "15531": "minecraft:oak_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "15532": "minecraft:oak_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "15533": "minecraft:oak_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "15534": "minecraft:oak_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "15535": "minecraft:oak_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "15536": "minecraft:oak_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "15537": "minecraft:oak_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "15538": "minecraft:oak_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "15539": "minecraft:oak_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "15540": "minecraft:oak_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "15541": "minecraft:oak_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "15542": "minecraft:oak_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "15543": "minecraft:oak_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "15544": "minecraft:oak_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "15545": "minecraft:oak_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "15546": "minecraft:oak_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "15547": "minecraft:oak_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "15548": "minecraft:oak_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "15549": "minecraft:oak_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "15550": "minecraft:oak_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "15551": "minecraft:oak_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "15552": "minecraft:oak_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "15553": "minecraft:oak_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "15554": "minecraft:oak_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "15555": "minecraft:oak_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "15556": "minecraft:oak_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "15557": "minecraft:oak_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "15558": "minecraft:oak_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "15559": "minecraft:oak_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "15560": "minecraft:oak_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "15561": "minecraft:oak_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "15562": "minecraft:oak_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "15563": "minecraft:oak_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "15564": "minecraft:oak_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "15565": "minecraft:oak_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "15566": "minecraft:oak_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "15567": "minecraft:kelp[age=0]", + "15568": "minecraft:kelp[age=1]", + "15569": "minecraft:kelp[age=2]", + "15570": "minecraft:kelp[age=3]", + "15571": "minecraft:kelp[age=4]", + "15572": "minecraft:kelp[age=5]", + "15573": "minecraft:kelp[age=6]", + "15574": "minecraft:kelp[age=7]", + "15575": "minecraft:kelp[age=8]", + "15576": "minecraft:kelp[age=9]", + "15577": "minecraft:kelp[age=10]", + "15578": "minecraft:kelp[age=11]", + "15579": "minecraft:kelp[age=12]", + "15580": "minecraft:kelp[age=13]", + "15581": "minecraft:kelp[age=14]", + "15582": "minecraft:kelp[age=15]", + "15583": "minecraft:kelp[age=16]", + "15584": "minecraft:kelp[age=17]", + "15585": "minecraft:kelp[age=18]", + "15586": "minecraft:kelp[age=19]", + "15587": "minecraft:kelp[age=20]", + "15588": "minecraft:kelp[age=21]", + "15589": "minecraft:kelp[age=22]", + "15590": "minecraft:kelp[age=23]", + "15591": "minecraft:kelp[age=24]", + "15592": "minecraft:kelp[age=25]", + "15593": "minecraft:comparator[facing=north,mode=compare,powered=true]", + "15594": "minecraft:comparator[facing=north,mode=compare,powered=false]", + "15595": "minecraft:comparator[facing=north,mode=subtract,powered=true]", + "15596": "minecraft:comparator[facing=north,mode=subtract,powered=false]", + "15597": "minecraft:comparator[facing=south,mode=compare,powered=true]", + "15598": "minecraft:comparator[facing=south,mode=compare,powered=false]", + "15599": "minecraft:comparator[facing=south,mode=subtract,powered=true]", + "15600": "minecraft:comparator[facing=south,mode=subtract,powered=false]", + "15601": "minecraft:comparator[facing=west,mode=compare,powered=true]", + "15602": "minecraft:comparator[facing=west,mode=compare,powered=false]", + "15603": "minecraft:comparator[facing=west,mode=subtract,powered=true]", + "15604": "minecraft:comparator[facing=west,mode=subtract,powered=false]", + "15605": "minecraft:comparator[facing=east,mode=compare,powered=true]", + "15606": "minecraft:comparator[facing=east,mode=compare,powered=false]", + "15607": "minecraft:comparator[facing=east,mode=subtract,powered=true]", + "15608": "minecraft:comparator[facing=east,mode=subtract,powered=false]", + "15609": "minecraft:dead_bush", + "15610": "minecraft:dead_horn_coral_block", + "15611": "minecraft:quartz_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "15612": "minecraft:quartz_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "15613": "minecraft:quartz_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "15614": "minecraft:quartz_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "15615": "minecraft:quartz_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "15616": "minecraft:quartz_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "15617": "minecraft:quartz_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "15618": "minecraft:quartz_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "15619": "minecraft:quartz_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "15620": "minecraft:quartz_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "15621": "minecraft:quartz_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "15622": "minecraft:quartz_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "15623": "minecraft:quartz_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "15624": "minecraft:quartz_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "15625": "minecraft:quartz_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "15626": "minecraft:quartz_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "15627": "minecraft:quartz_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "15628": "minecraft:quartz_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "15629": "minecraft:quartz_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "15630": "minecraft:quartz_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "15631": "minecraft:quartz_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "15632": "minecraft:quartz_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "15633": "minecraft:quartz_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "15634": "minecraft:quartz_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "15635": "minecraft:quartz_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "15636": "minecraft:quartz_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "15637": "minecraft:quartz_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "15638": "minecraft:quartz_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "15639": "minecraft:quartz_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "15640": "minecraft:quartz_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "15641": "minecraft:quartz_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "15642": "minecraft:quartz_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "15643": "minecraft:quartz_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "15644": "minecraft:quartz_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "15645": "minecraft:quartz_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "15646": "minecraft:quartz_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "15647": "minecraft:quartz_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "15648": "minecraft:quartz_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "15649": "minecraft:quartz_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "15650": "minecraft:quartz_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "15651": "minecraft:quartz_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "15652": "minecraft:quartz_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "15653": "minecraft:quartz_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "15654": "minecraft:quartz_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "15655": "minecraft:quartz_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "15656": "minecraft:quartz_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "15657": "minecraft:quartz_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "15658": "minecraft:quartz_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "15659": "minecraft:quartz_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "15660": "minecraft:quartz_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "15661": "minecraft:quartz_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "15662": "minecraft:quartz_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "15663": "minecraft:quartz_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "15664": "minecraft:quartz_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "15665": "minecraft:quartz_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "15666": "minecraft:quartz_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "15667": "minecraft:quartz_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "15668": "minecraft:quartz_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "15669": "minecraft:quartz_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "15670": "minecraft:quartz_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "15671": "minecraft:quartz_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "15672": "minecraft:quartz_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "15673": "minecraft:quartz_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "15674": "minecraft:quartz_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "15675": "minecraft:quartz_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "15676": "minecraft:quartz_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "15677": "minecraft:quartz_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "15678": "minecraft:quartz_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "15679": "minecraft:quartz_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "15680": "minecraft:quartz_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "15681": "minecraft:quartz_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "15682": "minecraft:quartz_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "15683": "minecraft:quartz_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "15684": "minecraft:quartz_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "15685": "minecraft:quartz_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "15686": "minecraft:quartz_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "15687": "minecraft:quartz_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "15688": "minecraft:quartz_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "15689": "minecraft:quartz_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "15690": "minecraft:quartz_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "15691": "minecraft:red_bed[facing=north,occupied=true,part=head]", + "15692": "minecraft:red_bed[facing=north,occupied=true,part=foot]", + "15693": "minecraft:red_bed[facing=north,occupied=false,part=head]", + "15694": "minecraft:red_bed[facing=north,occupied=false,part=foot]", + "15695": "minecraft:red_bed[facing=south,occupied=true,part=head]", + "15696": "minecraft:red_bed[facing=south,occupied=true,part=foot]", + "15697": "minecraft:red_bed[facing=south,occupied=false,part=head]", + "15698": "minecraft:red_bed[facing=south,occupied=false,part=foot]", + "15699": "minecraft:red_bed[facing=west,occupied=true,part=head]", + "15700": "minecraft:red_bed[facing=west,occupied=true,part=foot]", + "15701": "minecraft:red_bed[facing=west,occupied=false,part=head]", + "15702": "minecraft:red_bed[facing=west,occupied=false,part=foot]", + "15703": "minecraft:red_bed[facing=east,occupied=true,part=head]", + "15704": "minecraft:red_bed[facing=east,occupied=true,part=foot]", + "15705": "minecraft:red_bed[facing=east,occupied=false,part=head]", + "15706": "minecraft:red_bed[facing=east,occupied=false,part=foot]", + "15707": "minecraft:gray_shulker_box[facing=north]", + "15708": "minecraft:gray_shulker_box[facing=east]", + "15709": "minecraft:gray_shulker_box[facing=south]", + "15710": "minecraft:gray_shulker_box[facing=west]", + "15711": "minecraft:gray_shulker_box[facing=up]", + "15712": "minecraft:gray_shulker_box[facing=down]", + "15713": "minecraft:furnace[facing=north,lit=true]", + "15714": "minecraft:furnace[facing=north,lit=false]", + "15715": "minecraft:furnace[facing=south,lit=true]", + "15716": "minecraft:furnace[facing=south,lit=false]", + "15717": "minecraft:furnace[facing=west,lit=true]", + "15718": "minecraft:furnace[facing=west,lit=false]", + "15719": "minecraft:furnace[facing=east,lit=true]", + "15720": "minecraft:furnace[facing=east,lit=false]", + "15721": "minecraft:lime_terracotta", + "15722": "minecraft:dead_tube_coral_fan[waterlogged=true]", + "15723": "minecraft:dead_tube_coral_fan[waterlogged=false]", + "15724": "minecraft:dragon_head[rotation=0]", + "15725": "minecraft:dragon_head[rotation=1]", + "15726": "minecraft:dragon_head[rotation=2]", + "15727": "minecraft:dragon_head[rotation=3]", + "15728": "minecraft:dragon_head[rotation=4]", + "15729": "minecraft:dragon_head[rotation=5]", + "15730": "minecraft:dragon_head[rotation=6]", + "15731": "minecraft:dragon_head[rotation=7]", + "15732": "minecraft:dragon_head[rotation=8]", + "15733": "minecraft:dragon_head[rotation=9]", + "15734": "minecraft:dragon_head[rotation=10]", + "15735": "minecraft:dragon_head[rotation=11]", + "15736": "minecraft:dragon_head[rotation=12]", + "15737": "minecraft:dragon_head[rotation=13]", + "15738": "minecraft:dragon_head[rotation=14]", + "15739": "minecraft:dragon_head[rotation=15]", + "15740": "minecraft:book_box[facing=north]", + "15741": "minecraft:book_box[facing=south]", + "15742": "minecraft:book_box[facing=west]", + "15743": "minecraft:book_box[facing=east]", + "15744": "minecraft:cut_sandstone", + "15745": "minecraft:chain_command_block[conditional=true,facing=north]", + "15746": "minecraft:chain_command_block[conditional=true,facing=east]", + "15747": "minecraft:chain_command_block[conditional=true,facing=south]", + "15748": "minecraft:chain_command_block[conditional=true,facing=west]", + "15749": "minecraft:chain_command_block[conditional=true,facing=up]", + "15750": "minecraft:chain_command_block[conditional=true,facing=down]", + "15751": "minecraft:chain_command_block[conditional=false,facing=north]", + "15752": "minecraft:chain_command_block[conditional=false,facing=east]", + "15753": "minecraft:chain_command_block[conditional=false,facing=south]", + "15754": "minecraft:chain_command_block[conditional=false,facing=west]", + "15755": "minecraft:chain_command_block[conditional=false,facing=up]", + "15756": "minecraft:chain_command_block[conditional=false,facing=down]", + "15757": "minecraft:shulker_box[facing=north]", + "15758": "minecraft:shulker_box[facing=east]", + "15759": "minecraft:shulker_box[facing=south]", + "15760": "minecraft:shulker_box[facing=west]", + "15761": "minecraft:shulker_box[facing=up]", + "15762": "minecraft:shulker_box[facing=down]", + "15763": "minecraft:dark_oak_wall_sign[facing=north,waterlogged=true]", + "15764": "minecraft:dark_oak_wall_sign[facing=north,waterlogged=false]", + "15765": "minecraft:dark_oak_wall_sign[facing=south,waterlogged=true]", + "15766": "minecraft:dark_oak_wall_sign[facing=south,waterlogged=false]", + "15767": "minecraft:dark_oak_wall_sign[facing=west,waterlogged=true]", + "15768": "minecraft:dark_oak_wall_sign[facing=west,waterlogged=false]", + "15769": "minecraft:dark_oak_wall_sign[facing=east,waterlogged=true]", + "15770": "minecraft:dark_oak_wall_sign[facing=east,waterlogged=false]", + "15771": "minecraft:enchanting_table", + "15772": "minecraft:rose_bush[half=upper]", + "15773": "minecraft:rose_bush[half=lower]", + "15774": "minecraft:ladder[facing=north,waterlogged=true]", + "15775": "minecraft:ladder[facing=north,waterlogged=false]", + "15776": "minecraft:ladder[facing=south,waterlogged=true]", + "15777": "minecraft:ladder[facing=south,waterlogged=false]", + "15778": "minecraft:ladder[facing=west,waterlogged=true]", + "15779": "minecraft:ladder[facing=west,waterlogged=false]", + "15780": "minecraft:ladder[facing=east,waterlogged=true]", + "15781": "minecraft:ladder[facing=east,waterlogged=false]", + "15782": "minecraft:brick_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "15783": "minecraft:brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "15784": "minecraft:brick_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "15785": "minecraft:brick_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "15786": "minecraft:brick_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "15787": "minecraft:brick_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "15788": "minecraft:brick_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "15789": "minecraft:brick_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "15790": "minecraft:brick_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "15791": "minecraft:brick_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "15792": "minecraft:brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "15793": "minecraft:brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "15794": "minecraft:brick_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "15795": "minecraft:brick_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "15796": "minecraft:brick_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "15797": "minecraft:brick_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "15798": "minecraft:brick_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "15799": "minecraft:brick_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "15800": "minecraft:brick_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "15801": "minecraft:brick_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "15802": "minecraft:brick_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "15803": "minecraft:brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "15804": "minecraft:brick_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "15805": "minecraft:brick_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "15806": "minecraft:brick_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "15807": "minecraft:brick_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "15808": "minecraft:brick_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "15809": "minecraft:brick_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "15810": "minecraft:brick_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "15811": "minecraft:brick_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "15812": "minecraft:brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "15813": "minecraft:brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "15814": "minecraft:brick_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "15815": "minecraft:brick_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "15816": "minecraft:brick_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "15817": "minecraft:brick_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "15818": "minecraft:brick_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "15819": "minecraft:brick_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "15820": "minecraft:brick_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "15821": "minecraft:brick_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "15822": "minecraft:brick_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "15823": "minecraft:brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "15824": "minecraft:brick_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "15825": "minecraft:brick_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "15826": "minecraft:brick_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "15827": "minecraft:brick_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "15828": "minecraft:brick_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "15829": "minecraft:brick_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "15830": "minecraft:brick_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "15831": "minecraft:brick_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "15832": "minecraft:brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "15833": "minecraft:brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "15834": "minecraft:brick_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "15835": "minecraft:brick_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "15836": "minecraft:brick_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "15837": "minecraft:brick_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "15838": "minecraft:brick_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "15839": "minecraft:brick_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "15840": "minecraft:brick_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "15841": "minecraft:brick_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "15842": "minecraft:brick_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "15843": "minecraft:brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "15844": "minecraft:brick_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "15845": "minecraft:brick_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "15846": "minecraft:brick_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "15847": "minecraft:brick_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "15848": "minecraft:brick_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "15849": "minecraft:brick_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "15850": "minecraft:brick_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "15851": "minecraft:brick_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "15852": "minecraft:brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "15853": "minecraft:brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "15854": "minecraft:brick_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "15855": "minecraft:brick_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "15856": "minecraft:brick_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "15857": "minecraft:brick_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "15858": "minecraft:brick_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "15859": "minecraft:brick_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "15860": "minecraft:brick_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "15861": "minecraft:brick_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "15862": "minecraft:yellow_banner[rotation=0]", + "15863": "minecraft:yellow_banner[rotation=1]", + "15864": "minecraft:yellow_banner[rotation=2]", + "15865": "minecraft:yellow_banner[rotation=3]", + "15866": "minecraft:yellow_banner[rotation=4]", + "15867": "minecraft:yellow_banner[rotation=5]", + "15868": "minecraft:yellow_banner[rotation=6]", + "15869": "minecraft:yellow_banner[rotation=7]", + "15870": "minecraft:yellow_banner[rotation=8]", + "15871": "minecraft:yellow_banner[rotation=9]", + "15872": "minecraft:yellow_banner[rotation=10]", + "15873": "minecraft:yellow_banner[rotation=11]", + "15874": "minecraft:yellow_banner[rotation=12]", + "15875": "minecraft:yellow_banner[rotation=13]", + "15876": "minecraft:yellow_banner[rotation=14]", + "15877": "minecraft:yellow_banner[rotation=15]", + "15878": "minecraft:dead_bubble_coral[waterlogged=true]", + "15879": "minecraft:dead_bubble_coral[waterlogged=false]", + "15880": "minecraft:pink_bed[facing=north,occupied=true,part=head]", + "15881": "minecraft:pink_bed[facing=north,occupied=true,part=foot]", + "15882": "minecraft:pink_bed[facing=north,occupied=false,part=head]", + "15883": "minecraft:pink_bed[facing=north,occupied=false,part=foot]", + "15884": "minecraft:pink_bed[facing=south,occupied=true,part=head]", + "15885": "minecraft:pink_bed[facing=south,occupied=true,part=foot]", + "15886": "minecraft:pink_bed[facing=south,occupied=false,part=head]", + "15887": "minecraft:pink_bed[facing=south,occupied=false,part=foot]", + "15888": "minecraft:pink_bed[facing=west,occupied=true,part=head]", + "15889": "minecraft:pink_bed[facing=west,occupied=true,part=foot]", + "15890": "minecraft:pink_bed[facing=west,occupied=false,part=head]", + "15891": "minecraft:pink_bed[facing=west,occupied=false,part=foot]", + "15892": "minecraft:pink_bed[facing=east,occupied=true,part=head]", + "15893": "minecraft:pink_bed[facing=east,occupied=true,part=foot]", + "15894": "minecraft:pink_bed[facing=east,occupied=false,part=head]", + "15895": "minecraft:pink_bed[facing=east,occupied=false,part=foot]", + "15896": "minecraft:wet_sponge" + }, + "blocks": { + "0": "air", + "1": "soul_fire_torch", + "2": "brown_mushroom", + "3": "end_stone", + "4": "yellow_carpet", + "5": "orange_glazed_terracotta", + "6": "tube_coral", + "7": "light_weighted_pressure_plate", + "8": "structure_block", + "9": "warped_wall_sign", + "10": "granite_wall", + "11": "stone_brick_wall", + "12": "end_portal_frame", + "13": "magenta_glazed_terracotta", + "14": "glass", + "15": "sponge", + "16": "polished_basalt", + "17": "dragon_egg", + "18": "light_blue_carpet", + "19": "white_glazed_terracotta", + "20": "black_shulker_box", + "21": "lime_carpet", + "22": "gold_block", + "23": "glowstone", + "24": "basalt", + "25": "cobblestone_slab", + "26": "magenta_carpet", + "27": "composter", + "28": "wither_rose", + "29": "light_blue_glazed_terracotta", + "30": "warped_sign", + "31": "jigsaw", + "32": "crimson_wall_sign", + "33": "brick_slab", + "34": "red_mushroom", + "35": "soul_fire_wall_torch", + "36": "nether_portal", + "37": "iron_block", + "38": "cornflower", + "39": "lily_of_the_valley", + "40": "petrified_oak_slab", + "41": "cut_sandstone_slab", + "42": "dark_oak_slab", + "43": "stone_slab", + "44": "sandstone_slab", + "45": "smooth_stone_slab", + "46": "sandstone_stairs", + "47": "light_gray_carpet", + "48": "dispenser", + "49": "bee_nest", + "50": "white_carpet", + "51": "crimson_sign", + "52": "red_nether_brick_wall", + "53": "brewing_stand", + "54": "horn_coral", + "55": "tnt", + "56": "dragon_wall_head", + "57": "pink_glazed_terracotta", + "58": "yellow_glazed_terracotta", + "59": "netherrack", + "60": "soul_soil", + "61": "brick_wall", + "62": "brown_shulker_box", + "63": "scaffolding", + "64": "red_shulker_box", + "65": "pink_carpet", + "66": "jungle_leaves", + "67": "purple_carpet", + "68": "dark_oak_leaves", + "69": "redstone_lamp", + "70": "dead_brain_coral_fan", + "71": "ender_chest", + "72": "end_stone_brick_wall", + "73": "nether_wart", + "74": "dead_fire_coral", + "75": "lapis_ore", + "76": "nether_brick_wall", + "77": "red_sandstone_wall", + "78": "creeper_wall_head", + "79": "bubble_coral", + "80": "chipped_anvil", + "81": "chiseled_sandstone", + "82": "stone", + "83": "end_portal", + "84": "nether_quartz_ore", + "85": "quartz_block", + "86": "polished_granite", + "87": "daylight_detector", + "88": "polished_andesite", + "89": "trapped_chest", + "90": "heavy_weighted_pressure_plate", + "91": "polished_diorite", + "92": "horn_coral_block", + "93": "bubble_coral_block", + "94": "dead_brain_coral", + "95": "dead_fire_coral_fan", + "96": "cyan_glazed_terracotta", + "97": "chiseled_quartz_block", + "98": "stripped_dark_oak_wood", + "99": "obsidian", + "100": "prismarine_slab", + "101": "player_wall_head", + "102": "creeper_head", + "103": "note_block", + "104": "white_bed", + "105": "blue_carpet", + "106": "dead_bubble_coral_fan", + "107": "mossy_cobblestone", + "108": "netherite_stairs", + "109": "oak_leaves", + "110": "netherite_block", + "111": "purple_shulker_box", + "112": "cyan_shulker_box", + "113": "polished_andesite_slab", + "114": "granite_slab", + "115": "clay", + "116": "sugar_cane", + "117": "spruce_stairs", + "118": "emerald_block", + "119": "quartz_slab", + "120": "warped_button", + "121": "pumpkin", + "122": "jungle_slab", + "123": "birch_slab", + "124": "jack_o_lantern", + "125": "dark_prismarine_stairs", + "126": "red_sandstone_stairs", + "127": "sea_lantern", + "128": "stripped_birch_wood", + "129": "purple_glazed_terracotta", + "130": "smooth_stone", + "131": "cut_red_sandstone", + "132": "purpur_slab", + "133": "crimson_button", + "134": "warped_fence_gate", + "135": "cake", + "136": "nether_brick_slab", + "137": "crimson_fence_gate", + "138": "azure_bluet", + "139": "red_tulip", + "140": "pink_tulip", + "141": "magenta_stained_glass", + "142": "orange_stained_glass", + "143": "potted_crimson_fungus", + "144": "redstone_block", + "145": "lime_glazed_terracotta", + "146": "oxeye_daisy", + "147": "dead_bubble_coral_block", + "148": "dropper", + "149": "green_glazed_terracotta", + "150": "dark_prismarine", + "151": "lime_shulker_box", + "152": "dandelion", + "153": "hay_block", + "154": "fire_coral", + "155": "anvil", + "156": "beehive", + "157": "brain_coral_fan", + "158": "bricks", + "159": "emerald_ore", + "160": "black_carpet", + "161": "sandstone", + "162": "mossy_cobblestone_slab", + "163": "command_block", + "164": "snow", + "165": "zombie_head", + "166": "diorite_slab", + "167": "soul_fire", + "168": "green_shulker_box", + "169": "gray_carpet", + "170": "acacia_leaves", + "171": "smoker", + "172": "grindstone", + "173": "granite", + "174": "andesite", + "175": "diorite_wall", + "176": "spruce_planks", + "177": "andesite_wall", + "178": "mossy_stone_brick_wall", + "179": "sunflower", + "180": "cauldron", + "181": "coarse_dirt", + "182": "dead_horn_coral", + "183": "yellow_bed", + "184": "nether_brick_stairs", + "185": "dead_tube_coral", + "186": "mycelium", + "187": "brain_coral_block", + "188": "vine", + "189": "potted_warped_roots", + "190": "smooth_red_sandstone_slab", + "191": "warped_pressure_plate", + "192": "smithing_table", + "193": "gray_stained_glass", + "194": "pumpkin_stem", + "195": "mossy_cobblestone_wall", + "196": "red_wool", + "197": "redstone_wall_torch", + "198": "flower_pot", + "199": "redstone_torch", + "200": "turtle_egg", + "201": "dried_kelp_block", + "202": "light_blue_terracotta", + "203": "potted_crimson_roots", + "204": "polished_granite_slab", + "205": "dead_bubble_coral_wall_fan", + "206": "mossy_stone_brick_slab", + "207": "cobblestone_wall", + "208": "dark_oak_fence_gate", + "209": "diamond_block", + "210": "redstone_wire", + "211": "diamond_ore", + "212": "acacia_button", + "213": "dead_brain_coral_wall_fan", + "214": "dark_oak_button", + "215": "warped_slab", + "216": "polished_diorite_slab", + "217": "purple_wall_banner", + "218": "jungle_button", + "219": "dead_fire_coral_wall_fan", + "220": "acacia_wood", + "221": "beacon", + "222": "black_wool", + "223": "cyan_stained_glass", + "224": "black_wall_banner", + "225": "moving_piston", + "226": "dark_oak_wood", + "227": "crimson_fence", + "228": "crimson_pressure_plate", + "229": "lime_concrete", + "230": "yellow_concrete", + "231": "stripped_oak_log", + "232": "light_gray_stained_glass", + "233": "light_blue_concrete", + "234": "magenta_concrete", + "235": "pink_stained_glass", + "236": "slime_block", + "237": "barrier", + "238": "dark_oak_stairs", + "239": "bone_block", + "240": "acacia_stairs", + "241": "light_blue_bed", + "242": "prismarine_stairs", + "243": "stripped_spruce_wood", + "244": "oak_planks", + "245": "yellow_shulker_box", + "246": "chiseled_red_sandstone", + "247": "terracotta", + "248": "green_concrete_powder", + "249": "smooth_sandstone", + "250": "smooth_red_sandstone", + "251": "fire", + "252": "crafting_table", + "253": "light_gray_wool", + "254": "light_gray_terracotta", + "255": "zombie_wall_head", + "256": "jungle_fence", + "257": "oak_sapling", + "258": "spruce_fence", + "259": "cyan_wall_banner", + "260": "gray_wall_banner", + "261": "birch_sapling", + "262": "potted_warped_fungus", + "263": "tube_coral_fan", + "264": "nether_wart_block", + "265": "spruce_pressure_plate", + "266": "stone_button", + "267": "warped_stem", + "268": "magenta_shulker_box", + "269": "orange_bed", + "270": "packed_ice", + "271": "magenta_terracotta", + "272": "podzol", + "273": "stonecutter", + "274": "lectern", + "275": "barrel", + "276": "dead_brain_coral_block", + "277": "white_terracotta", + "278": "orange_banner", + "279": "large_fern", + "280": "attached_melon_stem", + "281": "cyan_bed", + "282": "blue_bed", + "283": "melon_stem", + "284": "lily_pad", + "285": "twisting_vines", + "286": "loom", + "287": "repeater", + "288": "brown_mushroom_block", + "289": "warped_stairs", + "290": "smooth_sandstone_stairs", + "291": "nether_brick_fence", + "292": "warped_hyphae", + "293": "stripped_warped_stem", + "294": "black_stained_glass", + "295": "oak_trapdoor", + "296": "sea_pickle", + "297": "birch_sign", + "298": "blue_concrete_powder", + "299": "tripwire_hook", + "300": "infested_chiseled_stone_bricks", + "301": "weeping_vines_plant", + "302": "torch", + "303": "honeycomb_block", + "304": "dead_horn_coral_fan", + "305": "purple_terracotta", + "306": "red_nether_brick_slab", + "307": "honey_block", + "308": "oak_fence", + "309": "andesite_slab", + "310": "jukebox", + "311": "tripwire", + "312": "blue_glazed_terracotta", + "313": "purple_stained_glass_pane", + "314": "potted_brown_mushroom", + "315": "gray_wool", + "316": "spruce_leaves", + "317": "wall_torch", + "318": "blue_ice", + "319": "brown_concrete", + "320": "blue_concrete", + "321": "prismarine_brick_stairs", + "322": "potted_dark_oak_sapling", + "323": "smooth_quartz_stairs", + "324": "potted_dead_bush", + "325": "brown_glazed_terracotta", + "326": "cyan_stained_glass_pane", + "327": "white_stained_glass", + "328": "acacia_slab", + "329": "potted_fern", + "330": "crimson_stairs", + "331": "stripped_acacia_log", + "332": "stripped_dark_oak_log", + "333": "orange_tulip", + "334": "white_tulip", + "335": "smooth_quartz", + "336": "white_wall_banner", + "337": "stone_brick_slab", + "338": "diorite", + "339": "light_gray_banner", + "340": "red_sandstone", + "341": "cobblestone", + "342": "dark_oak_door", + "343": "stripped_oak_wood", + "344": "coal_block", + "345": "sand", + "346": "lapis_block", + "347": "birch_leaves", + "348": "cyan_carpet", + "349": "orange_stained_glass_pane", + "350": "orange_carpet", + "351": "cyan_terracotta", + "352": "blue_shulker_box", + "353": "birch_fence", + "354": "light_gray_wall_banner", + "355": "spruce_sapling", + "356": "brown_concrete_powder", + "357": "hopper", + "358": "piston_head", + "359": "damaged_anvil", + "360": "player_head", + "361": "brain_coral", + "362": "dead_tube_coral_block", + "363": "acacia_sign", + "364": "orange_terracotta", + "365": "sticky_piston", + "366": "light_blue_shulker_box", + "367": "spruce_wall_sign", + "368": "red_nether_bricks", + "369": "magenta_bed", + "370": "oak_pressure_plate", + "371": "beetroots", + "372": "fire_coral_block", + "373": "purple_bed", + "374": "nether_bricks", + "375": "white_banner", + "376": "tall_seagrass", + "377": "coal_ore", + "378": "potted_pink_tulip", + "379": "oak_wall_sign", + "380": "yellow_stained_glass_pane", + "381": "magenta_concrete_powder", + "382": "purpur_pillar", + "383": "brown_banner", + "384": "blue_banner", + "385": "purpur_block", + "386": "seagrass", + "387": "piston", + "388": "chiseled_stone_bricks", + "389": "lime_stained_glass_pane", + "390": "light_blue_concrete_powder", + "391": "orange_concrete_powder", + "392": "light_blue_stained_glass_pane", + "393": "crimson_hyphae", + "394": "nether_sprouts", + "395": "stripped_crimson_stem", + "396": "crimson_stem", + "397": "mossy_stone_bricks", + "398": "stone_bricks", + "399": "cracked_stone_bricks", + "400": "oak_log", + "401": "pink_stained_glass_pane", + "402": "yellow_concrete_powder", + "403": "magenta_stained_glass_pane", + "404": "void_air", + "405": "potted_cornflower", + "406": "white_concrete_powder", + "407": "black_concrete", + "408": "mossy_stone_brick_stairs", + "409": "gold_ore", + "410": "iron_ore", + "411": "potted_lily_of_the_valley", + "412": "nether_gold_ore", + "413": "potted_white_tulip", + "414": "smooth_red_sandstone_stairs", + "415": "spruce_log", + "416": "potted_oxeye_daisy", + "417": "potted_bamboo", + "418": "polished_granite_stairs", + "419": "bubble_column", + "420": "cave_air", + "421": "potted_azure_bluet", + "422": "potted_red_tulip", + "423": "potted_orange_tulip", + "424": "potted_wither_rose", + "425": "jungle_wall_sign", + "426": "red_sand", + "427": "crimson_fungus", + "428": "grass_path", + "429": "oak_door", + "430": "birch_log", + "431": "bamboo_sapling", + "432": "lime_concrete_powder", + "433": "end_rod", + "434": "green_concrete", + "435": "orange_wall_banner", + "436": "black_banner", + "437": "cobweb", + "438": "light_gray_stained_glass_pane", + "439": "infested_cobblestone", + "440": "white_wool", + "441": "fern", + "442": "dark_oak_trapdoor", + "443": "jungle_trapdoor", + "444": "warped_nylium", + "445": "infested_mossy_stone_bricks", + "446": "warped_wart_block", + "447": "stripped_crimson_hyphae", + "448": "white_stained_glass_pane", + "449": "gray_concrete_powder", + "450": "magenta_wool", + "451": "red_terracotta", + "452": "birch_wall_sign", + "453": "lever", + "454": "repeating_command_block", + "455": "end_stone_bricks", + "456": "rail", + "457": "acacia_door", + "458": "detector_rail", + "459": "jungle_sign", + "460": "chorus_flower", + "461": "green_banner", + "462": "cyan_banner", + "463": "gray_banner", + "464": "lime_banner", + "465": "frosted_ice", + "466": "brown_stained_glass_pane", + "467": "purple_concrete_powder", + "468": "lime_wool", + "469": "powered_rail", + "470": "potted_dandelion", + "471": "iron_door", + "472": "cyan_concrete", + "473": "horn_coral_wall_fan", + "474": "purple_concrete", + "475": "spruce_sign", + "476": "red_mushroom_block", + "477": "potted_cactus", + "478": "light_blue_wall_banner", + "479": "cyan_concrete_powder", + "480": "carrots", + "481": "pink_wool", + "482": "spruce_trapdoor", + "483": "jungle_door", + "484": "water", + "485": "birch_door", + "486": "brown_terracotta", + "487": "acacia_sapling", + "488": "blue_terracotta", + "489": "weeping_vines", + "490": "granite_stairs", + "491": "acacia_log", + "492": "end_stone_brick_stairs", + "493": "lava", + "494": "conduit", + "495": "birch_trapdoor", + "496": "potted_acacia_sapling", + "497": "crimson_roots", + "498": "fire_coral_wall_fan", + "499": "twisting_vines_plant", + "500": "andesite_stairs", + "501": "potted_red_mushroom", + "502": "red_stained_glass", + "503": "green_stained_glass", + "504": "blue_stained_glass_pane", + "505": "black_stained_glass_pane", + "506": "jungle_log", + "507": "stone_stairs", + "508": "pink_concrete", + "509": "potted_poppy", + "510": "stripped_birch_log", + "511": "stripped_jungle_log", + "512": "red_concrete_powder", + "513": "orange_wool", + "514": "cyan_wool", + "515": "red_concrete", + "516": "potted_jungle_sapling", + "517": "gray_terracotta", + "518": "grass", + "519": "gravel", + "520": "gray_stained_glass_pane", + "521": "shroomlight", + "522": "dead_horn_coral_wall_fan", + "523": "birch_button", + "524": "wheat", + "525": "acacia_fence", + "526": "warped_roots", + "527": "pink_concrete_powder", + "528": "jungle_sapling", + "529": "black_terracotta", + "530": "pink_wall_banner", + "531": "infested_cracked_stone_bricks", + "532": "bell", + "533": "infested_stone", + "534": "purple_banner", + "535": "attached_pumpkin_stem", + "536": "stripped_warped_hyphae", + "537": "magenta_wall_banner", + "538": "sweet_berry_bush", + "539": "structure_void", + "540": "redstone_ore", + "541": "magma_block", + "542": "birch_pressure_plate", + "543": "red_banner", + "544": "chorus_plant", + "545": "mushroom_stem", + "546": "acacia_wall_sign", + "547": "end_gateway", + "548": "cobblestone_stairs", + "549": "dark_oak_sign", + "550": "purpur_stairs", + "551": "tall_grass", + "552": "stone_pressure_plate", + "553": "magenta_banner", + "554": "light_gray_bed", + "555": "pink_banner", + "556": "brown_bed", + "557": "white_shulker_box", + "558": "jungle_fence_gate", + "559": "brown_wall_banner", + "560": "lilac", + "561": "birch_wood", + "562": "jungle_wood", + "563": "orange_shulker_box", + "564": "yellow_terracotta", + "565": "green_wool", + "566": "lodestone", + "567": "acacia_fence_gate", + "568": "blue_wall_banner", + "569": "birch_fence_gate", + "570": "green_wall_banner", + "571": "jungle_planks", + "572": "acacia_planks", + "573": "dead_tube_coral_wall_fan", + "574": "dark_oak_planks", + "575": "chest", + "576": "skeleton_skull", + "577": "skeleton_wall_skull", + "578": "warped_fence", + "579": "diorite_stairs", + "580": "black_glazed_terracotta", + "581": "spruce_fence_gate", + "582": "red_wall_banner", + "583": "spruce_wood", + "584": "oak_wood", + "585": "brown_wool", + "586": "purple_stained_glass", + "587": "potted_oak_sapling", + "588": "blue_wool", + "589": "potted_spruce_sapling", + "590": "crimson_slab", + "591": "cursor", + "592": "white_concrete", + "593": "warped_trapdoor", + "594": "red_glazed_terracotta", + "595": "prismarine_bricks", + "596": "crimson_trapdoor", + "597": "orange_concrete", + "598": "lime_stained_glass", + "599": "prismarine", + "600": "iron_trapdoor", + "601": "yellow_stained_glass", + "602": "zone", + "603": "respawn_anchor", + "604": "warped_planks", + "605": "red_nether_brick_stairs", + "606": "end_stone_brick_slab", + "607": "tube_coral_wall_fan", + "608": "bubble_coral_fan", + "609": "jungle_stairs", + "610": "blue_stained_glass", + "611": "poppy", + "612": "spruce_button", + "613": "potted_birch_sapling", + "614": "farmland", + "615": "purple_wool", + "616": "melon", + "617": "campfire", + "618": "jungle_pressure_plate", + "619": "black_concrete_powder", + "620": "ice", + "621": "cactus", + "622": "wither_skeleton_wall_skull", + "623": "smooth_quartz_slab", + "624": "spawner", + "625": "horn_coral_fan", + "626": "ancient_debris", + "627": "red_carpet", + "628": "ant", + "629": "lantern", + "630": "pink_shulker_box", + "631": "observer", + "632": "peony", + "633": "birch_planks", + "634": "oak_sign", + "635": "pink_terracotta", + "636": "fletching_table", + "637": "iron_bars", + "638": "kelp_plant", + "639": "dark_oak_pressure_plate", + "640": "blast_furnace", + "641": "dead_fire_coral_block", + "642": "light_blue_banner", + "643": "quartz_pillar", + "644": "lime_bed", + "645": "gray_bed", + "646": "black_bed", + "647": "green_bed", + "648": "activator_rail", + "649": "stone_brick_stairs", + "650": "oak_fence_gate", + "651": "tube_coral_block", + "652": "cut_red_sandstone_slab", + "653": "yellow_wall_banner", + "654": "bedrock", + "655": "light_gray_shulker_box", + "656": "spruce_slab", + "657": "brown_carpet", + "658": "oak_slab", + "659": "grass_block", + "660": "dirt", + "661": "light_gray_glazed_terracotta", + "662": "prismarine_brick_slab", + "663": "green_carpet", + "664": "lime_wall_banner", + "665": "dark_oak_sapling", + "666": "stripped_acacia_wood", + "667": "spruce_door", + "668": "dark_oak_fence", + "669": "light_gray_concrete_powder", + "670": "yellow_wool", + "671": "green_terracotta", + "672": "bookshelf", + "673": "potatoes", + "674": "gray_concrete", + "675": "stripped_jungle_wood", + "676": "allium", + "677": "red_stained_glass_pane", + "678": "crimson_door", + "679": "dark_prismarine_slab", + "680": "bubble_coral_wall_fan", + "681": "gray_glazed_terracotta", + "682": "crimson_planks", + "683": "carved_pumpkin", + "684": "mossy_cobblestone_stairs", + "685": "red_sandstone_slab", + "686": "light_gray_concrete", + "687": "blue_orchid", + "688": "green_stained_glass_pane", + "689": "polished_diorite_stairs", + "690": "dark_oak_log", + "691": "stripped_spruce_log", + "692": "potted_blue_orchid", + "693": "light_blue_stained_glass", + "694": "potted_allium", + "695": "cartography_table", + "696": "infested_stone_bricks", + "697": "sandstone_wall", + "698": "neither_portal", + "699": "acacia_trapdoor", + "700": "prismarine_wall", + "701": "soul_sand", + "702": "bamboo", + "703": "brown_stained_glass", + "704": "warped_door", + "705": "soul_fire_lantern", + "706": "glass_pane", + "707": "polished_andesite_stairs", + "708": "acacia_pressure_plate", + "709": "crying_obsidian", + "710": "fire_coral_fan", + "711": "crimson_nylium", + "712": "birch_stairs", + "713": "brain_coral_wall_fan", + "714": "oak_button", + "715": "target", + "716": "cocoa", + "717": "warped_fungus", + "718": "wither_skeleton_skull", + "719": "smooth_sandstone_slab", + "720": "snow_block", + "721": "light_blue_wool", + "722": "oak_stairs", + "723": "kelp", + "724": "comparator", + "725": "dead_bush", + "726": "dead_horn_coral_block", + "727": "quartz_stairs", + "728": "red_bed", + "729": "gray_shulker_box", + "730": "furnace", + "731": "lime_terracotta", + "732": "dead_tube_coral_fan", + "733": "dragon_head", + "734": "book_box", + "735": "cut_sandstone", + "736": "chain_command_block", + "737": "shulker_box", + "738": "dark_oak_wall_sign", + "739": "enchanting_table", + "740": "rose_bush", + "741": "ladder", + "742": "brick_stairs", + "743": "yellow_banner", + "744": "dead_bubble_coral", + "745": "pink_bed", + "746": "wet_sponge" + }, + "items": { + "0": "minecraft:air", + "1": "minecraft:stone", + "2": "minecraft:granite", + "3": "minecraft:polished_granite", + "4": "minecraft:diorite", + "5": "minecraft:polished_diorite", + "6": "minecraft:andesite", + "7": "minecraft:polished_andesite", + "8": "minecraft:grass_block", + "9": "minecraft:dirt", + "10": "minecraft:coarse_dirt", + "11": "minecraft:podzol", + "12": "minecraft:crimson_nylium", + "13": "minecraft:warped_nylium", + "14": "minecraft:cobblestone", + "15": "minecraft:oak_planks", + "16": "minecraft:spruce_planks", + "17": "minecraft:birch_planks", + "18": "minecraft:jungle_planks", + "19": "minecraft:acacia_planks", + "20": "minecraft:dark_oak_planks", + "21": "minecraft:crimson_planks", + "22": "minecraft:warped_planks", + "23": "minecraft:oak_sapling", + "24": "minecraft:spruce_sapling", + "25": "minecraft:birch_sapling", + "26": "minecraft:jungle_sapling", + "27": "minecraft:acacia_sapling", + "28": "minecraft:dark_oak_sapling", + "29": "minecraft:bedrock", + "30": "minecraft:sand", + "31": "minecraft:red_sand", + "32": "minecraft:gravel", + "33": "minecraft:gold_ore", + "34": "minecraft:iron_ore", + "35": "minecraft:coal_ore", + "36": "minecraft:nether_gold_ore", + "37": "minecraft:oak_log", + "38": "minecraft:spruce_log", + "39": "minecraft:birch_log", + "40": "minecraft:jungle_log", + "41": "minecraft:acacia_log", + "42": "minecraft:dark_oak_log", + "43": "minecraft:crimson_stem", + "44": "minecraft:warped_stem", + "45": "minecraft:stripped_oak_log", + "46": "minecraft:stripped_spruce_log", + "47": "minecraft:stripped_birch_log", + "48": "minecraft:stripped_jungle_log", + "49": "minecraft:stripped_acacia_log", + "50": "minecraft:stripped_dark_oak_log", + "51": "minecraft:stripped_crimson_stem", + "52": "minecraft:stripped_warped_stem", + "53": "minecraft:stripped_oak_wood", + "54": "minecraft:stripped_spruce_wood", + "55": "minecraft:stripped_birch_wood", + "56": "minecraft:stripped_jungle_wood", + "57": "minecraft:stripped_acacia_wood", + "58": "minecraft:stripped_dark_oak_wood", + "59": "minecraft:stripped_crimson_hyphae", + "60": "minecraft:stripped_warped_hyphae", + "61": "minecraft:oak_wood", + "62": "minecraft:spruce_wood", + "63": "minecraft:birch_wood", + "64": "minecraft:jungle_wood", + "65": "minecraft:acacia_wood", + "66": "minecraft:dark_oak_wood", + "67": "minecraft:crimson_hyphae", + "68": "minecraft:warped_hyphae", + "69": "minecraft:oak_leaves", + "70": "minecraft:spruce_leaves", + "71": "minecraft:birch_leaves", + "72": "minecraft:jungle_leaves", + "73": "minecraft:acacia_leaves", + "74": "minecraft:dark_oak_leaves", + "75": "minecraft:sponge", + "76": "minecraft:wet_sponge", + "77": "minecraft:glass", + "78": "minecraft:lapis_ore", + "79": "minecraft:lapis_block", + "80": "minecraft:dispenser", + "81": "minecraft:sandstone", + "82": "minecraft:chiseled_sandstone", + "83": "minecraft:cut_sandstone", + "84": "minecraft:note_block", + "85": "minecraft:powered_rail", + "86": "minecraft:detector_rail", + "87": "minecraft:sticky_piston", + "88": "minecraft:cobweb", + "89": "minecraft:grass", + "90": "minecraft:fern", + "91": "minecraft:dead_bush", + "92": "minecraft:seagrass", + "93": "minecraft:sea_pickle", + "94": "minecraft:piston", + "95": "minecraft:white_wool", + "96": "minecraft:orange_wool", + "97": "minecraft:magenta_wool", + "98": "minecraft:light_blue_wool", + "99": "minecraft:yellow_wool", + "100": "minecraft:lime_wool", + "101": "minecraft:pink_wool", + "102": "minecraft:gray_wool", + "103": "minecraft:light_gray_wool", + "104": "minecraft:cyan_wool", + "105": "minecraft:purple_wool", + "106": "minecraft:blue_wool", + "107": "minecraft:brown_wool", + "108": "minecraft:green_wool", + "109": "minecraft:red_wool", + "110": "minecraft:black_wool", + "111": "minecraft:dandelion", + "112": "minecraft:poppy", + "113": "minecraft:blue_orchid", + "114": "minecraft:allium", + "115": "minecraft:azure_bluet", + "116": "minecraft:red_tulip", + "117": "minecraft:orange_tulip", + "118": "minecraft:white_tulip", + "119": "minecraft:pink_tulip", + "120": "minecraft:oxeye_daisy", + "121": "minecraft:cornflower", + "122": "minecraft:lily_of_the_valley", + "123": "minecraft:wither_rose", + "124": "minecraft:brown_mushroom", + "125": "minecraft:red_mushroom", + "126": "minecraft:crimson_fungus", + "127": "minecraft:warped_fungus", + "128": "minecraft:crimson_roots", + "129": "minecraft:warped_roots", + "130": "minecraft:nether_sprouts", + "131": "minecraft:weeping_vines", + "132": "minecraft:twisting_vines", + "133": "minecraft:sugar_cane", + "134": "minecraft:kelp", + "135": "minecraft:bamboo", + "136": "minecraft:gold_block", + "137": "minecraft:iron_block", + "138": "minecraft:oak_slab", + "139": "minecraft:spruce_slab", + "140": "minecraft:birch_slab", + "141": "minecraft:jungle_slab", + "142": "minecraft:acacia_slab", + "143": "minecraft:dark_oak_slab", + "144": "minecraft:crimson_slab", + "145": "minecraft:warped_slab", + "146": "minecraft:stone_slab", + "147": "minecraft:smooth_stone_slab", + "148": "minecraft:sandstone_slab", + "149": "minecraft:cut_sandstone_slab", + "150": "minecraft:petrified_oak_slab", + "151": "minecraft:cobblestone_slab", + "152": "minecraft:brick_slab", + "153": "minecraft:stone_brick_slab", + "154": "minecraft:nether_brick_slab", + "155": "minecraft:quartz_slab", + "156": "minecraft:red_sandstone_slab", + "157": "minecraft:cut_red_sandstone_slab", + "158": "minecraft:purpur_slab", + "159": "minecraft:prismarine_slab", + "160": "minecraft:prismarine_brick_slab", + "161": "minecraft:dark_prismarine_slab", + "162": "minecraft:smooth_quartz", + "163": "minecraft:smooth_red_sandstone", + "164": "minecraft:smooth_sandstone", + "165": "minecraft:smooth_stone", + "166": "minecraft:bricks", + "167": "minecraft:tnt", + "168": "minecraft:bookshelf", + "169": "minecraft:mossy_cobblestone", + "170": "minecraft:obsidian", + "171": "minecraft:torch", + "172": "minecraft:end_rod", + "173": "minecraft:chorus_plant", + "174": "minecraft:chorus_flower", + "175": "minecraft:purpur_block", + "176": "minecraft:purpur_pillar", + "177": "minecraft:purpur_stairs", + "178": "minecraft:spawner", + "179": "minecraft:oak_stairs", + "180": "minecraft:chest", + "181": "minecraft:diamond_ore", + "182": "minecraft:diamond_block", + "183": "minecraft:crafting_table", + "184": "minecraft:farmland", + "185": "minecraft:furnace", + "186": "minecraft:ladder", + "187": "minecraft:rail", + "188": "minecraft:cobblestone_stairs", + "189": "minecraft:lever", + "190": "minecraft:stone_pressure_plate", + "191": "minecraft:oak_pressure_plate", + "192": "minecraft:spruce_pressure_plate", + "193": "minecraft:birch_pressure_plate", + "194": "minecraft:jungle_pressure_plate", + "195": "minecraft:acacia_pressure_plate", + "196": "minecraft:dark_oak_pressure_plate", + "197": "minecraft:crimson_pressure_plate", + "198": "minecraft:warped_pressure_plate", + "199": "minecraft:redstone_ore", + "200": "minecraft:redstone_torch", + "201": "minecraft:stone_button", + "202": "minecraft:snow", + "203": "minecraft:ice", + "204": "minecraft:snow_block", + "205": "minecraft:cactus", + "206": "minecraft:clay", + "207": "minecraft:jukebox", + "208": "minecraft:oak_fence", + "209": "minecraft:spruce_fence", + "210": "minecraft:birch_fence", + "211": "minecraft:jungle_fence", + "212": "minecraft:acacia_fence", + "213": "minecraft:dark_oak_fence", + "214": "minecraft:crimson_fence", + "215": "minecraft:warped_fence", + "216": "minecraft:pumpkin", + "217": "minecraft:carved_pumpkin", + "218": "minecraft:netherrack", + "219": "minecraft:soul_sand", + "220": "minecraft:soul_soil", + "221": "minecraft:basalt", + "222": "minecraft:polished_basalt", + "223": "minecraft:soul_fire_torch", + "224": "minecraft:glowstone", + "225": "minecraft:jack_o_lantern", + "226": "minecraft:oak_trapdoor", + "227": "minecraft:spruce_trapdoor", + "228": "minecraft:birch_trapdoor", + "229": "minecraft:jungle_trapdoor", + "230": "minecraft:acacia_trapdoor", + "231": "minecraft:dark_oak_trapdoor", + "232": "minecraft:crimson_trapdoor", + "233": "minecraft:warped_trapdoor", + "234": "minecraft:infested_stone", + "235": "minecraft:infested_cobblestone", + "236": "minecraft:infested_stone_bricks", + "237": "minecraft:infested_mossy_stone_bricks", + "238": "minecraft:infested_cracked_stone_bricks", + "239": "minecraft:infested_chiseled_stone_bricks", + "240": "minecraft:stone_bricks", + "241": "minecraft:mossy_stone_bricks", + "242": "minecraft:cracked_stone_bricks", + "243": "minecraft:chiseled_stone_bricks", + "244": "minecraft:brown_mushroom_block", + "245": "minecraft:red_mushroom_block", + "246": "minecraft:mushroom_stem", + "247": "minecraft:iron_bars", + "248": "minecraft:glass_pane", + "249": "minecraft:melon", + "250": "minecraft:vine", + "251": "minecraft:oak_fence_gate", + "252": "minecraft:spruce_fence_gate", + "253": "minecraft:birch_fence_gate", + "254": "minecraft:jungle_fence_gate", + "255": "minecraft:acacia_fence_gate", + "256": "minecraft:dark_oak_fence_gate", + "257": "minecraft:crimson_fence_gate", + "258": "minecraft:warped_fence_gate", + "259": "minecraft:brick_stairs", + "260": "minecraft:stone_brick_stairs", + "261": "minecraft:mycelium", + "262": "minecraft:lily_pad", + "263": "minecraft:nether_bricks", + "264": "minecraft:nether_brick_fence", + "265": "minecraft:nether_brick_stairs", + "266": "minecraft:enchanting_table", + "267": "minecraft:end_portal_frame", + "268": "minecraft:end_stone", + "269": "minecraft:end_stone_bricks", + "270": "minecraft:dragon_egg", + "271": "minecraft:redstone_lamp", + "272": "minecraft:sandstone_stairs", + "273": "minecraft:emerald_ore", + "274": "minecraft:ender_chest", + "275": "minecraft:tripwire_hook", + "276": "minecraft:emerald_block", + "277": "minecraft:spruce_stairs", + "278": "minecraft:birch_stairs", + "279": "minecraft:jungle_stairs", + "280": "minecraft:crimson_stairs", + "281": "minecraft:warped_stairs", + "282": "minecraft:command_block", + "283": "minecraft:beacon", + "284": "minecraft:cobblestone_wall", + "285": "minecraft:mossy_cobblestone_wall", + "286": "minecraft:brick_wall", + "287": "minecraft:prismarine_wall", + "288": "minecraft:red_sandstone_wall", + "289": "minecraft:mossy_stone_brick_wall", + "290": "minecraft:granite_wall", + "291": "minecraft:stone_brick_wall", + "292": "minecraft:nether_brick_wall", + "293": "minecraft:andesite_wall", + "294": "minecraft:red_nether_brick_wall", + "295": "minecraft:sandstone_wall", + "296": "minecraft:end_stone_brick_wall", + "297": "minecraft:diorite_wall", + "298": "minecraft:oak_button", + "299": "minecraft:spruce_button", + "300": "minecraft:birch_button", + "301": "minecraft:jungle_button", + "302": "minecraft:acacia_button", + "303": "minecraft:dark_oak_button", + "304": "minecraft:crimson_button", + "305": "minecraft:warped_button", + "306": "minecraft:anvil", + "307": "minecraft:chipped_anvil", + "308": "minecraft:damaged_anvil", + "309": "minecraft:trapped_chest", + "310": "minecraft:light_weighted_pressure_plate", + "311": "minecraft:heavy_weighted_pressure_plate", + "312": "minecraft:daylight_detector", + "313": "minecraft:redstone_block", + "314": "minecraft:nether_quartz_ore", + "315": "minecraft:hopper", + "316": "minecraft:chiseled_quartz_block", + "317": "minecraft:quartz_block", + "318": "minecraft:quartz_pillar", + "319": "minecraft:quartz_stairs", + "320": "minecraft:activator_rail", + "321": "minecraft:dropper", + "322": "minecraft:white_terracotta", + "323": "minecraft:orange_terracotta", + "324": "minecraft:magenta_terracotta", + "325": "minecraft:light_blue_terracotta", + "326": "minecraft:yellow_terracotta", + "327": "minecraft:lime_terracotta", + "328": "minecraft:pink_terracotta", + "329": "minecraft:gray_terracotta", + "330": "minecraft:light_gray_terracotta", + "331": "minecraft:cyan_terracotta", + "332": "minecraft:purple_terracotta", + "333": "minecraft:blue_terracotta", + "334": "minecraft:brown_terracotta", + "335": "minecraft:green_terracotta", + "336": "minecraft:red_terracotta", + "337": "minecraft:black_terracotta", + "338": "minecraft:barrier", + "339": "minecraft:iron_trapdoor", + "340": "minecraft:hay_block", + "341": "minecraft:white_carpet", + "342": "minecraft:orange_carpet", + "343": "minecraft:magenta_carpet", + "344": "minecraft:light_blue_carpet", + "345": "minecraft:yellow_carpet", + "346": "minecraft:lime_carpet", + "347": "minecraft:pink_carpet", + "348": "minecraft:gray_carpet", + "349": "minecraft:light_gray_carpet", + "350": "minecraft:cyan_carpet", + "351": "minecraft:purple_carpet", + "352": "minecraft:blue_carpet", + "353": "minecraft:brown_carpet", + "354": "minecraft:green_carpet", + "355": "minecraft:red_carpet", + "356": "minecraft:black_carpet", + "357": "minecraft:terracotta", + "358": "minecraft:coal_block", + "359": "minecraft:packed_ice", + "360": "minecraft:acacia_stairs", + "361": "minecraft:dark_oak_stairs", + "362": "minecraft:slime_block", + "363": "minecraft:grass_path", + "364": "minecraft:sunflower", + "365": "minecraft:lilac", + "366": "minecraft:rose_bush", + "367": "minecraft:peony", + "368": "minecraft:tall_grass", + "369": "minecraft:large_fern", + "370": "minecraft:white_stained_glass", + "371": "minecraft:orange_stained_glass", + "372": "minecraft:magenta_stained_glass", + "373": "minecraft:light_blue_stained_glass", + "374": "minecraft:yellow_stained_glass", + "375": "minecraft:lime_stained_glass", + "376": "minecraft:pink_stained_glass", + "377": "minecraft:gray_stained_glass", + "378": "minecraft:light_gray_stained_glass", + "379": "minecraft:cyan_stained_glass", + "380": "minecraft:purple_stained_glass", + "381": "minecraft:blue_stained_glass", + "382": "minecraft:brown_stained_glass", + "383": "minecraft:green_stained_glass", + "384": "minecraft:red_stained_glass", + "385": "minecraft:black_stained_glass", + "386": "minecraft:white_stained_glass_pane", + "387": "minecraft:orange_stained_glass_pane", + "388": "minecraft:magenta_stained_glass_pane", + "389": "minecraft:light_blue_stained_glass_pane", + "390": "minecraft:yellow_stained_glass_pane", + "391": "minecraft:lime_stained_glass_pane", + "392": "minecraft:pink_stained_glass_pane", + "393": "minecraft:gray_stained_glass_pane", + "394": "minecraft:light_gray_stained_glass_pane", + "395": "minecraft:cyan_stained_glass_pane", + "396": "minecraft:purple_stained_glass_pane", + "397": "minecraft:blue_stained_glass_pane", + "398": "minecraft:brown_stained_glass_pane", + "399": "minecraft:green_stained_glass_pane", + "400": "minecraft:red_stained_glass_pane", + "401": "minecraft:black_stained_glass_pane", + "402": "minecraft:prismarine", + "403": "minecraft:prismarine_bricks", + "404": "minecraft:dark_prismarine", + "405": "minecraft:prismarine_stairs", + "406": "minecraft:prismarine_brick_stairs", + "407": "minecraft:dark_prismarine_stairs", + "408": "minecraft:sea_lantern", + "409": "minecraft:red_sandstone", + "410": "minecraft:chiseled_red_sandstone", + "411": "minecraft:cut_red_sandstone", + "412": "minecraft:red_sandstone_stairs", + "413": "minecraft:repeating_command_block", + "414": "minecraft:chain_command_block", + "415": "minecraft:magma_block", + "416": "minecraft:nether_wart_block", + "417": "minecraft:warped_wart_block", + "418": "minecraft:red_nether_bricks", + "419": "minecraft:bone_block", + "420": "minecraft:structure_void", + "421": "minecraft:observer", + "422": "minecraft:shulker_box", + "423": "minecraft:white_shulker_box", + "424": "minecraft:orange_shulker_box", + "425": "minecraft:magenta_shulker_box", + "426": "minecraft:light_blue_shulker_box", + "427": "minecraft:yellow_shulker_box", + "428": "minecraft:lime_shulker_box", + "429": "minecraft:pink_shulker_box", + "430": "minecraft:gray_shulker_box", + "431": "minecraft:light_gray_shulker_box", + "432": "minecraft:cyan_shulker_box", + "433": "minecraft:purple_shulker_box", + "434": "minecraft:blue_shulker_box", + "435": "minecraft:brown_shulker_box", + "436": "minecraft:green_shulker_box", + "437": "minecraft:red_shulker_box", + "438": "minecraft:black_shulker_box", + "439": "minecraft:white_glazed_terracotta", + "440": "minecraft:orange_glazed_terracotta", + "441": "minecraft:magenta_glazed_terracotta", + "442": "minecraft:light_blue_glazed_terracotta", + "443": "minecraft:yellow_glazed_terracotta", + "444": "minecraft:lime_glazed_terracotta", + "445": "minecraft:pink_glazed_terracotta", + "446": "minecraft:gray_glazed_terracotta", + "447": "minecraft:light_gray_glazed_terracotta", + "448": "minecraft:cyan_glazed_terracotta", + "449": "minecraft:purple_glazed_terracotta", + "450": "minecraft:blue_glazed_terracotta", + "451": "minecraft:brown_glazed_terracotta", + "452": "minecraft:green_glazed_terracotta", + "453": "minecraft:red_glazed_terracotta", + "454": "minecraft:black_glazed_terracotta", + "455": "minecraft:white_concrete", + "456": "minecraft:orange_concrete", + "457": "minecraft:magenta_concrete", + "458": "minecraft:light_blue_concrete", + "459": "minecraft:yellow_concrete", + "460": "minecraft:lime_concrete", + "461": "minecraft:pink_concrete", + "462": "minecraft:gray_concrete", + "463": "minecraft:light_gray_concrete", + "464": "minecraft:cyan_concrete", + "465": "minecraft:purple_concrete", + "466": "minecraft:blue_concrete", + "467": "minecraft:brown_concrete", + "468": "minecraft:green_concrete", + "469": "minecraft:red_concrete", + "470": "minecraft:black_concrete", + "471": "minecraft:white_concrete_powder", + "472": "minecraft:orange_concrete_powder", + "473": "minecraft:magenta_concrete_powder", + "474": "minecraft:light_blue_concrete_powder", + "475": "minecraft:yellow_concrete_powder", + "476": "minecraft:lime_concrete_powder", + "477": "minecraft:pink_concrete_powder", + "478": "minecraft:gray_concrete_powder", + "479": "minecraft:light_gray_concrete_powder", + "480": "minecraft:cyan_concrete_powder", + "481": "minecraft:purple_concrete_powder", + "482": "minecraft:blue_concrete_powder", + "483": "minecraft:brown_concrete_powder", + "484": "minecraft:green_concrete_powder", + "485": "minecraft:red_concrete_powder", + "486": "minecraft:black_concrete_powder", + "487": "minecraft:turtle_egg", + "488": "minecraft:dead_tube_coral_block", + "489": "minecraft:dead_brain_coral_block", + "490": "minecraft:dead_bubble_coral_block", + "491": "minecraft:dead_fire_coral_block", + "492": "minecraft:dead_horn_coral_block", + "493": "minecraft:tube_coral_block", + "494": "minecraft:brain_coral_block", + "495": "minecraft:bubble_coral_block", + "496": "minecraft:fire_coral_block", + "497": "minecraft:horn_coral_block", + "498": "minecraft:tube_coral", + "499": "minecraft:brain_coral", + "500": "minecraft:bubble_coral", + "501": "minecraft:fire_coral", + "502": "minecraft:horn_coral", + "503": "minecraft:dead_brain_coral", + "504": "minecraft:dead_bubble_coral", + "505": "minecraft:dead_fire_coral", + "506": "minecraft:dead_horn_coral", + "507": "minecraft:dead_tube_coral", + "508": "minecraft:tube_coral_fan", + "509": "minecraft:brain_coral_fan", + "510": "minecraft:bubble_coral_fan", + "511": "minecraft:fire_coral_fan", + "512": "minecraft:horn_coral_fan", + "513": "minecraft:dead_tube_coral_fan", + "514": "minecraft:dead_brain_coral_fan", + "515": "minecraft:dead_bubble_coral_fan", + "516": "minecraft:dead_fire_coral_fan", + "517": "minecraft:dead_horn_coral_fan", + "518": "minecraft:blue_ice", + "519": "minecraft:conduit", + "520": "minecraft:polished_granite_stairs", + "521": "minecraft:smooth_red_sandstone_stairs", + "522": "minecraft:mossy_stone_brick_stairs", + "523": "minecraft:polished_diorite_stairs", + "524": "minecraft:mossy_cobblestone_stairs", + "525": "minecraft:end_stone_brick_stairs", + "526": "minecraft:stone_stairs", + "527": "minecraft:smooth_sandstone_stairs", + "528": "minecraft:smooth_quartz_stairs", + "529": "minecraft:granite_stairs", + "530": "minecraft:andesite_stairs", + "531": "minecraft:red_nether_brick_stairs", + "532": "minecraft:polished_andesite_stairs", + "533": "minecraft:diorite_stairs", + "534": "minecraft:polished_granite_slab", + "535": "minecraft:smooth_red_sandstone_slab", + "536": "minecraft:mossy_stone_brick_slab", + "537": "minecraft:polished_diorite_slab", + "538": "minecraft:mossy_cobblestone_slab", + "539": "minecraft:end_stone_brick_slab", + "540": "minecraft:smooth_sandstone_slab", + "541": "minecraft:smooth_quartz_slab", + "542": "minecraft:granite_slab", + "543": "minecraft:andesite_slab", + "544": "minecraft:red_nether_brick_slab", + "545": "minecraft:polished_andesite_slab", + "546": "minecraft:diorite_slab", + "547": "minecraft:scaffolding", + "548": "minecraft:iron_door", + "549": "minecraft:oak_door", + "550": "minecraft:spruce_door", + "551": "minecraft:birch_door", + "552": "minecraft:jungle_door", + "553": "minecraft:acacia_door", + "554": "minecraft:dark_oak_door", + "555": "minecraft:crimson_door", + "556": "minecraft:warped_door", + "557": "minecraft:repeater", + "558": "minecraft:comparator", + "559": "minecraft:structure_block", + "560": "minecraft:jigsaw", + "561": "minecraft:turtle_helmet", + "562": "minecraft:scute", + "563": "minecraft:iron_shovel", + "564": "minecraft:iron_pickaxe", + "565": "minecraft:iron_axe", + "566": "minecraft:flint_and_steel", + "567": "minecraft:apple", + "568": "minecraft:bow", + "569": "minecraft:arrow", + "570": "minecraft:coal", + "571": "minecraft:charcoal", + "572": "minecraft:diamond", + "573": "minecraft:iron_ingot", + "574": "minecraft:gold_ingot", + "575": "minecraft:iron_sword", + "576": "minecraft:wooden_sword", + "577": "minecraft:wooden_shovel", + "578": "minecraft:wooden_pickaxe", + "579": "minecraft:wooden_axe", + "580": "minecraft:stone_sword", + "581": "minecraft:stone_shovel", + "582": "minecraft:stone_pickaxe", + "583": "minecraft:stone_axe", + "584": "minecraft:diamond_sword", + "585": "minecraft:diamond_shovel", + "586": "minecraft:diamond_pickaxe", + "587": "minecraft:diamond_axe", + "588": "minecraft:stick", + "589": "minecraft:bowl", + "590": "minecraft:mushroom_stew", + "591": "minecraft:golden_sword", + "592": "minecraft:golden_shovel", + "593": "minecraft:golden_pickaxe", + "594": "minecraft:golden_axe", + "595": "minecraft:netherite_sword", + "596": "minecraft:netherite_shovel", + "597": "minecraft:netherite_pickaxe", + "598": "minecraft:netherite_axe", + "599": "minecraft:string", + "600": "minecraft:feather", + "601": "minecraft:gunpowder", + "602": "minecraft:wooden_hoe", + "603": "minecraft:stone_hoe", + "604": "minecraft:iron_hoe", + "605": "minecraft:diamond_hoe", + "606": "minecraft:golden_hoe", + "607": "minecraft:netherite_hoe", + "608": "minecraft:wheat_seeds", + "609": "minecraft:wheat", + "610": "minecraft:bread", + "611": "minecraft:leather_helmet", + "612": "minecraft:leather_chestplate", + "613": "minecraft:leather_leggings", + "614": "minecraft:leather_boots", + "615": "minecraft:chainmail_helmet", + "616": "minecraft:chainmail_chestplate", + "617": "minecraft:chainmail_leggings", + "618": "minecraft:chainmail_boots", + "619": "minecraft:iron_helmet", + "620": "minecraft:iron_chestplate", + "621": "minecraft:iron_leggings", + "622": "minecraft:iron_boots", + "623": "minecraft:diamond_helmet", + "624": "minecraft:diamond_chestplate", + "625": "minecraft:diamond_leggings", + "626": "minecraft:diamond_boots", + "627": "minecraft:golden_helmet", + "628": "minecraft:golden_chestplate", + "629": "minecraft:golden_leggings", + "630": "minecraft:golden_boots", + "631": "minecraft:netherite_helmet", + "632": "minecraft:netherite_chestplate", + "633": "minecraft:netherite_leggings", + "634": "minecraft:netherite_boots", + "635": "minecraft:flint", + "636": "minecraft:porkchop", + "637": "minecraft:cooked_porkchop", + "638": "minecraft:painting", + "639": "minecraft:golden_apple", + "640": "minecraft:enchanted_golden_apple", + "641": "minecraft:oak_sign", + "642": "minecraft:spruce_sign", + "643": "minecraft:birch_sign", + "644": "minecraft:jungle_sign", + "645": "minecraft:acacia_sign", + "646": "minecraft:dark_oak_sign", + "647": "minecraft:crimson_sign", + "648": "minecraft:warped_sign", + "649": "minecraft:bucket", + "650": "minecraft:water_bucket", + "651": "minecraft:lava_bucket", + "652": "minecraft:minecart", + "653": "minecraft:saddle", + "654": "minecraft:redstone", + "655": "minecraft:snowball", + "656": "minecraft:oak_boat", + "657": "minecraft:leather", + "658": "minecraft:milk_bucket", + "659": "minecraft:pufferfish_bucket", + "660": "minecraft:salmon_bucket", + "661": "minecraft:cod_bucket", + "662": "minecraft:tropical_fish_bucket", + "663": "minecraft:brick", + "664": "minecraft:clay_ball", + "665": "minecraft:dried_kelp_block", + "666": "minecraft:paper", + "667": "minecraft:book", + "668": "minecraft:slime_ball", + "669": "minecraft:chest_minecart", + "670": "minecraft:furnace_minecart", + "671": "minecraft:egg", + "672": "minecraft:compass", + "673": "minecraft:fishing_rod", + "674": "minecraft:clock", + "675": "minecraft:glowstone_dust", + "676": "minecraft:cod", + "677": "minecraft:salmon", + "678": "minecraft:tropical_fish", + "679": "minecraft:pufferfish", + "680": "minecraft:cooked_cod", + "681": "minecraft:cooked_salmon", + "682": "minecraft:ink_sac", + "683": "minecraft:red_dye", + "684": "minecraft:green_dye", + "685": "minecraft:cocoa_beans", + "686": "minecraft:lapis_lazuli", + "687": "minecraft:purple_dye", + "688": "minecraft:cyan_dye", + "689": "minecraft:light_gray_dye", + "690": "minecraft:gray_dye", + "691": "minecraft:pink_dye", + "692": "minecraft:lime_dye", + "693": "minecraft:yellow_dye", + "694": "minecraft:light_blue_dye", + "695": "minecraft:magenta_dye", + "696": "minecraft:orange_dye", + "697": "minecraft:bone_meal", + "698": "minecraft:blue_dye", + "699": "minecraft:brown_dye", + "700": "minecraft:black_dye", + "701": "minecraft:white_dye", + "702": "minecraft:bone", + "703": "minecraft:sugar", + "704": "minecraft:cake", + "705": "minecraft:white_bed", + "706": "minecraft:orange_bed", + "707": "minecraft:magenta_bed", + "708": "minecraft:light_blue_bed", + "709": "minecraft:yellow_bed", + "710": "minecraft:lime_bed", + "711": "minecraft:pink_bed", + "712": "minecraft:gray_bed", + "713": "minecraft:light_gray_bed", + "714": "minecraft:cyan_bed", + "715": "minecraft:purple_bed", + "716": "minecraft:blue_bed", + "717": "minecraft:brown_bed", + "718": "minecraft:green_bed", + "719": "minecraft:red_bed", + "720": "minecraft:black_bed", + "721": "minecraft:cookie", + "722": "minecraft:filled_map", + "723": "minecraft:shears", + "724": "minecraft:melon_slice", + "725": "minecraft:dried_kelp", + "726": "minecraft:pumpkin_seeds", + "727": "minecraft:melon_seeds", + "728": "minecraft:beef", + "729": "minecraft:cooked_beef", + "730": "minecraft:chicken", + "731": "minecraft:cooked_chicken", + "732": "minecraft:rotten_flesh", + "733": "minecraft:ender_pearl", + "734": "minecraft:blaze_rod", + "735": "minecraft:ghast_tear", + "736": "minecraft:gold_nugget", + "737": "minecraft:nether_wart", + "738": "minecraft:potion", + "739": "minecraft:glass_bottle", + "740": "minecraft:spider_eye", + "741": "minecraft:fermented_spider_eye", + "742": "minecraft:blaze_powder", + "743": "minecraft:magma_cream", + "744": "minecraft:brewing_stand", + "745": "minecraft:cauldron", + "746": "minecraft:ender_eye", + "747": "minecraft:glistering_melon_slice", + "748": "minecraft:bat_spawn_egg", + "749": "minecraft:bee_spawn_egg", + "750": "minecraft:blaze_spawn_egg", + "751": "minecraft:cat_spawn_egg", + "752": "minecraft:cave_spider_spawn_egg", + "753": "minecraft:chicken_spawn_egg", + "754": "minecraft:cod_spawn_egg", + "755": "minecraft:cow_spawn_egg", + "756": "minecraft:creeper_spawn_egg", + "757": "minecraft:dolphin_spawn_egg", + "758": "minecraft:donkey_spawn_egg", + "759": "minecraft:drowned_spawn_egg", + "760": "minecraft:elder_guardian_spawn_egg", + "761": "minecraft:enderman_spawn_egg", + "762": "minecraft:endermite_spawn_egg", + "763": "minecraft:evoker_spawn_egg", + "764": "minecraft:fox_spawn_egg", + "765": "minecraft:ghast_spawn_egg", + "766": "minecraft:guardian_spawn_egg", + "767": "minecraft:hoglin_spawn_egg", + "768": "minecraft:horse_spawn_egg", + "769": "minecraft:husk_spawn_egg", + "770": "minecraft:llama_spawn_egg", + "771": "minecraft:magma_cube_spawn_egg", + "772": "minecraft:mooshroom_spawn_egg", + "773": "minecraft:mule_spawn_egg", + "774": "minecraft:ocelot_spawn_egg", + "775": "minecraft:panda_spawn_egg", + "776": "minecraft:parrot_spawn_egg", + "777": "minecraft:phantom_spawn_egg", + "778": "minecraft:pig_spawn_egg", + "779": "minecraft:piglin_spawn_egg", + "780": "minecraft:pillager_spawn_egg", + "781": "minecraft:polar_bear_spawn_egg", + "782": "minecraft:pufferfish_spawn_egg", + "783": "minecraft:rabbit_spawn_egg", + "784": "minecraft:ravager_spawn_egg", + "785": "minecraft:salmon_spawn_egg", + "786": "minecraft:sheep_spawn_egg", + "787": "minecraft:shulker_spawn_egg", + "788": "minecraft:silverfish_spawn_egg", + "789": "minecraft:skeleton_spawn_egg", + "790": "minecraft:skeleton_horse_spawn_egg", + "791": "minecraft:slime_spawn_egg", + "792": "minecraft:spider_spawn_egg", + "793": "minecraft:squid_spawn_egg", + "794": "minecraft:stray_spawn_egg", + "795": "minecraft:strider_spawn_egg", + "796": "minecraft:trader_llama_spawn_egg", + "797": "minecraft:tropical_fish_spawn_egg", + "798": "minecraft:turtle_spawn_egg", + "799": "minecraft:vex_spawn_egg", + "800": "minecraft:villager_spawn_egg", + "801": "minecraft:vindicator_spawn_egg", + "802": "minecraft:wandering_trader_spawn_egg", + "803": "minecraft:witch_spawn_egg", + "804": "minecraft:wither_skeleton_spawn_egg", + "805": "minecraft:wolf_spawn_egg", + "806": "minecraft:zombie_spawn_egg", + "807": "minecraft:zombie_horse_spawn_egg", + "808": "minecraft:zombified_piglin_spawn_egg", + "809": "minecraft:zombie_villager_spawn_egg", + "810": "minecraft:experience_bottle", + "811": "minecraft:fire_charge", + "812": "minecraft:writable_book", + "813": "minecraft:written_book", + "814": "minecraft:emerald", + "815": "minecraft:item_frame", + "816": "minecraft:flower_pot", + "817": "minecraft:carrot", + "818": "minecraft:potato", + "819": "minecraft:baked_potato", + "820": "minecraft:poisonous_potato", + "821": "minecraft:map", + "822": "minecraft:golden_carrot", + "823": "minecraft:skeleton_skull", + "824": "minecraft:wither_skeleton_skull", + "825": "minecraft:player_head", + "826": "minecraft:zombie_head", + "827": "minecraft:creeper_head", + "828": "minecraft:dragon_head", + "829": "minecraft:carrot_on_a_stick", + "830": "minecraft:warped_fungus_on_a_stick", + "831": "minecraft:nether_star", + "832": "minecraft:pumpkin_pie", + "833": "minecraft:firework_rocket", + "834": "minecraft:firework_star", + "835": "minecraft:enchanted_book", + "836": "minecraft:nether_brick", + "837": "minecraft:quartz", + "838": "minecraft:tnt_minecart", + "839": "minecraft:hopper_minecart", + "840": "minecraft:prismarine_shard", + "841": "minecraft:prismarine_crystals", + "842": "minecraft:rabbit", + "843": "minecraft:cooked_rabbit", + "844": "minecraft:rabbit_stew", + "845": "minecraft:rabbit_foot", + "846": "minecraft:rabbit_hide", + "847": "minecraft:armor_stand", + "848": "minecraft:iron_horse_armor", + "849": "minecraft:golden_horse_armor", + "850": "minecraft:diamond_horse_armor", + "851": "minecraft:leather_horse_armor", + "852": "minecraft:lead", + "853": "minecraft:name_tag", + "854": "minecraft:command_block_minecart", + "855": "minecraft:mutton", + "856": "minecraft:cooked_mutton", + "857": "minecraft:white_banner", + "858": "minecraft:orange_banner", + "859": "minecraft:magenta_banner", + "860": "minecraft:light_blue_banner", + "861": "minecraft:yellow_banner", + "862": "minecraft:lime_banner", + "863": "minecraft:pink_banner", + "864": "minecraft:gray_banner", + "865": "minecraft:light_gray_banner", + "866": "minecraft:cyan_banner", + "867": "minecraft:purple_banner", + "868": "minecraft:blue_banner", + "869": "minecraft:brown_banner", + "870": "minecraft:green_banner", + "871": "minecraft:red_banner", + "872": "minecraft:black_banner", + "873": "minecraft:end_crystal", + "874": "minecraft:chorus_fruit", + "875": "minecraft:popped_chorus_fruit", + "876": "minecraft:beetroot", + "877": "minecraft:beetroot_seeds", + "878": "minecraft:beetroot_soup", + "879": "minecraft:dragon_breath", + "880": "minecraft:splash_potion", + "881": "minecraft:spectral_arrow", + "882": "minecraft:tipped_arrow", + "883": "minecraft:lingering_potion", + "884": "minecraft:shield", + "885": "minecraft:elytra", + "886": "minecraft:spruce_boat", + "887": "minecraft:birch_boat", + "888": "minecraft:jungle_boat", + "889": "minecraft:acacia_boat", + "890": "minecraft:dark_oak_boat", + "891": "minecraft:totem_of_undying", + "892": "minecraft:shulker_shell", + "893": "minecraft:iron_nugget", + "894": "minecraft:knowledge_book", + "895": "minecraft:debug_stick", + "896": "minecraft:music_disc_13", + "897": "minecraft:music_disc_cat", + "898": "minecraft:music_disc_blocks", + "899": "minecraft:music_disc_chirp", + "900": "minecraft:music_disc_far", + "901": "minecraft:music_disc_mall", + "902": "minecraft:music_disc_mellohi", + "903": "minecraft:music_disc_stal", + "904": "minecraft:music_disc_strad", + "905": "minecraft:music_disc_ward", + "906": "minecraft:music_disc_11", + "907": "minecraft:music_disc_wait", + "908": "minecraft:trident", + "909": "minecraft:phantom_membrane", + "910": "minecraft:nautilus_shell", + "911": "minecraft:heart_of_the_sea", + "912": "minecraft:crossbow", + "913": "minecraft:suspicious_stew", + "914": "minecraft:loom", + "915": "minecraft:flower_banner_pattern", + "916": "minecraft:creeper_banner_pattern", + "917": "minecraft:skull_banner_pattern", + "918": "minecraft:mojang_banner_pattern", + "919": "minecraft:globe_banner_pattern", + "920": "minecraft:composter", + "921": "minecraft:barrel", + "922": "minecraft:smoker", + "923": "minecraft:blast_furnace", + "924": "minecraft:cartography_table", + "925": "minecraft:fletching_table", + "926": "minecraft:grindstone", + "927": "minecraft:lectern", + "928": "minecraft:smithing_table", + "929": "minecraft:stonecutter", + "930": "minecraft:bell", + "931": "minecraft:lantern", + "932": "minecraft:soul_fire_lantern", + "933": "minecraft:sweet_berries", + "934": "minecraft:campfire", + "935": "minecraft:shroomlight", + "936": "minecraft:honeycomb", + "937": "minecraft:bee_nest", + "938": "minecraft:beehive", + "939": "minecraft:honey_bottle", + "940": "minecraft:honey_block", + "941": "minecraft:honeycomb_block", + "942": "minecraft:lodestone", + "943": "minecraft:netherite_block", + "944": "minecraft:netherite_stairs", + "945": "minecraft:ancient_debris", + "946": "minecraft:netherite_ingot", + "947": "minecraft:netherite_scrap", + "948": "minecraft:target", + "949": "minecraft:crying_obsidian", + "950": "minecraft:book_box", + "951": "minecraft:respawn_anchor", + "952": "minecraft:footprint", + "953": "minecraft:cursor", + "954": "minecraft:fine_item" + }, + "sounds": [ + "ambient.cave", + "ambient.crimson_forest.additions", + "ambient.crimson_forest.loop", + "ambient.crimson_forest.mood", + "ambient.nether_wastes.additions", + "ambient.nether_wastes.loop", + "ambient.nether_wastes.mood", + "ambient.soul_sand_valley.additions", + "ambient.soul_sand_valley.loop", + "ambient.soul_sand_valley.mood", + "ambient.warped_forest.additions", + "ambient.warped_forest.loop", + "ambient.warped_forest.mood", + "ambient.underwater.enter", + "ambient.underwater.exit", + "ambient.underwater.loop", + "ambient.underwater.loop.additions", + "ambient.underwater.loop.additions.rare", + "ambient.underwater.loop.additions.ultra_rare", + "block.ancient_debris.break", + "block.ancient_debris.step", + "block.ancient_debris.place", + "block.ancient_debris.hit", + "block.ancient_debris.fall", + "block.anvil.break", + "block.anvil.destroy", + "block.anvil.fall", + "block.anvil.hit", + "block.anvil.land", + "block.anvil.place", + "block.anvil.step", + "block.anvil.use", + "item.armor.equip_chain", + "item.armor.equip_diamond", + "item.armor.equip_elytra", + "item.armor.equip_generic", + "item.armor.equip_gold", + "item.armor.equip_iron", + "item.armor.equip_leather", + "item.armor.equip_netherite", + "item.armor.equip_turtle", + "entity.armor_stand.break", + "entity.armor_stand.fall", + "entity.armor_stand.hit", + "entity.armor_stand.place", + "entity.arrow.hit", + "entity.arrow.hit_player", + "entity.arrow.shoot", + "item.axe.strip", + "block.bamboo.break", + "block.bamboo.fall", + "block.bamboo.hit", + "block.bamboo.place", + "block.bamboo.step", + "block.bamboo_sapling.break", + "block.bamboo_sapling.hit", + "block.bamboo_sapling.place", + "block.barrel.close", + "block.barrel.open", + "block.basalt.break", + "block.basalt.step", + "block.basalt.place", + "block.basalt.hit", + "block.basalt.fall", + "entity.bat.ambient", + "entity.bat.death", + "entity.bat.hurt", + "entity.bat.loop", + "entity.bat.takeoff", + "block.beacon.activate", + "block.beacon.ambient", + "block.beacon.deactivate", + "block.beacon.power_select", + "entity.bee.death", + "entity.bee.hurt", + "entity.bee.loop_aggressive", + "entity.bee.loop", + "entity.bee.sting", + "entity.bee.pollinate", + "block.beehive.drip", + "block.beehive.enter", + "block.beehive.exit", + "block.beehive.shear", + "block.beehive.work", + "block.bell.use", + "block.bell.resonate", + "entity.blaze.ambient", + "entity.blaze.burn", + "entity.blaze.death", + "entity.blaze.hurt", + "entity.blaze.shoot", + "entity.boat.paddle_land", + "entity.boat.paddle_water", + "block.bone_block.break", + "block.bone_block.fall", + "block.bone_block.hit", + "block.bone_block.place", + "block.bone_block.step", + "item.book.page_turn", + "item.book.put", + "block.blastfurnace.fire_crackle", + "item.bottle.empty", + "item.bottle.fill", + "item.bottle.fill_dragonbreath", + "block.brewing_stand.brew", + "block.bubble_column.bubble_pop", + "block.bubble_column.upwards_ambient", + "block.bubble_column.upwards_inside", + "block.bubble_column.whirlpool_ambient", + "block.bubble_column.whirlpool_inside", + "item.bucket.empty", + "item.bucket.empty_fish", + "item.bucket.empty_lava", + "item.bucket.fill", + "item.bucket.fill_fish", + "item.bucket.fill_lava", + "block.campfire.crackle", + "entity.cat.ambient", + "entity.cat.stray_ambient", + "entity.cat.death", + "entity.cat.eat", + "entity.cat.hiss", + "entity.cat.beg_for_food", + "entity.cat.hurt", + "entity.cat.purr", + "entity.cat.purreow", + "block.chest.close", + "block.chest.locked", + "block.chest.open", + "entity.chicken.ambient", + "entity.chicken.death", + "entity.chicken.egg", + "entity.chicken.hurt", + "entity.chicken.step", + "block.chorus_flower.death", + "block.chorus_flower.grow", + "item.chorus_fruit.teleport", + "entity.cod.ambient", + "entity.cod.death", + "entity.cod.flop", + "entity.cod.hurt", + "block.comparator.click", + "block.composter.empty", + "block.composter.fill", + "block.composter.fill_success", + "block.composter.ready", + "block.conduit.activate", + "block.conduit.ambient", + "block.conduit.ambient.short", + "block.conduit.attack.target", + "block.conduit.deactivate", + "block.coral_block.break", + "block.coral_block.fall", + "block.coral_block.hit", + "block.coral_block.place", + "block.coral_block.step", + "entity.cow.ambient", + "entity.cow.death", + "entity.cow.hurt", + "entity.cow.milk", + "entity.cow.step", + "entity.creeper.death", + "entity.creeper.hurt", + "entity.creeper.primed", + "block.crop.break", + "item.crop.plant", + "item.crossbow.hit", + "item.crossbow.loading_end", + "item.crossbow.loading_middle", + "item.crossbow.loading_start", + "item.crossbow.quick_charge_1", + "item.crossbow.quick_charge_2", + "item.crossbow.quick_charge_3", + "item.crossbow.shoot", + "block.dispenser.dispense", + "block.dispenser.fail", + "block.dispenser.launch", + "entity.dolphin.ambient", + "entity.dolphin.ambient_water", + "entity.dolphin.attack", + "entity.dolphin.death", + "entity.dolphin.eat", + "entity.dolphin.hurt", + "entity.dolphin.jump", + "entity.dolphin.play", + "entity.dolphin.splash", + "entity.dolphin.swim", + "entity.donkey.ambient", + "entity.donkey.angry", + "entity.donkey.chest", + "entity.donkey.death", + "entity.donkey.hurt", + "entity.drowned.ambient", + "entity.drowned.ambient_water", + "entity.drowned.death", + "entity.drowned.death_water", + "entity.drowned.hurt", + "entity.drowned.hurt_water", + "entity.drowned.shoot", + "entity.drowned.step", + "entity.drowned.swim", + "entity.egg.throw", + "entity.elder_guardian.ambient", + "entity.elder_guardian.ambient_land", + "entity.elder_guardian.curse", + "entity.elder_guardian.death", + "entity.elder_guardian.death_land", + "entity.elder_guardian.flop", + "entity.elder_guardian.hurt", + "entity.elder_guardian.hurt_land", + "item.elytra.flying", + "block.enchantment_table.use", + "block.ender_chest.close", + "block.ender_chest.open", + "entity.ender_dragon.ambient", + "entity.ender_dragon.death", + "entity.dragon_fireball.explode", + "entity.ender_dragon.flap", + "entity.ender_dragon.growl", + "entity.ender_dragon.hurt", + "entity.ender_dragon.shoot", + "entity.ender_eye.death", + "entity.ender_eye.launch", + "entity.enderman.ambient", + "entity.enderman.death", + "entity.enderman.hurt", + "entity.enderman.scream", + "entity.enderman.stare", + "entity.enderman.teleport", + "entity.endermite.ambient", + "entity.endermite.death", + "entity.endermite.hurt", + "entity.endermite.step", + "entity.ender_pearl.throw", + "block.end_gateway.spawn", + "block.end_portal_frame.fill", + "block.end_portal.spawn", + "entity.evoker.ambient", + "entity.evoker.cast_spell", + "entity.evoker.celebrate", + "entity.evoker.death", + "entity.evoker_fangs.attack", + "entity.evoker.hurt", + "entity.evoker.prepare_attack", + "entity.evoker.prepare_summon", + "entity.evoker.prepare_wololo", + "entity.experience_bottle.throw", + "entity.experience_orb.pickup", + "block.fence_gate.close", + "block.fence_gate.open", + "item.firecharge.use", + "entity.firework_rocket.blast", + "entity.firework_rocket.blast_far", + "entity.firework_rocket.large_blast", + "entity.firework_rocket.large_blast_far", + "entity.firework_rocket.launch", + "entity.firework_rocket.shoot", + "entity.firework_rocket.twinkle", + "entity.firework_rocket.twinkle_far", + "block.fire.ambient", + "block.fire.extinguish", + "entity.fish.swim", + "entity.fishing_bobber.retrieve", + "entity.fishing_bobber.splash", + "entity.fishing_bobber.throw", + "item.flintandsteel.use", + "entity.fox.aggro", + "entity.fox.ambient", + "entity.fox.bite", + "entity.fox.death", + "entity.fox.eat", + "entity.fox.hurt", + "entity.fox.screech", + "entity.fox.sleep", + "entity.fox.sniff", + "entity.fox.spit", + "block.roots.break", + "block.roots.step", + "block.roots.place", + "block.roots.hit", + "block.roots.fall", + "block.furnace.fire_crackle", + "entity.generic.big_fall", + "entity.generic.burn", + "entity.generic.death", + "entity.generic.drink", + "entity.generic.eat", + "entity.generic.explode", + "entity.generic.extinguish_fire", + "entity.generic.hurt", + "entity.generic.small_fall", + "entity.generic.splash", + "entity.generic.swim", + "entity.ghast.ambient", + "entity.ghast.death", + "entity.ghast.hurt", + "entity.ghast.scream", + "entity.ghast.shoot", + "entity.ghast.warn", + "block.glass.break", + "block.glass.fall", + "block.glass.hit", + "block.glass.place", + "block.glass.step", + "block.grass.break", + "block.grass.fall", + "block.grass.hit", + "block.grass.place", + "block.grass.step", + "block.gravel.break", + "block.gravel.fall", + "block.gravel.hit", + "block.gravel.place", + "block.gravel.step", + "block.grindstone.use", + "entity.guardian.ambient", + "entity.guardian.ambient_land", + "entity.guardian.attack", + "entity.guardian.death", + "entity.guardian.death_land", + "entity.guardian.flop", + "entity.guardian.hurt", + "entity.guardian.hurt_land", + "item.hoe.till", + "entity.hoglin.ambient", + "entity.hoglin.angry", + "entity.hoglin.attack", + "entity.hoglin.death", + "entity.hoglin.hurt", + "entity.hoglin.retreat", + "entity.hoglin.step", + "block.honey_block.break", + "block.honey_block.fall", + "block.honey_block.hit", + "block.honey_block.place", + "block.honey_block.slide", + "block.honey_block.step", + "item.honey_bottle.drink", + "entity.horse.ambient", + "entity.horse.angry", + "entity.horse.armor", + "entity.horse.breathe", + "entity.horse.death", + "entity.horse.eat", + "entity.horse.gallop", + "entity.horse.hurt", + "entity.horse.jump", + "entity.horse.land", + "entity.horse.saddle", + "entity.horse.step", + "entity.horse.step_wood", + "entity.hostile.big_fall", + "entity.hostile.death", + "entity.hostile.hurt", + "entity.hostile.small_fall", + "entity.hostile.splash", + "entity.hostile.swim", + "entity.husk.ambient", + "entity.husk.converted_to_zombie", + "entity.husk.death", + "entity.husk.hurt", + "entity.husk.step", + "entity.illusioner.ambient", + "entity.illusioner.cast_spell", + "entity.illusioner.death", + "entity.illusioner.hurt", + "entity.illusioner.mirror_move", + "entity.illusioner.prepare_blindness", + "entity.illusioner.prepare_mirror", + "block.iron_door.close", + "block.iron_door.open", + "entity.iron_golem.attack", + "entity.iron_golem.damage", + "entity.iron_golem.death", + "entity.iron_golem.hurt", + "entity.iron_golem.repair", + "entity.iron_golem.step", + "block.iron_trapdoor.close", + "block.iron_trapdoor.open", + "entity.item_frame.add_item", + "entity.item_frame.break", + "entity.item_frame.place", + "entity.item_frame.remove_item", + "entity.item_frame.rotate_item", + "entity.item.break", + "entity.item.pickup", + "block.ladder.break", + "block.ladder.fall", + "block.ladder.hit", + "block.ladder.place", + "block.ladder.step", + "block.lantern.break", + "block.lantern.fall", + "block.lantern.hit", + "block.lantern.place", + "block.lantern.step", + "block.lava.ambient", + "block.lava.extinguish", + "block.lava.pop", + "entity.leash_knot.break", + "entity.leash_knot.place", + "block.lever.click", + "entity.lightning_bolt.impact", + "entity.lightning_bolt.thunder", + "entity.lingering_potion.throw", + "entity.llama.ambient", + "entity.llama.angry", + "entity.llama.chest", + "entity.llama.death", + "entity.llama.eat", + "entity.llama.hurt", + "entity.llama.spit", + "entity.llama.step", + "entity.llama.swag", + "entity.magma_cube.death_small", + "block.lodestone.break", + "block.lodestone.step", + "block.lodestone.place", + "block.lodestone.hit", + "block.lodestone.fall", + "item.lodestone_compass.lock", + "entity.magma_cube.death", + "entity.magma_cube.hurt", + "entity.magma_cube.hurt_small", + "entity.magma_cube.jump", + "entity.magma_cube.squish", + "entity.magma_cube.squish_small", + "block.metal.break", + "block.metal.fall", + "block.metal.hit", + "block.metal.place", + "block.metal_pressure_plate.click_off", + "block.metal_pressure_plate.click_on", + "block.metal.step", + "entity.minecart.inside", + "entity.minecart.riding", + "entity.mooshroom.convert", + "entity.mooshroom.eat", + "entity.mooshroom.milk", + "entity.mooshroom.suspicious_milk", + "entity.mooshroom.shear", + "entity.mule.ambient", + "entity.mule.chest", + "entity.mule.death", + "entity.mule.hurt", + "music.creative", + "music.credits", + "music_disc.11", + "music_disc.13", + "music_disc.blocks", + "music_disc.cat", + "music_disc.chirp", + "music_disc.far", + "music_disc.mall", + "music_disc.mellohi", + "music_disc.stal", + "music_disc.strad", + "music_disc.wait", + "music_disc.ward", + "music.dragon", + "music.end", + "music.game", + "music.menu", + "music.nether", + "music.under_water", + "block.nether_bricks.break", + "block.nether_bricks.step", + "block.nether_bricks.place", + "block.nether_bricks.hit", + "block.nether_bricks.fall", + "block.nether_wart.break", + "item.nether_wart.plant", + "block.stem.break", + "block.stem.step", + "block.stem.place", + "block.stem.hit", + "block.stem.fall", + "block.nylium.break", + "block.nylium.step", + "block.nylium.place", + "block.nylium.hit", + "block.nylium.fall", + "block.nether_sprouts.break", + "block.nether_sprouts.step", + "block.nether_sprouts.place", + "block.nether_sprouts.hit", + "block.nether_sprouts.fall", + "block.fungus.break", + "block.fungus.step", + "block.fungus.place", + "block.fungus.hit", + "block.fungus.fall", + "block.weeping_vines.break", + "block.weeping_vines.step", + "block.weeping_vines.place", + "block.weeping_vines.hit", + "block.weeping_vines.fall", + "block.wart_block.break", + "block.wart_block.step", + "block.wart_block.place", + "block.wart_block.hit", + "block.wart_block.fall", + "block.netherite_block.break", + "block.netherite_block.step", + "block.netherite_block.place", + "block.netherite_block.hit", + "block.netherite_block.fall", + "block.netherrack.break", + "block.netherrack.step", + "block.netherrack.place", + "block.netherrack.hit", + "block.netherrack.fall", + "block.note_block.basedrum", + "block.note_block.bass", + "block.note_block.bell", + "block.note_block.chime", + "block.note_block.flute", + "block.note_block.guitar", + "block.note_block.harp", + "block.note_block.hat", + "block.note_block.pling", + "block.note_block.snare", + "block.note_block.xylophone", + "block.note_block.iron_xylophone", + "block.note_block.cow_bell", + "block.note_block.didgeridoo", + "block.note_block.bit", + "block.note_block.banjo", + "entity.ocelot.hurt", + "entity.ocelot.ambient", + "entity.ocelot.death", + "entity.painting.break", + "entity.painting.place", + "entity.panda.pre_sneeze", + "entity.panda.sneeze", + "entity.panda.ambient", + "entity.panda.death", + "entity.panda.eat", + "entity.panda.step", + "entity.panda.cant_breed", + "entity.panda.aggressive_ambient", + "entity.panda.worried_ambient", + "entity.panda.hurt", + "entity.panda.bite", + "entity.parrot.ambient", + "entity.parrot.death", + "entity.parrot.eat", + "entity.parrot.fly", + "entity.parrot.hurt", + "entity.parrot.imitate.blaze", + "entity.parrot.imitate.creeper", + "entity.parrot.imitate.drowned", + "entity.parrot.imitate.elder_guardian", + "entity.parrot.imitate.ender_dragon", + "entity.parrot.imitate.endermite", + "entity.parrot.imitate.evoker", + "entity.parrot.imitate.ghast", + "entity.parrot.imitate.guardian", + "entity.parrot.imitate.husk", + "entity.parrot.imitate.illusioner", + "entity.parrot.imitate.magma_cube", + "entity.parrot.imitate.phantom", + "entity.parrot.imitate.pillager", + "entity.parrot.imitate.ravager", + "entity.parrot.imitate.shulker", + "entity.parrot.imitate.silverfish", + "entity.parrot.imitate.skeleton", + "entity.parrot.imitate.slime", + "entity.parrot.imitate.spider", + "entity.parrot.imitate.stray", + "entity.parrot.imitate.vex", + "entity.parrot.imitate.vindicator", + "entity.parrot.imitate.witch", + "entity.parrot.imitate.wither", + "entity.parrot.imitate.wither_skeleton", + "entity.parrot.imitate.zombie", + "entity.parrot.imitate.zombie_villager", + "entity.parrot.step", + "entity.phantom.ambient", + "entity.phantom.bite", + "entity.phantom.death", + "entity.phantom.flap", + "entity.phantom.hurt", + "entity.phantom.swoop", + "entity.pig.ambient", + "entity.pig.death", + "entity.pig.hurt", + "entity.pig.saddle", + "entity.pig.step", + "entity.piglin.admiring_item", + "entity.piglin.ambient", + "entity.piglin.angry", + "entity.piglin.celebrate", + "entity.piglin.death", + "entity.piglin.jealous", + "entity.piglin.hurt", + "entity.piglin.retreat", + "entity.piglin.step", + "entity.piglin.converted_to_zombified", + "entity.pillager.ambient", + "entity.pillager.celebrate", + "entity.pillager.death", + "entity.pillager.hurt", + "block.piston.contract", + "block.piston.extend", + "entity.player.attack.crit", + "entity.player.attack.knockback", + "entity.player.attack.nodamage", + "entity.player.attack.strong", + "entity.player.attack.sweep", + "entity.player.attack.weak", + "entity.player.big_fall", + "entity.player.breath", + "entity.player.burp", + "entity.player.death", + "entity.player.hurt", + "entity.player.hurt_drown", + "entity.player.hurt_on_fire", + "entity.player.hurt_sweet_berry_bush", + "entity.player.levelup", + "entity.player.small_fall", + "entity.player.splash", + "entity.player.splash.high_speed", + "entity.player.swim", + "entity.polar_bear.ambient", + "entity.polar_bear.ambient_baby", + "entity.polar_bear.death", + "entity.polar_bear.hurt", + "entity.polar_bear.step", + "entity.polar_bear.warning", + "block.portal.ambient", + "block.portal.travel", + "block.portal.trigger", + "entity.puffer_fish.ambient", + "entity.puffer_fish.blow_out", + "entity.puffer_fish.blow_up", + "entity.puffer_fish.death", + "entity.puffer_fish.flop", + "entity.puffer_fish.hurt", + "entity.puffer_fish.sting", + "block.pumpkin.carve", + "entity.rabbit.ambient", + "entity.rabbit.attack", + "entity.rabbit.death", + "entity.rabbit.hurt", + "entity.rabbit.jump", + "event.raid.horn", + "entity.ravager.ambient", + "entity.ravager.attack", + "entity.ravager.celebrate", + "entity.ravager.death", + "entity.ravager.hurt", + "entity.ravager.step", + "entity.ravager.stunned", + "entity.ravager.roar", + "block.nether_ore.break", + "block.nether_ore.fall", + "block.nether_ore.hit", + "block.nether_ore.place", + "block.nether_ore.step", + "block.redstone_torch.burnout", + "block.respawn_anchor.ambient", + "block.respawn_anchor.charge", + "block.respawn_anchor.deplete", + "block.respawn_anchor.set_spawn", + "entity.salmon.ambient", + "entity.salmon.death", + "entity.salmon.flop", + "entity.salmon.hurt", + "block.sand.break", + "block.sand.fall", + "block.sand.hit", + "block.sand.place", + "block.sand.step", + "block.scaffolding.break", + "block.scaffolding.fall", + "block.scaffolding.hit", + "block.scaffolding.place", + "block.scaffolding.step", + "entity.sheep.ambient", + "entity.sheep.death", + "entity.sheep.hurt", + "entity.sheep.shear", + "entity.sheep.step", + "item.shield.block", + "item.shield.break", + "block.shroomlight.break", + "block.shroomlight.step", + "block.shroomlight.place", + "block.shroomlight.hit", + "block.shroomlight.fall", + "item.shovel.flatten", + "entity.shulker.ambient", + "block.shulker_box.close", + "block.shulker_box.open", + "entity.shulker_bullet.hit", + "entity.shulker_bullet.hurt", + "entity.shulker.close", + "entity.shulker.death", + "entity.shulker.hurt", + "entity.shulker.hurt_closed", + "entity.shulker.open", + "entity.shulker.shoot", + "entity.shulker.teleport", + "entity.silverfish.ambient", + "entity.silverfish.death", + "entity.silverfish.hurt", + "entity.silverfish.step", + "entity.skeleton.ambient", + "entity.skeleton.death", + "entity.skeleton_horse.ambient", + "entity.skeleton_horse.death", + "entity.skeleton_horse.hurt", + "entity.skeleton_horse.swim", + "entity.skeleton_horse.ambient_water", + "entity.skeleton_horse.gallop_water", + "entity.skeleton_horse.jump_water", + "entity.skeleton_horse.step_water", + "entity.skeleton.hurt", + "entity.skeleton.shoot", + "entity.skeleton.step", + "entity.slime.attack", + "entity.slime.death", + "entity.slime.hurt", + "entity.slime.jump", + "entity.slime.squish", + "block.slime_block.break", + "block.slime_block.fall", + "block.slime_block.hit", + "block.slime_block.place", + "block.slime_block.step", + "block.soul_sand.break", + "block.soul_sand.step", + "block.soul_sand.place", + "block.soul_sand.hit", + "block.soul_sand.fall", + "block.soul_soil.break", + "block.soul_soil.step", + "block.soul_soil.place", + "block.soul_soil.hit", + "block.soul_soil.fall", + "particle.soul_escape", + "entity.strider.ambient", + "entity.strider.happy", + "entity.strider.retreat", + "entity.strider.death", + "entity.strider.hurt", + "entity.strider.step", + "entity.strider.step_lava", + "entity.strider.eat", + "entity.slime.death_small", + "entity.slime.hurt_small", + "entity.slime.jump_small", + "entity.slime.squish_small", + "block.smithing_table.use", + "block.smoker.smoke", + "entity.snowball.throw", + "block.snow.break", + "block.snow.fall", + "entity.snow_golem.ambient", + "entity.snow_golem.death", + "entity.snow_golem.hurt", + "entity.snow_golem.shoot", + "entity.snow_golem.shear", + "block.snow.hit", + "block.snow.place", + "block.snow.step", + "entity.spider.ambient", + "entity.spider.death", + "entity.spider.hurt", + "entity.spider.step", + "entity.splash_potion.break", + "entity.splash_potion.throw", + "entity.squid.ambient", + "entity.squid.death", + "entity.squid.hurt", + "entity.squid.squirt", + "block.stone.break", + "block.stone_button.click_off", + "block.stone_button.click_on", + "block.stone.fall", + "block.stone.hit", + "block.stone.place", + "block.stone_pressure_plate.click_off", + "block.stone_pressure_plate.click_on", + "block.stone.step", + "entity.stray.ambient", + "entity.stray.death", + "entity.stray.hurt", + "entity.stray.step", + "block.sweet_berry_bush.break", + "block.sweet_berry_bush.place", + "item.sweet_berries.pick_from_bush", + "enchant.thorns.hit", + "entity.tnt.primed", + "item.totem.use", + "item.trident.hit", + "item.trident.hit_ground", + "item.trident.return", + "item.trident.riptide_1", + "item.trident.riptide_2", + "item.trident.riptide_3", + "item.trident.throw", + "item.trident.thunder", + "block.tripwire.attach", + "block.tripwire.click_off", + "block.tripwire.click_on", + "block.tripwire.detach", + "entity.tropical_fish.ambient", + "entity.tropical_fish.death", + "entity.tropical_fish.flop", + "entity.tropical_fish.hurt", + "entity.turtle.ambient_land", + "entity.turtle.death", + "entity.turtle.death_baby", + "entity.turtle.egg_break", + "entity.turtle.egg_crack", + "entity.turtle.egg_hatch", + "entity.turtle.hurt", + "entity.turtle.hurt_baby", + "entity.turtle.lay_egg", + "entity.turtle.shamble", + "entity.turtle.shamble_baby", + "entity.turtle.swim", + "ui.button.click", + "ui.loom.select_pattern", + "ui.loom.take_result", + "ui.cartography_table.take_result", + "ui.stonecutter.take_result", + "ui.stonecutter.select_recipe", + "ui.toast.challenge_complete", + "ui.toast.in", + "ui.toast.out", + "entity.vex.ambient", + "entity.vex.charge", + "entity.vex.death", + "entity.vex.hurt", + "entity.villager.ambient", + "entity.villager.celebrate", + "entity.villager.death", + "entity.villager.hurt", + "entity.villager.no", + "entity.villager.trade", + "entity.villager.yes", + "entity.villager.work_armorer", + "entity.villager.work_butcher", + "entity.villager.work_cartographer", + "entity.villager.work_cleric", + "entity.villager.work_farmer", + "entity.villager.work_fisherman", + "entity.villager.work_fletcher", + "entity.villager.work_leatherworker", + "entity.villager.work_librarian", + "entity.villager.work_mason", + "entity.villager.work_shepherd", + "entity.villager.work_toolsmith", + "entity.villager.work_weaponsmith", + "entity.vindicator.ambient", + "entity.vindicator.celebrate", + "entity.vindicator.death", + "entity.vindicator.hurt", + "block.vine.step", + "block.lily_pad.place", + "entity.wandering_trader.ambient", + "entity.wandering_trader.death", + "entity.wandering_trader.disappeared", + "entity.wandering_trader.drink_milk", + "entity.wandering_trader.drink_potion", + "entity.wandering_trader.hurt", + "entity.wandering_trader.no", + "entity.wandering_trader.reappeared", + "entity.wandering_trader.trade", + "entity.wandering_trader.yes", + "block.water.ambient", + "weather.rain", + "weather.rain.above", + "block.wet_grass.break", + "block.wet_grass.fall", + "block.wet_grass.hit", + "block.wet_grass.place", + "block.wet_grass.step", + "entity.witch.ambient", + "entity.witch.celebrate", + "entity.witch.death", + "entity.witch.drink", + "entity.witch.hurt", + "entity.witch.throw", + "entity.wither.ambient", + "entity.wither.break_block", + "entity.wither.death", + "entity.wither.hurt", + "entity.wither.shoot", + "entity.wither_skeleton.ambient", + "entity.wither_skeleton.death", + "entity.wither_skeleton.hurt", + "entity.wither_skeleton.step", + "entity.wither.spawn", + "entity.wolf.ambient", + "entity.wolf.death", + "entity.wolf.growl", + "entity.wolf.howl", + "entity.wolf.hurt", + "entity.wolf.pant", + "entity.wolf.shake", + "entity.wolf.step", + "entity.wolf.whine", + "block.wooden_door.close", + "block.wooden_door.open", + "block.wooden_trapdoor.close", + "block.wooden_trapdoor.open", + "block.wood.break", + "block.wooden_button.click_off", + "block.wooden_button.click_on", + "block.wood.fall", + "block.wood.hit", + "block.wood.place", + "block.wooden_pressure_plate.click_off", + "block.wooden_pressure_plate.click_on", + "block.wood.step", + "block.wool.break", + "block.wool.fall", + "block.wool.hit", + "block.wool.place", + "block.wool.step", + "entity.zombie.ambient", + "entity.zombie.attack_wooden_door", + "entity.zombie.attack_iron_door", + "entity.zombie.break_wooden_door", + "entity.zombie.converted_to_drowned", + "entity.zombie.death", + "entity.zombie.destroy_egg", + "entity.zombie_horse.ambient", + "entity.zombie_horse.death", + "entity.zombie_horse.hurt", + "entity.zombie.hurt", + "entity.zombie.infect", + "entity.zombified_piglin.ambient", + "entity.zombified_piglin.angry", + "entity.zombified_piglin.death", + "entity.zombified_piglin.hurt", + "entity.zombie.step", + "entity.zombie_villager.ambient", + "entity.zombie_villager.converted", + "entity.zombie_villager.cure", + "entity.zombie_villager.death", + "entity.zombie_villager.hurt", + "entity.zombie_villager.step", + "nothingtoseeheremovealong:awesome_intro" + ], + "particles": [ + "ambient_entity_effect", + "angry_villager", + "barrier", + "block", + "bubble", + "cloud", + "crit", + "damage_indicator", + "dragon_breath", + "dripping_lava", + "falling_lava", + "landing_lava", + "dripping_water", + "falling_water", + "dust", + "effect", + "elder_guardian", + "enchanted_hit", + "enchant", + "end_rod", + "entity_effect", + "explosion_emitter", + "explosion", + "falling_dust", + "firework", + "fishing", + "flame", + "soul_fire_flame", + "soul", + "flash", + "happy_villager", + "composter", + "heart", + "instant_effect", + "item", + "item_slime", + "item_snowball", + "large_smoke", + "lava", + "mycelium", + "note", + "poof", + "portal", + "rain", + "smoke", + "sneeze", + "spit", + "squid_ink", + "sweep_attack", + "totem_of_undying", + "underwater", + "splash", + "witch", + "bubble_pop", + "current_down", + "bubble_column_up", + "nautilus", + "dolphin", + "campfire_cosy_smoke", + "campfire_signal_smoke", + "dripping_honey", + "falling_honey", + "landing_honey", + "falling_nectar", + "ash", + "crimson_spore", + "warped_spore", + "dripping_obsidian_tear", + "falling_obsidian_tear", + "landing_obsidian_tear", + "reverse_portal" + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/viaversion/data/mapping-3D_Shareware.json b/src/main/resources/assets/viaversion/data/mapping-3D_Shareware.json new file mode 100644 index 0000000..0402000 --- /dev/null +++ b/src/main/resources/assets/viaversion/data/mapping-3D_Shareware.json @@ -0,0 +1,13759 @@ +{ + "blockstates": { + "0": "minecraft:air", + "1": "minecraft:stone", + "2": "minecraft:granite", + "3": "minecraft:polished_granite", + "4": "minecraft:diorite", + "5": "minecraft:polished_diorite", + "6": "minecraft:andesite", + "7": "minecraft:polished_andesite", + "8": "minecraft:grass_block[snowy=true]", + "9": "minecraft:grass_block[snowy=false]", + "10": "minecraft:dirt", + "11": "minecraft:coarse_dirt", + "12": "minecraft:podzol[snowy=true]", + "13": "minecraft:podzol[snowy=false]", + "14": "minecraft:cobblestone", + "15": "minecraft:oak_planks", + "16": "minecraft:spruce_planks", + "17": "minecraft:birch_planks", + "18": "minecraft:jungle_planks", + "19": "minecraft:acacia_planks", + "20": "minecraft:dark_oak_planks", + "21": "minecraft:oak_sapling[stage=0]", + "22": "minecraft:oak_sapling[stage=1]", + "23": "minecraft:spruce_sapling[stage=0]", + "24": "minecraft:spruce_sapling[stage=1]", + "25": "minecraft:birch_sapling[stage=0]", + "26": "minecraft:birch_sapling[stage=1]", + "27": "minecraft:jungle_sapling[stage=0]", + "28": "minecraft:jungle_sapling[stage=1]", + "29": "minecraft:acacia_sapling[stage=0]", + "30": "minecraft:acacia_sapling[stage=1]", + "31": "minecraft:dark_oak_sapling[stage=0]", + "32": "minecraft:dark_oak_sapling[stage=1]", + "33": "minecraft:bedrock", + "34": "minecraft:water[level=0]", + "35": "minecraft:water[level=1]", + "36": "minecraft:water[level=2]", + "37": "minecraft:water[level=3]", + "38": "minecraft:water[level=4]", + "39": "minecraft:water[level=5]", + "40": "minecraft:water[level=6]", + "41": "minecraft:water[level=7]", + "42": "minecraft:water[level=8]", + "43": "minecraft:water[level=9]", + "44": "minecraft:water[level=10]", + "45": "minecraft:water[level=11]", + "46": "minecraft:water[level=12]", + "47": "minecraft:water[level=13]", + "48": "minecraft:water[level=14]", + "49": "minecraft:water[level=15]", + "50": "minecraft:lava[level=0]", + "51": "minecraft:lava[level=1]", + "52": "minecraft:lava[level=2]", + "53": "minecraft:lava[level=3]", + "54": "minecraft:lava[level=4]", + "55": "minecraft:lava[level=5]", + "56": "minecraft:lava[level=6]", + "57": "minecraft:lava[level=7]", + "58": "minecraft:lava[level=8]", + "59": "minecraft:lava[level=9]", + "60": "minecraft:lava[level=10]", + "61": "minecraft:lava[level=11]", + "62": "minecraft:lava[level=12]", + "63": "minecraft:lava[level=13]", + "64": "minecraft:lava[level=14]", + "65": "minecraft:lava[level=15]", + "66": "minecraft:sand", + "67": "minecraft:red_sand", + "68": "minecraft:gravel", + "69": "minecraft:gold_ore", + "70": "minecraft:iron_ore", + "71": "minecraft:coal_ore", + "72": "minecraft:oak_log[axis=x]", + "73": "minecraft:oak_log[axis=y]", + "74": "minecraft:oak_log[axis=z]", + "75": "minecraft:spruce_log[axis=x]", + "76": "minecraft:spruce_log[axis=y]", + "77": "minecraft:spruce_log[axis=z]", + "78": "minecraft:birch_log[axis=x]", + "79": "minecraft:birch_log[axis=y]", + "80": "minecraft:birch_log[axis=z]", + "81": "minecraft:jungle_log[axis=x]", + "82": "minecraft:jungle_log[axis=y]", + "83": "minecraft:jungle_log[axis=z]", + "84": "minecraft:acacia_log[axis=x]", + "85": "minecraft:acacia_log[axis=y]", + "86": "minecraft:acacia_log[axis=z]", + "87": "minecraft:dark_oak_log[axis=x]", + "88": "minecraft:dark_oak_log[axis=y]", + "89": "minecraft:dark_oak_log[axis=z]", + "90": "minecraft:stripped_spruce_log[axis=x]", + "91": "minecraft:stripped_spruce_log[axis=y]", + "92": "minecraft:stripped_spruce_log[axis=z]", + "93": "minecraft:stripped_birch_log[axis=x]", + "94": "minecraft:stripped_birch_log[axis=y]", + "95": "minecraft:stripped_birch_log[axis=z]", + "96": "minecraft:stripped_jungle_log[axis=x]", + "97": "minecraft:stripped_jungle_log[axis=y]", + "98": "minecraft:stripped_jungle_log[axis=z]", + "99": "minecraft:stripped_acacia_log[axis=x]", + "100": "minecraft:stripped_acacia_log[axis=y]", + "101": "minecraft:stripped_acacia_log[axis=z]", + "102": "minecraft:stripped_dark_oak_log[axis=x]", + "103": "minecraft:stripped_dark_oak_log[axis=y]", + "104": "minecraft:stripped_dark_oak_log[axis=z]", + "105": "minecraft:stripped_oak_log[axis=x]", + "106": "minecraft:stripped_oak_log[axis=y]", + "107": "minecraft:stripped_oak_log[axis=z]", + "108": "minecraft:oak_wood[axis=x]", + "109": "minecraft:oak_wood[axis=y]", + "110": "minecraft:oak_wood[axis=z]", + "111": "minecraft:spruce_wood[axis=x]", + "112": "minecraft:spruce_wood[axis=y]", + "113": "minecraft:spruce_wood[axis=z]", + "114": "minecraft:birch_wood[axis=x]", + "115": "minecraft:birch_wood[axis=y]", + "116": "minecraft:birch_wood[axis=z]", + "117": "minecraft:jungle_wood[axis=x]", + "118": "minecraft:jungle_wood[axis=y]", + "119": "minecraft:jungle_wood[axis=z]", + "120": "minecraft:acacia_wood[axis=x]", + "121": "minecraft:acacia_wood[axis=y]", + "122": "minecraft:acacia_wood[axis=z]", + "123": "minecraft:dark_oak_wood[axis=x]", + "124": "minecraft:dark_oak_wood[axis=y]", + "125": "minecraft:dark_oak_wood[axis=z]", + "126": "minecraft:stripped_oak_wood[axis=x]", + "127": "minecraft:stripped_oak_wood[axis=y]", + "128": "minecraft:stripped_oak_wood[axis=z]", + "129": "minecraft:stripped_spruce_wood[axis=x]", + "130": "minecraft:stripped_spruce_wood[axis=y]", + "131": "minecraft:stripped_spruce_wood[axis=z]", + "132": "minecraft:stripped_birch_wood[axis=x]", + "133": "minecraft:stripped_birch_wood[axis=y]", + "134": "minecraft:stripped_birch_wood[axis=z]", + "135": "minecraft:stripped_jungle_wood[axis=x]", + "136": "minecraft:stripped_jungle_wood[axis=y]", + "137": "minecraft:stripped_jungle_wood[axis=z]", + "138": "minecraft:stripped_acacia_wood[axis=x]", + "139": "minecraft:stripped_acacia_wood[axis=y]", + "140": "minecraft:stripped_acacia_wood[axis=z]", + "141": "minecraft:stripped_dark_oak_wood[axis=x]", + "142": "minecraft:stripped_dark_oak_wood[axis=y]", + "143": "minecraft:stripped_dark_oak_wood[axis=z]", + "144": "minecraft:oak_leaves[distance=1,persistent=true]", + "145": "minecraft:oak_leaves[distance=1,persistent=false]", + "146": "minecraft:oak_leaves[distance=2,persistent=true]", + "147": "minecraft:oak_leaves[distance=2,persistent=false]", + "148": "minecraft:oak_leaves[distance=3,persistent=true]", + "149": "minecraft:oak_leaves[distance=3,persistent=false]", + "150": "minecraft:oak_leaves[distance=4,persistent=true]", + "151": "minecraft:oak_leaves[distance=4,persistent=false]", + "152": "minecraft:oak_leaves[distance=5,persistent=true]", + "153": "minecraft:oak_leaves[distance=5,persistent=false]", + "154": "minecraft:oak_leaves[distance=6,persistent=true]", + "155": "minecraft:oak_leaves[distance=6,persistent=false]", + "156": "minecraft:oak_leaves[distance=7,persistent=true]", + "157": "minecraft:oak_leaves[distance=7,persistent=false]", + "158": "minecraft:spruce_leaves[distance=1,persistent=true]", + "159": "minecraft:spruce_leaves[distance=1,persistent=false]", + "160": "minecraft:spruce_leaves[distance=2,persistent=true]", + "161": "minecraft:spruce_leaves[distance=2,persistent=false]", + "162": "minecraft:spruce_leaves[distance=3,persistent=true]", + "163": "minecraft:spruce_leaves[distance=3,persistent=false]", + "164": "minecraft:spruce_leaves[distance=4,persistent=true]", + "165": "minecraft:spruce_leaves[distance=4,persistent=false]", + "166": "minecraft:spruce_leaves[distance=5,persistent=true]", + "167": "minecraft:spruce_leaves[distance=5,persistent=false]", + "168": "minecraft:spruce_leaves[distance=6,persistent=true]", + "169": "minecraft:spruce_leaves[distance=6,persistent=false]", + "170": "minecraft:spruce_leaves[distance=7,persistent=true]", + "171": "minecraft:spruce_leaves[distance=7,persistent=false]", + "172": "minecraft:birch_leaves[distance=1,persistent=true]", + "173": "minecraft:birch_leaves[distance=1,persistent=false]", + "174": "minecraft:birch_leaves[distance=2,persistent=true]", + "175": "minecraft:birch_leaves[distance=2,persistent=false]", + "176": "minecraft:birch_leaves[distance=3,persistent=true]", + "177": "minecraft:birch_leaves[distance=3,persistent=false]", + "178": "minecraft:birch_leaves[distance=4,persistent=true]", + "179": "minecraft:birch_leaves[distance=4,persistent=false]", + "180": "minecraft:birch_leaves[distance=5,persistent=true]", + "181": "minecraft:birch_leaves[distance=5,persistent=false]", + "182": "minecraft:birch_leaves[distance=6,persistent=true]", + "183": "minecraft:birch_leaves[distance=6,persistent=false]", + "184": "minecraft:birch_leaves[distance=7,persistent=true]", + "185": "minecraft:birch_leaves[distance=7,persistent=false]", + "186": "minecraft:jungle_leaves[distance=1,persistent=true]", + "187": "minecraft:jungle_leaves[distance=1,persistent=false]", + "188": "minecraft:jungle_leaves[distance=2,persistent=true]", + "189": "minecraft:jungle_leaves[distance=2,persistent=false]", + "190": "minecraft:jungle_leaves[distance=3,persistent=true]", + "191": "minecraft:jungle_leaves[distance=3,persistent=false]", + "192": "minecraft:jungle_leaves[distance=4,persistent=true]", + "193": "minecraft:jungle_leaves[distance=4,persistent=false]", + "194": "minecraft:jungle_leaves[distance=5,persistent=true]", + "195": "minecraft:jungle_leaves[distance=5,persistent=false]", + "196": "minecraft:jungle_leaves[distance=6,persistent=true]", + "197": "minecraft:jungle_leaves[distance=6,persistent=false]", + "198": "minecraft:jungle_leaves[distance=7,persistent=true]", + "199": "minecraft:jungle_leaves[distance=7,persistent=false]", + "200": "minecraft:acacia_leaves[distance=1,persistent=true]", + "201": "minecraft:acacia_leaves[distance=1,persistent=false]", + "202": "minecraft:acacia_leaves[distance=2,persistent=true]", + "203": "minecraft:acacia_leaves[distance=2,persistent=false]", + "204": "minecraft:acacia_leaves[distance=3,persistent=true]", + "205": "minecraft:acacia_leaves[distance=3,persistent=false]", + "206": "minecraft:acacia_leaves[distance=4,persistent=true]", + "207": "minecraft:acacia_leaves[distance=4,persistent=false]", + "208": "minecraft:acacia_leaves[distance=5,persistent=true]", + "209": "minecraft:acacia_leaves[distance=5,persistent=false]", + "210": "minecraft:acacia_leaves[distance=6,persistent=true]", + "211": "minecraft:acacia_leaves[distance=6,persistent=false]", + "212": "minecraft:acacia_leaves[distance=7,persistent=true]", + "213": "minecraft:acacia_leaves[distance=7,persistent=false]", + "214": "minecraft:dark_oak_leaves[distance=1,persistent=true]", + "215": "minecraft:dark_oak_leaves[distance=1,persistent=false]", + "216": "minecraft:dark_oak_leaves[distance=2,persistent=true]", + "217": "minecraft:dark_oak_leaves[distance=2,persistent=false]", + "218": "minecraft:dark_oak_leaves[distance=3,persistent=true]", + "219": "minecraft:dark_oak_leaves[distance=3,persistent=false]", + "220": "minecraft:dark_oak_leaves[distance=4,persistent=true]", + "221": "minecraft:dark_oak_leaves[distance=4,persistent=false]", + "222": "minecraft:dark_oak_leaves[distance=5,persistent=true]", + "223": "minecraft:dark_oak_leaves[distance=5,persistent=false]", + "224": "minecraft:dark_oak_leaves[distance=6,persistent=true]", + "225": "minecraft:dark_oak_leaves[distance=6,persistent=false]", + "226": "minecraft:dark_oak_leaves[distance=7,persistent=true]", + "227": "minecraft:dark_oak_leaves[distance=7,persistent=false]", + "228": "minecraft:sponge", + "229": "minecraft:wet_sponge", + "230": "minecraft:glass", + "231": "minecraft:lapis_ore", + "232": "minecraft:lapis_block", + "233": "minecraft:dispenser[facing=north,triggered=true]", + "234": "minecraft:dispenser[facing=north,triggered=false]", + "235": "minecraft:dispenser[facing=east,triggered=true]", + "236": "minecraft:dispenser[facing=east,triggered=false]", + "237": "minecraft:dispenser[facing=south,triggered=true]", + "238": "minecraft:dispenser[facing=south,triggered=false]", + "239": "minecraft:dispenser[facing=west,triggered=true]", + "240": "minecraft:dispenser[facing=west,triggered=false]", + "241": "minecraft:dispenser[facing=up,triggered=true]", + "242": "minecraft:dispenser[facing=up,triggered=false]", + "243": "minecraft:dispenser[facing=down,triggered=true]", + "244": "minecraft:dispenser[facing=down,triggered=false]", + "245": "minecraft:sandstone", + "246": "minecraft:chiseled_sandstone", + "247": "minecraft:cut_sandstone", + "248": "minecraft:note_block[instrument=harp,note=0,powered=true]", + "249": "minecraft:note_block[instrument=harp,note=0,powered=false]", + "250": "minecraft:note_block[instrument=harp,note=1,powered=true]", + "251": "minecraft:note_block[instrument=harp,note=1,powered=false]", + "252": "minecraft:note_block[instrument=harp,note=2,powered=true]", + "253": "minecraft:note_block[instrument=harp,note=2,powered=false]", + "254": "minecraft:note_block[instrument=harp,note=3,powered=true]", + "255": "minecraft:note_block[instrument=harp,note=3,powered=false]", + "256": "minecraft:note_block[instrument=harp,note=4,powered=true]", + "257": "minecraft:note_block[instrument=harp,note=4,powered=false]", + "258": "minecraft:note_block[instrument=harp,note=5,powered=true]", + "259": "minecraft:note_block[instrument=harp,note=5,powered=false]", + "260": "minecraft:note_block[instrument=harp,note=6,powered=true]", + "261": "minecraft:note_block[instrument=harp,note=6,powered=false]", + "262": "minecraft:note_block[instrument=harp,note=7,powered=true]", + "263": "minecraft:note_block[instrument=harp,note=7,powered=false]", + "264": "minecraft:note_block[instrument=harp,note=8,powered=true]", + "265": "minecraft:note_block[instrument=harp,note=8,powered=false]", + "266": "minecraft:note_block[instrument=harp,note=9,powered=true]", + "267": "minecraft:note_block[instrument=harp,note=9,powered=false]", + "268": "minecraft:note_block[instrument=harp,note=10,powered=true]", + "269": "minecraft:note_block[instrument=harp,note=10,powered=false]", + "270": "minecraft:note_block[instrument=harp,note=11,powered=true]", + "271": "minecraft:note_block[instrument=harp,note=11,powered=false]", + "272": "minecraft:note_block[instrument=harp,note=12,powered=true]", + "273": "minecraft:note_block[instrument=harp,note=12,powered=false]", + "274": "minecraft:note_block[instrument=harp,note=13,powered=true]", + "275": "minecraft:note_block[instrument=harp,note=13,powered=false]", + "276": "minecraft:note_block[instrument=harp,note=14,powered=true]", + "277": "minecraft:note_block[instrument=harp,note=14,powered=false]", + "278": "minecraft:note_block[instrument=harp,note=15,powered=true]", + "279": "minecraft:note_block[instrument=harp,note=15,powered=false]", + "280": "minecraft:note_block[instrument=harp,note=16,powered=true]", + "281": "minecraft:note_block[instrument=harp,note=16,powered=false]", + "282": "minecraft:note_block[instrument=harp,note=17,powered=true]", + "283": "minecraft:note_block[instrument=harp,note=17,powered=false]", + "284": "minecraft:note_block[instrument=harp,note=18,powered=true]", + "285": "minecraft:note_block[instrument=harp,note=18,powered=false]", + "286": "minecraft:note_block[instrument=harp,note=19,powered=true]", + "287": "minecraft:note_block[instrument=harp,note=19,powered=false]", + "288": "minecraft:note_block[instrument=harp,note=20,powered=true]", + "289": "minecraft:note_block[instrument=harp,note=20,powered=false]", + "290": "minecraft:note_block[instrument=harp,note=21,powered=true]", + "291": "minecraft:note_block[instrument=harp,note=21,powered=false]", + "292": "minecraft:note_block[instrument=harp,note=22,powered=true]", + "293": "minecraft:note_block[instrument=harp,note=22,powered=false]", + "294": "minecraft:note_block[instrument=harp,note=23,powered=true]", + "295": "minecraft:note_block[instrument=harp,note=23,powered=false]", + "296": "minecraft:note_block[instrument=harp,note=24,powered=true]", + "297": "minecraft:note_block[instrument=harp,note=24,powered=false]", + "298": "minecraft:note_block[instrument=basedrum,note=0,powered=true]", + "299": "minecraft:note_block[instrument=basedrum,note=0,powered=false]", + "300": "minecraft:note_block[instrument=basedrum,note=1,powered=true]", + "301": "minecraft:note_block[instrument=basedrum,note=1,powered=false]", + "302": "minecraft:note_block[instrument=basedrum,note=2,powered=true]", + "303": "minecraft:note_block[instrument=basedrum,note=2,powered=false]", + "304": "minecraft:note_block[instrument=basedrum,note=3,powered=true]", + "305": "minecraft:note_block[instrument=basedrum,note=3,powered=false]", + "306": "minecraft:note_block[instrument=basedrum,note=4,powered=true]", + "307": "minecraft:note_block[instrument=basedrum,note=4,powered=false]", + "308": "minecraft:note_block[instrument=basedrum,note=5,powered=true]", + "309": "minecraft:note_block[instrument=basedrum,note=5,powered=false]", + "310": "minecraft:note_block[instrument=basedrum,note=6,powered=true]", + "311": "minecraft:note_block[instrument=basedrum,note=6,powered=false]", + "312": "minecraft:note_block[instrument=basedrum,note=7,powered=true]", + "313": "minecraft:note_block[instrument=basedrum,note=7,powered=false]", + "314": "minecraft:note_block[instrument=basedrum,note=8,powered=true]", + "315": "minecraft:note_block[instrument=basedrum,note=8,powered=false]", + "316": "minecraft:note_block[instrument=basedrum,note=9,powered=true]", + "317": "minecraft:note_block[instrument=basedrum,note=9,powered=false]", + "318": "minecraft:note_block[instrument=basedrum,note=10,powered=true]", + "319": "minecraft:note_block[instrument=basedrum,note=10,powered=false]", + "320": "minecraft:note_block[instrument=basedrum,note=11,powered=true]", + "321": "minecraft:note_block[instrument=basedrum,note=11,powered=false]", + "322": "minecraft:note_block[instrument=basedrum,note=12,powered=true]", + "323": "minecraft:note_block[instrument=basedrum,note=12,powered=false]", + "324": "minecraft:note_block[instrument=basedrum,note=13,powered=true]", + "325": "minecraft:note_block[instrument=basedrum,note=13,powered=false]", + "326": "minecraft:note_block[instrument=basedrum,note=14,powered=true]", + "327": "minecraft:note_block[instrument=basedrum,note=14,powered=false]", + "328": "minecraft:note_block[instrument=basedrum,note=15,powered=true]", + "329": "minecraft:note_block[instrument=basedrum,note=15,powered=false]", + "330": "minecraft:note_block[instrument=basedrum,note=16,powered=true]", + "331": "minecraft:note_block[instrument=basedrum,note=16,powered=false]", + "332": "minecraft:note_block[instrument=basedrum,note=17,powered=true]", + "333": "minecraft:note_block[instrument=basedrum,note=17,powered=false]", + "334": "minecraft:note_block[instrument=basedrum,note=18,powered=true]", + "335": "minecraft:note_block[instrument=basedrum,note=18,powered=false]", + "336": "minecraft:note_block[instrument=basedrum,note=19,powered=true]", + "337": "minecraft:note_block[instrument=basedrum,note=19,powered=false]", + "338": "minecraft:note_block[instrument=basedrum,note=20,powered=true]", + "339": "minecraft:note_block[instrument=basedrum,note=20,powered=false]", + "340": "minecraft:note_block[instrument=basedrum,note=21,powered=true]", + "341": "minecraft:note_block[instrument=basedrum,note=21,powered=false]", + "342": "minecraft:note_block[instrument=basedrum,note=22,powered=true]", + "343": "minecraft:note_block[instrument=basedrum,note=22,powered=false]", + "344": "minecraft:note_block[instrument=basedrum,note=23,powered=true]", + "345": "minecraft:note_block[instrument=basedrum,note=23,powered=false]", + "346": "minecraft:note_block[instrument=basedrum,note=24,powered=true]", + "347": "minecraft:note_block[instrument=basedrum,note=24,powered=false]", + "348": "minecraft:note_block[instrument=snare,note=0,powered=true]", + "349": "minecraft:note_block[instrument=snare,note=0,powered=false]", + "350": "minecraft:note_block[instrument=snare,note=1,powered=true]", + "351": "minecraft:note_block[instrument=snare,note=1,powered=false]", + "352": "minecraft:note_block[instrument=snare,note=2,powered=true]", + "353": "minecraft:note_block[instrument=snare,note=2,powered=false]", + "354": "minecraft:note_block[instrument=snare,note=3,powered=true]", + "355": "minecraft:note_block[instrument=snare,note=3,powered=false]", + "356": "minecraft:note_block[instrument=snare,note=4,powered=true]", + "357": "minecraft:note_block[instrument=snare,note=4,powered=false]", + "358": "minecraft:note_block[instrument=snare,note=5,powered=true]", + "359": "minecraft:note_block[instrument=snare,note=5,powered=false]", + "360": "minecraft:note_block[instrument=snare,note=6,powered=true]", + "361": "minecraft:note_block[instrument=snare,note=6,powered=false]", + "362": "minecraft:note_block[instrument=snare,note=7,powered=true]", + "363": "minecraft:note_block[instrument=snare,note=7,powered=false]", + "364": "minecraft:note_block[instrument=snare,note=8,powered=true]", + "365": "minecraft:note_block[instrument=snare,note=8,powered=false]", + "366": "minecraft:note_block[instrument=snare,note=9,powered=true]", + "367": "minecraft:note_block[instrument=snare,note=9,powered=false]", + "368": "minecraft:note_block[instrument=snare,note=10,powered=true]", + "369": "minecraft:note_block[instrument=snare,note=10,powered=false]", + "370": "minecraft:note_block[instrument=snare,note=11,powered=true]", + "371": "minecraft:note_block[instrument=snare,note=11,powered=false]", + "372": "minecraft:note_block[instrument=snare,note=12,powered=true]", + "373": "minecraft:note_block[instrument=snare,note=12,powered=false]", + "374": "minecraft:note_block[instrument=snare,note=13,powered=true]", + "375": "minecraft:note_block[instrument=snare,note=13,powered=false]", + "376": "minecraft:note_block[instrument=snare,note=14,powered=true]", + "377": "minecraft:note_block[instrument=snare,note=14,powered=false]", + "378": "minecraft:note_block[instrument=snare,note=15,powered=true]", + "379": "minecraft:note_block[instrument=snare,note=15,powered=false]", + "380": "minecraft:note_block[instrument=snare,note=16,powered=true]", + "381": "minecraft:note_block[instrument=snare,note=16,powered=false]", + "382": "minecraft:note_block[instrument=snare,note=17,powered=true]", + "383": "minecraft:note_block[instrument=snare,note=17,powered=false]", + "384": "minecraft:note_block[instrument=snare,note=18,powered=true]", + "385": "minecraft:note_block[instrument=snare,note=18,powered=false]", + "386": "minecraft:note_block[instrument=snare,note=19,powered=true]", + "387": "minecraft:note_block[instrument=snare,note=19,powered=false]", + "388": "minecraft:note_block[instrument=snare,note=20,powered=true]", + "389": "minecraft:note_block[instrument=snare,note=20,powered=false]", + "390": "minecraft:note_block[instrument=snare,note=21,powered=true]", + "391": "minecraft:note_block[instrument=snare,note=21,powered=false]", + "392": "minecraft:note_block[instrument=snare,note=22,powered=true]", + "393": "minecraft:note_block[instrument=snare,note=22,powered=false]", + "394": "minecraft:note_block[instrument=snare,note=23,powered=true]", + "395": "minecraft:note_block[instrument=snare,note=23,powered=false]", + "396": "minecraft:note_block[instrument=snare,note=24,powered=true]", + "397": "minecraft:note_block[instrument=snare,note=24,powered=false]", + "398": "minecraft:note_block[instrument=hat,note=0,powered=true]", + "399": "minecraft:note_block[instrument=hat,note=0,powered=false]", + "400": "minecraft:note_block[instrument=hat,note=1,powered=true]", + "401": "minecraft:note_block[instrument=hat,note=1,powered=false]", + "402": "minecraft:note_block[instrument=hat,note=2,powered=true]", + "403": "minecraft:note_block[instrument=hat,note=2,powered=false]", + "404": "minecraft:note_block[instrument=hat,note=3,powered=true]", + "405": "minecraft:note_block[instrument=hat,note=3,powered=false]", + "406": "minecraft:note_block[instrument=hat,note=4,powered=true]", + "407": "minecraft:note_block[instrument=hat,note=4,powered=false]", + "408": "minecraft:note_block[instrument=hat,note=5,powered=true]", + "409": "minecraft:note_block[instrument=hat,note=5,powered=false]", + "410": "minecraft:note_block[instrument=hat,note=6,powered=true]", + "411": "minecraft:note_block[instrument=hat,note=6,powered=false]", + "412": "minecraft:note_block[instrument=hat,note=7,powered=true]", + "413": "minecraft:note_block[instrument=hat,note=7,powered=false]", + "414": "minecraft:note_block[instrument=hat,note=8,powered=true]", + "415": "minecraft:note_block[instrument=hat,note=8,powered=false]", + "416": "minecraft:note_block[instrument=hat,note=9,powered=true]", + "417": "minecraft:note_block[instrument=hat,note=9,powered=false]", + "418": "minecraft:note_block[instrument=hat,note=10,powered=true]", + "419": "minecraft:note_block[instrument=hat,note=10,powered=false]", + "420": "minecraft:note_block[instrument=hat,note=11,powered=true]", + "421": "minecraft:note_block[instrument=hat,note=11,powered=false]", + "422": "minecraft:note_block[instrument=hat,note=12,powered=true]", + "423": "minecraft:note_block[instrument=hat,note=12,powered=false]", + "424": "minecraft:note_block[instrument=hat,note=13,powered=true]", + "425": "minecraft:note_block[instrument=hat,note=13,powered=false]", + "426": "minecraft:note_block[instrument=hat,note=14,powered=true]", + "427": "minecraft:note_block[instrument=hat,note=14,powered=false]", + "428": "minecraft:note_block[instrument=hat,note=15,powered=true]", + "429": "minecraft:note_block[instrument=hat,note=15,powered=false]", + "430": "minecraft:note_block[instrument=hat,note=16,powered=true]", + "431": "minecraft:note_block[instrument=hat,note=16,powered=false]", + "432": "minecraft:note_block[instrument=hat,note=17,powered=true]", + "433": "minecraft:note_block[instrument=hat,note=17,powered=false]", + "434": "minecraft:note_block[instrument=hat,note=18,powered=true]", + "435": "minecraft:note_block[instrument=hat,note=18,powered=false]", + "436": "minecraft:note_block[instrument=hat,note=19,powered=true]", + "437": "minecraft:note_block[instrument=hat,note=19,powered=false]", + "438": "minecraft:note_block[instrument=hat,note=20,powered=true]", + "439": "minecraft:note_block[instrument=hat,note=20,powered=false]", + "440": "minecraft:note_block[instrument=hat,note=21,powered=true]", + "441": "minecraft:note_block[instrument=hat,note=21,powered=false]", + "442": "minecraft:note_block[instrument=hat,note=22,powered=true]", + "443": "minecraft:note_block[instrument=hat,note=22,powered=false]", + "444": "minecraft:note_block[instrument=hat,note=23,powered=true]", + "445": "minecraft:note_block[instrument=hat,note=23,powered=false]", + "446": "minecraft:note_block[instrument=hat,note=24,powered=true]", + "447": "minecraft:note_block[instrument=hat,note=24,powered=false]", + "448": "minecraft:note_block[instrument=bass,note=0,powered=true]", + "449": "minecraft:note_block[instrument=bass,note=0,powered=false]", + "450": "minecraft:note_block[instrument=bass,note=1,powered=true]", + "451": "minecraft:note_block[instrument=bass,note=1,powered=false]", + "452": "minecraft:note_block[instrument=bass,note=2,powered=true]", + "453": "minecraft:note_block[instrument=bass,note=2,powered=false]", + "454": "minecraft:note_block[instrument=bass,note=3,powered=true]", + "455": "minecraft:note_block[instrument=bass,note=3,powered=false]", + "456": "minecraft:note_block[instrument=bass,note=4,powered=true]", + "457": "minecraft:note_block[instrument=bass,note=4,powered=false]", + "458": "minecraft:note_block[instrument=bass,note=5,powered=true]", + "459": "minecraft:note_block[instrument=bass,note=5,powered=false]", + "460": "minecraft:note_block[instrument=bass,note=6,powered=true]", + "461": "minecraft:note_block[instrument=bass,note=6,powered=false]", + "462": "minecraft:note_block[instrument=bass,note=7,powered=true]", + "463": "minecraft:note_block[instrument=bass,note=7,powered=false]", + "464": "minecraft:note_block[instrument=bass,note=8,powered=true]", + "465": "minecraft:note_block[instrument=bass,note=8,powered=false]", + "466": "minecraft:note_block[instrument=bass,note=9,powered=true]", + "467": "minecraft:note_block[instrument=bass,note=9,powered=false]", + "468": "minecraft:note_block[instrument=bass,note=10,powered=true]", + "469": "minecraft:note_block[instrument=bass,note=10,powered=false]", + "470": "minecraft:note_block[instrument=bass,note=11,powered=true]", + "471": "minecraft:note_block[instrument=bass,note=11,powered=false]", + "472": "minecraft:note_block[instrument=bass,note=12,powered=true]", + "473": "minecraft:note_block[instrument=bass,note=12,powered=false]", + "474": "minecraft:note_block[instrument=bass,note=13,powered=true]", + "475": "minecraft:note_block[instrument=bass,note=13,powered=false]", + "476": "minecraft:note_block[instrument=bass,note=14,powered=true]", + "477": "minecraft:note_block[instrument=bass,note=14,powered=false]", + "478": "minecraft:note_block[instrument=bass,note=15,powered=true]", + "479": "minecraft:note_block[instrument=bass,note=15,powered=false]", + "480": "minecraft:note_block[instrument=bass,note=16,powered=true]", + "481": "minecraft:note_block[instrument=bass,note=16,powered=false]", + "482": "minecraft:note_block[instrument=bass,note=17,powered=true]", + "483": "minecraft:note_block[instrument=bass,note=17,powered=false]", + "484": "minecraft:note_block[instrument=bass,note=18,powered=true]", + "485": "minecraft:note_block[instrument=bass,note=18,powered=false]", + "486": "minecraft:note_block[instrument=bass,note=19,powered=true]", + "487": "minecraft:note_block[instrument=bass,note=19,powered=false]", + "488": "minecraft:note_block[instrument=bass,note=20,powered=true]", + "489": "minecraft:note_block[instrument=bass,note=20,powered=false]", + "490": "minecraft:note_block[instrument=bass,note=21,powered=true]", + "491": "minecraft:note_block[instrument=bass,note=21,powered=false]", + "492": "minecraft:note_block[instrument=bass,note=22,powered=true]", + "493": "minecraft:note_block[instrument=bass,note=22,powered=false]", + "494": "minecraft:note_block[instrument=bass,note=23,powered=true]", + "495": "minecraft:note_block[instrument=bass,note=23,powered=false]", + "496": "minecraft:note_block[instrument=bass,note=24,powered=true]", + "497": "minecraft:note_block[instrument=bass,note=24,powered=false]", + "498": "minecraft:note_block[instrument=flute,note=0,powered=true]", + "499": "minecraft:note_block[instrument=flute,note=0,powered=false]", + "500": "minecraft:note_block[instrument=flute,note=1,powered=true]", + "501": "minecraft:note_block[instrument=flute,note=1,powered=false]", + "502": "minecraft:note_block[instrument=flute,note=2,powered=true]", + "503": "minecraft:note_block[instrument=flute,note=2,powered=false]", + "504": "minecraft:note_block[instrument=flute,note=3,powered=true]", + "505": "minecraft:note_block[instrument=flute,note=3,powered=false]", + "506": "minecraft:note_block[instrument=flute,note=4,powered=true]", + "507": "minecraft:note_block[instrument=flute,note=4,powered=false]", + "508": "minecraft:note_block[instrument=flute,note=5,powered=true]", + "509": "minecraft:note_block[instrument=flute,note=5,powered=false]", + "510": "minecraft:note_block[instrument=flute,note=6,powered=true]", + "511": "minecraft:note_block[instrument=flute,note=6,powered=false]", + "512": "minecraft:note_block[instrument=flute,note=7,powered=true]", + "513": "minecraft:note_block[instrument=flute,note=7,powered=false]", + "514": "minecraft:note_block[instrument=flute,note=8,powered=true]", + "515": "minecraft:note_block[instrument=flute,note=8,powered=false]", + "516": "minecraft:note_block[instrument=flute,note=9,powered=true]", + "517": "minecraft:note_block[instrument=flute,note=9,powered=false]", + "518": "minecraft:note_block[instrument=flute,note=10,powered=true]", + "519": "minecraft:note_block[instrument=flute,note=10,powered=false]", + "520": "minecraft:note_block[instrument=flute,note=11,powered=true]", + "521": "minecraft:note_block[instrument=flute,note=11,powered=false]", + "522": "minecraft:note_block[instrument=flute,note=12,powered=true]", + "523": "minecraft:note_block[instrument=flute,note=12,powered=false]", + "524": "minecraft:note_block[instrument=flute,note=13,powered=true]", + "525": "minecraft:note_block[instrument=flute,note=13,powered=false]", + "526": "minecraft:note_block[instrument=flute,note=14,powered=true]", + "527": "minecraft:note_block[instrument=flute,note=14,powered=false]", + "528": "minecraft:note_block[instrument=flute,note=15,powered=true]", + "529": "minecraft:note_block[instrument=flute,note=15,powered=false]", + "530": "minecraft:note_block[instrument=flute,note=16,powered=true]", + "531": "minecraft:note_block[instrument=flute,note=16,powered=false]", + "532": "minecraft:note_block[instrument=flute,note=17,powered=true]", + "533": "minecraft:note_block[instrument=flute,note=17,powered=false]", + "534": "minecraft:note_block[instrument=flute,note=18,powered=true]", + "535": "minecraft:note_block[instrument=flute,note=18,powered=false]", + "536": "minecraft:note_block[instrument=flute,note=19,powered=true]", + "537": "minecraft:note_block[instrument=flute,note=19,powered=false]", + "538": "minecraft:note_block[instrument=flute,note=20,powered=true]", + "539": "minecraft:note_block[instrument=flute,note=20,powered=false]", + "540": "minecraft:note_block[instrument=flute,note=21,powered=true]", + "541": "minecraft:note_block[instrument=flute,note=21,powered=false]", + "542": "minecraft:note_block[instrument=flute,note=22,powered=true]", + "543": "minecraft:note_block[instrument=flute,note=22,powered=false]", + "544": "minecraft:note_block[instrument=flute,note=23,powered=true]", + "545": "minecraft:note_block[instrument=flute,note=23,powered=false]", + "546": "minecraft:note_block[instrument=flute,note=24,powered=true]", + "547": "minecraft:note_block[instrument=flute,note=24,powered=false]", + "548": "minecraft:note_block[instrument=bell,note=0,powered=true]", + "549": "minecraft:note_block[instrument=bell,note=0,powered=false]", + "550": "minecraft:note_block[instrument=bell,note=1,powered=true]", + "551": "minecraft:note_block[instrument=bell,note=1,powered=false]", + "552": "minecraft:note_block[instrument=bell,note=2,powered=true]", + "553": "minecraft:note_block[instrument=bell,note=2,powered=false]", + "554": "minecraft:note_block[instrument=bell,note=3,powered=true]", + "555": "minecraft:note_block[instrument=bell,note=3,powered=false]", + "556": "minecraft:note_block[instrument=bell,note=4,powered=true]", + "557": "minecraft:note_block[instrument=bell,note=4,powered=false]", + "558": "minecraft:note_block[instrument=bell,note=5,powered=true]", + "559": "minecraft:note_block[instrument=bell,note=5,powered=false]", + "560": "minecraft:note_block[instrument=bell,note=6,powered=true]", + "561": "minecraft:note_block[instrument=bell,note=6,powered=false]", + "562": "minecraft:note_block[instrument=bell,note=7,powered=true]", + "563": "minecraft:note_block[instrument=bell,note=7,powered=false]", + "564": "minecraft:note_block[instrument=bell,note=8,powered=true]", + "565": "minecraft:note_block[instrument=bell,note=8,powered=false]", + "566": "minecraft:note_block[instrument=bell,note=9,powered=true]", + "567": "minecraft:note_block[instrument=bell,note=9,powered=false]", + "568": "minecraft:note_block[instrument=bell,note=10,powered=true]", + "569": "minecraft:note_block[instrument=bell,note=10,powered=false]", + "570": "minecraft:note_block[instrument=bell,note=11,powered=true]", + "571": "minecraft:note_block[instrument=bell,note=11,powered=false]", + "572": "minecraft:note_block[instrument=bell,note=12,powered=true]", + "573": "minecraft:note_block[instrument=bell,note=12,powered=false]", + "574": "minecraft:note_block[instrument=bell,note=13,powered=true]", + "575": "minecraft:note_block[instrument=bell,note=13,powered=false]", + "576": "minecraft:note_block[instrument=bell,note=14,powered=true]", + "577": "minecraft:note_block[instrument=bell,note=14,powered=false]", + "578": "minecraft:note_block[instrument=bell,note=15,powered=true]", + "579": "minecraft:note_block[instrument=bell,note=15,powered=false]", + "580": "minecraft:note_block[instrument=bell,note=16,powered=true]", + "581": "minecraft:note_block[instrument=bell,note=16,powered=false]", + "582": "minecraft:note_block[instrument=bell,note=17,powered=true]", + "583": "minecraft:note_block[instrument=bell,note=17,powered=false]", + "584": "minecraft:note_block[instrument=bell,note=18,powered=true]", + "585": "minecraft:note_block[instrument=bell,note=18,powered=false]", + "586": "minecraft:note_block[instrument=bell,note=19,powered=true]", + "587": "minecraft:note_block[instrument=bell,note=19,powered=false]", + "588": "minecraft:note_block[instrument=bell,note=20,powered=true]", + "589": "minecraft:note_block[instrument=bell,note=20,powered=false]", + "590": "minecraft:note_block[instrument=bell,note=21,powered=true]", + "591": "minecraft:note_block[instrument=bell,note=21,powered=false]", + "592": "minecraft:note_block[instrument=bell,note=22,powered=true]", + "593": "minecraft:note_block[instrument=bell,note=22,powered=false]", + "594": "minecraft:note_block[instrument=bell,note=23,powered=true]", + "595": "minecraft:note_block[instrument=bell,note=23,powered=false]", + "596": "minecraft:note_block[instrument=bell,note=24,powered=true]", + "597": "minecraft:note_block[instrument=bell,note=24,powered=false]", + "598": "minecraft:note_block[instrument=guitar,note=0,powered=true]", + "599": "minecraft:note_block[instrument=guitar,note=0,powered=false]", + "600": "minecraft:note_block[instrument=guitar,note=1,powered=true]", + "601": "minecraft:note_block[instrument=guitar,note=1,powered=false]", + "602": "minecraft:note_block[instrument=guitar,note=2,powered=true]", + "603": "minecraft:note_block[instrument=guitar,note=2,powered=false]", + "604": "minecraft:note_block[instrument=guitar,note=3,powered=true]", + "605": "minecraft:note_block[instrument=guitar,note=3,powered=false]", + "606": "minecraft:note_block[instrument=guitar,note=4,powered=true]", + "607": "minecraft:note_block[instrument=guitar,note=4,powered=false]", + "608": "minecraft:note_block[instrument=guitar,note=5,powered=true]", + "609": "minecraft:note_block[instrument=guitar,note=5,powered=false]", + "610": "minecraft:note_block[instrument=guitar,note=6,powered=true]", + "611": "minecraft:note_block[instrument=guitar,note=6,powered=false]", + "612": "minecraft:note_block[instrument=guitar,note=7,powered=true]", + "613": "minecraft:note_block[instrument=guitar,note=7,powered=false]", + "614": "minecraft:note_block[instrument=guitar,note=8,powered=true]", + "615": "minecraft:note_block[instrument=guitar,note=8,powered=false]", + "616": "minecraft:note_block[instrument=guitar,note=9,powered=true]", + "617": "minecraft:note_block[instrument=guitar,note=9,powered=false]", + "618": "minecraft:note_block[instrument=guitar,note=10,powered=true]", + "619": "minecraft:note_block[instrument=guitar,note=10,powered=false]", + "620": "minecraft:note_block[instrument=guitar,note=11,powered=true]", + "621": "minecraft:note_block[instrument=guitar,note=11,powered=false]", + "622": "minecraft:note_block[instrument=guitar,note=12,powered=true]", + "623": "minecraft:note_block[instrument=guitar,note=12,powered=false]", + "624": "minecraft:note_block[instrument=guitar,note=13,powered=true]", + "625": "minecraft:note_block[instrument=guitar,note=13,powered=false]", + "626": "minecraft:note_block[instrument=guitar,note=14,powered=true]", + "627": "minecraft:note_block[instrument=guitar,note=14,powered=false]", + "628": "minecraft:note_block[instrument=guitar,note=15,powered=true]", + "629": "minecraft:note_block[instrument=guitar,note=15,powered=false]", + "630": "minecraft:note_block[instrument=guitar,note=16,powered=true]", + "631": "minecraft:note_block[instrument=guitar,note=16,powered=false]", + "632": "minecraft:note_block[instrument=guitar,note=17,powered=true]", + "633": "minecraft:note_block[instrument=guitar,note=17,powered=false]", + "634": "minecraft:note_block[instrument=guitar,note=18,powered=true]", + "635": "minecraft:note_block[instrument=guitar,note=18,powered=false]", + "636": "minecraft:note_block[instrument=guitar,note=19,powered=true]", + "637": "minecraft:note_block[instrument=guitar,note=19,powered=false]", + "638": "minecraft:note_block[instrument=guitar,note=20,powered=true]", + "639": "minecraft:note_block[instrument=guitar,note=20,powered=false]", + "640": "minecraft:note_block[instrument=guitar,note=21,powered=true]", + "641": "minecraft:note_block[instrument=guitar,note=21,powered=false]", + "642": "minecraft:note_block[instrument=guitar,note=22,powered=true]", + "643": "minecraft:note_block[instrument=guitar,note=22,powered=false]", + "644": "minecraft:note_block[instrument=guitar,note=23,powered=true]", + "645": "minecraft:note_block[instrument=guitar,note=23,powered=false]", + "646": "minecraft:note_block[instrument=guitar,note=24,powered=true]", + "647": "minecraft:note_block[instrument=guitar,note=24,powered=false]", + "648": "minecraft:note_block[instrument=chime,note=0,powered=true]", + "649": "minecraft:note_block[instrument=chime,note=0,powered=false]", + "650": "minecraft:note_block[instrument=chime,note=1,powered=true]", + "651": "minecraft:note_block[instrument=chime,note=1,powered=false]", + "652": "minecraft:note_block[instrument=chime,note=2,powered=true]", + "653": "minecraft:note_block[instrument=chime,note=2,powered=false]", + "654": "minecraft:note_block[instrument=chime,note=3,powered=true]", + "655": "minecraft:note_block[instrument=chime,note=3,powered=false]", + "656": "minecraft:note_block[instrument=chime,note=4,powered=true]", + "657": "minecraft:note_block[instrument=chime,note=4,powered=false]", + "658": "minecraft:note_block[instrument=chime,note=5,powered=true]", + "659": "minecraft:note_block[instrument=chime,note=5,powered=false]", + "660": "minecraft:note_block[instrument=chime,note=6,powered=true]", + "661": "minecraft:note_block[instrument=chime,note=6,powered=false]", + "662": "minecraft:note_block[instrument=chime,note=7,powered=true]", + "663": "minecraft:note_block[instrument=chime,note=7,powered=false]", + "664": "minecraft:note_block[instrument=chime,note=8,powered=true]", + "665": "minecraft:note_block[instrument=chime,note=8,powered=false]", + "666": "minecraft:note_block[instrument=chime,note=9,powered=true]", + "667": "minecraft:note_block[instrument=chime,note=9,powered=false]", + "668": "minecraft:note_block[instrument=chime,note=10,powered=true]", + "669": "minecraft:note_block[instrument=chime,note=10,powered=false]", + "670": "minecraft:note_block[instrument=chime,note=11,powered=true]", + "671": "minecraft:note_block[instrument=chime,note=11,powered=false]", + "672": "minecraft:note_block[instrument=chime,note=12,powered=true]", + "673": "minecraft:note_block[instrument=chime,note=12,powered=false]", + "674": "minecraft:note_block[instrument=chime,note=13,powered=true]", + "675": "minecraft:note_block[instrument=chime,note=13,powered=false]", + "676": "minecraft:note_block[instrument=chime,note=14,powered=true]", + "677": "minecraft:note_block[instrument=chime,note=14,powered=false]", + "678": "minecraft:note_block[instrument=chime,note=15,powered=true]", + "679": "minecraft:note_block[instrument=chime,note=15,powered=false]", + "680": "minecraft:note_block[instrument=chime,note=16,powered=true]", + "681": "minecraft:note_block[instrument=chime,note=16,powered=false]", + "682": "minecraft:note_block[instrument=chime,note=17,powered=true]", + "683": "minecraft:note_block[instrument=chime,note=17,powered=false]", + "684": "minecraft:note_block[instrument=chime,note=18,powered=true]", + "685": "minecraft:note_block[instrument=chime,note=18,powered=false]", + "686": "minecraft:note_block[instrument=chime,note=19,powered=true]", + "687": "minecraft:note_block[instrument=chime,note=19,powered=false]", + "688": "minecraft:note_block[instrument=chime,note=20,powered=true]", + "689": "minecraft:note_block[instrument=chime,note=20,powered=false]", + "690": "minecraft:note_block[instrument=chime,note=21,powered=true]", + "691": "minecraft:note_block[instrument=chime,note=21,powered=false]", + "692": "minecraft:note_block[instrument=chime,note=22,powered=true]", + "693": "minecraft:note_block[instrument=chime,note=22,powered=false]", + "694": "minecraft:note_block[instrument=chime,note=23,powered=true]", + "695": "minecraft:note_block[instrument=chime,note=23,powered=false]", + "696": "minecraft:note_block[instrument=chime,note=24,powered=true]", + "697": "minecraft:note_block[instrument=chime,note=24,powered=false]", + "698": "minecraft:note_block[instrument=xylophone,note=0,powered=true]", + "699": "minecraft:note_block[instrument=xylophone,note=0,powered=false]", + "700": "minecraft:note_block[instrument=xylophone,note=1,powered=true]", + "701": "minecraft:note_block[instrument=xylophone,note=1,powered=false]", + "702": "minecraft:note_block[instrument=xylophone,note=2,powered=true]", + "703": "minecraft:note_block[instrument=xylophone,note=2,powered=false]", + "704": "minecraft:note_block[instrument=xylophone,note=3,powered=true]", + "705": "minecraft:note_block[instrument=xylophone,note=3,powered=false]", + "706": "minecraft:note_block[instrument=xylophone,note=4,powered=true]", + "707": "minecraft:note_block[instrument=xylophone,note=4,powered=false]", + "708": "minecraft:note_block[instrument=xylophone,note=5,powered=true]", + "709": "minecraft:note_block[instrument=xylophone,note=5,powered=false]", + "710": "minecraft:note_block[instrument=xylophone,note=6,powered=true]", + "711": "minecraft:note_block[instrument=xylophone,note=6,powered=false]", + "712": "minecraft:note_block[instrument=xylophone,note=7,powered=true]", + "713": "minecraft:note_block[instrument=xylophone,note=7,powered=false]", + "714": "minecraft:note_block[instrument=xylophone,note=8,powered=true]", + "715": "minecraft:note_block[instrument=xylophone,note=8,powered=false]", + "716": "minecraft:note_block[instrument=xylophone,note=9,powered=true]", + "717": "minecraft:note_block[instrument=xylophone,note=9,powered=false]", + "718": "minecraft:note_block[instrument=xylophone,note=10,powered=true]", + "719": "minecraft:note_block[instrument=xylophone,note=10,powered=false]", + "720": "minecraft:note_block[instrument=xylophone,note=11,powered=true]", + "721": "minecraft:note_block[instrument=xylophone,note=11,powered=false]", + "722": "minecraft:note_block[instrument=xylophone,note=12,powered=true]", + "723": "minecraft:note_block[instrument=xylophone,note=12,powered=false]", + "724": "minecraft:note_block[instrument=xylophone,note=13,powered=true]", + "725": "minecraft:note_block[instrument=xylophone,note=13,powered=false]", + "726": "minecraft:note_block[instrument=xylophone,note=14,powered=true]", + "727": "minecraft:note_block[instrument=xylophone,note=14,powered=false]", + "728": "minecraft:note_block[instrument=xylophone,note=15,powered=true]", + "729": "minecraft:note_block[instrument=xylophone,note=15,powered=false]", + "730": "minecraft:note_block[instrument=xylophone,note=16,powered=true]", + "731": "minecraft:note_block[instrument=xylophone,note=16,powered=false]", + "732": "minecraft:note_block[instrument=xylophone,note=17,powered=true]", + "733": "minecraft:note_block[instrument=xylophone,note=17,powered=false]", + "734": "minecraft:note_block[instrument=xylophone,note=18,powered=true]", + "735": "minecraft:note_block[instrument=xylophone,note=18,powered=false]", + "736": "minecraft:note_block[instrument=xylophone,note=19,powered=true]", + "737": "minecraft:note_block[instrument=xylophone,note=19,powered=false]", + "738": "minecraft:note_block[instrument=xylophone,note=20,powered=true]", + "739": "minecraft:note_block[instrument=xylophone,note=20,powered=false]", + "740": "minecraft:note_block[instrument=xylophone,note=21,powered=true]", + "741": "minecraft:note_block[instrument=xylophone,note=21,powered=false]", + "742": "minecraft:note_block[instrument=xylophone,note=22,powered=true]", + "743": "minecraft:note_block[instrument=xylophone,note=22,powered=false]", + "744": "minecraft:note_block[instrument=xylophone,note=23,powered=true]", + "745": "minecraft:note_block[instrument=xylophone,note=23,powered=false]", + "746": "minecraft:note_block[instrument=xylophone,note=24,powered=true]", + "747": "minecraft:note_block[instrument=xylophone,note=24,powered=false]", + "748": "minecraft:note_block[instrument=iron_xylophone,note=0,powered=true]", + "749": "minecraft:note_block[instrument=iron_xylophone,note=0,powered=false]", + "750": "minecraft:note_block[instrument=iron_xylophone,note=1,powered=true]", + "751": "minecraft:note_block[instrument=iron_xylophone,note=1,powered=false]", + "752": "minecraft:note_block[instrument=iron_xylophone,note=2,powered=true]", + "753": "minecraft:note_block[instrument=iron_xylophone,note=2,powered=false]", + "754": "minecraft:note_block[instrument=iron_xylophone,note=3,powered=true]", + "755": "minecraft:note_block[instrument=iron_xylophone,note=3,powered=false]", + "756": "minecraft:note_block[instrument=iron_xylophone,note=4,powered=true]", + "757": "minecraft:note_block[instrument=iron_xylophone,note=4,powered=false]", + "758": "minecraft:note_block[instrument=iron_xylophone,note=5,powered=true]", + "759": "minecraft:note_block[instrument=iron_xylophone,note=5,powered=false]", + "760": "minecraft:note_block[instrument=iron_xylophone,note=6,powered=true]", + "761": "minecraft:note_block[instrument=iron_xylophone,note=6,powered=false]", + "762": "minecraft:note_block[instrument=iron_xylophone,note=7,powered=true]", + "763": "minecraft:note_block[instrument=iron_xylophone,note=7,powered=false]", + "764": "minecraft:note_block[instrument=iron_xylophone,note=8,powered=true]", + "765": "minecraft:note_block[instrument=iron_xylophone,note=8,powered=false]", + "766": "minecraft:note_block[instrument=iron_xylophone,note=9,powered=true]", + "767": "minecraft:note_block[instrument=iron_xylophone,note=9,powered=false]", + "768": "minecraft:note_block[instrument=iron_xylophone,note=10,powered=true]", + "769": "minecraft:note_block[instrument=iron_xylophone,note=10,powered=false]", + "770": "minecraft:note_block[instrument=iron_xylophone,note=11,powered=true]", + "771": "minecraft:note_block[instrument=iron_xylophone,note=11,powered=false]", + "772": "minecraft:note_block[instrument=iron_xylophone,note=12,powered=true]", + "773": "minecraft:note_block[instrument=iron_xylophone,note=12,powered=false]", + "774": "minecraft:note_block[instrument=iron_xylophone,note=13,powered=true]", + "775": "minecraft:note_block[instrument=iron_xylophone,note=13,powered=false]", + "776": "minecraft:note_block[instrument=iron_xylophone,note=14,powered=true]", + "777": "minecraft:note_block[instrument=iron_xylophone,note=14,powered=false]", + "778": "minecraft:note_block[instrument=iron_xylophone,note=15,powered=true]", + "779": "minecraft:note_block[instrument=iron_xylophone,note=15,powered=false]", + "780": "minecraft:note_block[instrument=iron_xylophone,note=16,powered=true]", + "781": "minecraft:note_block[instrument=iron_xylophone,note=16,powered=false]", + "782": "minecraft:note_block[instrument=iron_xylophone,note=17,powered=true]", + "783": "minecraft:note_block[instrument=iron_xylophone,note=17,powered=false]", + "784": "minecraft:note_block[instrument=iron_xylophone,note=18,powered=true]", + "785": "minecraft:note_block[instrument=iron_xylophone,note=18,powered=false]", + "786": "minecraft:note_block[instrument=iron_xylophone,note=19,powered=true]", + "787": "minecraft:note_block[instrument=iron_xylophone,note=19,powered=false]", + "788": "minecraft:note_block[instrument=iron_xylophone,note=20,powered=true]", + "789": "minecraft:note_block[instrument=iron_xylophone,note=20,powered=false]", + "790": "minecraft:note_block[instrument=iron_xylophone,note=21,powered=true]", + "791": "minecraft:note_block[instrument=iron_xylophone,note=21,powered=false]", + "792": "minecraft:note_block[instrument=iron_xylophone,note=22,powered=true]", + "793": "minecraft:note_block[instrument=iron_xylophone,note=22,powered=false]", + "794": "minecraft:note_block[instrument=iron_xylophone,note=23,powered=true]", + "795": "minecraft:note_block[instrument=iron_xylophone,note=23,powered=false]", + "796": "minecraft:note_block[instrument=iron_xylophone,note=24,powered=true]", + "797": "minecraft:note_block[instrument=iron_xylophone,note=24,powered=false]", + "798": "minecraft:note_block[instrument=cow_bell,note=0,powered=true]", + "799": "minecraft:note_block[instrument=cow_bell,note=0,powered=false]", + "800": "minecraft:note_block[instrument=cow_bell,note=1,powered=true]", + "801": "minecraft:note_block[instrument=cow_bell,note=1,powered=false]", + "802": "minecraft:note_block[instrument=cow_bell,note=2,powered=true]", + "803": "minecraft:note_block[instrument=cow_bell,note=2,powered=false]", + "804": "minecraft:note_block[instrument=cow_bell,note=3,powered=true]", + "805": "minecraft:note_block[instrument=cow_bell,note=3,powered=false]", + "806": "minecraft:note_block[instrument=cow_bell,note=4,powered=true]", + "807": "minecraft:note_block[instrument=cow_bell,note=4,powered=false]", + "808": "minecraft:note_block[instrument=cow_bell,note=5,powered=true]", + "809": "minecraft:note_block[instrument=cow_bell,note=5,powered=false]", + "810": "minecraft:note_block[instrument=cow_bell,note=6,powered=true]", + "811": "minecraft:note_block[instrument=cow_bell,note=6,powered=false]", + "812": "minecraft:note_block[instrument=cow_bell,note=7,powered=true]", + "813": "minecraft:note_block[instrument=cow_bell,note=7,powered=false]", + "814": "minecraft:note_block[instrument=cow_bell,note=8,powered=true]", + "815": "minecraft:note_block[instrument=cow_bell,note=8,powered=false]", + "816": "minecraft:note_block[instrument=cow_bell,note=9,powered=true]", + "817": "minecraft:note_block[instrument=cow_bell,note=9,powered=false]", + "818": "minecraft:note_block[instrument=cow_bell,note=10,powered=true]", + "819": "minecraft:note_block[instrument=cow_bell,note=10,powered=false]", + "820": "minecraft:note_block[instrument=cow_bell,note=11,powered=true]", + "821": "minecraft:note_block[instrument=cow_bell,note=11,powered=false]", + "822": "minecraft:note_block[instrument=cow_bell,note=12,powered=true]", + "823": "minecraft:note_block[instrument=cow_bell,note=12,powered=false]", + "824": "minecraft:note_block[instrument=cow_bell,note=13,powered=true]", + "825": "minecraft:note_block[instrument=cow_bell,note=13,powered=false]", + "826": "minecraft:note_block[instrument=cow_bell,note=14,powered=true]", + "827": "minecraft:note_block[instrument=cow_bell,note=14,powered=false]", + "828": "minecraft:note_block[instrument=cow_bell,note=15,powered=true]", + "829": "minecraft:note_block[instrument=cow_bell,note=15,powered=false]", + "830": "minecraft:note_block[instrument=cow_bell,note=16,powered=true]", + "831": "minecraft:note_block[instrument=cow_bell,note=16,powered=false]", + "832": "minecraft:note_block[instrument=cow_bell,note=17,powered=true]", + "833": "minecraft:note_block[instrument=cow_bell,note=17,powered=false]", + "834": "minecraft:note_block[instrument=cow_bell,note=18,powered=true]", + "835": "minecraft:note_block[instrument=cow_bell,note=18,powered=false]", + "836": "minecraft:note_block[instrument=cow_bell,note=19,powered=true]", + "837": "minecraft:note_block[instrument=cow_bell,note=19,powered=false]", + "838": "minecraft:note_block[instrument=cow_bell,note=20,powered=true]", + "839": "minecraft:note_block[instrument=cow_bell,note=20,powered=false]", + "840": "minecraft:note_block[instrument=cow_bell,note=21,powered=true]", + "841": "minecraft:note_block[instrument=cow_bell,note=21,powered=false]", + "842": "minecraft:note_block[instrument=cow_bell,note=22,powered=true]", + "843": "minecraft:note_block[instrument=cow_bell,note=22,powered=false]", + "844": "minecraft:note_block[instrument=cow_bell,note=23,powered=true]", + "845": "minecraft:note_block[instrument=cow_bell,note=23,powered=false]", + "846": "minecraft:note_block[instrument=cow_bell,note=24,powered=true]", + "847": "minecraft:note_block[instrument=cow_bell,note=24,powered=false]", + "848": "minecraft:note_block[instrument=didgeridoo,note=0,powered=true]", + "849": "minecraft:note_block[instrument=didgeridoo,note=0,powered=false]", + "850": "minecraft:note_block[instrument=didgeridoo,note=1,powered=true]", + "851": "minecraft:note_block[instrument=didgeridoo,note=1,powered=false]", + "852": "minecraft:note_block[instrument=didgeridoo,note=2,powered=true]", + "853": "minecraft:note_block[instrument=didgeridoo,note=2,powered=false]", + "854": "minecraft:note_block[instrument=didgeridoo,note=3,powered=true]", + "855": "minecraft:note_block[instrument=didgeridoo,note=3,powered=false]", + "856": "minecraft:note_block[instrument=didgeridoo,note=4,powered=true]", + "857": "minecraft:note_block[instrument=didgeridoo,note=4,powered=false]", + "858": "minecraft:note_block[instrument=didgeridoo,note=5,powered=true]", + "859": "minecraft:note_block[instrument=didgeridoo,note=5,powered=false]", + "860": "minecraft:note_block[instrument=didgeridoo,note=6,powered=true]", + "861": "minecraft:note_block[instrument=didgeridoo,note=6,powered=false]", + "862": "minecraft:note_block[instrument=didgeridoo,note=7,powered=true]", + "863": "minecraft:note_block[instrument=didgeridoo,note=7,powered=false]", + "864": "minecraft:note_block[instrument=didgeridoo,note=8,powered=true]", + "865": "minecraft:note_block[instrument=didgeridoo,note=8,powered=false]", + "866": "minecraft:note_block[instrument=didgeridoo,note=9,powered=true]", + "867": "minecraft:note_block[instrument=didgeridoo,note=9,powered=false]", + "868": "minecraft:note_block[instrument=didgeridoo,note=10,powered=true]", + "869": "minecraft:note_block[instrument=didgeridoo,note=10,powered=false]", + "870": "minecraft:note_block[instrument=didgeridoo,note=11,powered=true]", + "871": "minecraft:note_block[instrument=didgeridoo,note=11,powered=false]", + "872": "minecraft:note_block[instrument=didgeridoo,note=12,powered=true]", + "873": "minecraft:note_block[instrument=didgeridoo,note=12,powered=false]", + "874": "minecraft:note_block[instrument=didgeridoo,note=13,powered=true]", + "875": "minecraft:note_block[instrument=didgeridoo,note=13,powered=false]", + "876": "minecraft:note_block[instrument=didgeridoo,note=14,powered=true]", + "877": "minecraft:note_block[instrument=didgeridoo,note=14,powered=false]", + "878": "minecraft:note_block[instrument=didgeridoo,note=15,powered=true]", + "879": "minecraft:note_block[instrument=didgeridoo,note=15,powered=false]", + "880": "minecraft:note_block[instrument=didgeridoo,note=16,powered=true]", + "881": "minecraft:note_block[instrument=didgeridoo,note=16,powered=false]", + "882": "minecraft:note_block[instrument=didgeridoo,note=17,powered=true]", + "883": "minecraft:note_block[instrument=didgeridoo,note=17,powered=false]", + "884": "minecraft:note_block[instrument=didgeridoo,note=18,powered=true]", + "885": "minecraft:note_block[instrument=didgeridoo,note=18,powered=false]", + "886": "minecraft:note_block[instrument=didgeridoo,note=19,powered=true]", + "887": "minecraft:note_block[instrument=didgeridoo,note=19,powered=false]", + "888": "minecraft:note_block[instrument=didgeridoo,note=20,powered=true]", + "889": "minecraft:note_block[instrument=didgeridoo,note=20,powered=false]", + "890": "minecraft:note_block[instrument=didgeridoo,note=21,powered=true]", + "891": "minecraft:note_block[instrument=didgeridoo,note=21,powered=false]", + "892": "minecraft:note_block[instrument=didgeridoo,note=22,powered=true]", + "893": "minecraft:note_block[instrument=didgeridoo,note=22,powered=false]", + "894": "minecraft:note_block[instrument=didgeridoo,note=23,powered=true]", + "895": "minecraft:note_block[instrument=didgeridoo,note=23,powered=false]", + "896": "minecraft:note_block[instrument=didgeridoo,note=24,powered=true]", + "897": "minecraft:note_block[instrument=didgeridoo,note=24,powered=false]", + "898": "minecraft:note_block[instrument=bit,note=0,powered=true]", + "899": "minecraft:note_block[instrument=bit,note=0,powered=false]", + "900": "minecraft:note_block[instrument=bit,note=1,powered=true]", + "901": "minecraft:note_block[instrument=bit,note=1,powered=false]", + "902": "minecraft:note_block[instrument=bit,note=2,powered=true]", + "903": "minecraft:note_block[instrument=bit,note=2,powered=false]", + "904": "minecraft:note_block[instrument=bit,note=3,powered=true]", + "905": "minecraft:note_block[instrument=bit,note=3,powered=false]", + "906": "minecraft:note_block[instrument=bit,note=4,powered=true]", + "907": "minecraft:note_block[instrument=bit,note=4,powered=false]", + "908": "minecraft:note_block[instrument=bit,note=5,powered=true]", + "909": "minecraft:note_block[instrument=bit,note=5,powered=false]", + "910": "minecraft:note_block[instrument=bit,note=6,powered=true]", + "911": "minecraft:note_block[instrument=bit,note=6,powered=false]", + "912": "minecraft:note_block[instrument=bit,note=7,powered=true]", + "913": "minecraft:note_block[instrument=bit,note=7,powered=false]", + "914": "minecraft:note_block[instrument=bit,note=8,powered=true]", + "915": "minecraft:note_block[instrument=bit,note=8,powered=false]", + "916": "minecraft:note_block[instrument=bit,note=9,powered=true]", + "917": "minecraft:note_block[instrument=bit,note=9,powered=false]", + "918": "minecraft:note_block[instrument=bit,note=10,powered=true]", + "919": "minecraft:note_block[instrument=bit,note=10,powered=false]", + "920": "minecraft:note_block[instrument=bit,note=11,powered=true]", + "921": "minecraft:note_block[instrument=bit,note=11,powered=false]", + "922": "minecraft:note_block[instrument=bit,note=12,powered=true]", + "923": "minecraft:note_block[instrument=bit,note=12,powered=false]", + "924": "minecraft:note_block[instrument=bit,note=13,powered=true]", + "925": "minecraft:note_block[instrument=bit,note=13,powered=false]", + "926": "minecraft:note_block[instrument=bit,note=14,powered=true]", + "927": "minecraft:note_block[instrument=bit,note=14,powered=false]", + "928": "minecraft:note_block[instrument=bit,note=15,powered=true]", + "929": "minecraft:note_block[instrument=bit,note=15,powered=false]", + "930": "minecraft:note_block[instrument=bit,note=16,powered=true]", + "931": "minecraft:note_block[instrument=bit,note=16,powered=false]", + "932": "minecraft:note_block[instrument=bit,note=17,powered=true]", + "933": "minecraft:note_block[instrument=bit,note=17,powered=false]", + "934": "minecraft:note_block[instrument=bit,note=18,powered=true]", + "935": "minecraft:note_block[instrument=bit,note=18,powered=false]", + "936": "minecraft:note_block[instrument=bit,note=19,powered=true]", + "937": "minecraft:note_block[instrument=bit,note=19,powered=false]", + "938": "minecraft:note_block[instrument=bit,note=20,powered=true]", + "939": "minecraft:note_block[instrument=bit,note=20,powered=false]", + "940": "minecraft:note_block[instrument=bit,note=21,powered=true]", + "941": "minecraft:note_block[instrument=bit,note=21,powered=false]", + "942": "minecraft:note_block[instrument=bit,note=22,powered=true]", + "943": "minecraft:note_block[instrument=bit,note=22,powered=false]", + "944": "minecraft:note_block[instrument=bit,note=23,powered=true]", + "945": "minecraft:note_block[instrument=bit,note=23,powered=false]", + "946": "minecraft:note_block[instrument=bit,note=24,powered=true]", + "947": "minecraft:note_block[instrument=bit,note=24,powered=false]", + "948": "minecraft:note_block[instrument=banjo,note=0,powered=true]", + "949": "minecraft:note_block[instrument=banjo,note=0,powered=false]", + "950": "minecraft:note_block[instrument=banjo,note=1,powered=true]", + "951": "minecraft:note_block[instrument=banjo,note=1,powered=false]", + "952": "minecraft:note_block[instrument=banjo,note=2,powered=true]", + "953": "minecraft:note_block[instrument=banjo,note=2,powered=false]", + "954": "minecraft:note_block[instrument=banjo,note=3,powered=true]", + "955": "minecraft:note_block[instrument=banjo,note=3,powered=false]", + "956": "minecraft:note_block[instrument=banjo,note=4,powered=true]", + "957": "minecraft:note_block[instrument=banjo,note=4,powered=false]", + "958": "minecraft:note_block[instrument=banjo,note=5,powered=true]", + "959": "minecraft:note_block[instrument=banjo,note=5,powered=false]", + "960": "minecraft:note_block[instrument=banjo,note=6,powered=true]", + "961": "minecraft:note_block[instrument=banjo,note=6,powered=false]", + "962": "minecraft:note_block[instrument=banjo,note=7,powered=true]", + "963": "minecraft:note_block[instrument=banjo,note=7,powered=false]", + "964": "minecraft:note_block[instrument=banjo,note=8,powered=true]", + "965": "minecraft:note_block[instrument=banjo,note=8,powered=false]", + "966": "minecraft:note_block[instrument=banjo,note=9,powered=true]", + "967": "minecraft:note_block[instrument=banjo,note=9,powered=false]", + "968": "minecraft:note_block[instrument=banjo,note=10,powered=true]", + "969": "minecraft:note_block[instrument=banjo,note=10,powered=false]", + "970": "minecraft:note_block[instrument=banjo,note=11,powered=true]", + "971": "minecraft:note_block[instrument=banjo,note=11,powered=false]", + "972": "minecraft:note_block[instrument=banjo,note=12,powered=true]", + "973": "minecraft:note_block[instrument=banjo,note=12,powered=false]", + "974": "minecraft:note_block[instrument=banjo,note=13,powered=true]", + "975": "minecraft:note_block[instrument=banjo,note=13,powered=false]", + "976": "minecraft:note_block[instrument=banjo,note=14,powered=true]", + "977": "minecraft:note_block[instrument=banjo,note=14,powered=false]", + "978": "minecraft:note_block[instrument=banjo,note=15,powered=true]", + "979": "minecraft:note_block[instrument=banjo,note=15,powered=false]", + "980": "minecraft:note_block[instrument=banjo,note=16,powered=true]", + "981": "minecraft:note_block[instrument=banjo,note=16,powered=false]", + "982": "minecraft:note_block[instrument=banjo,note=17,powered=true]", + "983": "minecraft:note_block[instrument=banjo,note=17,powered=false]", + "984": "minecraft:note_block[instrument=banjo,note=18,powered=true]", + "985": "minecraft:note_block[instrument=banjo,note=18,powered=false]", + "986": "minecraft:note_block[instrument=banjo,note=19,powered=true]", + "987": "minecraft:note_block[instrument=banjo,note=19,powered=false]", + "988": "minecraft:note_block[instrument=banjo,note=20,powered=true]", + "989": "minecraft:note_block[instrument=banjo,note=20,powered=false]", + "990": "minecraft:note_block[instrument=banjo,note=21,powered=true]", + "991": "minecraft:note_block[instrument=banjo,note=21,powered=false]", + "992": "minecraft:note_block[instrument=banjo,note=22,powered=true]", + "993": "minecraft:note_block[instrument=banjo,note=22,powered=false]", + "994": "minecraft:note_block[instrument=banjo,note=23,powered=true]", + "995": "minecraft:note_block[instrument=banjo,note=23,powered=false]", + "996": "minecraft:note_block[instrument=banjo,note=24,powered=true]", + "997": "minecraft:note_block[instrument=banjo,note=24,powered=false]", + "998": "minecraft:note_block[instrument=pling,note=0,powered=true]", + "999": "minecraft:note_block[instrument=pling,note=0,powered=false]", + "1000": "minecraft:note_block[instrument=pling,note=1,powered=true]", + "1001": "minecraft:note_block[instrument=pling,note=1,powered=false]", + "1002": "minecraft:note_block[instrument=pling,note=2,powered=true]", + "1003": "minecraft:note_block[instrument=pling,note=2,powered=false]", + "1004": "minecraft:note_block[instrument=pling,note=3,powered=true]", + "1005": "minecraft:note_block[instrument=pling,note=3,powered=false]", + "1006": "minecraft:note_block[instrument=pling,note=4,powered=true]", + "1007": "minecraft:note_block[instrument=pling,note=4,powered=false]", + "1008": "minecraft:note_block[instrument=pling,note=5,powered=true]", + "1009": "minecraft:note_block[instrument=pling,note=5,powered=false]", + "1010": "minecraft:note_block[instrument=pling,note=6,powered=true]", + "1011": "minecraft:note_block[instrument=pling,note=6,powered=false]", + "1012": "minecraft:note_block[instrument=pling,note=7,powered=true]", + "1013": "minecraft:note_block[instrument=pling,note=7,powered=false]", + "1014": "minecraft:note_block[instrument=pling,note=8,powered=true]", + "1015": "minecraft:note_block[instrument=pling,note=8,powered=false]", + "1016": "minecraft:note_block[instrument=pling,note=9,powered=true]", + "1017": "minecraft:note_block[instrument=pling,note=9,powered=false]", + "1018": "minecraft:note_block[instrument=pling,note=10,powered=true]", + "1019": "minecraft:note_block[instrument=pling,note=10,powered=false]", + "1020": "minecraft:note_block[instrument=pling,note=11,powered=true]", + "1021": "minecraft:note_block[instrument=pling,note=11,powered=false]", + "1022": "minecraft:note_block[instrument=pling,note=12,powered=true]", + "1023": "minecraft:note_block[instrument=pling,note=12,powered=false]", + "1024": "minecraft:note_block[instrument=pling,note=13,powered=true]", + "1025": "minecraft:note_block[instrument=pling,note=13,powered=false]", + "1026": "minecraft:note_block[instrument=pling,note=14,powered=true]", + "1027": "minecraft:note_block[instrument=pling,note=14,powered=false]", + "1028": "minecraft:note_block[instrument=pling,note=15,powered=true]", + "1029": "minecraft:note_block[instrument=pling,note=15,powered=false]", + "1030": "minecraft:note_block[instrument=pling,note=16,powered=true]", + "1031": "minecraft:note_block[instrument=pling,note=16,powered=false]", + "1032": "minecraft:note_block[instrument=pling,note=17,powered=true]", + "1033": "minecraft:note_block[instrument=pling,note=17,powered=false]", + "1034": "minecraft:note_block[instrument=pling,note=18,powered=true]", + "1035": "minecraft:note_block[instrument=pling,note=18,powered=false]", + "1036": "minecraft:note_block[instrument=pling,note=19,powered=true]", + "1037": "minecraft:note_block[instrument=pling,note=19,powered=false]", + "1038": "minecraft:note_block[instrument=pling,note=20,powered=true]", + "1039": "minecraft:note_block[instrument=pling,note=20,powered=false]", + "1040": "minecraft:note_block[instrument=pling,note=21,powered=true]", + "1041": "minecraft:note_block[instrument=pling,note=21,powered=false]", + "1042": "minecraft:note_block[instrument=pling,note=22,powered=true]", + "1043": "minecraft:note_block[instrument=pling,note=22,powered=false]", + "1044": "minecraft:note_block[instrument=pling,note=23,powered=true]", + "1045": "minecraft:note_block[instrument=pling,note=23,powered=false]", + "1046": "minecraft:note_block[instrument=pling,note=24,powered=true]", + "1047": "minecraft:note_block[instrument=pling,note=24,powered=false]", + "1048": "minecraft:white_bed[facing=north,occupied=true,part=head]", + "1049": "minecraft:white_bed[facing=north,occupied=true,part=foot]", + "1050": "minecraft:white_bed[facing=north,occupied=false,part=head]", + "1051": "minecraft:white_bed[facing=north,occupied=false,part=foot]", + "1052": "minecraft:white_bed[facing=south,occupied=true,part=head]", + "1053": "minecraft:white_bed[facing=south,occupied=true,part=foot]", + "1054": "minecraft:white_bed[facing=south,occupied=false,part=head]", + "1055": "minecraft:white_bed[facing=south,occupied=false,part=foot]", + "1056": "minecraft:white_bed[facing=west,occupied=true,part=head]", + "1057": "minecraft:white_bed[facing=west,occupied=true,part=foot]", + "1058": "minecraft:white_bed[facing=west,occupied=false,part=head]", + "1059": "minecraft:white_bed[facing=west,occupied=false,part=foot]", + "1060": "minecraft:white_bed[facing=east,occupied=true,part=head]", + "1061": "minecraft:white_bed[facing=east,occupied=true,part=foot]", + "1062": "minecraft:white_bed[facing=east,occupied=false,part=head]", + "1063": "minecraft:white_bed[facing=east,occupied=false,part=foot]", + "1064": "minecraft:orange_bed[facing=north,occupied=true,part=head]", + "1065": "minecraft:orange_bed[facing=north,occupied=true,part=foot]", + "1066": "minecraft:orange_bed[facing=north,occupied=false,part=head]", + "1067": "minecraft:orange_bed[facing=north,occupied=false,part=foot]", + "1068": "minecraft:orange_bed[facing=south,occupied=true,part=head]", + "1069": "minecraft:orange_bed[facing=south,occupied=true,part=foot]", + "1070": "minecraft:orange_bed[facing=south,occupied=false,part=head]", + "1071": "minecraft:orange_bed[facing=south,occupied=false,part=foot]", + "1072": "minecraft:orange_bed[facing=west,occupied=true,part=head]", + "1073": "minecraft:orange_bed[facing=west,occupied=true,part=foot]", + "1074": "minecraft:orange_bed[facing=west,occupied=false,part=head]", + "1075": "minecraft:orange_bed[facing=west,occupied=false,part=foot]", + "1076": "minecraft:orange_bed[facing=east,occupied=true,part=head]", + "1077": "minecraft:orange_bed[facing=east,occupied=true,part=foot]", + "1078": "minecraft:orange_bed[facing=east,occupied=false,part=head]", + "1079": "minecraft:orange_bed[facing=east,occupied=false,part=foot]", + "1080": "minecraft:magenta_bed[facing=north,occupied=true,part=head]", + "1081": "minecraft:magenta_bed[facing=north,occupied=true,part=foot]", + "1082": "minecraft:magenta_bed[facing=north,occupied=false,part=head]", + "1083": "minecraft:magenta_bed[facing=north,occupied=false,part=foot]", + "1084": "minecraft:magenta_bed[facing=south,occupied=true,part=head]", + "1085": "minecraft:magenta_bed[facing=south,occupied=true,part=foot]", + "1086": "minecraft:magenta_bed[facing=south,occupied=false,part=head]", + "1087": "minecraft:magenta_bed[facing=south,occupied=false,part=foot]", + "1088": "minecraft:magenta_bed[facing=west,occupied=true,part=head]", + "1089": "minecraft:magenta_bed[facing=west,occupied=true,part=foot]", + "1090": "minecraft:magenta_bed[facing=west,occupied=false,part=head]", + "1091": "minecraft:magenta_bed[facing=west,occupied=false,part=foot]", + "1092": "minecraft:magenta_bed[facing=east,occupied=true,part=head]", + "1093": "minecraft:magenta_bed[facing=east,occupied=true,part=foot]", + "1094": "minecraft:magenta_bed[facing=east,occupied=false,part=head]", + "1095": "minecraft:magenta_bed[facing=east,occupied=false,part=foot]", + "1096": "minecraft:light_blue_bed[facing=north,occupied=true,part=head]", + "1097": "minecraft:light_blue_bed[facing=north,occupied=true,part=foot]", + "1098": "minecraft:light_blue_bed[facing=north,occupied=false,part=head]", + "1099": "minecraft:light_blue_bed[facing=north,occupied=false,part=foot]", + "1100": "minecraft:light_blue_bed[facing=south,occupied=true,part=head]", + "1101": "minecraft:light_blue_bed[facing=south,occupied=true,part=foot]", + "1102": "minecraft:light_blue_bed[facing=south,occupied=false,part=head]", + "1103": "minecraft:light_blue_bed[facing=south,occupied=false,part=foot]", + "1104": "minecraft:light_blue_bed[facing=west,occupied=true,part=head]", + "1105": "minecraft:light_blue_bed[facing=west,occupied=true,part=foot]", + "1106": "minecraft:light_blue_bed[facing=west,occupied=false,part=head]", + "1107": "minecraft:light_blue_bed[facing=west,occupied=false,part=foot]", + "1108": "minecraft:light_blue_bed[facing=east,occupied=true,part=head]", + "1109": "minecraft:light_blue_bed[facing=east,occupied=true,part=foot]", + "1110": "minecraft:light_blue_bed[facing=east,occupied=false,part=head]", + "1111": "minecraft:light_blue_bed[facing=east,occupied=false,part=foot]", + "1112": "minecraft:yellow_bed[facing=north,occupied=true,part=head]", + "1113": "minecraft:yellow_bed[facing=north,occupied=true,part=foot]", + "1114": "minecraft:yellow_bed[facing=north,occupied=false,part=head]", + "1115": "minecraft:yellow_bed[facing=north,occupied=false,part=foot]", + "1116": "minecraft:yellow_bed[facing=south,occupied=true,part=head]", + "1117": "minecraft:yellow_bed[facing=south,occupied=true,part=foot]", + "1118": "minecraft:yellow_bed[facing=south,occupied=false,part=head]", + "1119": "minecraft:yellow_bed[facing=south,occupied=false,part=foot]", + "1120": "minecraft:yellow_bed[facing=west,occupied=true,part=head]", + "1121": "minecraft:yellow_bed[facing=west,occupied=true,part=foot]", + "1122": "minecraft:yellow_bed[facing=west,occupied=false,part=head]", + "1123": "minecraft:yellow_bed[facing=west,occupied=false,part=foot]", + "1124": "minecraft:yellow_bed[facing=east,occupied=true,part=head]", + "1125": "minecraft:yellow_bed[facing=east,occupied=true,part=foot]", + "1126": "minecraft:yellow_bed[facing=east,occupied=false,part=head]", + "1127": "minecraft:yellow_bed[facing=east,occupied=false,part=foot]", + "1128": "minecraft:lime_bed[facing=north,occupied=true,part=head]", + "1129": "minecraft:lime_bed[facing=north,occupied=true,part=foot]", + "1130": "minecraft:lime_bed[facing=north,occupied=false,part=head]", + "1131": "minecraft:lime_bed[facing=north,occupied=false,part=foot]", + "1132": "minecraft:lime_bed[facing=south,occupied=true,part=head]", + "1133": "minecraft:lime_bed[facing=south,occupied=true,part=foot]", + "1134": "minecraft:lime_bed[facing=south,occupied=false,part=head]", + "1135": "minecraft:lime_bed[facing=south,occupied=false,part=foot]", + "1136": "minecraft:lime_bed[facing=west,occupied=true,part=head]", + "1137": "minecraft:lime_bed[facing=west,occupied=true,part=foot]", + "1138": "minecraft:lime_bed[facing=west,occupied=false,part=head]", + "1139": "minecraft:lime_bed[facing=west,occupied=false,part=foot]", + "1140": "minecraft:lime_bed[facing=east,occupied=true,part=head]", + "1141": "minecraft:lime_bed[facing=east,occupied=true,part=foot]", + "1142": "minecraft:lime_bed[facing=east,occupied=false,part=head]", + "1143": "minecraft:lime_bed[facing=east,occupied=false,part=foot]", + "1144": "minecraft:pink_bed[facing=north,occupied=true,part=head]", + "1145": "minecraft:pink_bed[facing=north,occupied=true,part=foot]", + "1146": "minecraft:pink_bed[facing=north,occupied=false,part=head]", + "1147": "minecraft:pink_bed[facing=north,occupied=false,part=foot]", + "1148": "minecraft:pink_bed[facing=south,occupied=true,part=head]", + "1149": "minecraft:pink_bed[facing=south,occupied=true,part=foot]", + "1150": "minecraft:pink_bed[facing=south,occupied=false,part=head]", + "1151": "minecraft:pink_bed[facing=south,occupied=false,part=foot]", + "1152": "minecraft:pink_bed[facing=west,occupied=true,part=head]", + "1153": "minecraft:pink_bed[facing=west,occupied=true,part=foot]", + "1154": "minecraft:pink_bed[facing=west,occupied=false,part=head]", + "1155": "minecraft:pink_bed[facing=west,occupied=false,part=foot]", + "1156": "minecraft:pink_bed[facing=east,occupied=true,part=head]", + "1157": "minecraft:pink_bed[facing=east,occupied=true,part=foot]", + "1158": "minecraft:pink_bed[facing=east,occupied=false,part=head]", + "1159": "minecraft:pink_bed[facing=east,occupied=false,part=foot]", + "1160": "minecraft:gray_bed[facing=north,occupied=true,part=head]", + "1161": "minecraft:gray_bed[facing=north,occupied=true,part=foot]", + "1162": "minecraft:gray_bed[facing=north,occupied=false,part=head]", + "1163": "minecraft:gray_bed[facing=north,occupied=false,part=foot]", + "1164": "minecraft:gray_bed[facing=south,occupied=true,part=head]", + "1165": "minecraft:gray_bed[facing=south,occupied=true,part=foot]", + "1166": "minecraft:gray_bed[facing=south,occupied=false,part=head]", + "1167": "minecraft:gray_bed[facing=south,occupied=false,part=foot]", + "1168": "minecraft:gray_bed[facing=west,occupied=true,part=head]", + "1169": "minecraft:gray_bed[facing=west,occupied=true,part=foot]", + "1170": "minecraft:gray_bed[facing=west,occupied=false,part=head]", + "1171": "minecraft:gray_bed[facing=west,occupied=false,part=foot]", + "1172": "minecraft:gray_bed[facing=east,occupied=true,part=head]", + "1173": "minecraft:gray_bed[facing=east,occupied=true,part=foot]", + "1174": "minecraft:gray_bed[facing=east,occupied=false,part=head]", + "1175": "minecraft:gray_bed[facing=east,occupied=false,part=foot]", + "1176": "minecraft:light_gray_bed[facing=north,occupied=true,part=head]", + "1177": "minecraft:light_gray_bed[facing=north,occupied=true,part=foot]", + "1178": "minecraft:light_gray_bed[facing=north,occupied=false,part=head]", + "1179": "minecraft:light_gray_bed[facing=north,occupied=false,part=foot]", + "1180": "minecraft:light_gray_bed[facing=south,occupied=true,part=head]", + "1181": "minecraft:light_gray_bed[facing=south,occupied=true,part=foot]", + "1182": "minecraft:light_gray_bed[facing=south,occupied=false,part=head]", + "1183": "minecraft:light_gray_bed[facing=south,occupied=false,part=foot]", + "1184": "minecraft:light_gray_bed[facing=west,occupied=true,part=head]", + "1185": "minecraft:light_gray_bed[facing=west,occupied=true,part=foot]", + "1186": "minecraft:light_gray_bed[facing=west,occupied=false,part=head]", + "1187": "minecraft:light_gray_bed[facing=west,occupied=false,part=foot]", + "1188": "minecraft:light_gray_bed[facing=east,occupied=true,part=head]", + "1189": "minecraft:light_gray_bed[facing=east,occupied=true,part=foot]", + "1190": "minecraft:light_gray_bed[facing=east,occupied=false,part=head]", + "1191": "minecraft:light_gray_bed[facing=east,occupied=false,part=foot]", + "1192": "minecraft:cyan_bed[facing=north,occupied=true,part=head]", + "1193": "minecraft:cyan_bed[facing=north,occupied=true,part=foot]", + "1194": "minecraft:cyan_bed[facing=north,occupied=false,part=head]", + "1195": "minecraft:cyan_bed[facing=north,occupied=false,part=foot]", + "1196": "minecraft:cyan_bed[facing=south,occupied=true,part=head]", + "1197": "minecraft:cyan_bed[facing=south,occupied=true,part=foot]", + "1198": "minecraft:cyan_bed[facing=south,occupied=false,part=head]", + "1199": "minecraft:cyan_bed[facing=south,occupied=false,part=foot]", + "1200": "minecraft:cyan_bed[facing=west,occupied=true,part=head]", + "1201": "minecraft:cyan_bed[facing=west,occupied=true,part=foot]", + "1202": "minecraft:cyan_bed[facing=west,occupied=false,part=head]", + "1203": "minecraft:cyan_bed[facing=west,occupied=false,part=foot]", + "1204": "minecraft:cyan_bed[facing=east,occupied=true,part=head]", + "1205": "minecraft:cyan_bed[facing=east,occupied=true,part=foot]", + "1206": "minecraft:cyan_bed[facing=east,occupied=false,part=head]", + "1207": "minecraft:cyan_bed[facing=east,occupied=false,part=foot]", + "1208": "minecraft:purple_bed[facing=north,occupied=true,part=head]", + "1209": "minecraft:purple_bed[facing=north,occupied=true,part=foot]", + "1210": "minecraft:purple_bed[facing=north,occupied=false,part=head]", + "1211": "minecraft:purple_bed[facing=north,occupied=false,part=foot]", + "1212": "minecraft:purple_bed[facing=south,occupied=true,part=head]", + "1213": "minecraft:purple_bed[facing=south,occupied=true,part=foot]", + "1214": "minecraft:purple_bed[facing=south,occupied=false,part=head]", + "1215": "minecraft:purple_bed[facing=south,occupied=false,part=foot]", + "1216": "minecraft:purple_bed[facing=west,occupied=true,part=head]", + "1217": "minecraft:purple_bed[facing=west,occupied=true,part=foot]", + "1218": "minecraft:purple_bed[facing=west,occupied=false,part=head]", + "1219": "minecraft:purple_bed[facing=west,occupied=false,part=foot]", + "1220": "minecraft:purple_bed[facing=east,occupied=true,part=head]", + "1221": "minecraft:purple_bed[facing=east,occupied=true,part=foot]", + "1222": "minecraft:purple_bed[facing=east,occupied=false,part=head]", + "1223": "minecraft:purple_bed[facing=east,occupied=false,part=foot]", + "1224": "minecraft:blue_bed[facing=north,occupied=true,part=head]", + "1225": "minecraft:blue_bed[facing=north,occupied=true,part=foot]", + "1226": "minecraft:blue_bed[facing=north,occupied=false,part=head]", + "1227": "minecraft:blue_bed[facing=north,occupied=false,part=foot]", + "1228": "minecraft:blue_bed[facing=south,occupied=true,part=head]", + "1229": "minecraft:blue_bed[facing=south,occupied=true,part=foot]", + "1230": "minecraft:blue_bed[facing=south,occupied=false,part=head]", + "1231": "minecraft:blue_bed[facing=south,occupied=false,part=foot]", + "1232": "minecraft:blue_bed[facing=west,occupied=true,part=head]", + "1233": "minecraft:blue_bed[facing=west,occupied=true,part=foot]", + "1234": "minecraft:blue_bed[facing=west,occupied=false,part=head]", + "1235": "minecraft:blue_bed[facing=west,occupied=false,part=foot]", + "1236": "minecraft:blue_bed[facing=east,occupied=true,part=head]", + "1237": "minecraft:blue_bed[facing=east,occupied=true,part=foot]", + "1238": "minecraft:blue_bed[facing=east,occupied=false,part=head]", + "1239": "minecraft:blue_bed[facing=east,occupied=false,part=foot]", + "1240": "minecraft:brown_bed[facing=north,occupied=true,part=head]", + "1241": "minecraft:brown_bed[facing=north,occupied=true,part=foot]", + "1242": "minecraft:brown_bed[facing=north,occupied=false,part=head]", + "1243": "minecraft:brown_bed[facing=north,occupied=false,part=foot]", + "1244": "minecraft:brown_bed[facing=south,occupied=true,part=head]", + "1245": "minecraft:brown_bed[facing=south,occupied=true,part=foot]", + "1246": "minecraft:brown_bed[facing=south,occupied=false,part=head]", + "1247": "minecraft:brown_bed[facing=south,occupied=false,part=foot]", + "1248": "minecraft:brown_bed[facing=west,occupied=true,part=head]", + "1249": "minecraft:brown_bed[facing=west,occupied=true,part=foot]", + "1250": "minecraft:brown_bed[facing=west,occupied=false,part=head]", + "1251": "minecraft:brown_bed[facing=west,occupied=false,part=foot]", + "1252": "minecraft:brown_bed[facing=east,occupied=true,part=head]", + "1253": "minecraft:brown_bed[facing=east,occupied=true,part=foot]", + "1254": "minecraft:brown_bed[facing=east,occupied=false,part=head]", + "1255": "minecraft:brown_bed[facing=east,occupied=false,part=foot]", + "1256": "minecraft:green_bed[facing=north,occupied=true,part=head]", + "1257": "minecraft:green_bed[facing=north,occupied=true,part=foot]", + "1258": "minecraft:green_bed[facing=north,occupied=false,part=head]", + "1259": "minecraft:green_bed[facing=north,occupied=false,part=foot]", + "1260": "minecraft:green_bed[facing=south,occupied=true,part=head]", + "1261": "minecraft:green_bed[facing=south,occupied=true,part=foot]", + "1262": "minecraft:green_bed[facing=south,occupied=false,part=head]", + "1263": "minecraft:green_bed[facing=south,occupied=false,part=foot]", + "1264": "minecraft:green_bed[facing=west,occupied=true,part=head]", + "1265": "minecraft:green_bed[facing=west,occupied=true,part=foot]", + "1266": "minecraft:green_bed[facing=west,occupied=false,part=head]", + "1267": "minecraft:green_bed[facing=west,occupied=false,part=foot]", + "1268": "minecraft:green_bed[facing=east,occupied=true,part=head]", + "1269": "minecraft:green_bed[facing=east,occupied=true,part=foot]", + "1270": "minecraft:green_bed[facing=east,occupied=false,part=head]", + "1271": "minecraft:green_bed[facing=east,occupied=false,part=foot]", + "1272": "minecraft:red_bed[facing=north,occupied=true,part=head]", + "1273": "minecraft:red_bed[facing=north,occupied=true,part=foot]", + "1274": "minecraft:red_bed[facing=north,occupied=false,part=head]", + "1275": "minecraft:red_bed[facing=north,occupied=false,part=foot]", + "1276": "minecraft:red_bed[facing=south,occupied=true,part=head]", + "1277": "minecraft:red_bed[facing=south,occupied=true,part=foot]", + "1278": "minecraft:red_bed[facing=south,occupied=false,part=head]", + "1279": "minecraft:red_bed[facing=south,occupied=false,part=foot]", + "1280": "minecraft:red_bed[facing=west,occupied=true,part=head]", + "1281": "minecraft:red_bed[facing=west,occupied=true,part=foot]", + "1282": "minecraft:red_bed[facing=west,occupied=false,part=head]", + "1283": "minecraft:red_bed[facing=west,occupied=false,part=foot]", + "1284": "minecraft:red_bed[facing=east,occupied=true,part=head]", + "1285": "minecraft:red_bed[facing=east,occupied=true,part=foot]", + "1286": "minecraft:red_bed[facing=east,occupied=false,part=head]", + "1287": "minecraft:red_bed[facing=east,occupied=false,part=foot]", + "1288": "minecraft:black_bed[facing=north,occupied=true,part=head]", + "1289": "minecraft:black_bed[facing=north,occupied=true,part=foot]", + "1290": "minecraft:black_bed[facing=north,occupied=false,part=head]", + "1291": "minecraft:black_bed[facing=north,occupied=false,part=foot]", + "1292": "minecraft:black_bed[facing=south,occupied=true,part=head]", + "1293": "minecraft:black_bed[facing=south,occupied=true,part=foot]", + "1294": "minecraft:black_bed[facing=south,occupied=false,part=head]", + "1295": "minecraft:black_bed[facing=south,occupied=false,part=foot]", + "1296": "minecraft:black_bed[facing=west,occupied=true,part=head]", + "1297": "minecraft:black_bed[facing=west,occupied=true,part=foot]", + "1298": "minecraft:black_bed[facing=west,occupied=false,part=head]", + "1299": "minecraft:black_bed[facing=west,occupied=false,part=foot]", + "1300": "minecraft:black_bed[facing=east,occupied=true,part=head]", + "1301": "minecraft:black_bed[facing=east,occupied=true,part=foot]", + "1302": "minecraft:black_bed[facing=east,occupied=false,part=head]", + "1303": "minecraft:black_bed[facing=east,occupied=false,part=foot]", + "1304": "minecraft:powered_rail[powered=true,shape=north_south]", + "1305": "minecraft:powered_rail[powered=true,shape=east_west]", + "1306": "minecraft:powered_rail[powered=true,shape=ascending_east]", + "1307": "minecraft:powered_rail[powered=true,shape=ascending_west]", + "1308": "minecraft:powered_rail[powered=true,shape=ascending_north]", + "1309": "minecraft:powered_rail[powered=true,shape=ascending_south]", + "1310": "minecraft:powered_rail[powered=false,shape=north_south]", + "1311": "minecraft:powered_rail[powered=false,shape=east_west]", + "1312": "minecraft:powered_rail[powered=false,shape=ascending_east]", + "1313": "minecraft:powered_rail[powered=false,shape=ascending_west]", + "1314": "minecraft:powered_rail[powered=false,shape=ascending_north]", + "1315": "minecraft:powered_rail[powered=false,shape=ascending_south]", + "1316": "minecraft:detector_rail[powered=true,shape=north_south]", + "1317": "minecraft:detector_rail[powered=true,shape=east_west]", + "1318": "minecraft:detector_rail[powered=true,shape=ascending_east]", + "1319": "minecraft:detector_rail[powered=true,shape=ascending_west]", + "1320": "minecraft:detector_rail[powered=true,shape=ascending_north]", + "1321": "minecraft:detector_rail[powered=true,shape=ascending_south]", + "1322": "minecraft:detector_rail[powered=false,shape=north_south]", + "1323": "minecraft:detector_rail[powered=false,shape=east_west]", + "1324": "minecraft:detector_rail[powered=false,shape=ascending_east]", + "1325": "minecraft:detector_rail[powered=false,shape=ascending_west]", + "1326": "minecraft:detector_rail[powered=false,shape=ascending_north]", + "1327": "minecraft:detector_rail[powered=false,shape=ascending_south]", + "1328": "minecraft:sticky_piston[extended=true,facing=north]", + "1329": "minecraft:sticky_piston[extended=true,facing=east]", + "1330": "minecraft:sticky_piston[extended=true,facing=south]", + "1331": "minecraft:sticky_piston[extended=true,facing=west]", + "1332": "minecraft:sticky_piston[extended=true,facing=up]", + "1333": "minecraft:sticky_piston[extended=true,facing=down]", + "1334": "minecraft:sticky_piston[extended=false,facing=north]", + "1335": "minecraft:sticky_piston[extended=false,facing=east]", + "1336": "minecraft:sticky_piston[extended=false,facing=south]", + "1337": "minecraft:sticky_piston[extended=false,facing=west]", + "1338": "minecraft:sticky_piston[extended=false,facing=up]", + "1339": "minecraft:sticky_piston[extended=false,facing=down]", + "1340": "minecraft:cobweb", + "1341": "minecraft:grass", + "1342": "minecraft:fern", + "1343": "minecraft:dead_bush", + "1344": "minecraft:seagrass", + "1345": "minecraft:tall_seagrass[half=upper]", + "1346": "minecraft:tall_seagrass[half=lower]", + "1347": "minecraft:piston[extended=true,facing=north]", + "1348": "minecraft:piston[extended=true,facing=east]", + "1349": "minecraft:piston[extended=true,facing=south]", + "1350": "minecraft:piston[extended=true,facing=west]", + "1351": "minecraft:piston[extended=true,facing=up]", + "1352": "minecraft:piston[extended=true,facing=down]", + "1353": "minecraft:piston[extended=false,facing=north]", + "1354": "minecraft:piston[extended=false,facing=east]", + "1355": "minecraft:piston[extended=false,facing=south]", + "1356": "minecraft:piston[extended=false,facing=west]", + "1357": "minecraft:piston[extended=false,facing=up]", + "1358": "minecraft:piston[extended=false,facing=down]", + "1359": "minecraft:piston_head[facing=north,short=true,type=normal]", + "1360": "minecraft:piston_head[facing=north,short=true,type=sticky]", + "1361": "minecraft:piston_head[facing=north,short=false,type=normal]", + "1362": "minecraft:piston_head[facing=north,short=false,type=sticky]", + "1363": "minecraft:piston_head[facing=east,short=true,type=normal]", + "1364": "minecraft:piston_head[facing=east,short=true,type=sticky]", + "1365": "minecraft:piston_head[facing=east,short=false,type=normal]", + "1366": "minecraft:piston_head[facing=east,short=false,type=sticky]", + "1367": "minecraft:piston_head[facing=south,short=true,type=normal]", + "1368": "minecraft:piston_head[facing=south,short=true,type=sticky]", + "1369": "minecraft:piston_head[facing=south,short=false,type=normal]", + "1370": "minecraft:piston_head[facing=south,short=false,type=sticky]", + "1371": "minecraft:piston_head[facing=west,short=true,type=normal]", + "1372": "minecraft:piston_head[facing=west,short=true,type=sticky]", + "1373": "minecraft:piston_head[facing=west,short=false,type=normal]", + "1374": "minecraft:piston_head[facing=west,short=false,type=sticky]", + "1375": "minecraft:piston_head[facing=up,short=true,type=normal]", + "1376": "minecraft:piston_head[facing=up,short=true,type=sticky]", + "1377": "minecraft:piston_head[facing=up,short=false,type=normal]", + "1378": "minecraft:piston_head[facing=up,short=false,type=sticky]", + "1379": "minecraft:piston_head[facing=down,short=true,type=normal]", + "1380": "minecraft:piston_head[facing=down,short=true,type=sticky]", + "1381": "minecraft:piston_head[facing=down,short=false,type=normal]", + "1382": "minecraft:piston_head[facing=down,short=false,type=sticky]", + "1383": "minecraft:white_wool", + "1384": "minecraft:orange_wool", + "1385": "minecraft:magenta_wool", + "1386": "minecraft:light_blue_wool", + "1387": "minecraft:yellow_wool", + "1388": "minecraft:lime_wool", + "1389": "minecraft:pink_wool", + "1390": "minecraft:gray_wool", + "1391": "minecraft:light_gray_wool", + "1392": "minecraft:cyan_wool", + "1393": "minecraft:purple_wool", + "1394": "minecraft:blue_wool", + "1395": "minecraft:brown_wool", + "1396": "minecraft:green_wool", + "1397": "minecraft:red_wool", + "1398": "minecraft:black_wool", + "1399": "minecraft:moving_piston[facing=north,type=normal]", + "1400": "minecraft:moving_piston[facing=north,type=sticky]", + "1401": "minecraft:moving_piston[facing=east,type=normal]", + "1402": "minecraft:moving_piston[facing=east,type=sticky]", + "1403": "minecraft:moving_piston[facing=south,type=normal]", + "1404": "minecraft:moving_piston[facing=south,type=sticky]", + "1405": "minecraft:moving_piston[facing=west,type=normal]", + "1406": "minecraft:moving_piston[facing=west,type=sticky]", + "1407": "minecraft:moving_piston[facing=up,type=normal]", + "1408": "minecraft:moving_piston[facing=up,type=sticky]", + "1409": "minecraft:moving_piston[facing=down,type=normal]", + "1410": "minecraft:moving_piston[facing=down,type=sticky]", + "1411": "minecraft:dandelion", + "1412": "minecraft:poppy", + "1413": "minecraft:blue_orchid", + "1414": "minecraft:allium", + "1415": "minecraft:azure_bluet", + "1416": "minecraft:red_tulip", + "1417": "minecraft:orange_tulip", + "1418": "minecraft:white_tulip", + "1419": "minecraft:pink_tulip", + "1420": "minecraft:oxeye_daisy", + "1421": "minecraft:cornflower", + "1422": "minecraft:wither_rose", + "1423": "minecraft:lily_of_the_valley", + "1424": "minecraft:brown_mushroom", + "1425": "minecraft:red_mushroom", + "1426": "minecraft:gold_block", + "1427": "minecraft:iron_block", + "1428": "minecraft:bricks", + "1429": "minecraft:tnt[unstable=true]", + "1430": "minecraft:tnt[unstable=false]", + "1431": "minecraft:bookshelf", + "1432": "minecraft:mossy_cobblestone", + "1433": "minecraft:obsidian", + "1434": "minecraft:torch", + "1435": "minecraft:wall_torch[facing=north]", + "1436": "minecraft:wall_torch[facing=south]", + "1437": "minecraft:wall_torch[facing=west]", + "1438": "minecraft:wall_torch[facing=east]", + "1439": "minecraft:fire[age=0,east=true,north=true,south=true,up=true,west=true]", + "1440": "minecraft:fire[age=0,east=true,north=true,south=true,up=true,west=false]", + "1441": "minecraft:fire[age=0,east=true,north=true,south=true,up=false,west=true]", + "1442": "minecraft:fire[age=0,east=true,north=true,south=true,up=false,west=false]", + "1443": "minecraft:fire[age=0,east=true,north=true,south=false,up=true,west=true]", + "1444": "minecraft:fire[age=0,east=true,north=true,south=false,up=true,west=false]", + "1445": "minecraft:fire[age=0,east=true,north=true,south=false,up=false,west=true]", + "1446": "minecraft:fire[age=0,east=true,north=true,south=false,up=false,west=false]", + "1447": "minecraft:fire[age=0,east=true,north=false,south=true,up=true,west=true]", + "1448": "minecraft:fire[age=0,east=true,north=false,south=true,up=true,west=false]", + "1449": "minecraft:fire[age=0,east=true,north=false,south=true,up=false,west=true]", + "1450": "minecraft:fire[age=0,east=true,north=false,south=true,up=false,west=false]", + "1451": "minecraft:fire[age=0,east=true,north=false,south=false,up=true,west=true]", + "1452": "minecraft:fire[age=0,east=true,north=false,south=false,up=true,west=false]", + "1453": "minecraft:fire[age=0,east=true,north=false,south=false,up=false,west=true]", + "1454": "minecraft:fire[age=0,east=true,north=false,south=false,up=false,west=false]", + "1455": "minecraft:fire[age=0,east=false,north=true,south=true,up=true,west=true]", + "1456": "minecraft:fire[age=0,east=false,north=true,south=true,up=true,west=false]", + "1457": "minecraft:fire[age=0,east=false,north=true,south=true,up=false,west=true]", + "1458": "minecraft:fire[age=0,east=false,north=true,south=true,up=false,west=false]", + "1459": "minecraft:fire[age=0,east=false,north=true,south=false,up=true,west=true]", + "1460": "minecraft:fire[age=0,east=false,north=true,south=false,up=true,west=false]", + "1461": "minecraft:fire[age=0,east=false,north=true,south=false,up=false,west=true]", + "1462": "minecraft:fire[age=0,east=false,north=true,south=false,up=false,west=false]", + "1463": "minecraft:fire[age=0,east=false,north=false,south=true,up=true,west=true]", + "1464": "minecraft:fire[age=0,east=false,north=false,south=true,up=true,west=false]", + "1465": "minecraft:fire[age=0,east=false,north=false,south=true,up=false,west=true]", + "1466": "minecraft:fire[age=0,east=false,north=false,south=true,up=false,west=false]", + "1467": "minecraft:fire[age=0,east=false,north=false,south=false,up=true,west=true]", + "1468": "minecraft:fire[age=0,east=false,north=false,south=false,up=true,west=false]", + "1469": "minecraft:fire[age=0,east=false,north=false,south=false,up=false,west=true]", + "1470": "minecraft:fire[age=0,east=false,north=false,south=false,up=false,west=false]", + "1471": "minecraft:fire[age=1,east=true,north=true,south=true,up=true,west=true]", + "1472": "minecraft:fire[age=1,east=true,north=true,south=true,up=true,west=false]", + "1473": "minecraft:fire[age=1,east=true,north=true,south=true,up=false,west=true]", + "1474": "minecraft:fire[age=1,east=true,north=true,south=true,up=false,west=false]", + "1475": "minecraft:fire[age=1,east=true,north=true,south=false,up=true,west=true]", + "1476": "minecraft:fire[age=1,east=true,north=true,south=false,up=true,west=false]", + "1477": "minecraft:fire[age=1,east=true,north=true,south=false,up=false,west=true]", + "1478": "minecraft:fire[age=1,east=true,north=true,south=false,up=false,west=false]", + "1479": "minecraft:fire[age=1,east=true,north=false,south=true,up=true,west=true]", + "1480": "minecraft:fire[age=1,east=true,north=false,south=true,up=true,west=false]", + "1481": "minecraft:fire[age=1,east=true,north=false,south=true,up=false,west=true]", + "1482": "minecraft:fire[age=1,east=true,north=false,south=true,up=false,west=false]", + "1483": "minecraft:fire[age=1,east=true,north=false,south=false,up=true,west=true]", + "1484": "minecraft:fire[age=1,east=true,north=false,south=false,up=true,west=false]", + "1485": "minecraft:fire[age=1,east=true,north=false,south=false,up=false,west=true]", + "1486": "minecraft:fire[age=1,east=true,north=false,south=false,up=false,west=false]", + "1487": "minecraft:fire[age=1,east=false,north=true,south=true,up=true,west=true]", + "1488": "minecraft:fire[age=1,east=false,north=true,south=true,up=true,west=false]", + "1489": "minecraft:fire[age=1,east=false,north=true,south=true,up=false,west=true]", + "1490": "minecraft:fire[age=1,east=false,north=true,south=true,up=false,west=false]", + "1491": "minecraft:fire[age=1,east=false,north=true,south=false,up=true,west=true]", + "1492": "minecraft:fire[age=1,east=false,north=true,south=false,up=true,west=false]", + "1493": "minecraft:fire[age=1,east=false,north=true,south=false,up=false,west=true]", + "1494": "minecraft:fire[age=1,east=false,north=true,south=false,up=false,west=false]", + "1495": "minecraft:fire[age=1,east=false,north=false,south=true,up=true,west=true]", + "1496": "minecraft:fire[age=1,east=false,north=false,south=true,up=true,west=false]", + "1497": "minecraft:fire[age=1,east=false,north=false,south=true,up=false,west=true]", + "1498": "minecraft:fire[age=1,east=false,north=false,south=true,up=false,west=false]", + "1499": "minecraft:fire[age=1,east=false,north=false,south=false,up=true,west=true]", + "1500": "minecraft:fire[age=1,east=false,north=false,south=false,up=true,west=false]", + "1501": "minecraft:fire[age=1,east=false,north=false,south=false,up=false,west=true]", + "1502": "minecraft:fire[age=1,east=false,north=false,south=false,up=false,west=false]", + "1503": "minecraft:fire[age=2,east=true,north=true,south=true,up=true,west=true]", + "1504": "minecraft:fire[age=2,east=true,north=true,south=true,up=true,west=false]", + "1505": "minecraft:fire[age=2,east=true,north=true,south=true,up=false,west=true]", + "1506": "minecraft:fire[age=2,east=true,north=true,south=true,up=false,west=false]", + "1507": "minecraft:fire[age=2,east=true,north=true,south=false,up=true,west=true]", + "1508": "minecraft:fire[age=2,east=true,north=true,south=false,up=true,west=false]", + "1509": "minecraft:fire[age=2,east=true,north=true,south=false,up=false,west=true]", + "1510": "minecraft:fire[age=2,east=true,north=true,south=false,up=false,west=false]", + "1511": "minecraft:fire[age=2,east=true,north=false,south=true,up=true,west=true]", + "1512": "minecraft:fire[age=2,east=true,north=false,south=true,up=true,west=false]", + "1513": "minecraft:fire[age=2,east=true,north=false,south=true,up=false,west=true]", + "1514": "minecraft:fire[age=2,east=true,north=false,south=true,up=false,west=false]", + "1515": "minecraft:fire[age=2,east=true,north=false,south=false,up=true,west=true]", + "1516": "minecraft:fire[age=2,east=true,north=false,south=false,up=true,west=false]", + "1517": "minecraft:fire[age=2,east=true,north=false,south=false,up=false,west=true]", + "1518": "minecraft:fire[age=2,east=true,north=false,south=false,up=false,west=false]", + "1519": "minecraft:fire[age=2,east=false,north=true,south=true,up=true,west=true]", + "1520": "minecraft:fire[age=2,east=false,north=true,south=true,up=true,west=false]", + "1521": "minecraft:fire[age=2,east=false,north=true,south=true,up=false,west=true]", + "1522": "minecraft:fire[age=2,east=false,north=true,south=true,up=false,west=false]", + "1523": "minecraft:fire[age=2,east=false,north=true,south=false,up=true,west=true]", + "1524": "minecraft:fire[age=2,east=false,north=true,south=false,up=true,west=false]", + "1525": "minecraft:fire[age=2,east=false,north=true,south=false,up=false,west=true]", + "1526": "minecraft:fire[age=2,east=false,north=true,south=false,up=false,west=false]", + "1527": "minecraft:fire[age=2,east=false,north=false,south=true,up=true,west=true]", + "1528": "minecraft:fire[age=2,east=false,north=false,south=true,up=true,west=false]", + "1529": "minecraft:fire[age=2,east=false,north=false,south=true,up=false,west=true]", + "1530": "minecraft:fire[age=2,east=false,north=false,south=true,up=false,west=false]", + "1531": "minecraft:fire[age=2,east=false,north=false,south=false,up=true,west=true]", + "1532": "minecraft:fire[age=2,east=false,north=false,south=false,up=true,west=false]", + "1533": "minecraft:fire[age=2,east=false,north=false,south=false,up=false,west=true]", + "1534": "minecraft:fire[age=2,east=false,north=false,south=false,up=false,west=false]", + "1535": "minecraft:fire[age=3,east=true,north=true,south=true,up=true,west=true]", + "1536": "minecraft:fire[age=3,east=true,north=true,south=true,up=true,west=false]", + "1537": "minecraft:fire[age=3,east=true,north=true,south=true,up=false,west=true]", + "1538": "minecraft:fire[age=3,east=true,north=true,south=true,up=false,west=false]", + "1539": "minecraft:fire[age=3,east=true,north=true,south=false,up=true,west=true]", + "1540": "minecraft:fire[age=3,east=true,north=true,south=false,up=true,west=false]", + "1541": "minecraft:fire[age=3,east=true,north=true,south=false,up=false,west=true]", + "1542": "minecraft:fire[age=3,east=true,north=true,south=false,up=false,west=false]", + "1543": "minecraft:fire[age=3,east=true,north=false,south=true,up=true,west=true]", + "1544": "minecraft:fire[age=3,east=true,north=false,south=true,up=true,west=false]", + "1545": "minecraft:fire[age=3,east=true,north=false,south=true,up=false,west=true]", + "1546": "minecraft:fire[age=3,east=true,north=false,south=true,up=false,west=false]", + "1547": "minecraft:fire[age=3,east=true,north=false,south=false,up=true,west=true]", + "1548": "minecraft:fire[age=3,east=true,north=false,south=false,up=true,west=false]", + "1549": "minecraft:fire[age=3,east=true,north=false,south=false,up=false,west=true]", + "1550": "minecraft:fire[age=3,east=true,north=false,south=false,up=false,west=false]", + "1551": "minecraft:fire[age=3,east=false,north=true,south=true,up=true,west=true]", + "1552": "minecraft:fire[age=3,east=false,north=true,south=true,up=true,west=false]", + "1553": "minecraft:fire[age=3,east=false,north=true,south=true,up=false,west=true]", + "1554": "minecraft:fire[age=3,east=false,north=true,south=true,up=false,west=false]", + "1555": "minecraft:fire[age=3,east=false,north=true,south=false,up=true,west=true]", + "1556": "minecraft:fire[age=3,east=false,north=true,south=false,up=true,west=false]", + "1557": "minecraft:fire[age=3,east=false,north=true,south=false,up=false,west=true]", + "1558": "minecraft:fire[age=3,east=false,north=true,south=false,up=false,west=false]", + "1559": "minecraft:fire[age=3,east=false,north=false,south=true,up=true,west=true]", + "1560": "minecraft:fire[age=3,east=false,north=false,south=true,up=true,west=false]", + "1561": "minecraft:fire[age=3,east=false,north=false,south=true,up=false,west=true]", + "1562": "minecraft:fire[age=3,east=false,north=false,south=true,up=false,west=false]", + "1563": "minecraft:fire[age=3,east=false,north=false,south=false,up=true,west=true]", + "1564": "minecraft:fire[age=3,east=false,north=false,south=false,up=true,west=false]", + "1565": "minecraft:fire[age=3,east=false,north=false,south=false,up=false,west=true]", + "1566": "minecraft:fire[age=3,east=false,north=false,south=false,up=false,west=false]", + "1567": "minecraft:fire[age=4,east=true,north=true,south=true,up=true,west=true]", + "1568": "minecraft:fire[age=4,east=true,north=true,south=true,up=true,west=false]", + "1569": "minecraft:fire[age=4,east=true,north=true,south=true,up=false,west=true]", + "1570": "minecraft:fire[age=4,east=true,north=true,south=true,up=false,west=false]", + "1571": "minecraft:fire[age=4,east=true,north=true,south=false,up=true,west=true]", + "1572": "minecraft:fire[age=4,east=true,north=true,south=false,up=true,west=false]", + "1573": "minecraft:fire[age=4,east=true,north=true,south=false,up=false,west=true]", + "1574": "minecraft:fire[age=4,east=true,north=true,south=false,up=false,west=false]", + "1575": "minecraft:fire[age=4,east=true,north=false,south=true,up=true,west=true]", + "1576": "minecraft:fire[age=4,east=true,north=false,south=true,up=true,west=false]", + "1577": "minecraft:fire[age=4,east=true,north=false,south=true,up=false,west=true]", + "1578": "minecraft:fire[age=4,east=true,north=false,south=true,up=false,west=false]", + "1579": "minecraft:fire[age=4,east=true,north=false,south=false,up=true,west=true]", + "1580": "minecraft:fire[age=4,east=true,north=false,south=false,up=true,west=false]", + "1581": "minecraft:fire[age=4,east=true,north=false,south=false,up=false,west=true]", + "1582": "minecraft:fire[age=4,east=true,north=false,south=false,up=false,west=false]", + "1583": "minecraft:fire[age=4,east=false,north=true,south=true,up=true,west=true]", + "1584": "minecraft:fire[age=4,east=false,north=true,south=true,up=true,west=false]", + "1585": "minecraft:fire[age=4,east=false,north=true,south=true,up=false,west=true]", + "1586": "minecraft:fire[age=4,east=false,north=true,south=true,up=false,west=false]", + "1587": "minecraft:fire[age=4,east=false,north=true,south=false,up=true,west=true]", + "1588": "minecraft:fire[age=4,east=false,north=true,south=false,up=true,west=false]", + "1589": "minecraft:fire[age=4,east=false,north=true,south=false,up=false,west=true]", + "1590": "minecraft:fire[age=4,east=false,north=true,south=false,up=false,west=false]", + "1591": "minecraft:fire[age=4,east=false,north=false,south=true,up=true,west=true]", + "1592": "minecraft:fire[age=4,east=false,north=false,south=true,up=true,west=false]", + "1593": "minecraft:fire[age=4,east=false,north=false,south=true,up=false,west=true]", + "1594": "minecraft:fire[age=4,east=false,north=false,south=true,up=false,west=false]", + "1595": "minecraft:fire[age=4,east=false,north=false,south=false,up=true,west=true]", + "1596": "minecraft:fire[age=4,east=false,north=false,south=false,up=true,west=false]", + "1597": "minecraft:fire[age=4,east=false,north=false,south=false,up=false,west=true]", + "1598": "minecraft:fire[age=4,east=false,north=false,south=false,up=false,west=false]", + "1599": "minecraft:fire[age=5,east=true,north=true,south=true,up=true,west=true]", + "1600": "minecraft:fire[age=5,east=true,north=true,south=true,up=true,west=false]", + "1601": "minecraft:fire[age=5,east=true,north=true,south=true,up=false,west=true]", + "1602": "minecraft:fire[age=5,east=true,north=true,south=true,up=false,west=false]", + "1603": "minecraft:fire[age=5,east=true,north=true,south=false,up=true,west=true]", + "1604": "minecraft:fire[age=5,east=true,north=true,south=false,up=true,west=false]", + "1605": "minecraft:fire[age=5,east=true,north=true,south=false,up=false,west=true]", + "1606": "minecraft:fire[age=5,east=true,north=true,south=false,up=false,west=false]", + "1607": "minecraft:fire[age=5,east=true,north=false,south=true,up=true,west=true]", + "1608": "minecraft:fire[age=5,east=true,north=false,south=true,up=true,west=false]", + "1609": "minecraft:fire[age=5,east=true,north=false,south=true,up=false,west=true]", + "1610": "minecraft:fire[age=5,east=true,north=false,south=true,up=false,west=false]", + "1611": "minecraft:fire[age=5,east=true,north=false,south=false,up=true,west=true]", + "1612": "minecraft:fire[age=5,east=true,north=false,south=false,up=true,west=false]", + "1613": "minecraft:fire[age=5,east=true,north=false,south=false,up=false,west=true]", + "1614": "minecraft:fire[age=5,east=true,north=false,south=false,up=false,west=false]", + "1615": "minecraft:fire[age=5,east=false,north=true,south=true,up=true,west=true]", + "1616": "minecraft:fire[age=5,east=false,north=true,south=true,up=true,west=false]", + "1617": "minecraft:fire[age=5,east=false,north=true,south=true,up=false,west=true]", + "1618": "minecraft:fire[age=5,east=false,north=true,south=true,up=false,west=false]", + "1619": "minecraft:fire[age=5,east=false,north=true,south=false,up=true,west=true]", + "1620": "minecraft:fire[age=5,east=false,north=true,south=false,up=true,west=false]", + "1621": "minecraft:fire[age=5,east=false,north=true,south=false,up=false,west=true]", + "1622": "minecraft:fire[age=5,east=false,north=true,south=false,up=false,west=false]", + "1623": "minecraft:fire[age=5,east=false,north=false,south=true,up=true,west=true]", + "1624": "minecraft:fire[age=5,east=false,north=false,south=true,up=true,west=false]", + "1625": "minecraft:fire[age=5,east=false,north=false,south=true,up=false,west=true]", + "1626": "minecraft:fire[age=5,east=false,north=false,south=true,up=false,west=false]", + "1627": "minecraft:fire[age=5,east=false,north=false,south=false,up=true,west=true]", + "1628": "minecraft:fire[age=5,east=false,north=false,south=false,up=true,west=false]", + "1629": "minecraft:fire[age=5,east=false,north=false,south=false,up=false,west=true]", + "1630": "minecraft:fire[age=5,east=false,north=false,south=false,up=false,west=false]", + "1631": "minecraft:fire[age=6,east=true,north=true,south=true,up=true,west=true]", + "1632": "minecraft:fire[age=6,east=true,north=true,south=true,up=true,west=false]", + "1633": "minecraft:fire[age=6,east=true,north=true,south=true,up=false,west=true]", + "1634": "minecraft:fire[age=6,east=true,north=true,south=true,up=false,west=false]", + "1635": "minecraft:fire[age=6,east=true,north=true,south=false,up=true,west=true]", + "1636": "minecraft:fire[age=6,east=true,north=true,south=false,up=true,west=false]", + "1637": "minecraft:fire[age=6,east=true,north=true,south=false,up=false,west=true]", + "1638": "minecraft:fire[age=6,east=true,north=true,south=false,up=false,west=false]", + "1639": "minecraft:fire[age=6,east=true,north=false,south=true,up=true,west=true]", + "1640": "minecraft:fire[age=6,east=true,north=false,south=true,up=true,west=false]", + "1641": "minecraft:fire[age=6,east=true,north=false,south=true,up=false,west=true]", + "1642": "minecraft:fire[age=6,east=true,north=false,south=true,up=false,west=false]", + "1643": "minecraft:fire[age=6,east=true,north=false,south=false,up=true,west=true]", + "1644": "minecraft:fire[age=6,east=true,north=false,south=false,up=true,west=false]", + "1645": "minecraft:fire[age=6,east=true,north=false,south=false,up=false,west=true]", + "1646": "minecraft:fire[age=6,east=true,north=false,south=false,up=false,west=false]", + "1647": "minecraft:fire[age=6,east=false,north=true,south=true,up=true,west=true]", + "1648": "minecraft:fire[age=6,east=false,north=true,south=true,up=true,west=false]", + "1649": "minecraft:fire[age=6,east=false,north=true,south=true,up=false,west=true]", + "1650": "minecraft:fire[age=6,east=false,north=true,south=true,up=false,west=false]", + "1651": "minecraft:fire[age=6,east=false,north=true,south=false,up=true,west=true]", + "1652": "minecraft:fire[age=6,east=false,north=true,south=false,up=true,west=false]", + "1653": "minecraft:fire[age=6,east=false,north=true,south=false,up=false,west=true]", + "1654": "minecraft:fire[age=6,east=false,north=true,south=false,up=false,west=false]", + "1655": "minecraft:fire[age=6,east=false,north=false,south=true,up=true,west=true]", + "1656": "minecraft:fire[age=6,east=false,north=false,south=true,up=true,west=false]", + "1657": "minecraft:fire[age=6,east=false,north=false,south=true,up=false,west=true]", + "1658": "minecraft:fire[age=6,east=false,north=false,south=true,up=false,west=false]", + "1659": "minecraft:fire[age=6,east=false,north=false,south=false,up=true,west=true]", + "1660": "minecraft:fire[age=6,east=false,north=false,south=false,up=true,west=false]", + "1661": "minecraft:fire[age=6,east=false,north=false,south=false,up=false,west=true]", + "1662": "minecraft:fire[age=6,east=false,north=false,south=false,up=false,west=false]", + "1663": "minecraft:fire[age=7,east=true,north=true,south=true,up=true,west=true]", + "1664": "minecraft:fire[age=7,east=true,north=true,south=true,up=true,west=false]", + "1665": "minecraft:fire[age=7,east=true,north=true,south=true,up=false,west=true]", + "1666": "minecraft:fire[age=7,east=true,north=true,south=true,up=false,west=false]", + "1667": "minecraft:fire[age=7,east=true,north=true,south=false,up=true,west=true]", + "1668": "minecraft:fire[age=7,east=true,north=true,south=false,up=true,west=false]", + "1669": "minecraft:fire[age=7,east=true,north=true,south=false,up=false,west=true]", + "1670": "minecraft:fire[age=7,east=true,north=true,south=false,up=false,west=false]", + "1671": "minecraft:fire[age=7,east=true,north=false,south=true,up=true,west=true]", + "1672": "minecraft:fire[age=7,east=true,north=false,south=true,up=true,west=false]", + "1673": "minecraft:fire[age=7,east=true,north=false,south=true,up=false,west=true]", + "1674": "minecraft:fire[age=7,east=true,north=false,south=true,up=false,west=false]", + "1675": "minecraft:fire[age=7,east=true,north=false,south=false,up=true,west=true]", + "1676": "minecraft:fire[age=7,east=true,north=false,south=false,up=true,west=false]", + "1677": "minecraft:fire[age=7,east=true,north=false,south=false,up=false,west=true]", + "1678": "minecraft:fire[age=7,east=true,north=false,south=false,up=false,west=false]", + "1679": "minecraft:fire[age=7,east=false,north=true,south=true,up=true,west=true]", + "1680": "minecraft:fire[age=7,east=false,north=true,south=true,up=true,west=false]", + "1681": "minecraft:fire[age=7,east=false,north=true,south=true,up=false,west=true]", + "1682": "minecraft:fire[age=7,east=false,north=true,south=true,up=false,west=false]", + "1683": "minecraft:fire[age=7,east=false,north=true,south=false,up=true,west=true]", + "1684": "minecraft:fire[age=7,east=false,north=true,south=false,up=true,west=false]", + "1685": "minecraft:fire[age=7,east=false,north=true,south=false,up=false,west=true]", + "1686": "minecraft:fire[age=7,east=false,north=true,south=false,up=false,west=false]", + "1687": "minecraft:fire[age=7,east=false,north=false,south=true,up=true,west=true]", + "1688": "minecraft:fire[age=7,east=false,north=false,south=true,up=true,west=false]", + "1689": "minecraft:fire[age=7,east=false,north=false,south=true,up=false,west=true]", + "1690": "minecraft:fire[age=7,east=false,north=false,south=true,up=false,west=false]", + "1691": "minecraft:fire[age=7,east=false,north=false,south=false,up=true,west=true]", + "1692": "minecraft:fire[age=7,east=false,north=false,south=false,up=true,west=false]", + "1693": "minecraft:fire[age=7,east=false,north=false,south=false,up=false,west=true]", + "1694": "minecraft:fire[age=7,east=false,north=false,south=false,up=false,west=false]", + "1695": "minecraft:fire[age=8,east=true,north=true,south=true,up=true,west=true]", + "1696": "minecraft:fire[age=8,east=true,north=true,south=true,up=true,west=false]", + "1697": "minecraft:fire[age=8,east=true,north=true,south=true,up=false,west=true]", + "1698": "minecraft:fire[age=8,east=true,north=true,south=true,up=false,west=false]", + "1699": "minecraft:fire[age=8,east=true,north=true,south=false,up=true,west=true]", + "1700": "minecraft:fire[age=8,east=true,north=true,south=false,up=true,west=false]", + "1701": "minecraft:fire[age=8,east=true,north=true,south=false,up=false,west=true]", + "1702": "minecraft:fire[age=8,east=true,north=true,south=false,up=false,west=false]", + "1703": "minecraft:fire[age=8,east=true,north=false,south=true,up=true,west=true]", + "1704": "minecraft:fire[age=8,east=true,north=false,south=true,up=true,west=false]", + "1705": "minecraft:fire[age=8,east=true,north=false,south=true,up=false,west=true]", + "1706": "minecraft:fire[age=8,east=true,north=false,south=true,up=false,west=false]", + "1707": "minecraft:fire[age=8,east=true,north=false,south=false,up=true,west=true]", + "1708": "minecraft:fire[age=8,east=true,north=false,south=false,up=true,west=false]", + "1709": "minecraft:fire[age=8,east=true,north=false,south=false,up=false,west=true]", + "1710": "minecraft:fire[age=8,east=true,north=false,south=false,up=false,west=false]", + "1711": "minecraft:fire[age=8,east=false,north=true,south=true,up=true,west=true]", + "1712": "minecraft:fire[age=8,east=false,north=true,south=true,up=true,west=false]", + "1713": "minecraft:fire[age=8,east=false,north=true,south=true,up=false,west=true]", + "1714": "minecraft:fire[age=8,east=false,north=true,south=true,up=false,west=false]", + "1715": "minecraft:fire[age=8,east=false,north=true,south=false,up=true,west=true]", + "1716": "minecraft:fire[age=8,east=false,north=true,south=false,up=true,west=false]", + "1717": "minecraft:fire[age=8,east=false,north=true,south=false,up=false,west=true]", + "1718": "minecraft:fire[age=8,east=false,north=true,south=false,up=false,west=false]", + "1719": "minecraft:fire[age=8,east=false,north=false,south=true,up=true,west=true]", + "1720": "minecraft:fire[age=8,east=false,north=false,south=true,up=true,west=false]", + "1721": "minecraft:fire[age=8,east=false,north=false,south=true,up=false,west=true]", + "1722": "minecraft:fire[age=8,east=false,north=false,south=true,up=false,west=false]", + "1723": "minecraft:fire[age=8,east=false,north=false,south=false,up=true,west=true]", + "1724": "minecraft:fire[age=8,east=false,north=false,south=false,up=true,west=false]", + "1725": "minecraft:fire[age=8,east=false,north=false,south=false,up=false,west=true]", + "1726": "minecraft:fire[age=8,east=false,north=false,south=false,up=false,west=false]", + "1727": "minecraft:fire[age=9,east=true,north=true,south=true,up=true,west=true]", + "1728": "minecraft:fire[age=9,east=true,north=true,south=true,up=true,west=false]", + "1729": "minecraft:fire[age=9,east=true,north=true,south=true,up=false,west=true]", + "1730": "minecraft:fire[age=9,east=true,north=true,south=true,up=false,west=false]", + "1731": "minecraft:fire[age=9,east=true,north=true,south=false,up=true,west=true]", + "1732": "minecraft:fire[age=9,east=true,north=true,south=false,up=true,west=false]", + "1733": "minecraft:fire[age=9,east=true,north=true,south=false,up=false,west=true]", + "1734": "minecraft:fire[age=9,east=true,north=true,south=false,up=false,west=false]", + "1735": "minecraft:fire[age=9,east=true,north=false,south=true,up=true,west=true]", + "1736": "minecraft:fire[age=9,east=true,north=false,south=true,up=true,west=false]", + "1737": "minecraft:fire[age=9,east=true,north=false,south=true,up=false,west=true]", + "1738": "minecraft:fire[age=9,east=true,north=false,south=true,up=false,west=false]", + "1739": "minecraft:fire[age=9,east=true,north=false,south=false,up=true,west=true]", + "1740": "minecraft:fire[age=9,east=true,north=false,south=false,up=true,west=false]", + "1741": "minecraft:fire[age=9,east=true,north=false,south=false,up=false,west=true]", + "1742": "minecraft:fire[age=9,east=true,north=false,south=false,up=false,west=false]", + "1743": "minecraft:fire[age=9,east=false,north=true,south=true,up=true,west=true]", + "1744": "minecraft:fire[age=9,east=false,north=true,south=true,up=true,west=false]", + "1745": "minecraft:fire[age=9,east=false,north=true,south=true,up=false,west=true]", + "1746": "minecraft:fire[age=9,east=false,north=true,south=true,up=false,west=false]", + "1747": "minecraft:fire[age=9,east=false,north=true,south=false,up=true,west=true]", + "1748": "minecraft:fire[age=9,east=false,north=true,south=false,up=true,west=false]", + "1749": "minecraft:fire[age=9,east=false,north=true,south=false,up=false,west=true]", + "1750": "minecraft:fire[age=9,east=false,north=true,south=false,up=false,west=false]", + "1751": "minecraft:fire[age=9,east=false,north=false,south=true,up=true,west=true]", + "1752": "minecraft:fire[age=9,east=false,north=false,south=true,up=true,west=false]", + "1753": "minecraft:fire[age=9,east=false,north=false,south=true,up=false,west=true]", + "1754": "minecraft:fire[age=9,east=false,north=false,south=true,up=false,west=false]", + "1755": "minecraft:fire[age=9,east=false,north=false,south=false,up=true,west=true]", + "1756": "minecraft:fire[age=9,east=false,north=false,south=false,up=true,west=false]", + "1757": "minecraft:fire[age=9,east=false,north=false,south=false,up=false,west=true]", + "1758": "minecraft:fire[age=9,east=false,north=false,south=false,up=false,west=false]", + "1759": "minecraft:fire[age=10,east=true,north=true,south=true,up=true,west=true]", + "1760": "minecraft:fire[age=10,east=true,north=true,south=true,up=true,west=false]", + "1761": "minecraft:fire[age=10,east=true,north=true,south=true,up=false,west=true]", + "1762": "minecraft:fire[age=10,east=true,north=true,south=true,up=false,west=false]", + "1763": "minecraft:fire[age=10,east=true,north=true,south=false,up=true,west=true]", + "1764": "minecraft:fire[age=10,east=true,north=true,south=false,up=true,west=false]", + "1765": "minecraft:fire[age=10,east=true,north=true,south=false,up=false,west=true]", + "1766": "minecraft:fire[age=10,east=true,north=true,south=false,up=false,west=false]", + "1767": "minecraft:fire[age=10,east=true,north=false,south=true,up=true,west=true]", + "1768": "minecraft:fire[age=10,east=true,north=false,south=true,up=true,west=false]", + "1769": "minecraft:fire[age=10,east=true,north=false,south=true,up=false,west=true]", + "1770": "minecraft:fire[age=10,east=true,north=false,south=true,up=false,west=false]", + "1771": "minecraft:fire[age=10,east=true,north=false,south=false,up=true,west=true]", + "1772": "minecraft:fire[age=10,east=true,north=false,south=false,up=true,west=false]", + "1773": "minecraft:fire[age=10,east=true,north=false,south=false,up=false,west=true]", + "1774": "minecraft:fire[age=10,east=true,north=false,south=false,up=false,west=false]", + "1775": "minecraft:fire[age=10,east=false,north=true,south=true,up=true,west=true]", + "1776": "minecraft:fire[age=10,east=false,north=true,south=true,up=true,west=false]", + "1777": "minecraft:fire[age=10,east=false,north=true,south=true,up=false,west=true]", + "1778": "minecraft:fire[age=10,east=false,north=true,south=true,up=false,west=false]", + "1779": "minecraft:fire[age=10,east=false,north=true,south=false,up=true,west=true]", + "1780": "minecraft:fire[age=10,east=false,north=true,south=false,up=true,west=false]", + "1781": "minecraft:fire[age=10,east=false,north=true,south=false,up=false,west=true]", + "1782": "minecraft:fire[age=10,east=false,north=true,south=false,up=false,west=false]", + "1783": "minecraft:fire[age=10,east=false,north=false,south=true,up=true,west=true]", + "1784": "minecraft:fire[age=10,east=false,north=false,south=true,up=true,west=false]", + "1785": "minecraft:fire[age=10,east=false,north=false,south=true,up=false,west=true]", + "1786": "minecraft:fire[age=10,east=false,north=false,south=true,up=false,west=false]", + "1787": "minecraft:fire[age=10,east=false,north=false,south=false,up=true,west=true]", + "1788": "minecraft:fire[age=10,east=false,north=false,south=false,up=true,west=false]", + "1789": "minecraft:fire[age=10,east=false,north=false,south=false,up=false,west=true]", + "1790": "minecraft:fire[age=10,east=false,north=false,south=false,up=false,west=false]", + "1791": "minecraft:fire[age=11,east=true,north=true,south=true,up=true,west=true]", + "1792": "minecraft:fire[age=11,east=true,north=true,south=true,up=true,west=false]", + "1793": "minecraft:fire[age=11,east=true,north=true,south=true,up=false,west=true]", + "1794": "minecraft:fire[age=11,east=true,north=true,south=true,up=false,west=false]", + "1795": "minecraft:fire[age=11,east=true,north=true,south=false,up=true,west=true]", + "1796": "minecraft:fire[age=11,east=true,north=true,south=false,up=true,west=false]", + "1797": "minecraft:fire[age=11,east=true,north=true,south=false,up=false,west=true]", + "1798": "minecraft:fire[age=11,east=true,north=true,south=false,up=false,west=false]", + "1799": "minecraft:fire[age=11,east=true,north=false,south=true,up=true,west=true]", + "1800": "minecraft:fire[age=11,east=true,north=false,south=true,up=true,west=false]", + "1801": "minecraft:fire[age=11,east=true,north=false,south=true,up=false,west=true]", + "1802": "minecraft:fire[age=11,east=true,north=false,south=true,up=false,west=false]", + "1803": "minecraft:fire[age=11,east=true,north=false,south=false,up=true,west=true]", + "1804": "minecraft:fire[age=11,east=true,north=false,south=false,up=true,west=false]", + "1805": "minecraft:fire[age=11,east=true,north=false,south=false,up=false,west=true]", + "1806": "minecraft:fire[age=11,east=true,north=false,south=false,up=false,west=false]", + "1807": "minecraft:fire[age=11,east=false,north=true,south=true,up=true,west=true]", + "1808": "minecraft:fire[age=11,east=false,north=true,south=true,up=true,west=false]", + "1809": "minecraft:fire[age=11,east=false,north=true,south=true,up=false,west=true]", + "1810": "minecraft:fire[age=11,east=false,north=true,south=true,up=false,west=false]", + "1811": "minecraft:fire[age=11,east=false,north=true,south=false,up=true,west=true]", + "1812": "minecraft:fire[age=11,east=false,north=true,south=false,up=true,west=false]", + "1813": "minecraft:fire[age=11,east=false,north=true,south=false,up=false,west=true]", + "1814": "minecraft:fire[age=11,east=false,north=true,south=false,up=false,west=false]", + "1815": "minecraft:fire[age=11,east=false,north=false,south=true,up=true,west=true]", + "1816": "minecraft:fire[age=11,east=false,north=false,south=true,up=true,west=false]", + "1817": "minecraft:fire[age=11,east=false,north=false,south=true,up=false,west=true]", + "1818": "minecraft:fire[age=11,east=false,north=false,south=true,up=false,west=false]", + "1819": "minecraft:fire[age=11,east=false,north=false,south=false,up=true,west=true]", + "1820": "minecraft:fire[age=11,east=false,north=false,south=false,up=true,west=false]", + "1821": "minecraft:fire[age=11,east=false,north=false,south=false,up=false,west=true]", + "1822": "minecraft:fire[age=11,east=false,north=false,south=false,up=false,west=false]", + "1823": "minecraft:fire[age=12,east=true,north=true,south=true,up=true,west=true]", + "1824": "minecraft:fire[age=12,east=true,north=true,south=true,up=true,west=false]", + "1825": "minecraft:fire[age=12,east=true,north=true,south=true,up=false,west=true]", + "1826": "minecraft:fire[age=12,east=true,north=true,south=true,up=false,west=false]", + "1827": "minecraft:fire[age=12,east=true,north=true,south=false,up=true,west=true]", + "1828": "minecraft:fire[age=12,east=true,north=true,south=false,up=true,west=false]", + "1829": "minecraft:fire[age=12,east=true,north=true,south=false,up=false,west=true]", + "1830": "minecraft:fire[age=12,east=true,north=true,south=false,up=false,west=false]", + "1831": "minecraft:fire[age=12,east=true,north=false,south=true,up=true,west=true]", + "1832": "minecraft:fire[age=12,east=true,north=false,south=true,up=true,west=false]", + "1833": "minecraft:fire[age=12,east=true,north=false,south=true,up=false,west=true]", + "1834": "minecraft:fire[age=12,east=true,north=false,south=true,up=false,west=false]", + "1835": "minecraft:fire[age=12,east=true,north=false,south=false,up=true,west=true]", + "1836": "minecraft:fire[age=12,east=true,north=false,south=false,up=true,west=false]", + "1837": "minecraft:fire[age=12,east=true,north=false,south=false,up=false,west=true]", + "1838": "minecraft:fire[age=12,east=true,north=false,south=false,up=false,west=false]", + "1839": "minecraft:fire[age=12,east=false,north=true,south=true,up=true,west=true]", + "1840": "minecraft:fire[age=12,east=false,north=true,south=true,up=true,west=false]", + "1841": "minecraft:fire[age=12,east=false,north=true,south=true,up=false,west=true]", + "1842": "minecraft:fire[age=12,east=false,north=true,south=true,up=false,west=false]", + "1843": "minecraft:fire[age=12,east=false,north=true,south=false,up=true,west=true]", + "1844": "minecraft:fire[age=12,east=false,north=true,south=false,up=true,west=false]", + "1845": "minecraft:fire[age=12,east=false,north=true,south=false,up=false,west=true]", + "1846": "minecraft:fire[age=12,east=false,north=true,south=false,up=false,west=false]", + "1847": "minecraft:fire[age=12,east=false,north=false,south=true,up=true,west=true]", + "1848": "minecraft:fire[age=12,east=false,north=false,south=true,up=true,west=false]", + "1849": "minecraft:fire[age=12,east=false,north=false,south=true,up=false,west=true]", + "1850": "minecraft:fire[age=12,east=false,north=false,south=true,up=false,west=false]", + "1851": "minecraft:fire[age=12,east=false,north=false,south=false,up=true,west=true]", + "1852": "minecraft:fire[age=12,east=false,north=false,south=false,up=true,west=false]", + "1853": "minecraft:fire[age=12,east=false,north=false,south=false,up=false,west=true]", + "1854": "minecraft:fire[age=12,east=false,north=false,south=false,up=false,west=false]", + "1855": "minecraft:fire[age=13,east=true,north=true,south=true,up=true,west=true]", + "1856": "minecraft:fire[age=13,east=true,north=true,south=true,up=true,west=false]", + "1857": "minecraft:fire[age=13,east=true,north=true,south=true,up=false,west=true]", + "1858": "minecraft:fire[age=13,east=true,north=true,south=true,up=false,west=false]", + "1859": "minecraft:fire[age=13,east=true,north=true,south=false,up=true,west=true]", + "1860": "minecraft:fire[age=13,east=true,north=true,south=false,up=true,west=false]", + "1861": "minecraft:fire[age=13,east=true,north=true,south=false,up=false,west=true]", + "1862": "minecraft:fire[age=13,east=true,north=true,south=false,up=false,west=false]", + "1863": "minecraft:fire[age=13,east=true,north=false,south=true,up=true,west=true]", + "1864": "minecraft:fire[age=13,east=true,north=false,south=true,up=true,west=false]", + "1865": "minecraft:fire[age=13,east=true,north=false,south=true,up=false,west=true]", + "1866": "minecraft:fire[age=13,east=true,north=false,south=true,up=false,west=false]", + "1867": "minecraft:fire[age=13,east=true,north=false,south=false,up=true,west=true]", + "1868": "minecraft:fire[age=13,east=true,north=false,south=false,up=true,west=false]", + "1869": "minecraft:fire[age=13,east=true,north=false,south=false,up=false,west=true]", + "1870": "minecraft:fire[age=13,east=true,north=false,south=false,up=false,west=false]", + "1871": "minecraft:fire[age=13,east=false,north=true,south=true,up=true,west=true]", + "1872": "minecraft:fire[age=13,east=false,north=true,south=true,up=true,west=false]", + "1873": "minecraft:fire[age=13,east=false,north=true,south=true,up=false,west=true]", + "1874": "minecraft:fire[age=13,east=false,north=true,south=true,up=false,west=false]", + "1875": "minecraft:fire[age=13,east=false,north=true,south=false,up=true,west=true]", + "1876": "minecraft:fire[age=13,east=false,north=true,south=false,up=true,west=false]", + "1877": "minecraft:fire[age=13,east=false,north=true,south=false,up=false,west=true]", + "1878": "minecraft:fire[age=13,east=false,north=true,south=false,up=false,west=false]", + "1879": "minecraft:fire[age=13,east=false,north=false,south=true,up=true,west=true]", + "1880": "minecraft:fire[age=13,east=false,north=false,south=true,up=true,west=false]", + "1881": "minecraft:fire[age=13,east=false,north=false,south=true,up=false,west=true]", + "1882": "minecraft:fire[age=13,east=false,north=false,south=true,up=false,west=false]", + "1883": "minecraft:fire[age=13,east=false,north=false,south=false,up=true,west=true]", + "1884": "minecraft:fire[age=13,east=false,north=false,south=false,up=true,west=false]", + "1885": "minecraft:fire[age=13,east=false,north=false,south=false,up=false,west=true]", + "1886": "minecraft:fire[age=13,east=false,north=false,south=false,up=false,west=false]", + "1887": "minecraft:fire[age=14,east=true,north=true,south=true,up=true,west=true]", + "1888": "minecraft:fire[age=14,east=true,north=true,south=true,up=true,west=false]", + "1889": "minecraft:fire[age=14,east=true,north=true,south=true,up=false,west=true]", + "1890": "minecraft:fire[age=14,east=true,north=true,south=true,up=false,west=false]", + "1891": "minecraft:fire[age=14,east=true,north=true,south=false,up=true,west=true]", + "1892": "minecraft:fire[age=14,east=true,north=true,south=false,up=true,west=false]", + "1893": "minecraft:fire[age=14,east=true,north=true,south=false,up=false,west=true]", + "1894": "minecraft:fire[age=14,east=true,north=true,south=false,up=false,west=false]", + "1895": "minecraft:fire[age=14,east=true,north=false,south=true,up=true,west=true]", + "1896": "minecraft:fire[age=14,east=true,north=false,south=true,up=true,west=false]", + "1897": "minecraft:fire[age=14,east=true,north=false,south=true,up=false,west=true]", + "1898": "minecraft:fire[age=14,east=true,north=false,south=true,up=false,west=false]", + "1899": "minecraft:fire[age=14,east=true,north=false,south=false,up=true,west=true]", + "1900": "minecraft:fire[age=14,east=true,north=false,south=false,up=true,west=false]", + "1901": "minecraft:fire[age=14,east=true,north=false,south=false,up=false,west=true]", + "1902": "minecraft:fire[age=14,east=true,north=false,south=false,up=false,west=false]", + "1903": "minecraft:fire[age=14,east=false,north=true,south=true,up=true,west=true]", + "1904": "minecraft:fire[age=14,east=false,north=true,south=true,up=true,west=false]", + "1905": "minecraft:fire[age=14,east=false,north=true,south=true,up=false,west=true]", + "1906": "minecraft:fire[age=14,east=false,north=true,south=true,up=false,west=false]", + "1907": "minecraft:fire[age=14,east=false,north=true,south=false,up=true,west=true]", + "1908": "minecraft:fire[age=14,east=false,north=true,south=false,up=true,west=false]", + "1909": "minecraft:fire[age=14,east=false,north=true,south=false,up=false,west=true]", + "1910": "minecraft:fire[age=14,east=false,north=true,south=false,up=false,west=false]", + "1911": "minecraft:fire[age=14,east=false,north=false,south=true,up=true,west=true]", + "1912": "minecraft:fire[age=14,east=false,north=false,south=true,up=true,west=false]", + "1913": "minecraft:fire[age=14,east=false,north=false,south=true,up=false,west=true]", + "1914": "minecraft:fire[age=14,east=false,north=false,south=true,up=false,west=false]", + "1915": "minecraft:fire[age=14,east=false,north=false,south=false,up=true,west=true]", + "1916": "minecraft:fire[age=14,east=false,north=false,south=false,up=true,west=false]", + "1917": "minecraft:fire[age=14,east=false,north=false,south=false,up=false,west=true]", + "1918": "minecraft:fire[age=14,east=false,north=false,south=false,up=false,west=false]", + "1919": "minecraft:fire[age=15,east=true,north=true,south=true,up=true,west=true]", + "1920": "minecraft:fire[age=15,east=true,north=true,south=true,up=true,west=false]", + "1921": "minecraft:fire[age=15,east=true,north=true,south=true,up=false,west=true]", + "1922": "minecraft:fire[age=15,east=true,north=true,south=true,up=false,west=false]", + "1923": "minecraft:fire[age=15,east=true,north=true,south=false,up=true,west=true]", + "1924": "minecraft:fire[age=15,east=true,north=true,south=false,up=true,west=false]", + "1925": "minecraft:fire[age=15,east=true,north=true,south=false,up=false,west=true]", + "1926": "minecraft:fire[age=15,east=true,north=true,south=false,up=false,west=false]", + "1927": "minecraft:fire[age=15,east=true,north=false,south=true,up=true,west=true]", + "1928": "minecraft:fire[age=15,east=true,north=false,south=true,up=true,west=false]", + "1929": "minecraft:fire[age=15,east=true,north=false,south=true,up=false,west=true]", + "1930": "minecraft:fire[age=15,east=true,north=false,south=true,up=false,west=false]", + "1931": "minecraft:fire[age=15,east=true,north=false,south=false,up=true,west=true]", + "1932": "minecraft:fire[age=15,east=true,north=false,south=false,up=true,west=false]", + "1933": "minecraft:fire[age=15,east=true,north=false,south=false,up=false,west=true]", + "1934": "minecraft:fire[age=15,east=true,north=false,south=false,up=false,west=false]", + "1935": "minecraft:fire[age=15,east=false,north=true,south=true,up=true,west=true]", + "1936": "minecraft:fire[age=15,east=false,north=true,south=true,up=true,west=false]", + "1937": "minecraft:fire[age=15,east=false,north=true,south=true,up=false,west=true]", + "1938": "minecraft:fire[age=15,east=false,north=true,south=true,up=false,west=false]", + "1939": "minecraft:fire[age=15,east=false,north=true,south=false,up=true,west=true]", + "1940": "minecraft:fire[age=15,east=false,north=true,south=false,up=true,west=false]", + "1941": "minecraft:fire[age=15,east=false,north=true,south=false,up=false,west=true]", + "1942": "minecraft:fire[age=15,east=false,north=true,south=false,up=false,west=false]", + "1943": "minecraft:fire[age=15,east=false,north=false,south=true,up=true,west=true]", + "1944": "minecraft:fire[age=15,east=false,north=false,south=true,up=true,west=false]", + "1945": "minecraft:fire[age=15,east=false,north=false,south=true,up=false,west=true]", + "1946": "minecraft:fire[age=15,east=false,north=false,south=true,up=false,west=false]", + "1947": "minecraft:fire[age=15,east=false,north=false,south=false,up=true,west=true]", + "1948": "minecraft:fire[age=15,east=false,north=false,south=false,up=true,west=false]", + "1949": "minecraft:fire[age=15,east=false,north=false,south=false,up=false,west=true]", + "1950": "minecraft:fire[age=15,east=false,north=false,south=false,up=false,west=false]", + "1951": "minecraft:spawner", + "1952": "minecraft:oak_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "1953": "minecraft:oak_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "1954": "minecraft:oak_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "1955": "minecraft:oak_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "1956": "minecraft:oak_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "1957": "minecraft:oak_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "1958": "minecraft:oak_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "1959": "minecraft:oak_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "1960": "minecraft:oak_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "1961": "minecraft:oak_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "1962": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "1963": "minecraft:oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "1964": "minecraft:oak_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "1965": "minecraft:oak_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "1966": "minecraft:oak_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "1967": "minecraft:oak_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "1968": "minecraft:oak_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "1969": "minecraft:oak_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "1970": "minecraft:oak_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "1971": "minecraft:oak_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "1972": "minecraft:oak_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "1973": "minecraft:oak_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "1974": "minecraft:oak_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "1975": "minecraft:oak_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "1976": "minecraft:oak_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "1977": "minecraft:oak_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "1978": "minecraft:oak_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "1979": "minecraft:oak_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "1980": "minecraft:oak_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "1981": "minecraft:oak_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "1982": "minecraft:oak_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "1983": "minecraft:oak_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "1984": "minecraft:oak_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "1985": "minecraft:oak_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "1986": "minecraft:oak_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "1987": "minecraft:oak_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "1988": "minecraft:oak_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "1989": "minecraft:oak_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "1990": "minecraft:oak_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "1991": "minecraft:oak_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "1992": "minecraft:oak_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "1993": "minecraft:oak_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "1994": "minecraft:oak_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "1995": "minecraft:oak_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "1996": "minecraft:oak_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "1997": "minecraft:oak_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "1998": "minecraft:oak_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "1999": "minecraft:oak_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "2000": "minecraft:oak_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "2001": "minecraft:oak_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "2002": "minecraft:oak_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "2003": "minecraft:oak_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "2004": "minecraft:oak_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "2005": "minecraft:oak_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "2006": "minecraft:oak_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "2007": "minecraft:oak_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "2008": "minecraft:oak_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "2009": "minecraft:oak_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "2010": "minecraft:oak_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "2011": "minecraft:oak_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "2012": "minecraft:oak_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "2013": "minecraft:oak_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "2014": "minecraft:oak_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "2015": "minecraft:oak_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "2016": "minecraft:oak_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "2017": "minecraft:oak_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "2018": "minecraft:oak_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "2019": "minecraft:oak_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "2020": "minecraft:oak_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "2021": "minecraft:oak_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "2022": "minecraft:oak_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "2023": "minecraft:oak_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "2024": "minecraft:oak_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "2025": "minecraft:oak_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "2026": "minecraft:oak_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "2027": "minecraft:oak_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "2028": "minecraft:oak_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "2029": "minecraft:oak_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "2030": "minecraft:oak_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "2031": "minecraft:oak_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "2032": "minecraft:chest[facing=north,type=single,waterlogged=true]", + "2033": "minecraft:chest[facing=north,type=single,waterlogged=false]", + "2034": "minecraft:chest[facing=north,type=left,waterlogged=true]", + "2035": "minecraft:chest[facing=north,type=left,waterlogged=false]", + "2036": "minecraft:chest[facing=north,type=right,waterlogged=true]", + "2037": "minecraft:chest[facing=north,type=right,waterlogged=false]", + "2038": "minecraft:chest[facing=south,type=single,waterlogged=true]", + "2039": "minecraft:chest[facing=south,type=single,waterlogged=false]", + "2040": "minecraft:chest[facing=south,type=left,waterlogged=true]", + "2041": "minecraft:chest[facing=south,type=left,waterlogged=false]", + "2042": "minecraft:chest[facing=south,type=right,waterlogged=true]", + "2043": "minecraft:chest[facing=south,type=right,waterlogged=false]", + "2044": "minecraft:chest[facing=west,type=single,waterlogged=true]", + "2045": "minecraft:chest[facing=west,type=single,waterlogged=false]", + "2046": "minecraft:chest[facing=west,type=left,waterlogged=true]", + "2047": "minecraft:chest[facing=west,type=left,waterlogged=false]", + "2048": "minecraft:chest[facing=west,type=right,waterlogged=true]", + "2049": "minecraft:chest[facing=west,type=right,waterlogged=false]", + "2050": "minecraft:chest[facing=east,type=single,waterlogged=true]", + "2051": "minecraft:chest[facing=east,type=single,waterlogged=false]", + "2052": "minecraft:chest[facing=east,type=left,waterlogged=true]", + "2053": "minecraft:chest[facing=east,type=left,waterlogged=false]", + "2054": "minecraft:chest[facing=east,type=right,waterlogged=true]", + "2055": "minecraft:chest[facing=east,type=right,waterlogged=false]", + "2056": "minecraft:redstone_wire[east=up,north=up,power=0,south=up,west=up]", + "2057": "minecraft:redstone_wire[east=up,north=up,power=0,south=up,west=side]", + "2058": "minecraft:redstone_wire[east=up,north=up,power=0,south=up,west=none]", + "2059": "minecraft:redstone_wire[east=up,north=up,power=0,south=side,west=up]", + "2060": "minecraft:redstone_wire[east=up,north=up,power=0,south=side,west=side]", + "2061": "minecraft:redstone_wire[east=up,north=up,power=0,south=side,west=none]", + "2062": "minecraft:redstone_wire[east=up,north=up,power=0,south=none,west=up]", + "2063": "minecraft:redstone_wire[east=up,north=up,power=0,south=none,west=side]", + "2064": "minecraft:redstone_wire[east=up,north=up,power=0,south=none,west=none]", + "2065": "minecraft:redstone_wire[east=up,north=up,power=1,south=up,west=up]", + "2066": "minecraft:redstone_wire[east=up,north=up,power=1,south=up,west=side]", + "2067": "minecraft:redstone_wire[east=up,north=up,power=1,south=up,west=none]", + "2068": "minecraft:redstone_wire[east=up,north=up,power=1,south=side,west=up]", + "2069": "minecraft:redstone_wire[east=up,north=up,power=1,south=side,west=side]", + "2070": "minecraft:redstone_wire[east=up,north=up,power=1,south=side,west=none]", + "2071": "minecraft:redstone_wire[east=up,north=up,power=1,south=none,west=up]", + "2072": "minecraft:redstone_wire[east=up,north=up,power=1,south=none,west=side]", + "2073": "minecraft:redstone_wire[east=up,north=up,power=1,south=none,west=none]", + "2074": "minecraft:redstone_wire[east=up,north=up,power=2,south=up,west=up]", + "2075": "minecraft:redstone_wire[east=up,north=up,power=2,south=up,west=side]", + "2076": "minecraft:redstone_wire[east=up,north=up,power=2,south=up,west=none]", + "2077": "minecraft:redstone_wire[east=up,north=up,power=2,south=side,west=up]", + "2078": "minecraft:redstone_wire[east=up,north=up,power=2,south=side,west=side]", + "2079": "minecraft:redstone_wire[east=up,north=up,power=2,south=side,west=none]", + "2080": "minecraft:redstone_wire[east=up,north=up,power=2,south=none,west=up]", + "2081": "minecraft:redstone_wire[east=up,north=up,power=2,south=none,west=side]", + "2082": "minecraft:redstone_wire[east=up,north=up,power=2,south=none,west=none]", + "2083": "minecraft:redstone_wire[east=up,north=up,power=3,south=up,west=up]", + "2084": "minecraft:redstone_wire[east=up,north=up,power=3,south=up,west=side]", + "2085": "minecraft:redstone_wire[east=up,north=up,power=3,south=up,west=none]", + "2086": "minecraft:redstone_wire[east=up,north=up,power=3,south=side,west=up]", + "2087": "minecraft:redstone_wire[east=up,north=up,power=3,south=side,west=side]", + "2088": "minecraft:redstone_wire[east=up,north=up,power=3,south=side,west=none]", + "2089": "minecraft:redstone_wire[east=up,north=up,power=3,south=none,west=up]", + "2090": "minecraft:redstone_wire[east=up,north=up,power=3,south=none,west=side]", + "2091": "minecraft:redstone_wire[east=up,north=up,power=3,south=none,west=none]", + "2092": "minecraft:redstone_wire[east=up,north=up,power=4,south=up,west=up]", + "2093": "minecraft:redstone_wire[east=up,north=up,power=4,south=up,west=side]", + "2094": "minecraft:redstone_wire[east=up,north=up,power=4,south=up,west=none]", + "2095": "minecraft:redstone_wire[east=up,north=up,power=4,south=side,west=up]", + "2096": "minecraft:redstone_wire[east=up,north=up,power=4,south=side,west=side]", + "2097": "minecraft:redstone_wire[east=up,north=up,power=4,south=side,west=none]", + "2098": "minecraft:redstone_wire[east=up,north=up,power=4,south=none,west=up]", + "2099": "minecraft:redstone_wire[east=up,north=up,power=4,south=none,west=side]", + "2100": "minecraft:redstone_wire[east=up,north=up,power=4,south=none,west=none]", + "2101": "minecraft:redstone_wire[east=up,north=up,power=5,south=up,west=up]", + "2102": "minecraft:redstone_wire[east=up,north=up,power=5,south=up,west=side]", + "2103": "minecraft:redstone_wire[east=up,north=up,power=5,south=up,west=none]", + "2104": "minecraft:redstone_wire[east=up,north=up,power=5,south=side,west=up]", + "2105": "minecraft:redstone_wire[east=up,north=up,power=5,south=side,west=side]", + "2106": "minecraft:redstone_wire[east=up,north=up,power=5,south=side,west=none]", + "2107": "minecraft:redstone_wire[east=up,north=up,power=5,south=none,west=up]", + "2108": "minecraft:redstone_wire[east=up,north=up,power=5,south=none,west=side]", + "2109": "minecraft:redstone_wire[east=up,north=up,power=5,south=none,west=none]", + "2110": "minecraft:redstone_wire[east=up,north=up,power=6,south=up,west=up]", + "2111": "minecraft:redstone_wire[east=up,north=up,power=6,south=up,west=side]", + "2112": "minecraft:redstone_wire[east=up,north=up,power=6,south=up,west=none]", + "2113": "minecraft:redstone_wire[east=up,north=up,power=6,south=side,west=up]", + "2114": "minecraft:redstone_wire[east=up,north=up,power=6,south=side,west=side]", + "2115": "minecraft:redstone_wire[east=up,north=up,power=6,south=side,west=none]", + "2116": "minecraft:redstone_wire[east=up,north=up,power=6,south=none,west=up]", + "2117": "minecraft:redstone_wire[east=up,north=up,power=6,south=none,west=side]", + "2118": "minecraft:redstone_wire[east=up,north=up,power=6,south=none,west=none]", + "2119": "minecraft:redstone_wire[east=up,north=up,power=7,south=up,west=up]", + "2120": "minecraft:redstone_wire[east=up,north=up,power=7,south=up,west=side]", + "2121": "minecraft:redstone_wire[east=up,north=up,power=7,south=up,west=none]", + "2122": "minecraft:redstone_wire[east=up,north=up,power=7,south=side,west=up]", + "2123": "minecraft:redstone_wire[east=up,north=up,power=7,south=side,west=side]", + "2124": "minecraft:redstone_wire[east=up,north=up,power=7,south=side,west=none]", + "2125": "minecraft:redstone_wire[east=up,north=up,power=7,south=none,west=up]", + "2126": "minecraft:redstone_wire[east=up,north=up,power=7,south=none,west=side]", + "2127": "minecraft:redstone_wire[east=up,north=up,power=7,south=none,west=none]", + "2128": "minecraft:redstone_wire[east=up,north=up,power=8,south=up,west=up]", + "2129": "minecraft:redstone_wire[east=up,north=up,power=8,south=up,west=side]", + "2130": "minecraft:redstone_wire[east=up,north=up,power=8,south=up,west=none]", + "2131": "minecraft:redstone_wire[east=up,north=up,power=8,south=side,west=up]", + "2132": "minecraft:redstone_wire[east=up,north=up,power=8,south=side,west=side]", + "2133": "minecraft:redstone_wire[east=up,north=up,power=8,south=side,west=none]", + "2134": "minecraft:redstone_wire[east=up,north=up,power=8,south=none,west=up]", + "2135": "minecraft:redstone_wire[east=up,north=up,power=8,south=none,west=side]", + "2136": "minecraft:redstone_wire[east=up,north=up,power=8,south=none,west=none]", + "2137": "minecraft:redstone_wire[east=up,north=up,power=9,south=up,west=up]", + "2138": "minecraft:redstone_wire[east=up,north=up,power=9,south=up,west=side]", + "2139": "minecraft:redstone_wire[east=up,north=up,power=9,south=up,west=none]", + "2140": "minecraft:redstone_wire[east=up,north=up,power=9,south=side,west=up]", + "2141": "minecraft:redstone_wire[east=up,north=up,power=9,south=side,west=side]", + "2142": "minecraft:redstone_wire[east=up,north=up,power=9,south=side,west=none]", + "2143": "minecraft:redstone_wire[east=up,north=up,power=9,south=none,west=up]", + "2144": "minecraft:redstone_wire[east=up,north=up,power=9,south=none,west=side]", + "2145": "minecraft:redstone_wire[east=up,north=up,power=9,south=none,west=none]", + "2146": "minecraft:redstone_wire[east=up,north=up,power=10,south=up,west=up]", + "2147": "minecraft:redstone_wire[east=up,north=up,power=10,south=up,west=side]", + "2148": "minecraft:redstone_wire[east=up,north=up,power=10,south=up,west=none]", + "2149": "minecraft:redstone_wire[east=up,north=up,power=10,south=side,west=up]", + "2150": "minecraft:redstone_wire[east=up,north=up,power=10,south=side,west=side]", + "2151": "minecraft:redstone_wire[east=up,north=up,power=10,south=side,west=none]", + "2152": "minecraft:redstone_wire[east=up,north=up,power=10,south=none,west=up]", + "2153": "minecraft:redstone_wire[east=up,north=up,power=10,south=none,west=side]", + "2154": "minecraft:redstone_wire[east=up,north=up,power=10,south=none,west=none]", + "2155": "minecraft:redstone_wire[east=up,north=up,power=11,south=up,west=up]", + "2156": "minecraft:redstone_wire[east=up,north=up,power=11,south=up,west=side]", + "2157": "minecraft:redstone_wire[east=up,north=up,power=11,south=up,west=none]", + "2158": "minecraft:redstone_wire[east=up,north=up,power=11,south=side,west=up]", + "2159": "minecraft:redstone_wire[east=up,north=up,power=11,south=side,west=side]", + "2160": "minecraft:redstone_wire[east=up,north=up,power=11,south=side,west=none]", + "2161": "minecraft:redstone_wire[east=up,north=up,power=11,south=none,west=up]", + "2162": "minecraft:redstone_wire[east=up,north=up,power=11,south=none,west=side]", + "2163": "minecraft:redstone_wire[east=up,north=up,power=11,south=none,west=none]", + "2164": "minecraft:redstone_wire[east=up,north=up,power=12,south=up,west=up]", + "2165": "minecraft:redstone_wire[east=up,north=up,power=12,south=up,west=side]", + "2166": "minecraft:redstone_wire[east=up,north=up,power=12,south=up,west=none]", + "2167": "minecraft:redstone_wire[east=up,north=up,power=12,south=side,west=up]", + "2168": "minecraft:redstone_wire[east=up,north=up,power=12,south=side,west=side]", + "2169": "minecraft:redstone_wire[east=up,north=up,power=12,south=side,west=none]", + "2170": "minecraft:redstone_wire[east=up,north=up,power=12,south=none,west=up]", + "2171": "minecraft:redstone_wire[east=up,north=up,power=12,south=none,west=side]", + "2172": "minecraft:redstone_wire[east=up,north=up,power=12,south=none,west=none]", + "2173": "minecraft:redstone_wire[east=up,north=up,power=13,south=up,west=up]", + "2174": "minecraft:redstone_wire[east=up,north=up,power=13,south=up,west=side]", + "2175": "minecraft:redstone_wire[east=up,north=up,power=13,south=up,west=none]", + "2176": "minecraft:redstone_wire[east=up,north=up,power=13,south=side,west=up]", + "2177": "minecraft:redstone_wire[east=up,north=up,power=13,south=side,west=side]", + "2178": "minecraft:redstone_wire[east=up,north=up,power=13,south=side,west=none]", + "2179": "minecraft:redstone_wire[east=up,north=up,power=13,south=none,west=up]", + "2180": "minecraft:redstone_wire[east=up,north=up,power=13,south=none,west=side]", + "2181": "minecraft:redstone_wire[east=up,north=up,power=13,south=none,west=none]", + "2182": "minecraft:redstone_wire[east=up,north=up,power=14,south=up,west=up]", + "2183": "minecraft:redstone_wire[east=up,north=up,power=14,south=up,west=side]", + "2184": "minecraft:redstone_wire[east=up,north=up,power=14,south=up,west=none]", + "2185": "minecraft:redstone_wire[east=up,north=up,power=14,south=side,west=up]", + "2186": "minecraft:redstone_wire[east=up,north=up,power=14,south=side,west=side]", + "2187": "minecraft:redstone_wire[east=up,north=up,power=14,south=side,west=none]", + "2188": "minecraft:redstone_wire[east=up,north=up,power=14,south=none,west=up]", + "2189": "minecraft:redstone_wire[east=up,north=up,power=14,south=none,west=side]", + "2190": "minecraft:redstone_wire[east=up,north=up,power=14,south=none,west=none]", + "2191": "minecraft:redstone_wire[east=up,north=up,power=15,south=up,west=up]", + "2192": "minecraft:redstone_wire[east=up,north=up,power=15,south=up,west=side]", + "2193": "minecraft:redstone_wire[east=up,north=up,power=15,south=up,west=none]", + "2194": "minecraft:redstone_wire[east=up,north=up,power=15,south=side,west=up]", + "2195": "minecraft:redstone_wire[east=up,north=up,power=15,south=side,west=side]", + "2196": "minecraft:redstone_wire[east=up,north=up,power=15,south=side,west=none]", + "2197": "minecraft:redstone_wire[east=up,north=up,power=15,south=none,west=up]", + "2198": "minecraft:redstone_wire[east=up,north=up,power=15,south=none,west=side]", + "2199": "minecraft:redstone_wire[east=up,north=up,power=15,south=none,west=none]", + "2200": "minecraft:redstone_wire[east=up,north=side,power=0,south=up,west=up]", + "2201": "minecraft:redstone_wire[east=up,north=side,power=0,south=up,west=side]", + "2202": "minecraft:redstone_wire[east=up,north=side,power=0,south=up,west=none]", + "2203": "minecraft:redstone_wire[east=up,north=side,power=0,south=side,west=up]", + "2204": "minecraft:redstone_wire[east=up,north=side,power=0,south=side,west=side]", + "2205": "minecraft:redstone_wire[east=up,north=side,power=0,south=side,west=none]", + "2206": "minecraft:redstone_wire[east=up,north=side,power=0,south=none,west=up]", + "2207": "minecraft:redstone_wire[east=up,north=side,power=0,south=none,west=side]", + "2208": "minecraft:redstone_wire[east=up,north=side,power=0,south=none,west=none]", + "2209": "minecraft:redstone_wire[east=up,north=side,power=1,south=up,west=up]", + "2210": "minecraft:redstone_wire[east=up,north=side,power=1,south=up,west=side]", + "2211": "minecraft:redstone_wire[east=up,north=side,power=1,south=up,west=none]", + "2212": "minecraft:redstone_wire[east=up,north=side,power=1,south=side,west=up]", + "2213": "minecraft:redstone_wire[east=up,north=side,power=1,south=side,west=side]", + "2214": "minecraft:redstone_wire[east=up,north=side,power=1,south=side,west=none]", + "2215": "minecraft:redstone_wire[east=up,north=side,power=1,south=none,west=up]", + "2216": "minecraft:redstone_wire[east=up,north=side,power=1,south=none,west=side]", + "2217": "minecraft:redstone_wire[east=up,north=side,power=1,south=none,west=none]", + "2218": "minecraft:redstone_wire[east=up,north=side,power=2,south=up,west=up]", + "2219": "minecraft:redstone_wire[east=up,north=side,power=2,south=up,west=side]", + "2220": "minecraft:redstone_wire[east=up,north=side,power=2,south=up,west=none]", + "2221": "minecraft:redstone_wire[east=up,north=side,power=2,south=side,west=up]", + "2222": "minecraft:redstone_wire[east=up,north=side,power=2,south=side,west=side]", + "2223": "minecraft:redstone_wire[east=up,north=side,power=2,south=side,west=none]", + "2224": "minecraft:redstone_wire[east=up,north=side,power=2,south=none,west=up]", + "2225": "minecraft:redstone_wire[east=up,north=side,power=2,south=none,west=side]", + "2226": "minecraft:redstone_wire[east=up,north=side,power=2,south=none,west=none]", + "2227": "minecraft:redstone_wire[east=up,north=side,power=3,south=up,west=up]", + "2228": "minecraft:redstone_wire[east=up,north=side,power=3,south=up,west=side]", + "2229": "minecraft:redstone_wire[east=up,north=side,power=3,south=up,west=none]", + "2230": "minecraft:redstone_wire[east=up,north=side,power=3,south=side,west=up]", + "2231": "minecraft:redstone_wire[east=up,north=side,power=3,south=side,west=side]", + "2232": "minecraft:redstone_wire[east=up,north=side,power=3,south=side,west=none]", + "2233": "minecraft:redstone_wire[east=up,north=side,power=3,south=none,west=up]", + "2234": "minecraft:redstone_wire[east=up,north=side,power=3,south=none,west=side]", + "2235": "minecraft:redstone_wire[east=up,north=side,power=3,south=none,west=none]", + "2236": "minecraft:redstone_wire[east=up,north=side,power=4,south=up,west=up]", + "2237": "minecraft:redstone_wire[east=up,north=side,power=4,south=up,west=side]", + "2238": "minecraft:redstone_wire[east=up,north=side,power=4,south=up,west=none]", + "2239": "minecraft:redstone_wire[east=up,north=side,power=4,south=side,west=up]", + "2240": "minecraft:redstone_wire[east=up,north=side,power=4,south=side,west=side]", + "2241": "minecraft:redstone_wire[east=up,north=side,power=4,south=side,west=none]", + "2242": "minecraft:redstone_wire[east=up,north=side,power=4,south=none,west=up]", + "2243": "minecraft:redstone_wire[east=up,north=side,power=4,south=none,west=side]", + "2244": "minecraft:redstone_wire[east=up,north=side,power=4,south=none,west=none]", + "2245": "minecraft:redstone_wire[east=up,north=side,power=5,south=up,west=up]", + "2246": "minecraft:redstone_wire[east=up,north=side,power=5,south=up,west=side]", + "2247": "minecraft:redstone_wire[east=up,north=side,power=5,south=up,west=none]", + "2248": "minecraft:redstone_wire[east=up,north=side,power=5,south=side,west=up]", + "2249": "minecraft:redstone_wire[east=up,north=side,power=5,south=side,west=side]", + "2250": "minecraft:redstone_wire[east=up,north=side,power=5,south=side,west=none]", + "2251": "minecraft:redstone_wire[east=up,north=side,power=5,south=none,west=up]", + "2252": "minecraft:redstone_wire[east=up,north=side,power=5,south=none,west=side]", + "2253": "minecraft:redstone_wire[east=up,north=side,power=5,south=none,west=none]", + "2254": "minecraft:redstone_wire[east=up,north=side,power=6,south=up,west=up]", + "2255": "minecraft:redstone_wire[east=up,north=side,power=6,south=up,west=side]", + "2256": "minecraft:redstone_wire[east=up,north=side,power=6,south=up,west=none]", + "2257": "minecraft:redstone_wire[east=up,north=side,power=6,south=side,west=up]", + "2258": "minecraft:redstone_wire[east=up,north=side,power=6,south=side,west=side]", + "2259": "minecraft:redstone_wire[east=up,north=side,power=6,south=side,west=none]", + "2260": "minecraft:redstone_wire[east=up,north=side,power=6,south=none,west=up]", + "2261": "minecraft:redstone_wire[east=up,north=side,power=6,south=none,west=side]", + "2262": "minecraft:redstone_wire[east=up,north=side,power=6,south=none,west=none]", + "2263": "minecraft:redstone_wire[east=up,north=side,power=7,south=up,west=up]", + "2264": "minecraft:redstone_wire[east=up,north=side,power=7,south=up,west=side]", + "2265": "minecraft:redstone_wire[east=up,north=side,power=7,south=up,west=none]", + "2266": "minecraft:redstone_wire[east=up,north=side,power=7,south=side,west=up]", + "2267": "minecraft:redstone_wire[east=up,north=side,power=7,south=side,west=side]", + "2268": "minecraft:redstone_wire[east=up,north=side,power=7,south=side,west=none]", + "2269": "minecraft:redstone_wire[east=up,north=side,power=7,south=none,west=up]", + "2270": "minecraft:redstone_wire[east=up,north=side,power=7,south=none,west=side]", + "2271": "minecraft:redstone_wire[east=up,north=side,power=7,south=none,west=none]", + "2272": "minecraft:redstone_wire[east=up,north=side,power=8,south=up,west=up]", + "2273": "minecraft:redstone_wire[east=up,north=side,power=8,south=up,west=side]", + "2274": "minecraft:redstone_wire[east=up,north=side,power=8,south=up,west=none]", + "2275": "minecraft:redstone_wire[east=up,north=side,power=8,south=side,west=up]", + "2276": "minecraft:redstone_wire[east=up,north=side,power=8,south=side,west=side]", + "2277": "minecraft:redstone_wire[east=up,north=side,power=8,south=side,west=none]", + "2278": "minecraft:redstone_wire[east=up,north=side,power=8,south=none,west=up]", + "2279": "minecraft:redstone_wire[east=up,north=side,power=8,south=none,west=side]", + "2280": "minecraft:redstone_wire[east=up,north=side,power=8,south=none,west=none]", + "2281": "minecraft:redstone_wire[east=up,north=side,power=9,south=up,west=up]", + "2282": "minecraft:redstone_wire[east=up,north=side,power=9,south=up,west=side]", + "2283": "minecraft:redstone_wire[east=up,north=side,power=9,south=up,west=none]", + "2284": "minecraft:redstone_wire[east=up,north=side,power=9,south=side,west=up]", + "2285": "minecraft:redstone_wire[east=up,north=side,power=9,south=side,west=side]", + "2286": "minecraft:redstone_wire[east=up,north=side,power=9,south=side,west=none]", + "2287": "minecraft:redstone_wire[east=up,north=side,power=9,south=none,west=up]", + "2288": "minecraft:redstone_wire[east=up,north=side,power=9,south=none,west=side]", + "2289": "minecraft:redstone_wire[east=up,north=side,power=9,south=none,west=none]", + "2290": "minecraft:redstone_wire[east=up,north=side,power=10,south=up,west=up]", + "2291": "minecraft:redstone_wire[east=up,north=side,power=10,south=up,west=side]", + "2292": "minecraft:redstone_wire[east=up,north=side,power=10,south=up,west=none]", + "2293": "minecraft:redstone_wire[east=up,north=side,power=10,south=side,west=up]", + "2294": "minecraft:redstone_wire[east=up,north=side,power=10,south=side,west=side]", + "2295": "minecraft:redstone_wire[east=up,north=side,power=10,south=side,west=none]", + "2296": "minecraft:redstone_wire[east=up,north=side,power=10,south=none,west=up]", + "2297": "minecraft:redstone_wire[east=up,north=side,power=10,south=none,west=side]", + "2298": "minecraft:redstone_wire[east=up,north=side,power=10,south=none,west=none]", + "2299": "minecraft:redstone_wire[east=up,north=side,power=11,south=up,west=up]", + "2300": "minecraft:redstone_wire[east=up,north=side,power=11,south=up,west=side]", + "2301": "minecraft:redstone_wire[east=up,north=side,power=11,south=up,west=none]", + "2302": "minecraft:redstone_wire[east=up,north=side,power=11,south=side,west=up]", + "2303": "minecraft:redstone_wire[east=up,north=side,power=11,south=side,west=side]", + "2304": "minecraft:redstone_wire[east=up,north=side,power=11,south=side,west=none]", + "2305": "minecraft:redstone_wire[east=up,north=side,power=11,south=none,west=up]", + "2306": "minecraft:redstone_wire[east=up,north=side,power=11,south=none,west=side]", + "2307": "minecraft:redstone_wire[east=up,north=side,power=11,south=none,west=none]", + "2308": "minecraft:redstone_wire[east=up,north=side,power=12,south=up,west=up]", + "2309": "minecraft:redstone_wire[east=up,north=side,power=12,south=up,west=side]", + "2310": "minecraft:redstone_wire[east=up,north=side,power=12,south=up,west=none]", + "2311": "minecraft:redstone_wire[east=up,north=side,power=12,south=side,west=up]", + "2312": "minecraft:redstone_wire[east=up,north=side,power=12,south=side,west=side]", + "2313": "minecraft:redstone_wire[east=up,north=side,power=12,south=side,west=none]", + "2314": "minecraft:redstone_wire[east=up,north=side,power=12,south=none,west=up]", + "2315": "minecraft:redstone_wire[east=up,north=side,power=12,south=none,west=side]", + "2316": "minecraft:redstone_wire[east=up,north=side,power=12,south=none,west=none]", + "2317": "minecraft:redstone_wire[east=up,north=side,power=13,south=up,west=up]", + "2318": "minecraft:redstone_wire[east=up,north=side,power=13,south=up,west=side]", + "2319": "minecraft:redstone_wire[east=up,north=side,power=13,south=up,west=none]", + "2320": "minecraft:redstone_wire[east=up,north=side,power=13,south=side,west=up]", + "2321": "minecraft:redstone_wire[east=up,north=side,power=13,south=side,west=side]", + "2322": "minecraft:redstone_wire[east=up,north=side,power=13,south=side,west=none]", + "2323": "minecraft:redstone_wire[east=up,north=side,power=13,south=none,west=up]", + "2324": "minecraft:redstone_wire[east=up,north=side,power=13,south=none,west=side]", + "2325": "minecraft:redstone_wire[east=up,north=side,power=13,south=none,west=none]", + "2326": "minecraft:redstone_wire[east=up,north=side,power=14,south=up,west=up]", + "2327": "minecraft:redstone_wire[east=up,north=side,power=14,south=up,west=side]", + "2328": "minecraft:redstone_wire[east=up,north=side,power=14,south=up,west=none]", + "2329": "minecraft:redstone_wire[east=up,north=side,power=14,south=side,west=up]", + "2330": "minecraft:redstone_wire[east=up,north=side,power=14,south=side,west=side]", + "2331": "minecraft:redstone_wire[east=up,north=side,power=14,south=side,west=none]", + "2332": "minecraft:redstone_wire[east=up,north=side,power=14,south=none,west=up]", + "2333": "minecraft:redstone_wire[east=up,north=side,power=14,south=none,west=side]", + "2334": "minecraft:redstone_wire[east=up,north=side,power=14,south=none,west=none]", + "2335": "minecraft:redstone_wire[east=up,north=side,power=15,south=up,west=up]", + "2336": "minecraft:redstone_wire[east=up,north=side,power=15,south=up,west=side]", + "2337": "minecraft:redstone_wire[east=up,north=side,power=15,south=up,west=none]", + "2338": "minecraft:redstone_wire[east=up,north=side,power=15,south=side,west=up]", + "2339": "minecraft:redstone_wire[east=up,north=side,power=15,south=side,west=side]", + "2340": "minecraft:redstone_wire[east=up,north=side,power=15,south=side,west=none]", + "2341": "minecraft:redstone_wire[east=up,north=side,power=15,south=none,west=up]", + "2342": "minecraft:redstone_wire[east=up,north=side,power=15,south=none,west=side]", + "2343": "minecraft:redstone_wire[east=up,north=side,power=15,south=none,west=none]", + "2344": "minecraft:redstone_wire[east=up,north=none,power=0,south=up,west=up]", + "2345": "minecraft:redstone_wire[east=up,north=none,power=0,south=up,west=side]", + "2346": "minecraft:redstone_wire[east=up,north=none,power=0,south=up,west=none]", + "2347": "minecraft:redstone_wire[east=up,north=none,power=0,south=side,west=up]", + "2348": "minecraft:redstone_wire[east=up,north=none,power=0,south=side,west=side]", + "2349": "minecraft:redstone_wire[east=up,north=none,power=0,south=side,west=none]", + "2350": "minecraft:redstone_wire[east=up,north=none,power=0,south=none,west=up]", + "2351": "minecraft:redstone_wire[east=up,north=none,power=0,south=none,west=side]", + "2352": "minecraft:redstone_wire[east=up,north=none,power=0,south=none,west=none]", + "2353": "minecraft:redstone_wire[east=up,north=none,power=1,south=up,west=up]", + "2354": "minecraft:redstone_wire[east=up,north=none,power=1,south=up,west=side]", + "2355": "minecraft:redstone_wire[east=up,north=none,power=1,south=up,west=none]", + "2356": "minecraft:redstone_wire[east=up,north=none,power=1,south=side,west=up]", + "2357": "minecraft:redstone_wire[east=up,north=none,power=1,south=side,west=side]", + "2358": "minecraft:redstone_wire[east=up,north=none,power=1,south=side,west=none]", + "2359": "minecraft:redstone_wire[east=up,north=none,power=1,south=none,west=up]", + "2360": "minecraft:redstone_wire[east=up,north=none,power=1,south=none,west=side]", + "2361": "minecraft:redstone_wire[east=up,north=none,power=1,south=none,west=none]", + "2362": "minecraft:redstone_wire[east=up,north=none,power=2,south=up,west=up]", + "2363": "minecraft:redstone_wire[east=up,north=none,power=2,south=up,west=side]", + "2364": "minecraft:redstone_wire[east=up,north=none,power=2,south=up,west=none]", + "2365": "minecraft:redstone_wire[east=up,north=none,power=2,south=side,west=up]", + "2366": "minecraft:redstone_wire[east=up,north=none,power=2,south=side,west=side]", + "2367": "minecraft:redstone_wire[east=up,north=none,power=2,south=side,west=none]", + "2368": "minecraft:redstone_wire[east=up,north=none,power=2,south=none,west=up]", + "2369": "minecraft:redstone_wire[east=up,north=none,power=2,south=none,west=side]", + "2370": "minecraft:redstone_wire[east=up,north=none,power=2,south=none,west=none]", + "2371": "minecraft:redstone_wire[east=up,north=none,power=3,south=up,west=up]", + "2372": "minecraft:redstone_wire[east=up,north=none,power=3,south=up,west=side]", + "2373": "minecraft:redstone_wire[east=up,north=none,power=3,south=up,west=none]", + "2374": "minecraft:redstone_wire[east=up,north=none,power=3,south=side,west=up]", + "2375": "minecraft:redstone_wire[east=up,north=none,power=3,south=side,west=side]", + "2376": "minecraft:redstone_wire[east=up,north=none,power=3,south=side,west=none]", + "2377": "minecraft:redstone_wire[east=up,north=none,power=3,south=none,west=up]", + "2378": "minecraft:redstone_wire[east=up,north=none,power=3,south=none,west=side]", + "2379": "minecraft:redstone_wire[east=up,north=none,power=3,south=none,west=none]", + "2380": "minecraft:redstone_wire[east=up,north=none,power=4,south=up,west=up]", + "2381": "minecraft:redstone_wire[east=up,north=none,power=4,south=up,west=side]", + "2382": "minecraft:redstone_wire[east=up,north=none,power=4,south=up,west=none]", + "2383": "minecraft:redstone_wire[east=up,north=none,power=4,south=side,west=up]", + "2384": "minecraft:redstone_wire[east=up,north=none,power=4,south=side,west=side]", + "2385": "minecraft:redstone_wire[east=up,north=none,power=4,south=side,west=none]", + "2386": "minecraft:redstone_wire[east=up,north=none,power=4,south=none,west=up]", + "2387": "minecraft:redstone_wire[east=up,north=none,power=4,south=none,west=side]", + "2388": "minecraft:redstone_wire[east=up,north=none,power=4,south=none,west=none]", + "2389": "minecraft:redstone_wire[east=up,north=none,power=5,south=up,west=up]", + "2390": "minecraft:redstone_wire[east=up,north=none,power=5,south=up,west=side]", + "2391": "minecraft:redstone_wire[east=up,north=none,power=5,south=up,west=none]", + "2392": "minecraft:redstone_wire[east=up,north=none,power=5,south=side,west=up]", + "2393": "minecraft:redstone_wire[east=up,north=none,power=5,south=side,west=side]", + "2394": "minecraft:redstone_wire[east=up,north=none,power=5,south=side,west=none]", + "2395": "minecraft:redstone_wire[east=up,north=none,power=5,south=none,west=up]", + "2396": "minecraft:redstone_wire[east=up,north=none,power=5,south=none,west=side]", + "2397": "minecraft:redstone_wire[east=up,north=none,power=5,south=none,west=none]", + "2398": "minecraft:redstone_wire[east=up,north=none,power=6,south=up,west=up]", + "2399": "minecraft:redstone_wire[east=up,north=none,power=6,south=up,west=side]", + "2400": "minecraft:redstone_wire[east=up,north=none,power=6,south=up,west=none]", + "2401": "minecraft:redstone_wire[east=up,north=none,power=6,south=side,west=up]", + "2402": "minecraft:redstone_wire[east=up,north=none,power=6,south=side,west=side]", + "2403": "minecraft:redstone_wire[east=up,north=none,power=6,south=side,west=none]", + "2404": "minecraft:redstone_wire[east=up,north=none,power=6,south=none,west=up]", + "2405": "minecraft:redstone_wire[east=up,north=none,power=6,south=none,west=side]", + "2406": "minecraft:redstone_wire[east=up,north=none,power=6,south=none,west=none]", + "2407": "minecraft:redstone_wire[east=up,north=none,power=7,south=up,west=up]", + "2408": "minecraft:redstone_wire[east=up,north=none,power=7,south=up,west=side]", + "2409": "minecraft:redstone_wire[east=up,north=none,power=7,south=up,west=none]", + "2410": "minecraft:redstone_wire[east=up,north=none,power=7,south=side,west=up]", + "2411": "minecraft:redstone_wire[east=up,north=none,power=7,south=side,west=side]", + "2412": "minecraft:redstone_wire[east=up,north=none,power=7,south=side,west=none]", + "2413": "minecraft:redstone_wire[east=up,north=none,power=7,south=none,west=up]", + "2414": "minecraft:redstone_wire[east=up,north=none,power=7,south=none,west=side]", + "2415": "minecraft:redstone_wire[east=up,north=none,power=7,south=none,west=none]", + "2416": "minecraft:redstone_wire[east=up,north=none,power=8,south=up,west=up]", + "2417": "minecraft:redstone_wire[east=up,north=none,power=8,south=up,west=side]", + "2418": "minecraft:redstone_wire[east=up,north=none,power=8,south=up,west=none]", + "2419": "minecraft:redstone_wire[east=up,north=none,power=8,south=side,west=up]", + "2420": "minecraft:redstone_wire[east=up,north=none,power=8,south=side,west=side]", + "2421": "minecraft:redstone_wire[east=up,north=none,power=8,south=side,west=none]", + "2422": "minecraft:redstone_wire[east=up,north=none,power=8,south=none,west=up]", + "2423": "minecraft:redstone_wire[east=up,north=none,power=8,south=none,west=side]", + "2424": "minecraft:redstone_wire[east=up,north=none,power=8,south=none,west=none]", + "2425": "minecraft:redstone_wire[east=up,north=none,power=9,south=up,west=up]", + "2426": "minecraft:redstone_wire[east=up,north=none,power=9,south=up,west=side]", + "2427": "minecraft:redstone_wire[east=up,north=none,power=9,south=up,west=none]", + "2428": "minecraft:redstone_wire[east=up,north=none,power=9,south=side,west=up]", + "2429": "minecraft:redstone_wire[east=up,north=none,power=9,south=side,west=side]", + "2430": "minecraft:redstone_wire[east=up,north=none,power=9,south=side,west=none]", + "2431": "minecraft:redstone_wire[east=up,north=none,power=9,south=none,west=up]", + "2432": "minecraft:redstone_wire[east=up,north=none,power=9,south=none,west=side]", + "2433": "minecraft:redstone_wire[east=up,north=none,power=9,south=none,west=none]", + "2434": "minecraft:redstone_wire[east=up,north=none,power=10,south=up,west=up]", + "2435": "minecraft:redstone_wire[east=up,north=none,power=10,south=up,west=side]", + "2436": "minecraft:redstone_wire[east=up,north=none,power=10,south=up,west=none]", + "2437": "minecraft:redstone_wire[east=up,north=none,power=10,south=side,west=up]", + "2438": "minecraft:redstone_wire[east=up,north=none,power=10,south=side,west=side]", + "2439": "minecraft:redstone_wire[east=up,north=none,power=10,south=side,west=none]", + "2440": "minecraft:redstone_wire[east=up,north=none,power=10,south=none,west=up]", + "2441": "minecraft:redstone_wire[east=up,north=none,power=10,south=none,west=side]", + "2442": "minecraft:redstone_wire[east=up,north=none,power=10,south=none,west=none]", + "2443": "minecraft:redstone_wire[east=up,north=none,power=11,south=up,west=up]", + "2444": "minecraft:redstone_wire[east=up,north=none,power=11,south=up,west=side]", + "2445": "minecraft:redstone_wire[east=up,north=none,power=11,south=up,west=none]", + "2446": "minecraft:redstone_wire[east=up,north=none,power=11,south=side,west=up]", + "2447": "minecraft:redstone_wire[east=up,north=none,power=11,south=side,west=side]", + "2448": "minecraft:redstone_wire[east=up,north=none,power=11,south=side,west=none]", + "2449": "minecraft:redstone_wire[east=up,north=none,power=11,south=none,west=up]", + "2450": "minecraft:redstone_wire[east=up,north=none,power=11,south=none,west=side]", + "2451": "minecraft:redstone_wire[east=up,north=none,power=11,south=none,west=none]", + "2452": "minecraft:redstone_wire[east=up,north=none,power=12,south=up,west=up]", + "2453": "minecraft:redstone_wire[east=up,north=none,power=12,south=up,west=side]", + "2454": "minecraft:redstone_wire[east=up,north=none,power=12,south=up,west=none]", + "2455": "minecraft:redstone_wire[east=up,north=none,power=12,south=side,west=up]", + "2456": "minecraft:redstone_wire[east=up,north=none,power=12,south=side,west=side]", + "2457": "minecraft:redstone_wire[east=up,north=none,power=12,south=side,west=none]", + "2458": "minecraft:redstone_wire[east=up,north=none,power=12,south=none,west=up]", + "2459": "minecraft:redstone_wire[east=up,north=none,power=12,south=none,west=side]", + "2460": "minecraft:redstone_wire[east=up,north=none,power=12,south=none,west=none]", + "2461": "minecraft:redstone_wire[east=up,north=none,power=13,south=up,west=up]", + "2462": "minecraft:redstone_wire[east=up,north=none,power=13,south=up,west=side]", + "2463": "minecraft:redstone_wire[east=up,north=none,power=13,south=up,west=none]", + "2464": "minecraft:redstone_wire[east=up,north=none,power=13,south=side,west=up]", + "2465": "minecraft:redstone_wire[east=up,north=none,power=13,south=side,west=side]", + "2466": "minecraft:redstone_wire[east=up,north=none,power=13,south=side,west=none]", + "2467": "minecraft:redstone_wire[east=up,north=none,power=13,south=none,west=up]", + "2468": "minecraft:redstone_wire[east=up,north=none,power=13,south=none,west=side]", + "2469": "minecraft:redstone_wire[east=up,north=none,power=13,south=none,west=none]", + "2470": "minecraft:redstone_wire[east=up,north=none,power=14,south=up,west=up]", + "2471": "minecraft:redstone_wire[east=up,north=none,power=14,south=up,west=side]", + "2472": "minecraft:redstone_wire[east=up,north=none,power=14,south=up,west=none]", + "2473": "minecraft:redstone_wire[east=up,north=none,power=14,south=side,west=up]", + "2474": "minecraft:redstone_wire[east=up,north=none,power=14,south=side,west=side]", + "2475": "minecraft:redstone_wire[east=up,north=none,power=14,south=side,west=none]", + "2476": "minecraft:redstone_wire[east=up,north=none,power=14,south=none,west=up]", + "2477": "minecraft:redstone_wire[east=up,north=none,power=14,south=none,west=side]", + "2478": "minecraft:redstone_wire[east=up,north=none,power=14,south=none,west=none]", + "2479": "minecraft:redstone_wire[east=up,north=none,power=15,south=up,west=up]", + "2480": "minecraft:redstone_wire[east=up,north=none,power=15,south=up,west=side]", + "2481": "minecraft:redstone_wire[east=up,north=none,power=15,south=up,west=none]", + "2482": "minecraft:redstone_wire[east=up,north=none,power=15,south=side,west=up]", + "2483": "minecraft:redstone_wire[east=up,north=none,power=15,south=side,west=side]", + "2484": "minecraft:redstone_wire[east=up,north=none,power=15,south=side,west=none]", + "2485": "minecraft:redstone_wire[east=up,north=none,power=15,south=none,west=up]", + "2486": "minecraft:redstone_wire[east=up,north=none,power=15,south=none,west=side]", + "2487": "minecraft:redstone_wire[east=up,north=none,power=15,south=none,west=none]", + "2488": "minecraft:redstone_wire[east=side,north=up,power=0,south=up,west=up]", + "2489": "minecraft:redstone_wire[east=side,north=up,power=0,south=up,west=side]", + "2490": "minecraft:redstone_wire[east=side,north=up,power=0,south=up,west=none]", + "2491": "minecraft:redstone_wire[east=side,north=up,power=0,south=side,west=up]", + "2492": "minecraft:redstone_wire[east=side,north=up,power=0,south=side,west=side]", + "2493": "minecraft:redstone_wire[east=side,north=up,power=0,south=side,west=none]", + "2494": "minecraft:redstone_wire[east=side,north=up,power=0,south=none,west=up]", + "2495": "minecraft:redstone_wire[east=side,north=up,power=0,south=none,west=side]", + "2496": "minecraft:redstone_wire[east=side,north=up,power=0,south=none,west=none]", + "2497": "minecraft:redstone_wire[east=side,north=up,power=1,south=up,west=up]", + "2498": "minecraft:redstone_wire[east=side,north=up,power=1,south=up,west=side]", + "2499": "minecraft:redstone_wire[east=side,north=up,power=1,south=up,west=none]", + "2500": "minecraft:redstone_wire[east=side,north=up,power=1,south=side,west=up]", + "2501": "minecraft:redstone_wire[east=side,north=up,power=1,south=side,west=side]", + "2502": "minecraft:redstone_wire[east=side,north=up,power=1,south=side,west=none]", + "2503": "minecraft:redstone_wire[east=side,north=up,power=1,south=none,west=up]", + "2504": "minecraft:redstone_wire[east=side,north=up,power=1,south=none,west=side]", + "2505": "minecraft:redstone_wire[east=side,north=up,power=1,south=none,west=none]", + "2506": "minecraft:redstone_wire[east=side,north=up,power=2,south=up,west=up]", + "2507": "minecraft:redstone_wire[east=side,north=up,power=2,south=up,west=side]", + "2508": "minecraft:redstone_wire[east=side,north=up,power=2,south=up,west=none]", + "2509": "minecraft:redstone_wire[east=side,north=up,power=2,south=side,west=up]", + "2510": "minecraft:redstone_wire[east=side,north=up,power=2,south=side,west=side]", + "2511": "minecraft:redstone_wire[east=side,north=up,power=2,south=side,west=none]", + "2512": "minecraft:redstone_wire[east=side,north=up,power=2,south=none,west=up]", + "2513": "minecraft:redstone_wire[east=side,north=up,power=2,south=none,west=side]", + "2514": "minecraft:redstone_wire[east=side,north=up,power=2,south=none,west=none]", + "2515": "minecraft:redstone_wire[east=side,north=up,power=3,south=up,west=up]", + "2516": "minecraft:redstone_wire[east=side,north=up,power=3,south=up,west=side]", + "2517": "minecraft:redstone_wire[east=side,north=up,power=3,south=up,west=none]", + "2518": "minecraft:redstone_wire[east=side,north=up,power=3,south=side,west=up]", + "2519": "minecraft:redstone_wire[east=side,north=up,power=3,south=side,west=side]", + "2520": "minecraft:redstone_wire[east=side,north=up,power=3,south=side,west=none]", + "2521": "minecraft:redstone_wire[east=side,north=up,power=3,south=none,west=up]", + "2522": "minecraft:redstone_wire[east=side,north=up,power=3,south=none,west=side]", + "2523": "minecraft:redstone_wire[east=side,north=up,power=3,south=none,west=none]", + "2524": "minecraft:redstone_wire[east=side,north=up,power=4,south=up,west=up]", + "2525": "minecraft:redstone_wire[east=side,north=up,power=4,south=up,west=side]", + "2526": "minecraft:redstone_wire[east=side,north=up,power=4,south=up,west=none]", + "2527": "minecraft:redstone_wire[east=side,north=up,power=4,south=side,west=up]", + "2528": "minecraft:redstone_wire[east=side,north=up,power=4,south=side,west=side]", + "2529": "minecraft:redstone_wire[east=side,north=up,power=4,south=side,west=none]", + "2530": "minecraft:redstone_wire[east=side,north=up,power=4,south=none,west=up]", + "2531": "minecraft:redstone_wire[east=side,north=up,power=4,south=none,west=side]", + "2532": "minecraft:redstone_wire[east=side,north=up,power=4,south=none,west=none]", + "2533": "minecraft:redstone_wire[east=side,north=up,power=5,south=up,west=up]", + "2534": "minecraft:redstone_wire[east=side,north=up,power=5,south=up,west=side]", + "2535": "minecraft:redstone_wire[east=side,north=up,power=5,south=up,west=none]", + "2536": "minecraft:redstone_wire[east=side,north=up,power=5,south=side,west=up]", + "2537": "minecraft:redstone_wire[east=side,north=up,power=5,south=side,west=side]", + "2538": "minecraft:redstone_wire[east=side,north=up,power=5,south=side,west=none]", + "2539": "minecraft:redstone_wire[east=side,north=up,power=5,south=none,west=up]", + "2540": "minecraft:redstone_wire[east=side,north=up,power=5,south=none,west=side]", + "2541": "minecraft:redstone_wire[east=side,north=up,power=5,south=none,west=none]", + "2542": "minecraft:redstone_wire[east=side,north=up,power=6,south=up,west=up]", + "2543": "minecraft:redstone_wire[east=side,north=up,power=6,south=up,west=side]", + "2544": "minecraft:redstone_wire[east=side,north=up,power=6,south=up,west=none]", + "2545": "minecraft:redstone_wire[east=side,north=up,power=6,south=side,west=up]", + "2546": "minecraft:redstone_wire[east=side,north=up,power=6,south=side,west=side]", + "2547": "minecraft:redstone_wire[east=side,north=up,power=6,south=side,west=none]", + "2548": "minecraft:redstone_wire[east=side,north=up,power=6,south=none,west=up]", + "2549": "minecraft:redstone_wire[east=side,north=up,power=6,south=none,west=side]", + "2550": "minecraft:redstone_wire[east=side,north=up,power=6,south=none,west=none]", + "2551": "minecraft:redstone_wire[east=side,north=up,power=7,south=up,west=up]", + "2552": "minecraft:redstone_wire[east=side,north=up,power=7,south=up,west=side]", + "2553": "minecraft:redstone_wire[east=side,north=up,power=7,south=up,west=none]", + "2554": "minecraft:redstone_wire[east=side,north=up,power=7,south=side,west=up]", + "2555": "minecraft:redstone_wire[east=side,north=up,power=7,south=side,west=side]", + "2556": "minecraft:redstone_wire[east=side,north=up,power=7,south=side,west=none]", + "2557": "minecraft:redstone_wire[east=side,north=up,power=7,south=none,west=up]", + "2558": "minecraft:redstone_wire[east=side,north=up,power=7,south=none,west=side]", + "2559": "minecraft:redstone_wire[east=side,north=up,power=7,south=none,west=none]", + "2560": "minecraft:redstone_wire[east=side,north=up,power=8,south=up,west=up]", + "2561": "minecraft:redstone_wire[east=side,north=up,power=8,south=up,west=side]", + "2562": "minecraft:redstone_wire[east=side,north=up,power=8,south=up,west=none]", + "2563": "minecraft:redstone_wire[east=side,north=up,power=8,south=side,west=up]", + "2564": "minecraft:redstone_wire[east=side,north=up,power=8,south=side,west=side]", + "2565": "minecraft:redstone_wire[east=side,north=up,power=8,south=side,west=none]", + "2566": "minecraft:redstone_wire[east=side,north=up,power=8,south=none,west=up]", + "2567": "minecraft:redstone_wire[east=side,north=up,power=8,south=none,west=side]", + "2568": "minecraft:redstone_wire[east=side,north=up,power=8,south=none,west=none]", + "2569": "minecraft:redstone_wire[east=side,north=up,power=9,south=up,west=up]", + "2570": "minecraft:redstone_wire[east=side,north=up,power=9,south=up,west=side]", + "2571": "minecraft:redstone_wire[east=side,north=up,power=9,south=up,west=none]", + "2572": "minecraft:redstone_wire[east=side,north=up,power=9,south=side,west=up]", + "2573": "minecraft:redstone_wire[east=side,north=up,power=9,south=side,west=side]", + "2574": "minecraft:redstone_wire[east=side,north=up,power=9,south=side,west=none]", + "2575": "minecraft:redstone_wire[east=side,north=up,power=9,south=none,west=up]", + "2576": "minecraft:redstone_wire[east=side,north=up,power=9,south=none,west=side]", + "2577": "minecraft:redstone_wire[east=side,north=up,power=9,south=none,west=none]", + "2578": "minecraft:redstone_wire[east=side,north=up,power=10,south=up,west=up]", + "2579": "minecraft:redstone_wire[east=side,north=up,power=10,south=up,west=side]", + "2580": "minecraft:redstone_wire[east=side,north=up,power=10,south=up,west=none]", + "2581": "minecraft:redstone_wire[east=side,north=up,power=10,south=side,west=up]", + "2582": "minecraft:redstone_wire[east=side,north=up,power=10,south=side,west=side]", + "2583": "minecraft:redstone_wire[east=side,north=up,power=10,south=side,west=none]", + "2584": "minecraft:redstone_wire[east=side,north=up,power=10,south=none,west=up]", + "2585": "minecraft:redstone_wire[east=side,north=up,power=10,south=none,west=side]", + "2586": "minecraft:redstone_wire[east=side,north=up,power=10,south=none,west=none]", + "2587": "minecraft:redstone_wire[east=side,north=up,power=11,south=up,west=up]", + "2588": "minecraft:redstone_wire[east=side,north=up,power=11,south=up,west=side]", + "2589": "minecraft:redstone_wire[east=side,north=up,power=11,south=up,west=none]", + "2590": "minecraft:redstone_wire[east=side,north=up,power=11,south=side,west=up]", + "2591": "minecraft:redstone_wire[east=side,north=up,power=11,south=side,west=side]", + "2592": "minecraft:redstone_wire[east=side,north=up,power=11,south=side,west=none]", + "2593": "minecraft:redstone_wire[east=side,north=up,power=11,south=none,west=up]", + "2594": "minecraft:redstone_wire[east=side,north=up,power=11,south=none,west=side]", + "2595": "minecraft:redstone_wire[east=side,north=up,power=11,south=none,west=none]", + "2596": "minecraft:redstone_wire[east=side,north=up,power=12,south=up,west=up]", + "2597": "minecraft:redstone_wire[east=side,north=up,power=12,south=up,west=side]", + "2598": "minecraft:redstone_wire[east=side,north=up,power=12,south=up,west=none]", + "2599": "minecraft:redstone_wire[east=side,north=up,power=12,south=side,west=up]", + "2600": "minecraft:redstone_wire[east=side,north=up,power=12,south=side,west=side]", + "2601": "minecraft:redstone_wire[east=side,north=up,power=12,south=side,west=none]", + "2602": "minecraft:redstone_wire[east=side,north=up,power=12,south=none,west=up]", + "2603": "minecraft:redstone_wire[east=side,north=up,power=12,south=none,west=side]", + "2604": "minecraft:redstone_wire[east=side,north=up,power=12,south=none,west=none]", + "2605": "minecraft:redstone_wire[east=side,north=up,power=13,south=up,west=up]", + "2606": "minecraft:redstone_wire[east=side,north=up,power=13,south=up,west=side]", + "2607": "minecraft:redstone_wire[east=side,north=up,power=13,south=up,west=none]", + "2608": "minecraft:redstone_wire[east=side,north=up,power=13,south=side,west=up]", + "2609": "minecraft:redstone_wire[east=side,north=up,power=13,south=side,west=side]", + "2610": "minecraft:redstone_wire[east=side,north=up,power=13,south=side,west=none]", + "2611": "minecraft:redstone_wire[east=side,north=up,power=13,south=none,west=up]", + "2612": "minecraft:redstone_wire[east=side,north=up,power=13,south=none,west=side]", + "2613": "minecraft:redstone_wire[east=side,north=up,power=13,south=none,west=none]", + "2614": "minecraft:redstone_wire[east=side,north=up,power=14,south=up,west=up]", + "2615": "minecraft:redstone_wire[east=side,north=up,power=14,south=up,west=side]", + "2616": "minecraft:redstone_wire[east=side,north=up,power=14,south=up,west=none]", + "2617": "minecraft:redstone_wire[east=side,north=up,power=14,south=side,west=up]", + "2618": "minecraft:redstone_wire[east=side,north=up,power=14,south=side,west=side]", + "2619": "minecraft:redstone_wire[east=side,north=up,power=14,south=side,west=none]", + "2620": "minecraft:redstone_wire[east=side,north=up,power=14,south=none,west=up]", + "2621": "minecraft:redstone_wire[east=side,north=up,power=14,south=none,west=side]", + "2622": "minecraft:redstone_wire[east=side,north=up,power=14,south=none,west=none]", + "2623": "minecraft:redstone_wire[east=side,north=up,power=15,south=up,west=up]", + "2624": "minecraft:redstone_wire[east=side,north=up,power=15,south=up,west=side]", + "2625": "minecraft:redstone_wire[east=side,north=up,power=15,south=up,west=none]", + "2626": "minecraft:redstone_wire[east=side,north=up,power=15,south=side,west=up]", + "2627": "minecraft:redstone_wire[east=side,north=up,power=15,south=side,west=side]", + "2628": "minecraft:redstone_wire[east=side,north=up,power=15,south=side,west=none]", + "2629": "minecraft:redstone_wire[east=side,north=up,power=15,south=none,west=up]", + "2630": "minecraft:redstone_wire[east=side,north=up,power=15,south=none,west=side]", + "2631": "minecraft:redstone_wire[east=side,north=up,power=15,south=none,west=none]", + "2632": "minecraft:redstone_wire[east=side,north=side,power=0,south=up,west=up]", + "2633": "minecraft:redstone_wire[east=side,north=side,power=0,south=up,west=side]", + "2634": "minecraft:redstone_wire[east=side,north=side,power=0,south=up,west=none]", + "2635": "minecraft:redstone_wire[east=side,north=side,power=0,south=side,west=up]", + "2636": "minecraft:redstone_wire[east=side,north=side,power=0,south=side,west=side]", + "2637": "minecraft:redstone_wire[east=side,north=side,power=0,south=side,west=none]", + "2638": "minecraft:redstone_wire[east=side,north=side,power=0,south=none,west=up]", + "2639": "minecraft:redstone_wire[east=side,north=side,power=0,south=none,west=side]", + "2640": "minecraft:redstone_wire[east=side,north=side,power=0,south=none,west=none]", + "2641": "minecraft:redstone_wire[east=side,north=side,power=1,south=up,west=up]", + "2642": "minecraft:redstone_wire[east=side,north=side,power=1,south=up,west=side]", + "2643": "minecraft:redstone_wire[east=side,north=side,power=1,south=up,west=none]", + "2644": "minecraft:redstone_wire[east=side,north=side,power=1,south=side,west=up]", + "2645": "minecraft:redstone_wire[east=side,north=side,power=1,south=side,west=side]", + "2646": "minecraft:redstone_wire[east=side,north=side,power=1,south=side,west=none]", + "2647": "minecraft:redstone_wire[east=side,north=side,power=1,south=none,west=up]", + "2648": "minecraft:redstone_wire[east=side,north=side,power=1,south=none,west=side]", + "2649": "minecraft:redstone_wire[east=side,north=side,power=1,south=none,west=none]", + "2650": "minecraft:redstone_wire[east=side,north=side,power=2,south=up,west=up]", + "2651": "minecraft:redstone_wire[east=side,north=side,power=2,south=up,west=side]", + "2652": "minecraft:redstone_wire[east=side,north=side,power=2,south=up,west=none]", + "2653": "minecraft:redstone_wire[east=side,north=side,power=2,south=side,west=up]", + "2654": "minecraft:redstone_wire[east=side,north=side,power=2,south=side,west=side]", + "2655": "minecraft:redstone_wire[east=side,north=side,power=2,south=side,west=none]", + "2656": "minecraft:redstone_wire[east=side,north=side,power=2,south=none,west=up]", + "2657": "minecraft:redstone_wire[east=side,north=side,power=2,south=none,west=side]", + "2658": "minecraft:redstone_wire[east=side,north=side,power=2,south=none,west=none]", + "2659": "minecraft:redstone_wire[east=side,north=side,power=3,south=up,west=up]", + "2660": "minecraft:redstone_wire[east=side,north=side,power=3,south=up,west=side]", + "2661": "minecraft:redstone_wire[east=side,north=side,power=3,south=up,west=none]", + "2662": "minecraft:redstone_wire[east=side,north=side,power=3,south=side,west=up]", + "2663": "minecraft:redstone_wire[east=side,north=side,power=3,south=side,west=side]", + "2664": "minecraft:redstone_wire[east=side,north=side,power=3,south=side,west=none]", + "2665": "minecraft:redstone_wire[east=side,north=side,power=3,south=none,west=up]", + "2666": "minecraft:redstone_wire[east=side,north=side,power=3,south=none,west=side]", + "2667": "minecraft:redstone_wire[east=side,north=side,power=3,south=none,west=none]", + "2668": "minecraft:redstone_wire[east=side,north=side,power=4,south=up,west=up]", + "2669": "minecraft:redstone_wire[east=side,north=side,power=4,south=up,west=side]", + "2670": "minecraft:redstone_wire[east=side,north=side,power=4,south=up,west=none]", + "2671": "minecraft:redstone_wire[east=side,north=side,power=4,south=side,west=up]", + "2672": "minecraft:redstone_wire[east=side,north=side,power=4,south=side,west=side]", + "2673": "minecraft:redstone_wire[east=side,north=side,power=4,south=side,west=none]", + "2674": "minecraft:redstone_wire[east=side,north=side,power=4,south=none,west=up]", + "2675": "minecraft:redstone_wire[east=side,north=side,power=4,south=none,west=side]", + "2676": "minecraft:redstone_wire[east=side,north=side,power=4,south=none,west=none]", + "2677": "minecraft:redstone_wire[east=side,north=side,power=5,south=up,west=up]", + "2678": "minecraft:redstone_wire[east=side,north=side,power=5,south=up,west=side]", + "2679": "minecraft:redstone_wire[east=side,north=side,power=5,south=up,west=none]", + "2680": "minecraft:redstone_wire[east=side,north=side,power=5,south=side,west=up]", + "2681": "minecraft:redstone_wire[east=side,north=side,power=5,south=side,west=side]", + "2682": "minecraft:redstone_wire[east=side,north=side,power=5,south=side,west=none]", + "2683": "minecraft:redstone_wire[east=side,north=side,power=5,south=none,west=up]", + "2684": "minecraft:redstone_wire[east=side,north=side,power=5,south=none,west=side]", + "2685": "minecraft:redstone_wire[east=side,north=side,power=5,south=none,west=none]", + "2686": "minecraft:redstone_wire[east=side,north=side,power=6,south=up,west=up]", + "2687": "minecraft:redstone_wire[east=side,north=side,power=6,south=up,west=side]", + "2688": "minecraft:redstone_wire[east=side,north=side,power=6,south=up,west=none]", + "2689": "minecraft:redstone_wire[east=side,north=side,power=6,south=side,west=up]", + "2690": "minecraft:redstone_wire[east=side,north=side,power=6,south=side,west=side]", + "2691": "minecraft:redstone_wire[east=side,north=side,power=6,south=side,west=none]", + "2692": "minecraft:redstone_wire[east=side,north=side,power=6,south=none,west=up]", + "2693": "minecraft:redstone_wire[east=side,north=side,power=6,south=none,west=side]", + "2694": "minecraft:redstone_wire[east=side,north=side,power=6,south=none,west=none]", + "2695": "minecraft:redstone_wire[east=side,north=side,power=7,south=up,west=up]", + "2696": "minecraft:redstone_wire[east=side,north=side,power=7,south=up,west=side]", + "2697": "minecraft:redstone_wire[east=side,north=side,power=7,south=up,west=none]", + "2698": "minecraft:redstone_wire[east=side,north=side,power=7,south=side,west=up]", + "2699": "minecraft:redstone_wire[east=side,north=side,power=7,south=side,west=side]", + "2700": "minecraft:redstone_wire[east=side,north=side,power=7,south=side,west=none]", + "2701": "minecraft:redstone_wire[east=side,north=side,power=7,south=none,west=up]", + "2702": "minecraft:redstone_wire[east=side,north=side,power=7,south=none,west=side]", + "2703": "minecraft:redstone_wire[east=side,north=side,power=7,south=none,west=none]", + "2704": "minecraft:redstone_wire[east=side,north=side,power=8,south=up,west=up]", + "2705": "minecraft:redstone_wire[east=side,north=side,power=8,south=up,west=side]", + "2706": "minecraft:redstone_wire[east=side,north=side,power=8,south=up,west=none]", + "2707": "minecraft:redstone_wire[east=side,north=side,power=8,south=side,west=up]", + "2708": "minecraft:redstone_wire[east=side,north=side,power=8,south=side,west=side]", + "2709": "minecraft:redstone_wire[east=side,north=side,power=8,south=side,west=none]", + "2710": "minecraft:redstone_wire[east=side,north=side,power=8,south=none,west=up]", + "2711": "minecraft:redstone_wire[east=side,north=side,power=8,south=none,west=side]", + "2712": "minecraft:redstone_wire[east=side,north=side,power=8,south=none,west=none]", + "2713": "minecraft:redstone_wire[east=side,north=side,power=9,south=up,west=up]", + "2714": "minecraft:redstone_wire[east=side,north=side,power=9,south=up,west=side]", + "2715": "minecraft:redstone_wire[east=side,north=side,power=9,south=up,west=none]", + "2716": "minecraft:redstone_wire[east=side,north=side,power=9,south=side,west=up]", + "2717": "minecraft:redstone_wire[east=side,north=side,power=9,south=side,west=side]", + "2718": "minecraft:redstone_wire[east=side,north=side,power=9,south=side,west=none]", + "2719": "minecraft:redstone_wire[east=side,north=side,power=9,south=none,west=up]", + "2720": "minecraft:redstone_wire[east=side,north=side,power=9,south=none,west=side]", + "2721": "minecraft:redstone_wire[east=side,north=side,power=9,south=none,west=none]", + "2722": "minecraft:redstone_wire[east=side,north=side,power=10,south=up,west=up]", + "2723": "minecraft:redstone_wire[east=side,north=side,power=10,south=up,west=side]", + "2724": "minecraft:redstone_wire[east=side,north=side,power=10,south=up,west=none]", + "2725": "minecraft:redstone_wire[east=side,north=side,power=10,south=side,west=up]", + "2726": "minecraft:redstone_wire[east=side,north=side,power=10,south=side,west=side]", + "2727": "minecraft:redstone_wire[east=side,north=side,power=10,south=side,west=none]", + "2728": "minecraft:redstone_wire[east=side,north=side,power=10,south=none,west=up]", + "2729": "minecraft:redstone_wire[east=side,north=side,power=10,south=none,west=side]", + "2730": "minecraft:redstone_wire[east=side,north=side,power=10,south=none,west=none]", + "2731": "minecraft:redstone_wire[east=side,north=side,power=11,south=up,west=up]", + "2732": "minecraft:redstone_wire[east=side,north=side,power=11,south=up,west=side]", + "2733": "minecraft:redstone_wire[east=side,north=side,power=11,south=up,west=none]", + "2734": "minecraft:redstone_wire[east=side,north=side,power=11,south=side,west=up]", + "2735": "minecraft:redstone_wire[east=side,north=side,power=11,south=side,west=side]", + "2736": "minecraft:redstone_wire[east=side,north=side,power=11,south=side,west=none]", + "2737": "minecraft:redstone_wire[east=side,north=side,power=11,south=none,west=up]", + "2738": "minecraft:redstone_wire[east=side,north=side,power=11,south=none,west=side]", + "2739": "minecraft:redstone_wire[east=side,north=side,power=11,south=none,west=none]", + "2740": "minecraft:redstone_wire[east=side,north=side,power=12,south=up,west=up]", + "2741": "minecraft:redstone_wire[east=side,north=side,power=12,south=up,west=side]", + "2742": "minecraft:redstone_wire[east=side,north=side,power=12,south=up,west=none]", + "2743": "minecraft:redstone_wire[east=side,north=side,power=12,south=side,west=up]", + "2744": "minecraft:redstone_wire[east=side,north=side,power=12,south=side,west=side]", + "2745": "minecraft:redstone_wire[east=side,north=side,power=12,south=side,west=none]", + "2746": "minecraft:redstone_wire[east=side,north=side,power=12,south=none,west=up]", + "2747": "minecraft:redstone_wire[east=side,north=side,power=12,south=none,west=side]", + "2748": "minecraft:redstone_wire[east=side,north=side,power=12,south=none,west=none]", + "2749": "minecraft:redstone_wire[east=side,north=side,power=13,south=up,west=up]", + "2750": "minecraft:redstone_wire[east=side,north=side,power=13,south=up,west=side]", + "2751": "minecraft:redstone_wire[east=side,north=side,power=13,south=up,west=none]", + "2752": "minecraft:redstone_wire[east=side,north=side,power=13,south=side,west=up]", + "2753": "minecraft:redstone_wire[east=side,north=side,power=13,south=side,west=side]", + "2754": "minecraft:redstone_wire[east=side,north=side,power=13,south=side,west=none]", + "2755": "minecraft:redstone_wire[east=side,north=side,power=13,south=none,west=up]", + "2756": "minecraft:redstone_wire[east=side,north=side,power=13,south=none,west=side]", + "2757": "minecraft:redstone_wire[east=side,north=side,power=13,south=none,west=none]", + "2758": "minecraft:redstone_wire[east=side,north=side,power=14,south=up,west=up]", + "2759": "minecraft:redstone_wire[east=side,north=side,power=14,south=up,west=side]", + "2760": "minecraft:redstone_wire[east=side,north=side,power=14,south=up,west=none]", + "2761": "minecraft:redstone_wire[east=side,north=side,power=14,south=side,west=up]", + "2762": "minecraft:redstone_wire[east=side,north=side,power=14,south=side,west=side]", + "2763": "minecraft:redstone_wire[east=side,north=side,power=14,south=side,west=none]", + "2764": "minecraft:redstone_wire[east=side,north=side,power=14,south=none,west=up]", + "2765": "minecraft:redstone_wire[east=side,north=side,power=14,south=none,west=side]", + "2766": "minecraft:redstone_wire[east=side,north=side,power=14,south=none,west=none]", + "2767": "minecraft:redstone_wire[east=side,north=side,power=15,south=up,west=up]", + "2768": "minecraft:redstone_wire[east=side,north=side,power=15,south=up,west=side]", + "2769": "minecraft:redstone_wire[east=side,north=side,power=15,south=up,west=none]", + "2770": "minecraft:redstone_wire[east=side,north=side,power=15,south=side,west=up]", + "2771": "minecraft:redstone_wire[east=side,north=side,power=15,south=side,west=side]", + "2772": "minecraft:redstone_wire[east=side,north=side,power=15,south=side,west=none]", + "2773": "minecraft:redstone_wire[east=side,north=side,power=15,south=none,west=up]", + "2774": "minecraft:redstone_wire[east=side,north=side,power=15,south=none,west=side]", + "2775": "minecraft:redstone_wire[east=side,north=side,power=15,south=none,west=none]", + "2776": "minecraft:redstone_wire[east=side,north=none,power=0,south=up,west=up]", + "2777": "minecraft:redstone_wire[east=side,north=none,power=0,south=up,west=side]", + "2778": "minecraft:redstone_wire[east=side,north=none,power=0,south=up,west=none]", + "2779": "minecraft:redstone_wire[east=side,north=none,power=0,south=side,west=up]", + "2780": "minecraft:redstone_wire[east=side,north=none,power=0,south=side,west=side]", + "2781": "minecraft:redstone_wire[east=side,north=none,power=0,south=side,west=none]", + "2782": "minecraft:redstone_wire[east=side,north=none,power=0,south=none,west=up]", + "2783": "minecraft:redstone_wire[east=side,north=none,power=0,south=none,west=side]", + "2784": "minecraft:redstone_wire[east=side,north=none,power=0,south=none,west=none]", + "2785": "minecraft:redstone_wire[east=side,north=none,power=1,south=up,west=up]", + "2786": "minecraft:redstone_wire[east=side,north=none,power=1,south=up,west=side]", + "2787": "minecraft:redstone_wire[east=side,north=none,power=1,south=up,west=none]", + "2788": "minecraft:redstone_wire[east=side,north=none,power=1,south=side,west=up]", + "2789": "minecraft:redstone_wire[east=side,north=none,power=1,south=side,west=side]", + "2790": "minecraft:redstone_wire[east=side,north=none,power=1,south=side,west=none]", + "2791": "minecraft:redstone_wire[east=side,north=none,power=1,south=none,west=up]", + "2792": "minecraft:redstone_wire[east=side,north=none,power=1,south=none,west=side]", + "2793": "minecraft:redstone_wire[east=side,north=none,power=1,south=none,west=none]", + "2794": "minecraft:redstone_wire[east=side,north=none,power=2,south=up,west=up]", + "2795": "minecraft:redstone_wire[east=side,north=none,power=2,south=up,west=side]", + "2796": "minecraft:redstone_wire[east=side,north=none,power=2,south=up,west=none]", + "2797": "minecraft:redstone_wire[east=side,north=none,power=2,south=side,west=up]", + "2798": "minecraft:redstone_wire[east=side,north=none,power=2,south=side,west=side]", + "2799": "minecraft:redstone_wire[east=side,north=none,power=2,south=side,west=none]", + "2800": "minecraft:redstone_wire[east=side,north=none,power=2,south=none,west=up]", + "2801": "minecraft:redstone_wire[east=side,north=none,power=2,south=none,west=side]", + "2802": "minecraft:redstone_wire[east=side,north=none,power=2,south=none,west=none]", + "2803": "minecraft:redstone_wire[east=side,north=none,power=3,south=up,west=up]", + "2804": "minecraft:redstone_wire[east=side,north=none,power=3,south=up,west=side]", + "2805": "minecraft:redstone_wire[east=side,north=none,power=3,south=up,west=none]", + "2806": "minecraft:redstone_wire[east=side,north=none,power=3,south=side,west=up]", + "2807": "minecraft:redstone_wire[east=side,north=none,power=3,south=side,west=side]", + "2808": "minecraft:redstone_wire[east=side,north=none,power=3,south=side,west=none]", + "2809": "minecraft:redstone_wire[east=side,north=none,power=3,south=none,west=up]", + "2810": "minecraft:redstone_wire[east=side,north=none,power=3,south=none,west=side]", + "2811": "minecraft:redstone_wire[east=side,north=none,power=3,south=none,west=none]", + "2812": "minecraft:redstone_wire[east=side,north=none,power=4,south=up,west=up]", + "2813": "minecraft:redstone_wire[east=side,north=none,power=4,south=up,west=side]", + "2814": "minecraft:redstone_wire[east=side,north=none,power=4,south=up,west=none]", + "2815": "minecraft:redstone_wire[east=side,north=none,power=4,south=side,west=up]", + "2816": "minecraft:redstone_wire[east=side,north=none,power=4,south=side,west=side]", + "2817": "minecraft:redstone_wire[east=side,north=none,power=4,south=side,west=none]", + "2818": "minecraft:redstone_wire[east=side,north=none,power=4,south=none,west=up]", + "2819": "minecraft:redstone_wire[east=side,north=none,power=4,south=none,west=side]", + "2820": "minecraft:redstone_wire[east=side,north=none,power=4,south=none,west=none]", + "2821": "minecraft:redstone_wire[east=side,north=none,power=5,south=up,west=up]", + "2822": "minecraft:redstone_wire[east=side,north=none,power=5,south=up,west=side]", + "2823": "minecraft:redstone_wire[east=side,north=none,power=5,south=up,west=none]", + "2824": "minecraft:redstone_wire[east=side,north=none,power=5,south=side,west=up]", + "2825": "minecraft:redstone_wire[east=side,north=none,power=5,south=side,west=side]", + "2826": "minecraft:redstone_wire[east=side,north=none,power=5,south=side,west=none]", + "2827": "minecraft:redstone_wire[east=side,north=none,power=5,south=none,west=up]", + "2828": "minecraft:redstone_wire[east=side,north=none,power=5,south=none,west=side]", + "2829": "minecraft:redstone_wire[east=side,north=none,power=5,south=none,west=none]", + "2830": "minecraft:redstone_wire[east=side,north=none,power=6,south=up,west=up]", + "2831": "minecraft:redstone_wire[east=side,north=none,power=6,south=up,west=side]", + "2832": "minecraft:redstone_wire[east=side,north=none,power=6,south=up,west=none]", + "2833": "minecraft:redstone_wire[east=side,north=none,power=6,south=side,west=up]", + "2834": "minecraft:redstone_wire[east=side,north=none,power=6,south=side,west=side]", + "2835": "minecraft:redstone_wire[east=side,north=none,power=6,south=side,west=none]", + "2836": "minecraft:redstone_wire[east=side,north=none,power=6,south=none,west=up]", + "2837": "minecraft:redstone_wire[east=side,north=none,power=6,south=none,west=side]", + "2838": "minecraft:redstone_wire[east=side,north=none,power=6,south=none,west=none]", + "2839": "minecraft:redstone_wire[east=side,north=none,power=7,south=up,west=up]", + "2840": "minecraft:redstone_wire[east=side,north=none,power=7,south=up,west=side]", + "2841": "minecraft:redstone_wire[east=side,north=none,power=7,south=up,west=none]", + "2842": "minecraft:redstone_wire[east=side,north=none,power=7,south=side,west=up]", + "2843": "minecraft:redstone_wire[east=side,north=none,power=7,south=side,west=side]", + "2844": "minecraft:redstone_wire[east=side,north=none,power=7,south=side,west=none]", + "2845": "minecraft:redstone_wire[east=side,north=none,power=7,south=none,west=up]", + "2846": "minecraft:redstone_wire[east=side,north=none,power=7,south=none,west=side]", + "2847": "minecraft:redstone_wire[east=side,north=none,power=7,south=none,west=none]", + "2848": "minecraft:redstone_wire[east=side,north=none,power=8,south=up,west=up]", + "2849": "minecraft:redstone_wire[east=side,north=none,power=8,south=up,west=side]", + "2850": "minecraft:redstone_wire[east=side,north=none,power=8,south=up,west=none]", + "2851": "minecraft:redstone_wire[east=side,north=none,power=8,south=side,west=up]", + "2852": "minecraft:redstone_wire[east=side,north=none,power=8,south=side,west=side]", + "2853": "minecraft:redstone_wire[east=side,north=none,power=8,south=side,west=none]", + "2854": "minecraft:redstone_wire[east=side,north=none,power=8,south=none,west=up]", + "2855": "minecraft:redstone_wire[east=side,north=none,power=8,south=none,west=side]", + "2856": "minecraft:redstone_wire[east=side,north=none,power=8,south=none,west=none]", + "2857": "minecraft:redstone_wire[east=side,north=none,power=9,south=up,west=up]", + "2858": "minecraft:redstone_wire[east=side,north=none,power=9,south=up,west=side]", + "2859": "minecraft:redstone_wire[east=side,north=none,power=9,south=up,west=none]", + "2860": "minecraft:redstone_wire[east=side,north=none,power=9,south=side,west=up]", + "2861": "minecraft:redstone_wire[east=side,north=none,power=9,south=side,west=side]", + "2862": "minecraft:redstone_wire[east=side,north=none,power=9,south=side,west=none]", + "2863": "minecraft:redstone_wire[east=side,north=none,power=9,south=none,west=up]", + "2864": "minecraft:redstone_wire[east=side,north=none,power=9,south=none,west=side]", + "2865": "minecraft:redstone_wire[east=side,north=none,power=9,south=none,west=none]", + "2866": "minecraft:redstone_wire[east=side,north=none,power=10,south=up,west=up]", + "2867": "minecraft:redstone_wire[east=side,north=none,power=10,south=up,west=side]", + "2868": "minecraft:redstone_wire[east=side,north=none,power=10,south=up,west=none]", + "2869": "minecraft:redstone_wire[east=side,north=none,power=10,south=side,west=up]", + "2870": "minecraft:redstone_wire[east=side,north=none,power=10,south=side,west=side]", + "2871": "minecraft:redstone_wire[east=side,north=none,power=10,south=side,west=none]", + "2872": "minecraft:redstone_wire[east=side,north=none,power=10,south=none,west=up]", + "2873": "minecraft:redstone_wire[east=side,north=none,power=10,south=none,west=side]", + "2874": "minecraft:redstone_wire[east=side,north=none,power=10,south=none,west=none]", + "2875": "minecraft:redstone_wire[east=side,north=none,power=11,south=up,west=up]", + "2876": "minecraft:redstone_wire[east=side,north=none,power=11,south=up,west=side]", + "2877": "minecraft:redstone_wire[east=side,north=none,power=11,south=up,west=none]", + "2878": "minecraft:redstone_wire[east=side,north=none,power=11,south=side,west=up]", + "2879": "minecraft:redstone_wire[east=side,north=none,power=11,south=side,west=side]", + "2880": "minecraft:redstone_wire[east=side,north=none,power=11,south=side,west=none]", + "2881": "minecraft:redstone_wire[east=side,north=none,power=11,south=none,west=up]", + "2882": "minecraft:redstone_wire[east=side,north=none,power=11,south=none,west=side]", + "2883": "minecraft:redstone_wire[east=side,north=none,power=11,south=none,west=none]", + "2884": "minecraft:redstone_wire[east=side,north=none,power=12,south=up,west=up]", + "2885": "minecraft:redstone_wire[east=side,north=none,power=12,south=up,west=side]", + "2886": "minecraft:redstone_wire[east=side,north=none,power=12,south=up,west=none]", + "2887": "minecraft:redstone_wire[east=side,north=none,power=12,south=side,west=up]", + "2888": "minecraft:redstone_wire[east=side,north=none,power=12,south=side,west=side]", + "2889": "minecraft:redstone_wire[east=side,north=none,power=12,south=side,west=none]", + "2890": "minecraft:redstone_wire[east=side,north=none,power=12,south=none,west=up]", + "2891": "minecraft:redstone_wire[east=side,north=none,power=12,south=none,west=side]", + "2892": "minecraft:redstone_wire[east=side,north=none,power=12,south=none,west=none]", + "2893": "minecraft:redstone_wire[east=side,north=none,power=13,south=up,west=up]", + "2894": "minecraft:redstone_wire[east=side,north=none,power=13,south=up,west=side]", + "2895": "minecraft:redstone_wire[east=side,north=none,power=13,south=up,west=none]", + "2896": "minecraft:redstone_wire[east=side,north=none,power=13,south=side,west=up]", + "2897": "minecraft:redstone_wire[east=side,north=none,power=13,south=side,west=side]", + "2898": "minecraft:redstone_wire[east=side,north=none,power=13,south=side,west=none]", + "2899": "minecraft:redstone_wire[east=side,north=none,power=13,south=none,west=up]", + "2900": "minecraft:redstone_wire[east=side,north=none,power=13,south=none,west=side]", + "2901": "minecraft:redstone_wire[east=side,north=none,power=13,south=none,west=none]", + "2902": "minecraft:redstone_wire[east=side,north=none,power=14,south=up,west=up]", + "2903": "minecraft:redstone_wire[east=side,north=none,power=14,south=up,west=side]", + "2904": "minecraft:redstone_wire[east=side,north=none,power=14,south=up,west=none]", + "2905": "minecraft:redstone_wire[east=side,north=none,power=14,south=side,west=up]", + "2906": "minecraft:redstone_wire[east=side,north=none,power=14,south=side,west=side]", + "2907": "minecraft:redstone_wire[east=side,north=none,power=14,south=side,west=none]", + "2908": "minecraft:redstone_wire[east=side,north=none,power=14,south=none,west=up]", + "2909": "minecraft:redstone_wire[east=side,north=none,power=14,south=none,west=side]", + "2910": "minecraft:redstone_wire[east=side,north=none,power=14,south=none,west=none]", + "2911": "minecraft:redstone_wire[east=side,north=none,power=15,south=up,west=up]", + "2912": "minecraft:redstone_wire[east=side,north=none,power=15,south=up,west=side]", + "2913": "minecraft:redstone_wire[east=side,north=none,power=15,south=up,west=none]", + "2914": "minecraft:redstone_wire[east=side,north=none,power=15,south=side,west=up]", + "2915": "minecraft:redstone_wire[east=side,north=none,power=15,south=side,west=side]", + "2916": "minecraft:redstone_wire[east=side,north=none,power=15,south=side,west=none]", + "2917": "minecraft:redstone_wire[east=side,north=none,power=15,south=none,west=up]", + "2918": "minecraft:redstone_wire[east=side,north=none,power=15,south=none,west=side]", + "2919": "minecraft:redstone_wire[east=side,north=none,power=15,south=none,west=none]", + "2920": "minecraft:redstone_wire[east=none,north=up,power=0,south=up,west=up]", + "2921": "minecraft:redstone_wire[east=none,north=up,power=0,south=up,west=side]", + "2922": "minecraft:redstone_wire[east=none,north=up,power=0,south=up,west=none]", + "2923": "minecraft:redstone_wire[east=none,north=up,power=0,south=side,west=up]", + "2924": "minecraft:redstone_wire[east=none,north=up,power=0,south=side,west=side]", + "2925": "minecraft:redstone_wire[east=none,north=up,power=0,south=side,west=none]", + "2926": "minecraft:redstone_wire[east=none,north=up,power=0,south=none,west=up]", + "2927": "minecraft:redstone_wire[east=none,north=up,power=0,south=none,west=side]", + "2928": "minecraft:redstone_wire[east=none,north=up,power=0,south=none,west=none]", + "2929": "minecraft:redstone_wire[east=none,north=up,power=1,south=up,west=up]", + "2930": "minecraft:redstone_wire[east=none,north=up,power=1,south=up,west=side]", + "2931": "minecraft:redstone_wire[east=none,north=up,power=1,south=up,west=none]", + "2932": "minecraft:redstone_wire[east=none,north=up,power=1,south=side,west=up]", + "2933": "minecraft:redstone_wire[east=none,north=up,power=1,south=side,west=side]", + "2934": "minecraft:redstone_wire[east=none,north=up,power=1,south=side,west=none]", + "2935": "minecraft:redstone_wire[east=none,north=up,power=1,south=none,west=up]", + "2936": "minecraft:redstone_wire[east=none,north=up,power=1,south=none,west=side]", + "2937": "minecraft:redstone_wire[east=none,north=up,power=1,south=none,west=none]", + "2938": "minecraft:redstone_wire[east=none,north=up,power=2,south=up,west=up]", + "2939": "minecraft:redstone_wire[east=none,north=up,power=2,south=up,west=side]", + "2940": "minecraft:redstone_wire[east=none,north=up,power=2,south=up,west=none]", + "2941": "minecraft:redstone_wire[east=none,north=up,power=2,south=side,west=up]", + "2942": "minecraft:redstone_wire[east=none,north=up,power=2,south=side,west=side]", + "2943": "minecraft:redstone_wire[east=none,north=up,power=2,south=side,west=none]", + "2944": "minecraft:redstone_wire[east=none,north=up,power=2,south=none,west=up]", + "2945": "minecraft:redstone_wire[east=none,north=up,power=2,south=none,west=side]", + "2946": "minecraft:redstone_wire[east=none,north=up,power=2,south=none,west=none]", + "2947": "minecraft:redstone_wire[east=none,north=up,power=3,south=up,west=up]", + "2948": "minecraft:redstone_wire[east=none,north=up,power=3,south=up,west=side]", + "2949": "minecraft:redstone_wire[east=none,north=up,power=3,south=up,west=none]", + "2950": "minecraft:redstone_wire[east=none,north=up,power=3,south=side,west=up]", + "2951": "minecraft:redstone_wire[east=none,north=up,power=3,south=side,west=side]", + "2952": "minecraft:redstone_wire[east=none,north=up,power=3,south=side,west=none]", + "2953": "minecraft:redstone_wire[east=none,north=up,power=3,south=none,west=up]", + "2954": "minecraft:redstone_wire[east=none,north=up,power=3,south=none,west=side]", + "2955": "minecraft:redstone_wire[east=none,north=up,power=3,south=none,west=none]", + "2956": "minecraft:redstone_wire[east=none,north=up,power=4,south=up,west=up]", + "2957": "minecraft:redstone_wire[east=none,north=up,power=4,south=up,west=side]", + "2958": "minecraft:redstone_wire[east=none,north=up,power=4,south=up,west=none]", + "2959": "minecraft:redstone_wire[east=none,north=up,power=4,south=side,west=up]", + "2960": "minecraft:redstone_wire[east=none,north=up,power=4,south=side,west=side]", + "2961": "minecraft:redstone_wire[east=none,north=up,power=4,south=side,west=none]", + "2962": "minecraft:redstone_wire[east=none,north=up,power=4,south=none,west=up]", + "2963": "minecraft:redstone_wire[east=none,north=up,power=4,south=none,west=side]", + "2964": "minecraft:redstone_wire[east=none,north=up,power=4,south=none,west=none]", + "2965": "minecraft:redstone_wire[east=none,north=up,power=5,south=up,west=up]", + "2966": "minecraft:redstone_wire[east=none,north=up,power=5,south=up,west=side]", + "2967": "minecraft:redstone_wire[east=none,north=up,power=5,south=up,west=none]", + "2968": "minecraft:redstone_wire[east=none,north=up,power=5,south=side,west=up]", + "2969": "minecraft:redstone_wire[east=none,north=up,power=5,south=side,west=side]", + "2970": "minecraft:redstone_wire[east=none,north=up,power=5,south=side,west=none]", + "2971": "minecraft:redstone_wire[east=none,north=up,power=5,south=none,west=up]", + "2972": "minecraft:redstone_wire[east=none,north=up,power=5,south=none,west=side]", + "2973": "minecraft:redstone_wire[east=none,north=up,power=5,south=none,west=none]", + "2974": "minecraft:redstone_wire[east=none,north=up,power=6,south=up,west=up]", + "2975": "minecraft:redstone_wire[east=none,north=up,power=6,south=up,west=side]", + "2976": "minecraft:redstone_wire[east=none,north=up,power=6,south=up,west=none]", + "2977": "minecraft:redstone_wire[east=none,north=up,power=6,south=side,west=up]", + "2978": "minecraft:redstone_wire[east=none,north=up,power=6,south=side,west=side]", + "2979": "minecraft:redstone_wire[east=none,north=up,power=6,south=side,west=none]", + "2980": "minecraft:redstone_wire[east=none,north=up,power=6,south=none,west=up]", + "2981": "minecraft:redstone_wire[east=none,north=up,power=6,south=none,west=side]", + "2982": "minecraft:redstone_wire[east=none,north=up,power=6,south=none,west=none]", + "2983": "minecraft:redstone_wire[east=none,north=up,power=7,south=up,west=up]", + "2984": "minecraft:redstone_wire[east=none,north=up,power=7,south=up,west=side]", + "2985": "minecraft:redstone_wire[east=none,north=up,power=7,south=up,west=none]", + "2986": "minecraft:redstone_wire[east=none,north=up,power=7,south=side,west=up]", + "2987": "minecraft:redstone_wire[east=none,north=up,power=7,south=side,west=side]", + "2988": "minecraft:redstone_wire[east=none,north=up,power=7,south=side,west=none]", + "2989": "minecraft:redstone_wire[east=none,north=up,power=7,south=none,west=up]", + "2990": "minecraft:redstone_wire[east=none,north=up,power=7,south=none,west=side]", + "2991": "minecraft:redstone_wire[east=none,north=up,power=7,south=none,west=none]", + "2992": "minecraft:redstone_wire[east=none,north=up,power=8,south=up,west=up]", + "2993": "minecraft:redstone_wire[east=none,north=up,power=8,south=up,west=side]", + "2994": "minecraft:redstone_wire[east=none,north=up,power=8,south=up,west=none]", + "2995": "minecraft:redstone_wire[east=none,north=up,power=8,south=side,west=up]", + "2996": "minecraft:redstone_wire[east=none,north=up,power=8,south=side,west=side]", + "2997": "minecraft:redstone_wire[east=none,north=up,power=8,south=side,west=none]", + "2998": "minecraft:redstone_wire[east=none,north=up,power=8,south=none,west=up]", + "2999": "minecraft:redstone_wire[east=none,north=up,power=8,south=none,west=side]", + "3000": "minecraft:redstone_wire[east=none,north=up,power=8,south=none,west=none]", + "3001": "minecraft:redstone_wire[east=none,north=up,power=9,south=up,west=up]", + "3002": "minecraft:redstone_wire[east=none,north=up,power=9,south=up,west=side]", + "3003": "minecraft:redstone_wire[east=none,north=up,power=9,south=up,west=none]", + "3004": "minecraft:redstone_wire[east=none,north=up,power=9,south=side,west=up]", + "3005": "minecraft:redstone_wire[east=none,north=up,power=9,south=side,west=side]", + "3006": "minecraft:redstone_wire[east=none,north=up,power=9,south=side,west=none]", + "3007": "minecraft:redstone_wire[east=none,north=up,power=9,south=none,west=up]", + "3008": "minecraft:redstone_wire[east=none,north=up,power=9,south=none,west=side]", + "3009": "minecraft:redstone_wire[east=none,north=up,power=9,south=none,west=none]", + "3010": "minecraft:redstone_wire[east=none,north=up,power=10,south=up,west=up]", + "3011": "minecraft:redstone_wire[east=none,north=up,power=10,south=up,west=side]", + "3012": "minecraft:redstone_wire[east=none,north=up,power=10,south=up,west=none]", + "3013": "minecraft:redstone_wire[east=none,north=up,power=10,south=side,west=up]", + "3014": "minecraft:redstone_wire[east=none,north=up,power=10,south=side,west=side]", + "3015": "minecraft:redstone_wire[east=none,north=up,power=10,south=side,west=none]", + "3016": "minecraft:redstone_wire[east=none,north=up,power=10,south=none,west=up]", + "3017": "minecraft:redstone_wire[east=none,north=up,power=10,south=none,west=side]", + "3018": "minecraft:redstone_wire[east=none,north=up,power=10,south=none,west=none]", + "3019": "minecraft:redstone_wire[east=none,north=up,power=11,south=up,west=up]", + "3020": "minecraft:redstone_wire[east=none,north=up,power=11,south=up,west=side]", + "3021": "minecraft:redstone_wire[east=none,north=up,power=11,south=up,west=none]", + "3022": "minecraft:redstone_wire[east=none,north=up,power=11,south=side,west=up]", + "3023": "minecraft:redstone_wire[east=none,north=up,power=11,south=side,west=side]", + "3024": "minecraft:redstone_wire[east=none,north=up,power=11,south=side,west=none]", + "3025": "minecraft:redstone_wire[east=none,north=up,power=11,south=none,west=up]", + "3026": "minecraft:redstone_wire[east=none,north=up,power=11,south=none,west=side]", + "3027": "minecraft:redstone_wire[east=none,north=up,power=11,south=none,west=none]", + "3028": "minecraft:redstone_wire[east=none,north=up,power=12,south=up,west=up]", + "3029": "minecraft:redstone_wire[east=none,north=up,power=12,south=up,west=side]", + "3030": "minecraft:redstone_wire[east=none,north=up,power=12,south=up,west=none]", + "3031": "minecraft:redstone_wire[east=none,north=up,power=12,south=side,west=up]", + "3032": "minecraft:redstone_wire[east=none,north=up,power=12,south=side,west=side]", + "3033": "minecraft:redstone_wire[east=none,north=up,power=12,south=side,west=none]", + "3034": "minecraft:redstone_wire[east=none,north=up,power=12,south=none,west=up]", + "3035": "minecraft:redstone_wire[east=none,north=up,power=12,south=none,west=side]", + "3036": "minecraft:redstone_wire[east=none,north=up,power=12,south=none,west=none]", + "3037": "minecraft:redstone_wire[east=none,north=up,power=13,south=up,west=up]", + "3038": "minecraft:redstone_wire[east=none,north=up,power=13,south=up,west=side]", + "3039": "minecraft:redstone_wire[east=none,north=up,power=13,south=up,west=none]", + "3040": "minecraft:redstone_wire[east=none,north=up,power=13,south=side,west=up]", + "3041": "minecraft:redstone_wire[east=none,north=up,power=13,south=side,west=side]", + "3042": "minecraft:redstone_wire[east=none,north=up,power=13,south=side,west=none]", + "3043": "minecraft:redstone_wire[east=none,north=up,power=13,south=none,west=up]", + "3044": "minecraft:redstone_wire[east=none,north=up,power=13,south=none,west=side]", + "3045": "minecraft:redstone_wire[east=none,north=up,power=13,south=none,west=none]", + "3046": "minecraft:redstone_wire[east=none,north=up,power=14,south=up,west=up]", + "3047": "minecraft:redstone_wire[east=none,north=up,power=14,south=up,west=side]", + "3048": "minecraft:redstone_wire[east=none,north=up,power=14,south=up,west=none]", + "3049": "minecraft:redstone_wire[east=none,north=up,power=14,south=side,west=up]", + "3050": "minecraft:redstone_wire[east=none,north=up,power=14,south=side,west=side]", + "3051": "minecraft:redstone_wire[east=none,north=up,power=14,south=side,west=none]", + "3052": "minecraft:redstone_wire[east=none,north=up,power=14,south=none,west=up]", + "3053": "minecraft:redstone_wire[east=none,north=up,power=14,south=none,west=side]", + "3054": "minecraft:redstone_wire[east=none,north=up,power=14,south=none,west=none]", + "3055": "minecraft:redstone_wire[east=none,north=up,power=15,south=up,west=up]", + "3056": "minecraft:redstone_wire[east=none,north=up,power=15,south=up,west=side]", + "3057": "minecraft:redstone_wire[east=none,north=up,power=15,south=up,west=none]", + "3058": "minecraft:redstone_wire[east=none,north=up,power=15,south=side,west=up]", + "3059": "minecraft:redstone_wire[east=none,north=up,power=15,south=side,west=side]", + "3060": "minecraft:redstone_wire[east=none,north=up,power=15,south=side,west=none]", + "3061": "minecraft:redstone_wire[east=none,north=up,power=15,south=none,west=up]", + "3062": "minecraft:redstone_wire[east=none,north=up,power=15,south=none,west=side]", + "3063": "minecraft:redstone_wire[east=none,north=up,power=15,south=none,west=none]", + "3064": "minecraft:redstone_wire[east=none,north=side,power=0,south=up,west=up]", + "3065": "minecraft:redstone_wire[east=none,north=side,power=0,south=up,west=side]", + "3066": "minecraft:redstone_wire[east=none,north=side,power=0,south=up,west=none]", + "3067": "minecraft:redstone_wire[east=none,north=side,power=0,south=side,west=up]", + "3068": "minecraft:redstone_wire[east=none,north=side,power=0,south=side,west=side]", + "3069": "minecraft:redstone_wire[east=none,north=side,power=0,south=side,west=none]", + "3070": "minecraft:redstone_wire[east=none,north=side,power=0,south=none,west=up]", + "3071": "minecraft:redstone_wire[east=none,north=side,power=0,south=none,west=side]", + "3072": "minecraft:redstone_wire[east=none,north=side,power=0,south=none,west=none]", + "3073": "minecraft:redstone_wire[east=none,north=side,power=1,south=up,west=up]", + "3074": "minecraft:redstone_wire[east=none,north=side,power=1,south=up,west=side]", + "3075": "minecraft:redstone_wire[east=none,north=side,power=1,south=up,west=none]", + "3076": "minecraft:redstone_wire[east=none,north=side,power=1,south=side,west=up]", + "3077": "minecraft:redstone_wire[east=none,north=side,power=1,south=side,west=side]", + "3078": "minecraft:redstone_wire[east=none,north=side,power=1,south=side,west=none]", + "3079": "minecraft:redstone_wire[east=none,north=side,power=1,south=none,west=up]", + "3080": "minecraft:redstone_wire[east=none,north=side,power=1,south=none,west=side]", + "3081": "minecraft:redstone_wire[east=none,north=side,power=1,south=none,west=none]", + "3082": "minecraft:redstone_wire[east=none,north=side,power=2,south=up,west=up]", + "3083": "minecraft:redstone_wire[east=none,north=side,power=2,south=up,west=side]", + "3084": "minecraft:redstone_wire[east=none,north=side,power=2,south=up,west=none]", + "3085": "minecraft:redstone_wire[east=none,north=side,power=2,south=side,west=up]", + "3086": "minecraft:redstone_wire[east=none,north=side,power=2,south=side,west=side]", + "3087": "minecraft:redstone_wire[east=none,north=side,power=2,south=side,west=none]", + "3088": "minecraft:redstone_wire[east=none,north=side,power=2,south=none,west=up]", + "3089": "minecraft:redstone_wire[east=none,north=side,power=2,south=none,west=side]", + "3090": "minecraft:redstone_wire[east=none,north=side,power=2,south=none,west=none]", + "3091": "minecraft:redstone_wire[east=none,north=side,power=3,south=up,west=up]", + "3092": "minecraft:redstone_wire[east=none,north=side,power=3,south=up,west=side]", + "3093": "minecraft:redstone_wire[east=none,north=side,power=3,south=up,west=none]", + "3094": "minecraft:redstone_wire[east=none,north=side,power=3,south=side,west=up]", + "3095": "minecraft:redstone_wire[east=none,north=side,power=3,south=side,west=side]", + "3096": "minecraft:redstone_wire[east=none,north=side,power=3,south=side,west=none]", + "3097": "minecraft:redstone_wire[east=none,north=side,power=3,south=none,west=up]", + "3098": "minecraft:redstone_wire[east=none,north=side,power=3,south=none,west=side]", + "3099": "minecraft:redstone_wire[east=none,north=side,power=3,south=none,west=none]", + "3100": "minecraft:redstone_wire[east=none,north=side,power=4,south=up,west=up]", + "3101": "minecraft:redstone_wire[east=none,north=side,power=4,south=up,west=side]", + "3102": "minecraft:redstone_wire[east=none,north=side,power=4,south=up,west=none]", + "3103": "minecraft:redstone_wire[east=none,north=side,power=4,south=side,west=up]", + "3104": "minecraft:redstone_wire[east=none,north=side,power=4,south=side,west=side]", + "3105": "minecraft:redstone_wire[east=none,north=side,power=4,south=side,west=none]", + "3106": "minecraft:redstone_wire[east=none,north=side,power=4,south=none,west=up]", + "3107": "minecraft:redstone_wire[east=none,north=side,power=4,south=none,west=side]", + "3108": "minecraft:redstone_wire[east=none,north=side,power=4,south=none,west=none]", + "3109": "minecraft:redstone_wire[east=none,north=side,power=5,south=up,west=up]", + "3110": "minecraft:redstone_wire[east=none,north=side,power=5,south=up,west=side]", + "3111": "minecraft:redstone_wire[east=none,north=side,power=5,south=up,west=none]", + "3112": "minecraft:redstone_wire[east=none,north=side,power=5,south=side,west=up]", + "3113": "minecraft:redstone_wire[east=none,north=side,power=5,south=side,west=side]", + "3114": "minecraft:redstone_wire[east=none,north=side,power=5,south=side,west=none]", + "3115": "minecraft:redstone_wire[east=none,north=side,power=5,south=none,west=up]", + "3116": "minecraft:redstone_wire[east=none,north=side,power=5,south=none,west=side]", + "3117": "minecraft:redstone_wire[east=none,north=side,power=5,south=none,west=none]", + "3118": "minecraft:redstone_wire[east=none,north=side,power=6,south=up,west=up]", + "3119": "minecraft:redstone_wire[east=none,north=side,power=6,south=up,west=side]", + "3120": "minecraft:redstone_wire[east=none,north=side,power=6,south=up,west=none]", + "3121": "minecraft:redstone_wire[east=none,north=side,power=6,south=side,west=up]", + "3122": "minecraft:redstone_wire[east=none,north=side,power=6,south=side,west=side]", + "3123": "minecraft:redstone_wire[east=none,north=side,power=6,south=side,west=none]", + "3124": "minecraft:redstone_wire[east=none,north=side,power=6,south=none,west=up]", + "3125": "minecraft:redstone_wire[east=none,north=side,power=6,south=none,west=side]", + "3126": "minecraft:redstone_wire[east=none,north=side,power=6,south=none,west=none]", + "3127": "minecraft:redstone_wire[east=none,north=side,power=7,south=up,west=up]", + "3128": "minecraft:redstone_wire[east=none,north=side,power=7,south=up,west=side]", + "3129": "minecraft:redstone_wire[east=none,north=side,power=7,south=up,west=none]", + "3130": "minecraft:redstone_wire[east=none,north=side,power=7,south=side,west=up]", + "3131": "minecraft:redstone_wire[east=none,north=side,power=7,south=side,west=side]", + "3132": "minecraft:redstone_wire[east=none,north=side,power=7,south=side,west=none]", + "3133": "minecraft:redstone_wire[east=none,north=side,power=7,south=none,west=up]", + "3134": "minecraft:redstone_wire[east=none,north=side,power=7,south=none,west=side]", + "3135": "minecraft:redstone_wire[east=none,north=side,power=7,south=none,west=none]", + "3136": "minecraft:redstone_wire[east=none,north=side,power=8,south=up,west=up]", + "3137": "minecraft:redstone_wire[east=none,north=side,power=8,south=up,west=side]", + "3138": "minecraft:redstone_wire[east=none,north=side,power=8,south=up,west=none]", + "3139": "minecraft:redstone_wire[east=none,north=side,power=8,south=side,west=up]", + "3140": "minecraft:redstone_wire[east=none,north=side,power=8,south=side,west=side]", + "3141": "minecraft:redstone_wire[east=none,north=side,power=8,south=side,west=none]", + "3142": "minecraft:redstone_wire[east=none,north=side,power=8,south=none,west=up]", + "3143": "minecraft:redstone_wire[east=none,north=side,power=8,south=none,west=side]", + "3144": "minecraft:redstone_wire[east=none,north=side,power=8,south=none,west=none]", + "3145": "minecraft:redstone_wire[east=none,north=side,power=9,south=up,west=up]", + "3146": "minecraft:redstone_wire[east=none,north=side,power=9,south=up,west=side]", + "3147": "minecraft:redstone_wire[east=none,north=side,power=9,south=up,west=none]", + "3148": "minecraft:redstone_wire[east=none,north=side,power=9,south=side,west=up]", + "3149": "minecraft:redstone_wire[east=none,north=side,power=9,south=side,west=side]", + "3150": "minecraft:redstone_wire[east=none,north=side,power=9,south=side,west=none]", + "3151": "minecraft:redstone_wire[east=none,north=side,power=9,south=none,west=up]", + "3152": "minecraft:redstone_wire[east=none,north=side,power=9,south=none,west=side]", + "3153": "minecraft:redstone_wire[east=none,north=side,power=9,south=none,west=none]", + "3154": "minecraft:redstone_wire[east=none,north=side,power=10,south=up,west=up]", + "3155": "minecraft:redstone_wire[east=none,north=side,power=10,south=up,west=side]", + "3156": "minecraft:redstone_wire[east=none,north=side,power=10,south=up,west=none]", + "3157": "minecraft:redstone_wire[east=none,north=side,power=10,south=side,west=up]", + "3158": "minecraft:redstone_wire[east=none,north=side,power=10,south=side,west=side]", + "3159": "minecraft:redstone_wire[east=none,north=side,power=10,south=side,west=none]", + "3160": "minecraft:redstone_wire[east=none,north=side,power=10,south=none,west=up]", + "3161": "minecraft:redstone_wire[east=none,north=side,power=10,south=none,west=side]", + "3162": "minecraft:redstone_wire[east=none,north=side,power=10,south=none,west=none]", + "3163": "minecraft:redstone_wire[east=none,north=side,power=11,south=up,west=up]", + "3164": "minecraft:redstone_wire[east=none,north=side,power=11,south=up,west=side]", + "3165": "minecraft:redstone_wire[east=none,north=side,power=11,south=up,west=none]", + "3166": "minecraft:redstone_wire[east=none,north=side,power=11,south=side,west=up]", + "3167": "minecraft:redstone_wire[east=none,north=side,power=11,south=side,west=side]", + "3168": "minecraft:redstone_wire[east=none,north=side,power=11,south=side,west=none]", + "3169": "minecraft:redstone_wire[east=none,north=side,power=11,south=none,west=up]", + "3170": "minecraft:redstone_wire[east=none,north=side,power=11,south=none,west=side]", + "3171": "minecraft:redstone_wire[east=none,north=side,power=11,south=none,west=none]", + "3172": "minecraft:redstone_wire[east=none,north=side,power=12,south=up,west=up]", + "3173": "minecraft:redstone_wire[east=none,north=side,power=12,south=up,west=side]", + "3174": "minecraft:redstone_wire[east=none,north=side,power=12,south=up,west=none]", + "3175": "minecraft:redstone_wire[east=none,north=side,power=12,south=side,west=up]", + "3176": "minecraft:redstone_wire[east=none,north=side,power=12,south=side,west=side]", + "3177": "minecraft:redstone_wire[east=none,north=side,power=12,south=side,west=none]", + "3178": "minecraft:redstone_wire[east=none,north=side,power=12,south=none,west=up]", + "3179": "minecraft:redstone_wire[east=none,north=side,power=12,south=none,west=side]", + "3180": "minecraft:redstone_wire[east=none,north=side,power=12,south=none,west=none]", + "3181": "minecraft:redstone_wire[east=none,north=side,power=13,south=up,west=up]", + "3182": "minecraft:redstone_wire[east=none,north=side,power=13,south=up,west=side]", + "3183": "minecraft:redstone_wire[east=none,north=side,power=13,south=up,west=none]", + "3184": "minecraft:redstone_wire[east=none,north=side,power=13,south=side,west=up]", + "3185": "minecraft:redstone_wire[east=none,north=side,power=13,south=side,west=side]", + "3186": "minecraft:redstone_wire[east=none,north=side,power=13,south=side,west=none]", + "3187": "minecraft:redstone_wire[east=none,north=side,power=13,south=none,west=up]", + "3188": "minecraft:redstone_wire[east=none,north=side,power=13,south=none,west=side]", + "3189": "minecraft:redstone_wire[east=none,north=side,power=13,south=none,west=none]", + "3190": "minecraft:redstone_wire[east=none,north=side,power=14,south=up,west=up]", + "3191": "minecraft:redstone_wire[east=none,north=side,power=14,south=up,west=side]", + "3192": "minecraft:redstone_wire[east=none,north=side,power=14,south=up,west=none]", + "3193": "minecraft:redstone_wire[east=none,north=side,power=14,south=side,west=up]", + "3194": "minecraft:redstone_wire[east=none,north=side,power=14,south=side,west=side]", + "3195": "minecraft:redstone_wire[east=none,north=side,power=14,south=side,west=none]", + "3196": "minecraft:redstone_wire[east=none,north=side,power=14,south=none,west=up]", + "3197": "minecraft:redstone_wire[east=none,north=side,power=14,south=none,west=side]", + "3198": "minecraft:redstone_wire[east=none,north=side,power=14,south=none,west=none]", + "3199": "minecraft:redstone_wire[east=none,north=side,power=15,south=up,west=up]", + "3200": "minecraft:redstone_wire[east=none,north=side,power=15,south=up,west=side]", + "3201": "minecraft:redstone_wire[east=none,north=side,power=15,south=up,west=none]", + "3202": "minecraft:redstone_wire[east=none,north=side,power=15,south=side,west=up]", + "3203": "minecraft:redstone_wire[east=none,north=side,power=15,south=side,west=side]", + "3204": "minecraft:redstone_wire[east=none,north=side,power=15,south=side,west=none]", + "3205": "minecraft:redstone_wire[east=none,north=side,power=15,south=none,west=up]", + "3206": "minecraft:redstone_wire[east=none,north=side,power=15,south=none,west=side]", + "3207": "minecraft:redstone_wire[east=none,north=side,power=15,south=none,west=none]", + "3208": "minecraft:redstone_wire[east=none,north=none,power=0,south=up,west=up]", + "3209": "minecraft:redstone_wire[east=none,north=none,power=0,south=up,west=side]", + "3210": "minecraft:redstone_wire[east=none,north=none,power=0,south=up,west=none]", + "3211": "minecraft:redstone_wire[east=none,north=none,power=0,south=side,west=up]", + "3212": "minecraft:redstone_wire[east=none,north=none,power=0,south=side,west=side]", + "3213": "minecraft:redstone_wire[east=none,north=none,power=0,south=side,west=none]", + "3214": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=up]", + "3215": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=side]", + "3216": "minecraft:redstone_wire[east=none,north=none,power=0,south=none,west=none]", + "3217": "minecraft:redstone_wire[east=none,north=none,power=1,south=up,west=up]", + "3218": "minecraft:redstone_wire[east=none,north=none,power=1,south=up,west=side]", + "3219": "minecraft:redstone_wire[east=none,north=none,power=1,south=up,west=none]", + "3220": "minecraft:redstone_wire[east=none,north=none,power=1,south=side,west=up]", + "3221": "minecraft:redstone_wire[east=none,north=none,power=1,south=side,west=side]", + "3222": "minecraft:redstone_wire[east=none,north=none,power=1,south=side,west=none]", + "3223": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=up]", + "3224": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=side]", + "3225": "minecraft:redstone_wire[east=none,north=none,power=1,south=none,west=none]", + "3226": "minecraft:redstone_wire[east=none,north=none,power=2,south=up,west=up]", + "3227": "minecraft:redstone_wire[east=none,north=none,power=2,south=up,west=side]", + "3228": "minecraft:redstone_wire[east=none,north=none,power=2,south=up,west=none]", + "3229": "minecraft:redstone_wire[east=none,north=none,power=2,south=side,west=up]", + "3230": "minecraft:redstone_wire[east=none,north=none,power=2,south=side,west=side]", + "3231": "minecraft:redstone_wire[east=none,north=none,power=2,south=side,west=none]", + "3232": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=up]", + "3233": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=side]", + "3234": "minecraft:redstone_wire[east=none,north=none,power=2,south=none,west=none]", + "3235": "minecraft:redstone_wire[east=none,north=none,power=3,south=up,west=up]", + "3236": "minecraft:redstone_wire[east=none,north=none,power=3,south=up,west=side]", + "3237": "minecraft:redstone_wire[east=none,north=none,power=3,south=up,west=none]", + "3238": "minecraft:redstone_wire[east=none,north=none,power=3,south=side,west=up]", + "3239": "minecraft:redstone_wire[east=none,north=none,power=3,south=side,west=side]", + "3240": "minecraft:redstone_wire[east=none,north=none,power=3,south=side,west=none]", + "3241": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=up]", + "3242": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=side]", + "3243": "minecraft:redstone_wire[east=none,north=none,power=3,south=none,west=none]", + "3244": "minecraft:redstone_wire[east=none,north=none,power=4,south=up,west=up]", + "3245": "minecraft:redstone_wire[east=none,north=none,power=4,south=up,west=side]", + "3246": "minecraft:redstone_wire[east=none,north=none,power=4,south=up,west=none]", + "3247": "minecraft:redstone_wire[east=none,north=none,power=4,south=side,west=up]", + "3248": "minecraft:redstone_wire[east=none,north=none,power=4,south=side,west=side]", + "3249": "minecraft:redstone_wire[east=none,north=none,power=4,south=side,west=none]", + "3250": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=up]", + "3251": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=side]", + "3252": "minecraft:redstone_wire[east=none,north=none,power=4,south=none,west=none]", + "3253": "minecraft:redstone_wire[east=none,north=none,power=5,south=up,west=up]", + "3254": "minecraft:redstone_wire[east=none,north=none,power=5,south=up,west=side]", + "3255": "minecraft:redstone_wire[east=none,north=none,power=5,south=up,west=none]", + "3256": "minecraft:redstone_wire[east=none,north=none,power=5,south=side,west=up]", + "3257": "minecraft:redstone_wire[east=none,north=none,power=5,south=side,west=side]", + "3258": "minecraft:redstone_wire[east=none,north=none,power=5,south=side,west=none]", + "3259": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=up]", + "3260": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=side]", + "3261": "minecraft:redstone_wire[east=none,north=none,power=5,south=none,west=none]", + "3262": "minecraft:redstone_wire[east=none,north=none,power=6,south=up,west=up]", + "3263": "minecraft:redstone_wire[east=none,north=none,power=6,south=up,west=side]", + "3264": "minecraft:redstone_wire[east=none,north=none,power=6,south=up,west=none]", + "3265": "minecraft:redstone_wire[east=none,north=none,power=6,south=side,west=up]", + "3266": "minecraft:redstone_wire[east=none,north=none,power=6,south=side,west=side]", + "3267": "minecraft:redstone_wire[east=none,north=none,power=6,south=side,west=none]", + "3268": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=up]", + "3269": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=side]", + "3270": "minecraft:redstone_wire[east=none,north=none,power=6,south=none,west=none]", + "3271": "minecraft:redstone_wire[east=none,north=none,power=7,south=up,west=up]", + "3272": "minecraft:redstone_wire[east=none,north=none,power=7,south=up,west=side]", + "3273": "minecraft:redstone_wire[east=none,north=none,power=7,south=up,west=none]", + "3274": "minecraft:redstone_wire[east=none,north=none,power=7,south=side,west=up]", + "3275": "minecraft:redstone_wire[east=none,north=none,power=7,south=side,west=side]", + "3276": "minecraft:redstone_wire[east=none,north=none,power=7,south=side,west=none]", + "3277": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=up]", + "3278": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=side]", + "3279": "minecraft:redstone_wire[east=none,north=none,power=7,south=none,west=none]", + "3280": "minecraft:redstone_wire[east=none,north=none,power=8,south=up,west=up]", + "3281": "minecraft:redstone_wire[east=none,north=none,power=8,south=up,west=side]", + "3282": "minecraft:redstone_wire[east=none,north=none,power=8,south=up,west=none]", + "3283": "minecraft:redstone_wire[east=none,north=none,power=8,south=side,west=up]", + "3284": "minecraft:redstone_wire[east=none,north=none,power=8,south=side,west=side]", + "3285": "minecraft:redstone_wire[east=none,north=none,power=8,south=side,west=none]", + "3286": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=up]", + "3287": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=side]", + "3288": "minecraft:redstone_wire[east=none,north=none,power=8,south=none,west=none]", + "3289": "minecraft:redstone_wire[east=none,north=none,power=9,south=up,west=up]", + "3290": "minecraft:redstone_wire[east=none,north=none,power=9,south=up,west=side]", + "3291": "minecraft:redstone_wire[east=none,north=none,power=9,south=up,west=none]", + "3292": "minecraft:redstone_wire[east=none,north=none,power=9,south=side,west=up]", + "3293": "minecraft:redstone_wire[east=none,north=none,power=9,south=side,west=side]", + "3294": "minecraft:redstone_wire[east=none,north=none,power=9,south=side,west=none]", + "3295": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=up]", + "3296": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=side]", + "3297": "minecraft:redstone_wire[east=none,north=none,power=9,south=none,west=none]", + "3298": "minecraft:redstone_wire[east=none,north=none,power=10,south=up,west=up]", + "3299": "minecraft:redstone_wire[east=none,north=none,power=10,south=up,west=side]", + "3300": "minecraft:redstone_wire[east=none,north=none,power=10,south=up,west=none]", + "3301": "minecraft:redstone_wire[east=none,north=none,power=10,south=side,west=up]", + "3302": "minecraft:redstone_wire[east=none,north=none,power=10,south=side,west=side]", + "3303": "minecraft:redstone_wire[east=none,north=none,power=10,south=side,west=none]", + "3304": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=up]", + "3305": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=side]", + "3306": "minecraft:redstone_wire[east=none,north=none,power=10,south=none,west=none]", + "3307": "minecraft:redstone_wire[east=none,north=none,power=11,south=up,west=up]", + "3308": "minecraft:redstone_wire[east=none,north=none,power=11,south=up,west=side]", + "3309": "minecraft:redstone_wire[east=none,north=none,power=11,south=up,west=none]", + "3310": "minecraft:redstone_wire[east=none,north=none,power=11,south=side,west=up]", + "3311": "minecraft:redstone_wire[east=none,north=none,power=11,south=side,west=side]", + "3312": "minecraft:redstone_wire[east=none,north=none,power=11,south=side,west=none]", + "3313": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=up]", + "3314": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=side]", + "3315": "minecraft:redstone_wire[east=none,north=none,power=11,south=none,west=none]", + "3316": "minecraft:redstone_wire[east=none,north=none,power=12,south=up,west=up]", + "3317": "minecraft:redstone_wire[east=none,north=none,power=12,south=up,west=side]", + "3318": "minecraft:redstone_wire[east=none,north=none,power=12,south=up,west=none]", + "3319": "minecraft:redstone_wire[east=none,north=none,power=12,south=side,west=up]", + "3320": "minecraft:redstone_wire[east=none,north=none,power=12,south=side,west=side]", + "3321": "minecraft:redstone_wire[east=none,north=none,power=12,south=side,west=none]", + "3322": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=up]", + "3323": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=side]", + "3324": "minecraft:redstone_wire[east=none,north=none,power=12,south=none,west=none]", + "3325": "minecraft:redstone_wire[east=none,north=none,power=13,south=up,west=up]", + "3326": "minecraft:redstone_wire[east=none,north=none,power=13,south=up,west=side]", + "3327": "minecraft:redstone_wire[east=none,north=none,power=13,south=up,west=none]", + "3328": "minecraft:redstone_wire[east=none,north=none,power=13,south=side,west=up]", + "3329": "minecraft:redstone_wire[east=none,north=none,power=13,south=side,west=side]", + "3330": "minecraft:redstone_wire[east=none,north=none,power=13,south=side,west=none]", + "3331": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=up]", + "3332": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=side]", + "3333": "minecraft:redstone_wire[east=none,north=none,power=13,south=none,west=none]", + "3334": "minecraft:redstone_wire[east=none,north=none,power=14,south=up,west=up]", + "3335": "minecraft:redstone_wire[east=none,north=none,power=14,south=up,west=side]", + "3336": "minecraft:redstone_wire[east=none,north=none,power=14,south=up,west=none]", + "3337": "minecraft:redstone_wire[east=none,north=none,power=14,south=side,west=up]", + "3338": "minecraft:redstone_wire[east=none,north=none,power=14,south=side,west=side]", + "3339": "minecraft:redstone_wire[east=none,north=none,power=14,south=side,west=none]", + "3340": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=up]", + "3341": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=side]", + "3342": "minecraft:redstone_wire[east=none,north=none,power=14,south=none,west=none]", + "3343": "minecraft:redstone_wire[east=none,north=none,power=15,south=up,west=up]", + "3344": "minecraft:redstone_wire[east=none,north=none,power=15,south=up,west=side]", + "3345": "minecraft:redstone_wire[east=none,north=none,power=15,south=up,west=none]", + "3346": "minecraft:redstone_wire[east=none,north=none,power=15,south=side,west=up]", + "3347": "minecraft:redstone_wire[east=none,north=none,power=15,south=side,west=side]", + "3348": "minecraft:redstone_wire[east=none,north=none,power=15,south=side,west=none]", + "3349": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=up]", + "3350": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=side]", + "3351": "minecraft:redstone_wire[east=none,north=none,power=15,south=none,west=none]", + "3352": "minecraft:diamond_ore", + "3353": "minecraft:diamond_block", + "3354": "minecraft:crafting_table", + "3355": "minecraft:wheat[age=0]", + "3356": "minecraft:wheat[age=1]", + "3357": "minecraft:wheat[age=2]", + "3358": "minecraft:wheat[age=3]", + "3359": "minecraft:wheat[age=4]", + "3360": "minecraft:wheat[age=5]", + "3361": "minecraft:wheat[age=6]", + "3362": "minecraft:wheat[age=7]", + "3363": "minecraft:farmland[moisture=0]", + "3364": "minecraft:farmland[moisture=1]", + "3365": "minecraft:farmland[moisture=2]", + "3366": "minecraft:farmland[moisture=3]", + "3367": "minecraft:farmland[moisture=4]", + "3368": "minecraft:farmland[moisture=5]", + "3369": "minecraft:farmland[moisture=6]", + "3370": "minecraft:farmland[moisture=7]", + "3371": "minecraft:furnace[facing=north,lit=true]", + "3372": "minecraft:furnace[facing=north,lit=false]", + "3373": "minecraft:furnace[facing=south,lit=true]", + "3374": "minecraft:furnace[facing=south,lit=false]", + "3375": "minecraft:furnace[facing=west,lit=true]", + "3376": "minecraft:furnace[facing=west,lit=false]", + "3377": "minecraft:furnace[facing=east,lit=true]", + "3378": "minecraft:furnace[facing=east,lit=false]", + "3379": "minecraft:oak_sign[rotation=0,waterlogged=true]", + "3380": "minecraft:oak_sign[rotation=0,waterlogged=false]", + "3381": "minecraft:oak_sign[rotation=1,waterlogged=true]", + "3382": "minecraft:oak_sign[rotation=1,waterlogged=false]", + "3383": "minecraft:oak_sign[rotation=2,waterlogged=true]", + "3384": "minecraft:oak_sign[rotation=2,waterlogged=false]", + "3385": "minecraft:oak_sign[rotation=3,waterlogged=true]", + "3386": "minecraft:oak_sign[rotation=3,waterlogged=false]", + "3387": "minecraft:oak_sign[rotation=4,waterlogged=true]", + "3388": "minecraft:oak_sign[rotation=4,waterlogged=false]", + "3389": "minecraft:oak_sign[rotation=5,waterlogged=true]", + "3390": "minecraft:oak_sign[rotation=5,waterlogged=false]", + "3391": "minecraft:oak_sign[rotation=6,waterlogged=true]", + "3392": "minecraft:oak_sign[rotation=6,waterlogged=false]", + "3393": "minecraft:oak_sign[rotation=7,waterlogged=true]", + "3394": "minecraft:oak_sign[rotation=7,waterlogged=false]", + "3395": "minecraft:oak_sign[rotation=8,waterlogged=true]", + "3396": "minecraft:oak_sign[rotation=8,waterlogged=false]", + "3397": "minecraft:oak_sign[rotation=9,waterlogged=true]", + "3398": "minecraft:oak_sign[rotation=9,waterlogged=false]", + "3399": "minecraft:oak_sign[rotation=10,waterlogged=true]", + "3400": "minecraft:oak_sign[rotation=10,waterlogged=false]", + "3401": "minecraft:oak_sign[rotation=11,waterlogged=true]", + "3402": "minecraft:oak_sign[rotation=11,waterlogged=false]", + "3403": "minecraft:oak_sign[rotation=12,waterlogged=true]", + "3404": "minecraft:oak_sign[rotation=12,waterlogged=false]", + "3405": "minecraft:oak_sign[rotation=13,waterlogged=true]", + "3406": "minecraft:oak_sign[rotation=13,waterlogged=false]", + "3407": "minecraft:oak_sign[rotation=14,waterlogged=true]", + "3408": "minecraft:oak_sign[rotation=14,waterlogged=false]", + "3409": "minecraft:oak_sign[rotation=15,waterlogged=true]", + "3410": "minecraft:oak_sign[rotation=15,waterlogged=false]", + "3411": "minecraft:spruce_sign[rotation=0,waterlogged=true]", + "3412": "minecraft:spruce_sign[rotation=0,waterlogged=false]", + "3413": "minecraft:spruce_sign[rotation=1,waterlogged=true]", + "3414": "minecraft:spruce_sign[rotation=1,waterlogged=false]", + "3415": "minecraft:spruce_sign[rotation=2,waterlogged=true]", + "3416": "minecraft:spruce_sign[rotation=2,waterlogged=false]", + "3417": "minecraft:spruce_sign[rotation=3,waterlogged=true]", + "3418": "minecraft:spruce_sign[rotation=3,waterlogged=false]", + "3419": "minecraft:spruce_sign[rotation=4,waterlogged=true]", + "3420": "minecraft:spruce_sign[rotation=4,waterlogged=false]", + "3421": "minecraft:spruce_sign[rotation=5,waterlogged=true]", + "3422": "minecraft:spruce_sign[rotation=5,waterlogged=false]", + "3423": "minecraft:spruce_sign[rotation=6,waterlogged=true]", + "3424": "minecraft:spruce_sign[rotation=6,waterlogged=false]", + "3425": "minecraft:spruce_sign[rotation=7,waterlogged=true]", + "3426": "minecraft:spruce_sign[rotation=7,waterlogged=false]", + "3427": "minecraft:spruce_sign[rotation=8,waterlogged=true]", + "3428": "minecraft:spruce_sign[rotation=8,waterlogged=false]", + "3429": "minecraft:spruce_sign[rotation=9,waterlogged=true]", + "3430": "minecraft:spruce_sign[rotation=9,waterlogged=false]", + "3431": "minecraft:spruce_sign[rotation=10,waterlogged=true]", + "3432": "minecraft:spruce_sign[rotation=10,waterlogged=false]", + "3433": "minecraft:spruce_sign[rotation=11,waterlogged=true]", + "3434": "minecraft:spruce_sign[rotation=11,waterlogged=false]", + "3435": "minecraft:spruce_sign[rotation=12,waterlogged=true]", + "3436": "minecraft:spruce_sign[rotation=12,waterlogged=false]", + "3437": "minecraft:spruce_sign[rotation=13,waterlogged=true]", + "3438": "minecraft:spruce_sign[rotation=13,waterlogged=false]", + "3439": "minecraft:spruce_sign[rotation=14,waterlogged=true]", + "3440": "minecraft:spruce_sign[rotation=14,waterlogged=false]", + "3441": "minecraft:spruce_sign[rotation=15,waterlogged=true]", + "3442": "minecraft:spruce_sign[rotation=15,waterlogged=false]", + "3443": "minecraft:birch_sign[rotation=0,waterlogged=true]", + "3444": "minecraft:birch_sign[rotation=0,waterlogged=false]", + "3445": "minecraft:birch_sign[rotation=1,waterlogged=true]", + "3446": "minecraft:birch_sign[rotation=1,waterlogged=false]", + "3447": "minecraft:birch_sign[rotation=2,waterlogged=true]", + "3448": "minecraft:birch_sign[rotation=2,waterlogged=false]", + "3449": "minecraft:birch_sign[rotation=3,waterlogged=true]", + "3450": "minecraft:birch_sign[rotation=3,waterlogged=false]", + "3451": "minecraft:birch_sign[rotation=4,waterlogged=true]", + "3452": "minecraft:birch_sign[rotation=4,waterlogged=false]", + "3453": "minecraft:birch_sign[rotation=5,waterlogged=true]", + "3454": "minecraft:birch_sign[rotation=5,waterlogged=false]", + "3455": "minecraft:birch_sign[rotation=6,waterlogged=true]", + "3456": "minecraft:birch_sign[rotation=6,waterlogged=false]", + "3457": "minecraft:birch_sign[rotation=7,waterlogged=true]", + "3458": "minecraft:birch_sign[rotation=7,waterlogged=false]", + "3459": "minecraft:birch_sign[rotation=8,waterlogged=true]", + "3460": "minecraft:birch_sign[rotation=8,waterlogged=false]", + "3461": "minecraft:birch_sign[rotation=9,waterlogged=true]", + "3462": "minecraft:birch_sign[rotation=9,waterlogged=false]", + "3463": "minecraft:birch_sign[rotation=10,waterlogged=true]", + "3464": "minecraft:birch_sign[rotation=10,waterlogged=false]", + "3465": "minecraft:birch_sign[rotation=11,waterlogged=true]", + "3466": "minecraft:birch_sign[rotation=11,waterlogged=false]", + "3467": "minecraft:birch_sign[rotation=12,waterlogged=true]", + "3468": "minecraft:birch_sign[rotation=12,waterlogged=false]", + "3469": "minecraft:birch_sign[rotation=13,waterlogged=true]", + "3470": "minecraft:birch_sign[rotation=13,waterlogged=false]", + "3471": "minecraft:birch_sign[rotation=14,waterlogged=true]", + "3472": "minecraft:birch_sign[rotation=14,waterlogged=false]", + "3473": "minecraft:birch_sign[rotation=15,waterlogged=true]", + "3474": "minecraft:birch_sign[rotation=15,waterlogged=false]", + "3475": "minecraft:acacia_sign[rotation=0,waterlogged=true]", + "3476": "minecraft:acacia_sign[rotation=0,waterlogged=false]", + "3477": "minecraft:acacia_sign[rotation=1,waterlogged=true]", + "3478": "minecraft:acacia_sign[rotation=1,waterlogged=false]", + "3479": "minecraft:acacia_sign[rotation=2,waterlogged=true]", + "3480": "minecraft:acacia_sign[rotation=2,waterlogged=false]", + "3481": "minecraft:acacia_sign[rotation=3,waterlogged=true]", + "3482": "minecraft:acacia_sign[rotation=3,waterlogged=false]", + "3483": "minecraft:acacia_sign[rotation=4,waterlogged=true]", + "3484": "minecraft:acacia_sign[rotation=4,waterlogged=false]", + "3485": "minecraft:acacia_sign[rotation=5,waterlogged=true]", + "3486": "minecraft:acacia_sign[rotation=5,waterlogged=false]", + "3487": "minecraft:acacia_sign[rotation=6,waterlogged=true]", + "3488": "minecraft:acacia_sign[rotation=6,waterlogged=false]", + "3489": "minecraft:acacia_sign[rotation=7,waterlogged=true]", + "3490": "minecraft:acacia_sign[rotation=7,waterlogged=false]", + "3491": "minecraft:acacia_sign[rotation=8,waterlogged=true]", + "3492": "minecraft:acacia_sign[rotation=8,waterlogged=false]", + "3493": "minecraft:acacia_sign[rotation=9,waterlogged=true]", + "3494": "minecraft:acacia_sign[rotation=9,waterlogged=false]", + "3495": "minecraft:acacia_sign[rotation=10,waterlogged=true]", + "3496": "minecraft:acacia_sign[rotation=10,waterlogged=false]", + "3497": "minecraft:acacia_sign[rotation=11,waterlogged=true]", + "3498": "minecraft:acacia_sign[rotation=11,waterlogged=false]", + "3499": "minecraft:acacia_sign[rotation=12,waterlogged=true]", + "3500": "minecraft:acacia_sign[rotation=12,waterlogged=false]", + "3501": "minecraft:acacia_sign[rotation=13,waterlogged=true]", + "3502": "minecraft:acacia_sign[rotation=13,waterlogged=false]", + "3503": "minecraft:acacia_sign[rotation=14,waterlogged=true]", + "3504": "minecraft:acacia_sign[rotation=14,waterlogged=false]", + "3505": "minecraft:acacia_sign[rotation=15,waterlogged=true]", + "3506": "minecraft:acacia_sign[rotation=15,waterlogged=false]", + "3507": "minecraft:jungle_sign[rotation=0,waterlogged=true]", + "3508": "minecraft:jungle_sign[rotation=0,waterlogged=false]", + "3509": "minecraft:jungle_sign[rotation=1,waterlogged=true]", + "3510": "minecraft:jungle_sign[rotation=1,waterlogged=false]", + "3511": "minecraft:jungle_sign[rotation=2,waterlogged=true]", + "3512": "minecraft:jungle_sign[rotation=2,waterlogged=false]", + "3513": "minecraft:jungle_sign[rotation=3,waterlogged=true]", + "3514": "minecraft:jungle_sign[rotation=3,waterlogged=false]", + "3515": "minecraft:jungle_sign[rotation=4,waterlogged=true]", + "3516": "minecraft:jungle_sign[rotation=4,waterlogged=false]", + "3517": "minecraft:jungle_sign[rotation=5,waterlogged=true]", + "3518": "minecraft:jungle_sign[rotation=5,waterlogged=false]", + "3519": "minecraft:jungle_sign[rotation=6,waterlogged=true]", + "3520": "minecraft:jungle_sign[rotation=6,waterlogged=false]", + "3521": "minecraft:jungle_sign[rotation=7,waterlogged=true]", + "3522": "minecraft:jungle_sign[rotation=7,waterlogged=false]", + "3523": "minecraft:jungle_sign[rotation=8,waterlogged=true]", + "3524": "minecraft:jungle_sign[rotation=8,waterlogged=false]", + "3525": "minecraft:jungle_sign[rotation=9,waterlogged=true]", + "3526": "minecraft:jungle_sign[rotation=9,waterlogged=false]", + "3527": "minecraft:jungle_sign[rotation=10,waterlogged=true]", + "3528": "minecraft:jungle_sign[rotation=10,waterlogged=false]", + "3529": "minecraft:jungle_sign[rotation=11,waterlogged=true]", + "3530": "minecraft:jungle_sign[rotation=11,waterlogged=false]", + "3531": "minecraft:jungle_sign[rotation=12,waterlogged=true]", + "3532": "minecraft:jungle_sign[rotation=12,waterlogged=false]", + "3533": "minecraft:jungle_sign[rotation=13,waterlogged=true]", + "3534": "minecraft:jungle_sign[rotation=13,waterlogged=false]", + "3535": "minecraft:jungle_sign[rotation=14,waterlogged=true]", + "3536": "minecraft:jungle_sign[rotation=14,waterlogged=false]", + "3537": "minecraft:jungle_sign[rotation=15,waterlogged=true]", + "3538": "minecraft:jungle_sign[rotation=15,waterlogged=false]", + "3539": "minecraft:dark_oak_sign[rotation=0,waterlogged=true]", + "3540": "minecraft:dark_oak_sign[rotation=0,waterlogged=false]", + "3541": "minecraft:dark_oak_sign[rotation=1,waterlogged=true]", + "3542": "minecraft:dark_oak_sign[rotation=1,waterlogged=false]", + "3543": "minecraft:dark_oak_sign[rotation=2,waterlogged=true]", + "3544": "minecraft:dark_oak_sign[rotation=2,waterlogged=false]", + "3545": "minecraft:dark_oak_sign[rotation=3,waterlogged=true]", + "3546": "minecraft:dark_oak_sign[rotation=3,waterlogged=false]", + "3547": "minecraft:dark_oak_sign[rotation=4,waterlogged=true]", + "3548": "minecraft:dark_oak_sign[rotation=4,waterlogged=false]", + "3549": "minecraft:dark_oak_sign[rotation=5,waterlogged=true]", + "3550": "minecraft:dark_oak_sign[rotation=5,waterlogged=false]", + "3551": "minecraft:dark_oak_sign[rotation=6,waterlogged=true]", + "3552": "minecraft:dark_oak_sign[rotation=6,waterlogged=false]", + "3553": "minecraft:dark_oak_sign[rotation=7,waterlogged=true]", + "3554": "minecraft:dark_oak_sign[rotation=7,waterlogged=false]", + "3555": "minecraft:dark_oak_sign[rotation=8,waterlogged=true]", + "3556": "minecraft:dark_oak_sign[rotation=8,waterlogged=false]", + "3557": "minecraft:dark_oak_sign[rotation=9,waterlogged=true]", + "3558": "minecraft:dark_oak_sign[rotation=9,waterlogged=false]", + "3559": "minecraft:dark_oak_sign[rotation=10,waterlogged=true]", + "3560": "minecraft:dark_oak_sign[rotation=10,waterlogged=false]", + "3561": "minecraft:dark_oak_sign[rotation=11,waterlogged=true]", + "3562": "minecraft:dark_oak_sign[rotation=11,waterlogged=false]", + "3563": "minecraft:dark_oak_sign[rotation=12,waterlogged=true]", + "3564": "minecraft:dark_oak_sign[rotation=12,waterlogged=false]", + "3565": "minecraft:dark_oak_sign[rotation=13,waterlogged=true]", + "3566": "minecraft:dark_oak_sign[rotation=13,waterlogged=false]", + "3567": "minecraft:dark_oak_sign[rotation=14,waterlogged=true]", + "3568": "minecraft:dark_oak_sign[rotation=14,waterlogged=false]", + "3569": "minecraft:dark_oak_sign[rotation=15,waterlogged=true]", + "3570": "minecraft:dark_oak_sign[rotation=15,waterlogged=false]", + "3571": "minecraft:oak_door[facing=north,half=upper,hinge=left,open=true,powered=true]", + "3572": "minecraft:oak_door[facing=north,half=upper,hinge=left,open=true,powered=false]", + "3573": "minecraft:oak_door[facing=north,half=upper,hinge=left,open=false,powered=true]", + "3574": "minecraft:oak_door[facing=north,half=upper,hinge=left,open=false,powered=false]", + "3575": "minecraft:oak_door[facing=north,half=upper,hinge=right,open=true,powered=true]", + "3576": "minecraft:oak_door[facing=north,half=upper,hinge=right,open=true,powered=false]", + "3577": "minecraft:oak_door[facing=north,half=upper,hinge=right,open=false,powered=true]", + "3578": "minecraft:oak_door[facing=north,half=upper,hinge=right,open=false,powered=false]", + "3579": "minecraft:oak_door[facing=north,half=lower,hinge=left,open=true,powered=true]", + "3580": "minecraft:oak_door[facing=north,half=lower,hinge=left,open=true,powered=false]", + "3581": "minecraft:oak_door[facing=north,half=lower,hinge=left,open=false,powered=true]", + "3582": "minecraft:oak_door[facing=north,half=lower,hinge=left,open=false,powered=false]", + "3583": "minecraft:oak_door[facing=north,half=lower,hinge=right,open=true,powered=true]", + "3584": "minecraft:oak_door[facing=north,half=lower,hinge=right,open=true,powered=false]", + "3585": "minecraft:oak_door[facing=north,half=lower,hinge=right,open=false,powered=true]", + "3586": "minecraft:oak_door[facing=north,half=lower,hinge=right,open=false,powered=false]", + "3587": "minecraft:oak_door[facing=south,half=upper,hinge=left,open=true,powered=true]", + "3588": "minecraft:oak_door[facing=south,half=upper,hinge=left,open=true,powered=false]", + "3589": "minecraft:oak_door[facing=south,half=upper,hinge=left,open=false,powered=true]", + "3590": "minecraft:oak_door[facing=south,half=upper,hinge=left,open=false,powered=false]", + "3591": "minecraft:oak_door[facing=south,half=upper,hinge=right,open=true,powered=true]", + "3592": "minecraft:oak_door[facing=south,half=upper,hinge=right,open=true,powered=false]", + "3593": "minecraft:oak_door[facing=south,half=upper,hinge=right,open=false,powered=true]", + "3594": "minecraft:oak_door[facing=south,half=upper,hinge=right,open=false,powered=false]", + "3595": "minecraft:oak_door[facing=south,half=lower,hinge=left,open=true,powered=true]", + "3596": "minecraft:oak_door[facing=south,half=lower,hinge=left,open=true,powered=false]", + "3597": "minecraft:oak_door[facing=south,half=lower,hinge=left,open=false,powered=true]", + "3598": "minecraft:oak_door[facing=south,half=lower,hinge=left,open=false,powered=false]", + "3599": "minecraft:oak_door[facing=south,half=lower,hinge=right,open=true,powered=true]", + "3600": "minecraft:oak_door[facing=south,half=lower,hinge=right,open=true,powered=false]", + "3601": "minecraft:oak_door[facing=south,half=lower,hinge=right,open=false,powered=true]", + "3602": "minecraft:oak_door[facing=south,half=lower,hinge=right,open=false,powered=false]", + "3603": "minecraft:oak_door[facing=west,half=upper,hinge=left,open=true,powered=true]", + "3604": "minecraft:oak_door[facing=west,half=upper,hinge=left,open=true,powered=false]", + "3605": "minecraft:oak_door[facing=west,half=upper,hinge=left,open=false,powered=true]", + "3606": "minecraft:oak_door[facing=west,half=upper,hinge=left,open=false,powered=false]", + "3607": "minecraft:oak_door[facing=west,half=upper,hinge=right,open=true,powered=true]", + "3608": "minecraft:oak_door[facing=west,half=upper,hinge=right,open=true,powered=false]", + "3609": "minecraft:oak_door[facing=west,half=upper,hinge=right,open=false,powered=true]", + "3610": "minecraft:oak_door[facing=west,half=upper,hinge=right,open=false,powered=false]", + "3611": "minecraft:oak_door[facing=west,half=lower,hinge=left,open=true,powered=true]", + "3612": "minecraft:oak_door[facing=west,half=lower,hinge=left,open=true,powered=false]", + "3613": "minecraft:oak_door[facing=west,half=lower,hinge=left,open=false,powered=true]", + "3614": "minecraft:oak_door[facing=west,half=lower,hinge=left,open=false,powered=false]", + "3615": "minecraft:oak_door[facing=west,half=lower,hinge=right,open=true,powered=true]", + "3616": "minecraft:oak_door[facing=west,half=lower,hinge=right,open=true,powered=false]", + "3617": "minecraft:oak_door[facing=west,half=lower,hinge=right,open=false,powered=true]", + "3618": "minecraft:oak_door[facing=west,half=lower,hinge=right,open=false,powered=false]", + "3619": "minecraft:oak_door[facing=east,half=upper,hinge=left,open=true,powered=true]", + "3620": "minecraft:oak_door[facing=east,half=upper,hinge=left,open=true,powered=false]", + "3621": "minecraft:oak_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "3622": "minecraft:oak_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "3623": "minecraft:oak_door[facing=east,half=upper,hinge=right,open=true,powered=true]", + "3624": "minecraft:oak_door[facing=east,half=upper,hinge=right,open=true,powered=false]", + "3625": "minecraft:oak_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "3626": "minecraft:oak_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "3627": "minecraft:oak_door[facing=east,half=lower,hinge=left,open=true,powered=true]", + "3628": "minecraft:oak_door[facing=east,half=lower,hinge=left,open=true,powered=false]", + "3629": "minecraft:oak_door[facing=east,half=lower,hinge=left,open=false,powered=true]", + "3630": "minecraft:oak_door[facing=east,half=lower,hinge=left,open=false,powered=false]", + "3631": "minecraft:oak_door[facing=east,half=lower,hinge=right,open=true,powered=true]", + "3632": "minecraft:oak_door[facing=east,half=lower,hinge=right,open=true,powered=false]", + "3633": "minecraft:oak_door[facing=east,half=lower,hinge=right,open=false,powered=true]", + "3634": "minecraft:oak_door[facing=east,half=lower,hinge=right,open=false,powered=false]", + "3635": "minecraft:ladder[facing=north,waterlogged=true]", + "3636": "minecraft:ladder[facing=north,waterlogged=false]", + "3637": "minecraft:ladder[facing=south,waterlogged=true]", + "3638": "minecraft:ladder[facing=south,waterlogged=false]", + "3639": "minecraft:ladder[facing=west,waterlogged=true]", + "3640": "minecraft:ladder[facing=west,waterlogged=false]", + "3641": "minecraft:ladder[facing=east,waterlogged=true]", + "3642": "minecraft:ladder[facing=east,waterlogged=false]", + "3643": "minecraft:rail[shape=north_south]", + "3644": "minecraft:rail[shape=east_west]", + "3645": "minecraft:rail[shape=ascending_east]", + "3646": "minecraft:rail[shape=ascending_west]", + "3647": "minecraft:rail[shape=ascending_north]", + "3648": "minecraft:rail[shape=ascending_south]", + "3649": "minecraft:rail[shape=south_east]", + "3650": "minecraft:rail[shape=south_west]", + "3651": "minecraft:rail[shape=north_west]", + "3652": "minecraft:rail[shape=north_east]", + "3653": "minecraft:cobblestone_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "3654": "minecraft:cobblestone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "3655": "minecraft:cobblestone_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "3656": "minecraft:cobblestone_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "3657": "minecraft:cobblestone_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "3658": "minecraft:cobblestone_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "3659": "minecraft:cobblestone_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "3660": "minecraft:cobblestone_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "3661": "minecraft:cobblestone_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "3662": "minecraft:cobblestone_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "3663": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "3664": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "3665": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "3666": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "3667": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "3668": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "3669": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "3670": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "3671": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "3672": "minecraft:cobblestone_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "3673": "minecraft:cobblestone_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "3674": "minecraft:cobblestone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "3675": "minecraft:cobblestone_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "3676": "minecraft:cobblestone_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "3677": "minecraft:cobblestone_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "3678": "minecraft:cobblestone_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "3679": "minecraft:cobblestone_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "3680": "minecraft:cobblestone_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "3681": "minecraft:cobblestone_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "3682": "minecraft:cobblestone_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "3683": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "3684": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "3685": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "3686": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "3687": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "3688": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "3689": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "3690": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "3691": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "3692": "minecraft:cobblestone_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "3693": "minecraft:cobblestone_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "3694": "minecraft:cobblestone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "3695": "minecraft:cobblestone_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "3696": "minecraft:cobblestone_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "3697": "minecraft:cobblestone_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "3698": "minecraft:cobblestone_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "3699": "minecraft:cobblestone_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "3700": "minecraft:cobblestone_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "3701": "minecraft:cobblestone_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "3702": "minecraft:cobblestone_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "3703": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "3704": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "3705": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "3706": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "3707": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "3708": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "3709": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "3710": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "3711": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "3712": "minecraft:cobblestone_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "3713": "minecraft:cobblestone_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "3714": "minecraft:cobblestone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "3715": "minecraft:cobblestone_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "3716": "minecraft:cobblestone_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "3717": "minecraft:cobblestone_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "3718": "minecraft:cobblestone_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "3719": "minecraft:cobblestone_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "3720": "minecraft:cobblestone_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "3721": "minecraft:cobblestone_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "3722": "minecraft:cobblestone_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "3723": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "3724": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "3725": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "3726": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "3727": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "3728": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "3729": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "3730": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "3731": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "3732": "minecraft:cobblestone_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "3733": "minecraft:oak_wall_sign[facing=north,waterlogged=true]", + "3734": "minecraft:oak_wall_sign[facing=north,waterlogged=false]", + "3735": "minecraft:oak_wall_sign[facing=south,waterlogged=true]", + "3736": "minecraft:oak_wall_sign[facing=south,waterlogged=false]", + "3737": "minecraft:oak_wall_sign[facing=west,waterlogged=true]", + "3738": "minecraft:oak_wall_sign[facing=west,waterlogged=false]", + "3739": "minecraft:oak_wall_sign[facing=east,waterlogged=true]", + "3740": "minecraft:oak_wall_sign[facing=east,waterlogged=false]", + "3741": "minecraft:spruce_wall_sign[facing=north,waterlogged=true]", + "3742": "minecraft:spruce_wall_sign[facing=north,waterlogged=false]", + "3743": "minecraft:spruce_wall_sign[facing=south,waterlogged=true]", + "3744": "minecraft:spruce_wall_sign[facing=south,waterlogged=false]", + "3745": "minecraft:spruce_wall_sign[facing=west,waterlogged=true]", + "3746": "minecraft:spruce_wall_sign[facing=west,waterlogged=false]", + "3747": "minecraft:spruce_wall_sign[facing=east,waterlogged=true]", + "3748": "minecraft:spruce_wall_sign[facing=east,waterlogged=false]", + "3749": "minecraft:birch_wall_sign[facing=north,waterlogged=true]", + "3750": "minecraft:birch_wall_sign[facing=north,waterlogged=false]", + "3751": "minecraft:birch_wall_sign[facing=south,waterlogged=true]", + "3752": "minecraft:birch_wall_sign[facing=south,waterlogged=false]", + "3753": "minecraft:birch_wall_sign[facing=west,waterlogged=true]", + "3754": "minecraft:birch_wall_sign[facing=west,waterlogged=false]", + "3755": "minecraft:birch_wall_sign[facing=east,waterlogged=true]", + "3756": "minecraft:birch_wall_sign[facing=east,waterlogged=false]", + "3757": "minecraft:acacia_wall_sign[facing=north,waterlogged=true]", + "3758": "minecraft:acacia_wall_sign[facing=north,waterlogged=false]", + "3759": "minecraft:acacia_wall_sign[facing=south,waterlogged=true]", + "3760": "minecraft:acacia_wall_sign[facing=south,waterlogged=false]", + "3761": "minecraft:acacia_wall_sign[facing=west,waterlogged=true]", + "3762": "minecraft:acacia_wall_sign[facing=west,waterlogged=false]", + "3763": "minecraft:acacia_wall_sign[facing=east,waterlogged=true]", + "3764": "minecraft:acacia_wall_sign[facing=east,waterlogged=false]", + "3765": "minecraft:jungle_wall_sign[facing=north,waterlogged=true]", + "3766": "minecraft:jungle_wall_sign[facing=north,waterlogged=false]", + "3767": "minecraft:jungle_wall_sign[facing=south,waterlogged=true]", + "3768": "minecraft:jungle_wall_sign[facing=south,waterlogged=false]", + "3769": "minecraft:jungle_wall_sign[facing=west,waterlogged=true]", + "3770": "minecraft:jungle_wall_sign[facing=west,waterlogged=false]", + "3771": "minecraft:jungle_wall_sign[facing=east,waterlogged=true]", + "3772": "minecraft:jungle_wall_sign[facing=east,waterlogged=false]", + "3773": "minecraft:dark_oak_wall_sign[facing=north,waterlogged=true]", + "3774": "minecraft:dark_oak_wall_sign[facing=north,waterlogged=false]", + "3775": "minecraft:dark_oak_wall_sign[facing=south,waterlogged=true]", + "3776": "minecraft:dark_oak_wall_sign[facing=south,waterlogged=false]", + "3777": "minecraft:dark_oak_wall_sign[facing=west,waterlogged=true]", + "3778": "minecraft:dark_oak_wall_sign[facing=west,waterlogged=false]", + "3779": "minecraft:dark_oak_wall_sign[facing=east,waterlogged=true]", + "3780": "minecraft:dark_oak_wall_sign[facing=east,waterlogged=false]", + "3781": "minecraft:lever[face=floor,facing=north,powered=true]", + "3782": "minecraft:lever[face=floor,facing=north,powered=false]", + "3783": "minecraft:lever[face=floor,facing=south,powered=true]", + "3784": "minecraft:lever[face=floor,facing=south,powered=false]", + "3785": "minecraft:lever[face=floor,facing=west,powered=true]", + "3786": "minecraft:lever[face=floor,facing=west,powered=false]", + "3787": "minecraft:lever[face=floor,facing=east,powered=true]", + "3788": "minecraft:lever[face=floor,facing=east,powered=false]", + "3789": "minecraft:lever[face=wall,facing=north,powered=true]", + "3790": "minecraft:lever[face=wall,facing=north,powered=false]", + "3791": "minecraft:lever[face=wall,facing=south,powered=true]", + "3792": "minecraft:lever[face=wall,facing=south,powered=false]", + "3793": "minecraft:lever[face=wall,facing=west,powered=true]", + "3794": "minecraft:lever[face=wall,facing=west,powered=false]", + "3795": "minecraft:lever[face=wall,facing=east,powered=true]", + "3796": "minecraft:lever[face=wall,facing=east,powered=false]", + "3797": "minecraft:lever[face=ceiling,facing=north,powered=true]", + "3798": "minecraft:lever[face=ceiling,facing=north,powered=false]", + "3799": "minecraft:lever[face=ceiling,facing=south,powered=true]", + "3800": "minecraft:lever[face=ceiling,facing=south,powered=false]", + "3801": "minecraft:lever[face=ceiling,facing=west,powered=true]", + "3802": "minecraft:lever[face=ceiling,facing=west,powered=false]", + "3803": "minecraft:lever[face=ceiling,facing=east,powered=true]", + "3804": "minecraft:lever[face=ceiling,facing=east,powered=false]", + "3805": "minecraft:stone_pressure_plate[powered=true]", + "3806": "minecraft:stone_pressure_plate[powered=false]", + "3807": "minecraft:iron_door[facing=north,half=upper,hinge=left,open=true,powered=true]", + "3808": "minecraft:iron_door[facing=north,half=upper,hinge=left,open=true,powered=false]", + "3809": "minecraft:iron_door[facing=north,half=upper,hinge=left,open=false,powered=true]", + "3810": "minecraft:iron_door[facing=north,half=upper,hinge=left,open=false,powered=false]", + "3811": "minecraft:iron_door[facing=north,half=upper,hinge=right,open=true,powered=true]", + "3812": "minecraft:iron_door[facing=north,half=upper,hinge=right,open=true,powered=false]", + "3813": "minecraft:iron_door[facing=north,half=upper,hinge=right,open=false,powered=true]", + "3814": "minecraft:iron_door[facing=north,half=upper,hinge=right,open=false,powered=false]", + "3815": "minecraft:iron_door[facing=north,half=lower,hinge=left,open=true,powered=true]", + "3816": "minecraft:iron_door[facing=north,half=lower,hinge=left,open=true,powered=false]", + "3817": "minecraft:iron_door[facing=north,half=lower,hinge=left,open=false,powered=true]", + "3818": "minecraft:iron_door[facing=north,half=lower,hinge=left,open=false,powered=false]", + "3819": "minecraft:iron_door[facing=north,half=lower,hinge=right,open=true,powered=true]", + "3820": "minecraft:iron_door[facing=north,half=lower,hinge=right,open=true,powered=false]", + "3821": "minecraft:iron_door[facing=north,half=lower,hinge=right,open=false,powered=true]", + "3822": "minecraft:iron_door[facing=north,half=lower,hinge=right,open=false,powered=false]", + "3823": "minecraft:iron_door[facing=south,half=upper,hinge=left,open=true,powered=true]", + "3824": "minecraft:iron_door[facing=south,half=upper,hinge=left,open=true,powered=false]", + "3825": "minecraft:iron_door[facing=south,half=upper,hinge=left,open=false,powered=true]", + "3826": "minecraft:iron_door[facing=south,half=upper,hinge=left,open=false,powered=false]", + "3827": "minecraft:iron_door[facing=south,half=upper,hinge=right,open=true,powered=true]", + "3828": "minecraft:iron_door[facing=south,half=upper,hinge=right,open=true,powered=false]", + "3829": "minecraft:iron_door[facing=south,half=upper,hinge=right,open=false,powered=true]", + "3830": "minecraft:iron_door[facing=south,half=upper,hinge=right,open=false,powered=false]", + "3831": "minecraft:iron_door[facing=south,half=lower,hinge=left,open=true,powered=true]", + "3832": "minecraft:iron_door[facing=south,half=lower,hinge=left,open=true,powered=false]", + "3833": "minecraft:iron_door[facing=south,half=lower,hinge=left,open=false,powered=true]", + "3834": "minecraft:iron_door[facing=south,half=lower,hinge=left,open=false,powered=false]", + "3835": "minecraft:iron_door[facing=south,half=lower,hinge=right,open=true,powered=true]", + "3836": "minecraft:iron_door[facing=south,half=lower,hinge=right,open=true,powered=false]", + "3837": "minecraft:iron_door[facing=south,half=lower,hinge=right,open=false,powered=true]", + "3838": "minecraft:iron_door[facing=south,half=lower,hinge=right,open=false,powered=false]", + "3839": "minecraft:iron_door[facing=west,half=upper,hinge=left,open=true,powered=true]", + "3840": "minecraft:iron_door[facing=west,half=upper,hinge=left,open=true,powered=false]", + "3841": "minecraft:iron_door[facing=west,half=upper,hinge=left,open=false,powered=true]", + "3842": "minecraft:iron_door[facing=west,half=upper,hinge=left,open=false,powered=false]", + "3843": "minecraft:iron_door[facing=west,half=upper,hinge=right,open=true,powered=true]", + "3844": "minecraft:iron_door[facing=west,half=upper,hinge=right,open=true,powered=false]", + "3845": "minecraft:iron_door[facing=west,half=upper,hinge=right,open=false,powered=true]", + "3846": "minecraft:iron_door[facing=west,half=upper,hinge=right,open=false,powered=false]", + "3847": "minecraft:iron_door[facing=west,half=lower,hinge=left,open=true,powered=true]", + "3848": "minecraft:iron_door[facing=west,half=lower,hinge=left,open=true,powered=false]", + "3849": "minecraft:iron_door[facing=west,half=lower,hinge=left,open=false,powered=true]", + "3850": "minecraft:iron_door[facing=west,half=lower,hinge=left,open=false,powered=false]", + "3851": "minecraft:iron_door[facing=west,half=lower,hinge=right,open=true,powered=true]", + "3852": "minecraft:iron_door[facing=west,half=lower,hinge=right,open=true,powered=false]", + "3853": "minecraft:iron_door[facing=west,half=lower,hinge=right,open=false,powered=true]", + "3854": "minecraft:iron_door[facing=west,half=lower,hinge=right,open=false,powered=false]", + "3855": "minecraft:iron_door[facing=east,half=upper,hinge=left,open=true,powered=true]", + "3856": "minecraft:iron_door[facing=east,half=upper,hinge=left,open=true,powered=false]", + "3857": "minecraft:iron_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "3858": "minecraft:iron_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "3859": "minecraft:iron_door[facing=east,half=upper,hinge=right,open=true,powered=true]", + "3860": "minecraft:iron_door[facing=east,half=upper,hinge=right,open=true,powered=false]", + "3861": "minecraft:iron_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "3862": "minecraft:iron_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "3863": "minecraft:iron_door[facing=east,half=lower,hinge=left,open=true,powered=true]", + "3864": "minecraft:iron_door[facing=east,half=lower,hinge=left,open=true,powered=false]", + "3865": "minecraft:iron_door[facing=east,half=lower,hinge=left,open=false,powered=true]", + "3866": "minecraft:iron_door[facing=east,half=lower,hinge=left,open=false,powered=false]", + "3867": "minecraft:iron_door[facing=east,half=lower,hinge=right,open=true,powered=true]", + "3868": "minecraft:iron_door[facing=east,half=lower,hinge=right,open=true,powered=false]", + "3869": "minecraft:iron_door[facing=east,half=lower,hinge=right,open=false,powered=true]", + "3870": "minecraft:iron_door[facing=east,half=lower,hinge=right,open=false,powered=false]", + "3871": "minecraft:oak_pressure_plate[powered=true]", + "3872": "minecraft:oak_pressure_plate[powered=false]", + "3873": "minecraft:spruce_pressure_plate[powered=true]", + "3874": "minecraft:spruce_pressure_plate[powered=false]", + "3875": "minecraft:birch_pressure_plate[powered=true]", + "3876": "minecraft:birch_pressure_plate[powered=false]", + "3877": "minecraft:jungle_pressure_plate[powered=true]", + "3878": "minecraft:jungle_pressure_plate[powered=false]", + "3879": "minecraft:acacia_pressure_plate[powered=true]", + "3880": "minecraft:acacia_pressure_plate[powered=false]", + "3881": "minecraft:dark_oak_pressure_plate[powered=true]", + "3882": "minecraft:dark_oak_pressure_plate[powered=false]", + "3883": "minecraft:redstone_ore[lit=true]", + "3884": "minecraft:redstone_ore[lit=false]", + "3885": "minecraft:redstone_torch[lit=true]", + "3886": "minecraft:redstone_torch[lit=false]", + "3887": "minecraft:redstone_wall_torch[facing=north,lit=true]", + "3888": "minecraft:redstone_wall_torch[facing=north,lit=false]", + "3889": "minecraft:redstone_wall_torch[facing=south,lit=true]", + "3890": "minecraft:redstone_wall_torch[facing=south,lit=false]", + "3891": "minecraft:redstone_wall_torch[facing=west,lit=true]", + "3892": "minecraft:redstone_wall_torch[facing=west,lit=false]", + "3893": "minecraft:redstone_wall_torch[facing=east,lit=true]", + "3894": "minecraft:redstone_wall_torch[facing=east,lit=false]", + "3895": "minecraft:stone_button[face=floor,facing=north,powered=true]", + "3896": "minecraft:stone_button[face=floor,facing=north,powered=false]", + "3897": "minecraft:stone_button[face=floor,facing=south,powered=true]", + "3898": "minecraft:stone_button[face=floor,facing=south,powered=false]", + "3899": "minecraft:stone_button[face=floor,facing=west,powered=true]", + "3900": "minecraft:stone_button[face=floor,facing=west,powered=false]", + "3901": "minecraft:stone_button[face=floor,facing=east,powered=true]", + "3902": "minecraft:stone_button[face=floor,facing=east,powered=false]", + "3903": "minecraft:stone_button[face=wall,facing=north,powered=true]", + "3904": "minecraft:stone_button[face=wall,facing=north,powered=false]", + "3905": "minecraft:stone_button[face=wall,facing=south,powered=true]", + "3906": "minecraft:stone_button[face=wall,facing=south,powered=false]", + "3907": "minecraft:stone_button[face=wall,facing=west,powered=true]", + "3908": "minecraft:stone_button[face=wall,facing=west,powered=false]", + "3909": "minecraft:stone_button[face=wall,facing=east,powered=true]", + "3910": "minecraft:stone_button[face=wall,facing=east,powered=false]", + "3911": "minecraft:stone_button[face=ceiling,facing=north,powered=true]", + "3912": "minecraft:stone_button[face=ceiling,facing=north,powered=false]", + "3913": "minecraft:stone_button[face=ceiling,facing=south,powered=true]", + "3914": "minecraft:stone_button[face=ceiling,facing=south,powered=false]", + "3915": "minecraft:stone_button[face=ceiling,facing=west,powered=true]", + "3916": "minecraft:stone_button[face=ceiling,facing=west,powered=false]", + "3917": "minecraft:stone_button[face=ceiling,facing=east,powered=true]", + "3918": "minecraft:stone_button[face=ceiling,facing=east,powered=false]", + "3919": "minecraft:snow[layers=1]", + "3920": "minecraft:snow[layers=2]", + "3921": "minecraft:snow[layers=3]", + "3922": "minecraft:snow[layers=4]", + "3923": "minecraft:snow[layers=5]", + "3924": "minecraft:snow[layers=6]", + "3925": "minecraft:snow[layers=7]", + "3926": "minecraft:snow[layers=8]", + "3927": "minecraft:ice", + "3928": "minecraft:snow_block", + "3929": "minecraft:cactus[age=0]", + "3930": "minecraft:cactus[age=1]", + "3931": "minecraft:cactus[age=2]", + "3932": "minecraft:cactus[age=3]", + "3933": "minecraft:cactus[age=4]", + "3934": "minecraft:cactus[age=5]", + "3935": "minecraft:cactus[age=6]", + "3936": "minecraft:cactus[age=7]", + "3937": "minecraft:cactus[age=8]", + "3938": "minecraft:cactus[age=9]", + "3939": "minecraft:cactus[age=10]", + "3940": "minecraft:cactus[age=11]", + "3941": "minecraft:cactus[age=12]", + "3942": "minecraft:cactus[age=13]", + "3943": "minecraft:cactus[age=14]", + "3944": "minecraft:cactus[age=15]", + "3945": "minecraft:clay", + "3946": "minecraft:sugar_cane[age=0]", + "3947": "minecraft:sugar_cane[age=1]", + "3948": "minecraft:sugar_cane[age=2]", + "3949": "minecraft:sugar_cane[age=3]", + "3950": "minecraft:sugar_cane[age=4]", + "3951": "minecraft:sugar_cane[age=5]", + "3952": "minecraft:sugar_cane[age=6]", + "3953": "minecraft:sugar_cane[age=7]", + "3954": "minecraft:sugar_cane[age=8]", + "3955": "minecraft:sugar_cane[age=9]", + "3956": "minecraft:sugar_cane[age=10]", + "3957": "minecraft:sugar_cane[age=11]", + "3958": "minecraft:sugar_cane[age=12]", + "3959": "minecraft:sugar_cane[age=13]", + "3960": "minecraft:sugar_cane[age=14]", + "3961": "minecraft:sugar_cane[age=15]", + "3962": "minecraft:jukebox[has_record=true]", + "3963": "minecraft:jukebox[has_record=false]", + "3964": "minecraft:oak_fence[east=true,north=true,south=true,waterlogged=true,west=true]", + "3965": "minecraft:oak_fence[east=true,north=true,south=true,waterlogged=true,west=false]", + "3966": "minecraft:oak_fence[east=true,north=true,south=true,waterlogged=false,west=true]", + "3967": "minecraft:oak_fence[east=true,north=true,south=true,waterlogged=false,west=false]", + "3968": "minecraft:oak_fence[east=true,north=true,south=false,waterlogged=true,west=true]", + "3969": "minecraft:oak_fence[east=true,north=true,south=false,waterlogged=true,west=false]", + "3970": "minecraft:oak_fence[east=true,north=true,south=false,waterlogged=false,west=true]", + "3971": "minecraft:oak_fence[east=true,north=true,south=false,waterlogged=false,west=false]", + "3972": "minecraft:oak_fence[east=true,north=false,south=true,waterlogged=true,west=true]", + "3973": "minecraft:oak_fence[east=true,north=false,south=true,waterlogged=true,west=false]", + "3974": "minecraft:oak_fence[east=true,north=false,south=true,waterlogged=false,west=true]", + "3975": "minecraft:oak_fence[east=true,north=false,south=true,waterlogged=false,west=false]", + "3976": "minecraft:oak_fence[east=true,north=false,south=false,waterlogged=true,west=true]", + "3977": "minecraft:oak_fence[east=true,north=false,south=false,waterlogged=true,west=false]", + "3978": "minecraft:oak_fence[east=true,north=false,south=false,waterlogged=false,west=true]", + "3979": "minecraft:oak_fence[east=true,north=false,south=false,waterlogged=false,west=false]", + "3980": "minecraft:oak_fence[east=false,north=true,south=true,waterlogged=true,west=true]", + "3981": "minecraft:oak_fence[east=false,north=true,south=true,waterlogged=true,west=false]", + "3982": "minecraft:oak_fence[east=false,north=true,south=true,waterlogged=false,west=true]", + "3983": "minecraft:oak_fence[east=false,north=true,south=true,waterlogged=false,west=false]", + "3984": "minecraft:oak_fence[east=false,north=true,south=false,waterlogged=true,west=true]", + "3985": "minecraft:oak_fence[east=false,north=true,south=false,waterlogged=true,west=false]", + "3986": "minecraft:oak_fence[east=false,north=true,south=false,waterlogged=false,west=true]", + "3987": "minecraft:oak_fence[east=false,north=true,south=false,waterlogged=false,west=false]", + "3988": "minecraft:oak_fence[east=false,north=false,south=true,waterlogged=true,west=true]", + "3989": "minecraft:oak_fence[east=false,north=false,south=true,waterlogged=true,west=false]", + "3990": "minecraft:oak_fence[east=false,north=false,south=true,waterlogged=false,west=true]", + "3991": "minecraft:oak_fence[east=false,north=false,south=true,waterlogged=false,west=false]", + "3992": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=true,west=true]", + "3993": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=true,west=false]", + "3994": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=true]", + "3995": "minecraft:oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "3996": "minecraft:pumpkin", + "3997": "minecraft:netherrack", + "3998": "minecraft:soul_sand", + "3999": "minecraft:glowstone", + "4000": "minecraft:nether_portal[axis=x]", + "4001": "minecraft:nether_portal[axis=z]", + "4002": "minecraft:carved_pumpkin[facing=north]", + "4003": "minecraft:carved_pumpkin[facing=south]", + "4004": "minecraft:carved_pumpkin[facing=west]", + "4005": "minecraft:carved_pumpkin[facing=east]", + "4006": "minecraft:jack_o_lantern[facing=north]", + "4007": "minecraft:jack_o_lantern[facing=south]", + "4008": "minecraft:jack_o_lantern[facing=west]", + "4009": "minecraft:jack_o_lantern[facing=east]", + "4010": "minecraft:cake[bites=0]", + "4011": "minecraft:cake[bites=1]", + "4012": "minecraft:cake[bites=2]", + "4013": "minecraft:cake[bites=3]", + "4014": "minecraft:cake[bites=4]", + "4015": "minecraft:cake[bites=5]", + "4016": "minecraft:cake[bites=6]", + "4017": "minecraft:repeater[delay=1,facing=north,locked=true,powered=true]", + "4018": "minecraft:repeater[delay=1,facing=north,locked=true,powered=false]", + "4019": "minecraft:repeater[delay=1,facing=north,locked=false,powered=true]", + "4020": "minecraft:repeater[delay=1,facing=north,locked=false,powered=false]", + "4021": "minecraft:repeater[delay=1,facing=south,locked=true,powered=true]", + "4022": "minecraft:repeater[delay=1,facing=south,locked=true,powered=false]", + "4023": "minecraft:repeater[delay=1,facing=south,locked=false,powered=true]", + "4024": "minecraft:repeater[delay=1,facing=south,locked=false,powered=false]", + "4025": "minecraft:repeater[delay=1,facing=west,locked=true,powered=true]", + "4026": "minecraft:repeater[delay=1,facing=west,locked=true,powered=false]", + "4027": "minecraft:repeater[delay=1,facing=west,locked=false,powered=true]", + "4028": "minecraft:repeater[delay=1,facing=west,locked=false,powered=false]", + "4029": "minecraft:repeater[delay=1,facing=east,locked=true,powered=true]", + "4030": "minecraft:repeater[delay=1,facing=east,locked=true,powered=false]", + "4031": "minecraft:repeater[delay=1,facing=east,locked=false,powered=true]", + "4032": "minecraft:repeater[delay=1,facing=east,locked=false,powered=false]", + "4033": "minecraft:repeater[delay=2,facing=north,locked=true,powered=true]", + "4034": "minecraft:repeater[delay=2,facing=north,locked=true,powered=false]", + "4035": "minecraft:repeater[delay=2,facing=north,locked=false,powered=true]", + "4036": "minecraft:repeater[delay=2,facing=north,locked=false,powered=false]", + "4037": "minecraft:repeater[delay=2,facing=south,locked=true,powered=true]", + "4038": "minecraft:repeater[delay=2,facing=south,locked=true,powered=false]", + "4039": "minecraft:repeater[delay=2,facing=south,locked=false,powered=true]", + "4040": "minecraft:repeater[delay=2,facing=south,locked=false,powered=false]", + "4041": "minecraft:repeater[delay=2,facing=west,locked=true,powered=true]", + "4042": "minecraft:repeater[delay=2,facing=west,locked=true,powered=false]", + "4043": "minecraft:repeater[delay=2,facing=west,locked=false,powered=true]", + "4044": "minecraft:repeater[delay=2,facing=west,locked=false,powered=false]", + "4045": "minecraft:repeater[delay=2,facing=east,locked=true,powered=true]", + "4046": "minecraft:repeater[delay=2,facing=east,locked=true,powered=false]", + "4047": "minecraft:repeater[delay=2,facing=east,locked=false,powered=true]", + "4048": "minecraft:repeater[delay=2,facing=east,locked=false,powered=false]", + "4049": "minecraft:repeater[delay=3,facing=north,locked=true,powered=true]", + "4050": "minecraft:repeater[delay=3,facing=north,locked=true,powered=false]", + "4051": "minecraft:repeater[delay=3,facing=north,locked=false,powered=true]", + "4052": "minecraft:repeater[delay=3,facing=north,locked=false,powered=false]", + "4053": "minecraft:repeater[delay=3,facing=south,locked=true,powered=true]", + "4054": "minecraft:repeater[delay=3,facing=south,locked=true,powered=false]", + "4055": "minecraft:repeater[delay=3,facing=south,locked=false,powered=true]", + "4056": "minecraft:repeater[delay=3,facing=south,locked=false,powered=false]", + "4057": "minecraft:repeater[delay=3,facing=west,locked=true,powered=true]", + "4058": "minecraft:repeater[delay=3,facing=west,locked=true,powered=false]", + "4059": "minecraft:repeater[delay=3,facing=west,locked=false,powered=true]", + "4060": "minecraft:repeater[delay=3,facing=west,locked=false,powered=false]", + "4061": "minecraft:repeater[delay=3,facing=east,locked=true,powered=true]", + "4062": "minecraft:repeater[delay=3,facing=east,locked=true,powered=false]", + "4063": "minecraft:repeater[delay=3,facing=east,locked=false,powered=true]", + "4064": "minecraft:repeater[delay=3,facing=east,locked=false,powered=false]", + "4065": "minecraft:repeater[delay=4,facing=north,locked=true,powered=true]", + "4066": "minecraft:repeater[delay=4,facing=north,locked=true,powered=false]", + "4067": "minecraft:repeater[delay=4,facing=north,locked=false,powered=true]", + "4068": "minecraft:repeater[delay=4,facing=north,locked=false,powered=false]", + "4069": "minecraft:repeater[delay=4,facing=south,locked=true,powered=true]", + "4070": "minecraft:repeater[delay=4,facing=south,locked=true,powered=false]", + "4071": "minecraft:repeater[delay=4,facing=south,locked=false,powered=true]", + "4072": "minecraft:repeater[delay=4,facing=south,locked=false,powered=false]", + "4073": "minecraft:repeater[delay=4,facing=west,locked=true,powered=true]", + "4074": "minecraft:repeater[delay=4,facing=west,locked=true,powered=false]", + "4075": "minecraft:repeater[delay=4,facing=west,locked=false,powered=true]", + "4076": "minecraft:repeater[delay=4,facing=west,locked=false,powered=false]", + "4077": "minecraft:repeater[delay=4,facing=east,locked=true,powered=true]", + "4078": "minecraft:repeater[delay=4,facing=east,locked=true,powered=false]", + "4079": "minecraft:repeater[delay=4,facing=east,locked=false,powered=true]", + "4080": "minecraft:repeater[delay=4,facing=east,locked=false,powered=false]", + "4081": "minecraft:white_stained_glass", + "4082": "minecraft:orange_stained_glass", + "4083": "minecraft:magenta_stained_glass", + "4084": "minecraft:light_blue_stained_glass", + "4085": "minecraft:yellow_stained_glass", + "4086": "minecraft:lime_stained_glass", + "4087": "minecraft:pink_stained_glass", + "4088": "minecraft:gray_stained_glass", + "4089": "minecraft:light_gray_stained_glass", + "4090": "minecraft:cyan_stained_glass", + "4091": "minecraft:purple_stained_glass", + "4092": "minecraft:blue_stained_glass", + "4093": "minecraft:brown_stained_glass", + "4094": "minecraft:green_stained_glass", + "4095": "minecraft:red_stained_glass", + "4096": "minecraft:black_stained_glass", + "4097": "minecraft:oak_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]", + "4098": "minecraft:oak_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]", + "4099": "minecraft:oak_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true]", + "4100": "minecraft:oak_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]", + "4101": "minecraft:oak_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]", + "4102": "minecraft:oak_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]", + "4103": "minecraft:oak_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true]", + "4104": "minecraft:oak_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false]", + "4105": "minecraft:oak_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]", + "4106": "minecraft:oak_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]", + "4107": "minecraft:oak_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true]", + "4108": "minecraft:oak_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false]", + "4109": "minecraft:oak_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]", + "4110": "minecraft:oak_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]", + "4111": "minecraft:oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true]", + "4112": "minecraft:oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]", + "4113": "minecraft:oak_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]", + "4114": "minecraft:oak_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]", + "4115": "minecraft:oak_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true]", + "4116": "minecraft:oak_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false]", + "4117": "minecraft:oak_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]", + "4118": "minecraft:oak_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]", + "4119": "minecraft:oak_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true]", + "4120": "minecraft:oak_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false]", + "4121": "minecraft:oak_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]", + "4122": "minecraft:oak_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]", + "4123": "minecraft:oak_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true]", + "4124": "minecraft:oak_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false]", + "4125": "minecraft:oak_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]", + "4126": "minecraft:oak_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]", + "4127": "minecraft:oak_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true]", + "4128": "minecraft:oak_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false]", + "4129": "minecraft:oak_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]", + "4130": "minecraft:oak_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]", + "4131": "minecraft:oak_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true]", + "4132": "minecraft:oak_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false]", + "4133": "minecraft:oak_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]", + "4134": "minecraft:oak_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]", + "4135": "minecraft:oak_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true]", + "4136": "minecraft:oak_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false]", + "4137": "minecraft:oak_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]", + "4138": "minecraft:oak_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]", + "4139": "minecraft:oak_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true]", + "4140": "minecraft:oak_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false]", + "4141": "minecraft:oak_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]", + "4142": "minecraft:oak_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]", + "4143": "minecraft:oak_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true]", + "4144": "minecraft:oak_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false]", + "4145": "minecraft:oak_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]", + "4146": "minecraft:oak_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]", + "4147": "minecraft:oak_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true]", + "4148": "minecraft:oak_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false]", + "4149": "minecraft:oak_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]", + "4150": "minecraft:oak_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]", + "4151": "minecraft:oak_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true]", + "4152": "minecraft:oak_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false]", + "4153": "minecraft:oak_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]", + "4154": "minecraft:oak_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]", + "4155": "minecraft:oak_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true]", + "4156": "minecraft:oak_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false]", + "4157": "minecraft:oak_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]", + "4158": "minecraft:oak_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]", + "4159": "minecraft:oak_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true]", + "4160": "minecraft:oak_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false]", + "4161": "minecraft:spruce_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]", + "4162": "minecraft:spruce_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]", + "4163": "minecraft:spruce_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true]", + "4164": "minecraft:spruce_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]", + "4165": "minecraft:spruce_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]", + "4166": "minecraft:spruce_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]", + "4167": "minecraft:spruce_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true]", + "4168": "minecraft:spruce_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false]", + "4169": "minecraft:spruce_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]", + "4170": "minecraft:spruce_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]", + "4171": "minecraft:spruce_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true]", + "4172": "minecraft:spruce_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false]", + "4173": "minecraft:spruce_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]", + "4174": "minecraft:spruce_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]", + "4175": "minecraft:spruce_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true]", + "4176": "minecraft:spruce_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]", + "4177": "minecraft:spruce_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]", + "4178": "minecraft:spruce_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]", + "4179": "minecraft:spruce_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true]", + "4180": "minecraft:spruce_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false]", + "4181": "minecraft:spruce_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]", + "4182": "minecraft:spruce_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]", + "4183": "minecraft:spruce_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true]", + "4184": "minecraft:spruce_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false]", + "4185": "minecraft:spruce_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]", + "4186": "minecraft:spruce_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]", + "4187": "minecraft:spruce_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true]", + "4188": "minecraft:spruce_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false]", + "4189": "minecraft:spruce_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]", + "4190": "minecraft:spruce_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]", + "4191": "minecraft:spruce_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true]", + "4192": "minecraft:spruce_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false]", + "4193": "minecraft:spruce_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]", + "4194": "minecraft:spruce_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]", + "4195": "minecraft:spruce_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true]", + "4196": "minecraft:spruce_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false]", + "4197": "minecraft:spruce_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]", + "4198": "minecraft:spruce_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]", + "4199": "minecraft:spruce_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true]", + "4200": "minecraft:spruce_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false]", + "4201": "minecraft:spruce_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]", + "4202": "minecraft:spruce_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]", + "4203": "minecraft:spruce_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true]", + "4204": "minecraft:spruce_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false]", + "4205": "minecraft:spruce_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]", + "4206": "minecraft:spruce_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]", + "4207": "minecraft:spruce_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true]", + "4208": "minecraft:spruce_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false]", + "4209": "minecraft:spruce_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]", + "4210": "minecraft:spruce_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]", + "4211": "minecraft:spruce_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true]", + "4212": "minecraft:spruce_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false]", + "4213": "minecraft:spruce_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]", + "4214": "minecraft:spruce_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]", + "4215": "minecraft:spruce_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true]", + "4216": "minecraft:spruce_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false]", + "4217": "minecraft:spruce_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]", + "4218": "minecraft:spruce_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]", + "4219": "minecraft:spruce_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true]", + "4220": "minecraft:spruce_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false]", + "4221": "minecraft:spruce_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]", + "4222": "minecraft:spruce_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]", + "4223": "minecraft:spruce_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true]", + "4224": "minecraft:spruce_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false]", + "4225": "minecraft:birch_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]", + "4226": "minecraft:birch_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]", + "4227": "minecraft:birch_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true]", + "4228": "minecraft:birch_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]", + "4229": "minecraft:birch_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]", + "4230": "minecraft:birch_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]", + "4231": "minecraft:birch_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true]", + "4232": "minecraft:birch_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false]", + "4233": "minecraft:birch_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]", + "4234": "minecraft:birch_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]", + "4235": "minecraft:birch_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true]", + "4236": "minecraft:birch_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false]", + "4237": "minecraft:birch_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]", + "4238": "minecraft:birch_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]", + "4239": "minecraft:birch_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true]", + "4240": "minecraft:birch_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]", + "4241": "minecraft:birch_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]", + "4242": "minecraft:birch_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]", + "4243": "minecraft:birch_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true]", + "4244": "minecraft:birch_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false]", + "4245": "minecraft:birch_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]", + "4246": "minecraft:birch_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]", + "4247": "minecraft:birch_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true]", + "4248": "minecraft:birch_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false]", + "4249": "minecraft:birch_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]", + "4250": "minecraft:birch_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]", + "4251": "minecraft:birch_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true]", + "4252": "minecraft:birch_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false]", + "4253": "minecraft:birch_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]", + "4254": "minecraft:birch_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]", + "4255": "minecraft:birch_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true]", + "4256": "minecraft:birch_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false]", + "4257": "minecraft:birch_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]", + "4258": "minecraft:birch_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]", + "4259": "minecraft:birch_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true]", + "4260": "minecraft:birch_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false]", + "4261": "minecraft:birch_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]", + "4262": "minecraft:birch_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]", + "4263": "minecraft:birch_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true]", + "4264": "minecraft:birch_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false]", + "4265": "minecraft:birch_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]", + "4266": "minecraft:birch_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]", + "4267": "minecraft:birch_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true]", + "4268": "minecraft:birch_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false]", + "4269": "minecraft:birch_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]", + "4270": "minecraft:birch_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]", + "4271": "minecraft:birch_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true]", + "4272": "minecraft:birch_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false]", + "4273": "minecraft:birch_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]", + "4274": "minecraft:birch_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]", + "4275": "minecraft:birch_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true]", + "4276": "minecraft:birch_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false]", + "4277": "minecraft:birch_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]", + "4278": "minecraft:birch_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]", + "4279": "minecraft:birch_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true]", + "4280": "minecraft:birch_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false]", + "4281": "minecraft:birch_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]", + "4282": "minecraft:birch_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]", + "4283": "minecraft:birch_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true]", + "4284": "minecraft:birch_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false]", + "4285": "minecraft:birch_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]", + "4286": "minecraft:birch_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]", + "4287": "minecraft:birch_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true]", + "4288": "minecraft:birch_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false]", + "4289": "minecraft:jungle_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]", + "4290": "minecraft:jungle_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]", + "4291": "minecraft:jungle_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true]", + "4292": "minecraft:jungle_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]", + "4293": "minecraft:jungle_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]", + "4294": "minecraft:jungle_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]", + "4295": "minecraft:jungle_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true]", + "4296": "minecraft:jungle_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false]", + "4297": "minecraft:jungle_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]", + "4298": "minecraft:jungle_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]", + "4299": "minecraft:jungle_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true]", + "4300": "minecraft:jungle_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false]", + "4301": "minecraft:jungle_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]", + "4302": "minecraft:jungle_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]", + "4303": "minecraft:jungle_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true]", + "4304": "minecraft:jungle_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]", + "4305": "minecraft:jungle_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]", + "4306": "minecraft:jungle_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]", + "4307": "minecraft:jungle_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true]", + "4308": "minecraft:jungle_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false]", + "4309": "minecraft:jungle_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]", + "4310": "minecraft:jungle_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]", + "4311": "minecraft:jungle_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true]", + "4312": "minecraft:jungle_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false]", + "4313": "minecraft:jungle_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]", + "4314": "minecraft:jungle_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]", + "4315": "minecraft:jungle_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true]", + "4316": "minecraft:jungle_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false]", + "4317": "minecraft:jungle_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]", + "4318": "minecraft:jungle_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]", + "4319": "minecraft:jungle_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true]", + "4320": "minecraft:jungle_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false]", + "4321": "minecraft:jungle_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]", + "4322": "minecraft:jungle_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]", + "4323": "minecraft:jungle_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true]", + "4324": "minecraft:jungle_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false]", + "4325": "minecraft:jungle_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]", + "4326": "minecraft:jungle_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]", + "4327": "minecraft:jungle_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true]", + "4328": "minecraft:jungle_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false]", + "4329": "minecraft:jungle_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]", + "4330": "minecraft:jungle_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]", + "4331": "minecraft:jungle_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true]", + "4332": "minecraft:jungle_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false]", + "4333": "minecraft:jungle_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]", + "4334": "minecraft:jungle_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]", + "4335": "minecraft:jungle_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true]", + "4336": "minecraft:jungle_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false]", + "4337": "minecraft:jungle_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]", + "4338": "minecraft:jungle_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]", + "4339": "minecraft:jungle_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true]", + "4340": "minecraft:jungle_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false]", + "4341": "minecraft:jungle_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]", + "4342": "minecraft:jungle_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]", + "4343": "minecraft:jungle_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true]", + "4344": "minecraft:jungle_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false]", + "4345": "minecraft:jungle_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]", + "4346": "minecraft:jungle_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]", + "4347": "minecraft:jungle_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true]", + "4348": "minecraft:jungle_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false]", + "4349": "minecraft:jungle_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]", + "4350": "minecraft:jungle_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]", + "4351": "minecraft:jungle_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true]", + "4352": "minecraft:jungle_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false]", + "4353": "minecraft:acacia_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]", + "4354": "minecraft:acacia_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]", + "4355": "minecraft:acacia_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true]", + "4356": "minecraft:acacia_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]", + "4357": "minecraft:acacia_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]", + "4358": "minecraft:acacia_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]", + "4359": "minecraft:acacia_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true]", + "4360": "minecraft:acacia_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false]", + "4361": "minecraft:acacia_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]", + "4362": "minecraft:acacia_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]", + "4363": "minecraft:acacia_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true]", + "4364": "minecraft:acacia_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false]", + "4365": "minecraft:acacia_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]", + "4366": "minecraft:acacia_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]", + "4367": "minecraft:acacia_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true]", + "4368": "minecraft:acacia_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]", + "4369": "minecraft:acacia_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]", + "4370": "minecraft:acacia_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]", + "4371": "minecraft:acacia_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true]", + "4372": "minecraft:acacia_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false]", + "4373": "minecraft:acacia_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]", + "4374": "minecraft:acacia_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]", + "4375": "minecraft:acacia_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true]", + "4376": "minecraft:acacia_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false]", + "4377": "minecraft:acacia_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]", + "4378": "minecraft:acacia_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]", + "4379": "minecraft:acacia_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true]", + "4380": "minecraft:acacia_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false]", + "4381": "minecraft:acacia_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]", + "4382": "minecraft:acacia_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]", + "4383": "minecraft:acacia_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true]", + "4384": "minecraft:acacia_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false]", + "4385": "minecraft:acacia_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]", + "4386": "minecraft:acacia_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]", + "4387": "minecraft:acacia_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true]", + "4388": "minecraft:acacia_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false]", + "4389": "minecraft:acacia_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]", + "4390": "minecraft:acacia_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]", + "4391": "minecraft:acacia_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true]", + "4392": "minecraft:acacia_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false]", + "4393": "minecraft:acacia_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]", + "4394": "minecraft:acacia_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]", + "4395": "minecraft:acacia_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true]", + "4396": "minecraft:acacia_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false]", + "4397": "minecraft:acacia_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]", + "4398": "minecraft:acacia_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]", + "4399": "minecraft:acacia_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true]", + "4400": "minecraft:acacia_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false]", + "4401": "minecraft:acacia_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]", + "4402": "minecraft:acacia_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]", + "4403": "minecraft:acacia_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true]", + "4404": "minecraft:acacia_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false]", + "4405": "minecraft:acacia_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]", + "4406": "minecraft:acacia_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]", + "4407": "minecraft:acacia_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true]", + "4408": "minecraft:acacia_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false]", + "4409": "minecraft:acacia_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]", + "4410": "minecraft:acacia_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]", + "4411": "minecraft:acacia_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true]", + "4412": "minecraft:acacia_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false]", + "4413": "minecraft:acacia_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]", + "4414": "minecraft:acacia_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]", + "4415": "minecraft:acacia_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true]", + "4416": "minecraft:acacia_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false]", + "4417": "minecraft:dark_oak_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]", + "4418": "minecraft:dark_oak_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]", + "4419": "minecraft:dark_oak_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true]", + "4420": "minecraft:dark_oak_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]", + "4421": "minecraft:dark_oak_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]", + "4422": "minecraft:dark_oak_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]", + "4423": "minecraft:dark_oak_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true]", + "4424": "minecraft:dark_oak_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false]", + "4425": "minecraft:dark_oak_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]", + "4426": "minecraft:dark_oak_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]", + "4427": "minecraft:dark_oak_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true]", + "4428": "minecraft:dark_oak_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false]", + "4429": "minecraft:dark_oak_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]", + "4430": "minecraft:dark_oak_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]", + "4431": "minecraft:dark_oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true]", + "4432": "minecraft:dark_oak_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]", + "4433": "minecraft:dark_oak_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]", + "4434": "minecraft:dark_oak_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]", + "4435": "minecraft:dark_oak_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true]", + "4436": "minecraft:dark_oak_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false]", + "4437": "minecraft:dark_oak_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]", + "4438": "minecraft:dark_oak_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]", + "4439": "minecraft:dark_oak_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true]", + "4440": "minecraft:dark_oak_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false]", + "4441": "minecraft:dark_oak_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]", + "4442": "minecraft:dark_oak_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]", + "4443": "minecraft:dark_oak_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true]", + "4444": "minecraft:dark_oak_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false]", + "4445": "minecraft:dark_oak_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]", + "4446": "minecraft:dark_oak_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]", + "4447": "minecraft:dark_oak_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true]", + "4448": "minecraft:dark_oak_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false]", + "4449": "minecraft:dark_oak_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]", + "4450": "minecraft:dark_oak_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]", + "4451": "minecraft:dark_oak_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true]", + "4452": "minecraft:dark_oak_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false]", + "4453": "minecraft:dark_oak_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]", + "4454": "minecraft:dark_oak_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]", + "4455": "minecraft:dark_oak_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true]", + "4456": "minecraft:dark_oak_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false]", + "4457": "minecraft:dark_oak_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]", + "4458": "minecraft:dark_oak_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]", + "4459": "minecraft:dark_oak_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true]", + "4460": "minecraft:dark_oak_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false]", + "4461": "minecraft:dark_oak_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]", + "4462": "minecraft:dark_oak_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]", + "4463": "minecraft:dark_oak_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true]", + "4464": "minecraft:dark_oak_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false]", + "4465": "minecraft:dark_oak_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]", + "4466": "minecraft:dark_oak_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]", + "4467": "minecraft:dark_oak_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true]", + "4468": "minecraft:dark_oak_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false]", + "4469": "minecraft:dark_oak_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]", + "4470": "minecraft:dark_oak_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]", + "4471": "minecraft:dark_oak_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true]", + "4472": "minecraft:dark_oak_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false]", + "4473": "minecraft:dark_oak_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]", + "4474": "minecraft:dark_oak_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]", + "4475": "minecraft:dark_oak_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true]", + "4476": "minecraft:dark_oak_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false]", + "4477": "minecraft:dark_oak_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]", + "4478": "minecraft:dark_oak_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]", + "4479": "minecraft:dark_oak_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true]", + "4480": "minecraft:dark_oak_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false]", + "4481": "minecraft:stone_bricks", + "4482": "minecraft:mossy_stone_bricks", + "4483": "minecraft:cracked_stone_bricks", + "4484": "minecraft:chiseled_stone_bricks", + "4485": "minecraft:infested_stone", + "4486": "minecraft:infested_cobblestone", + "4487": "minecraft:infested_stone_bricks", + "4488": "minecraft:infested_mossy_stone_bricks", + "4489": "minecraft:infested_cracked_stone_bricks", + "4490": "minecraft:infested_chiseled_stone_bricks", + "4491": "minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]", + "4492": "minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=false]", + "4493": "minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=false,west=true]", + "4494": "minecraft:brown_mushroom_block[down=true,east=true,north=true,south=true,up=false,west=false]", + "4495": "minecraft:brown_mushroom_block[down=true,east=true,north=true,south=false,up=true,west=true]", + "4496": "minecraft:brown_mushroom_block[down=true,east=true,north=true,south=false,up=true,west=false]", + "4497": "minecraft:brown_mushroom_block[down=true,east=true,north=true,south=false,up=false,west=true]", + "4498": "minecraft:brown_mushroom_block[down=true,east=true,north=true,south=false,up=false,west=false]", + "4499": "minecraft:brown_mushroom_block[down=true,east=true,north=false,south=true,up=true,west=true]", + "4500": "minecraft:brown_mushroom_block[down=true,east=true,north=false,south=true,up=true,west=false]", + "4501": "minecraft:brown_mushroom_block[down=true,east=true,north=false,south=true,up=false,west=true]", + "4502": "minecraft:brown_mushroom_block[down=true,east=true,north=false,south=true,up=false,west=false]", + "4503": "minecraft:brown_mushroom_block[down=true,east=true,north=false,south=false,up=true,west=true]", + "4504": "minecraft:brown_mushroom_block[down=true,east=true,north=false,south=false,up=true,west=false]", + "4505": "minecraft:brown_mushroom_block[down=true,east=true,north=false,south=false,up=false,west=true]", + "4506": "minecraft:brown_mushroom_block[down=true,east=true,north=false,south=false,up=false,west=false]", + "4507": "minecraft:brown_mushroom_block[down=true,east=false,north=true,south=true,up=true,west=true]", + "4508": "minecraft:brown_mushroom_block[down=true,east=false,north=true,south=true,up=true,west=false]", + "4509": "minecraft:brown_mushroom_block[down=true,east=false,north=true,south=true,up=false,west=true]", + "4510": "minecraft:brown_mushroom_block[down=true,east=false,north=true,south=true,up=false,west=false]", + "4511": "minecraft:brown_mushroom_block[down=true,east=false,north=true,south=false,up=true,west=true]", + "4512": "minecraft:brown_mushroom_block[down=true,east=false,north=true,south=false,up=true,west=false]", + "4513": "minecraft:brown_mushroom_block[down=true,east=false,north=true,south=false,up=false,west=true]", + "4514": "minecraft:brown_mushroom_block[down=true,east=false,north=true,south=false,up=false,west=false]", + "4515": "minecraft:brown_mushroom_block[down=true,east=false,north=false,south=true,up=true,west=true]", + "4516": "minecraft:brown_mushroom_block[down=true,east=false,north=false,south=true,up=true,west=false]", + "4517": "minecraft:brown_mushroom_block[down=true,east=false,north=false,south=true,up=false,west=true]", + "4518": "minecraft:brown_mushroom_block[down=true,east=false,north=false,south=true,up=false,west=false]", + "4519": "minecraft:brown_mushroom_block[down=true,east=false,north=false,south=false,up=true,west=true]", + "4520": "minecraft:brown_mushroom_block[down=true,east=false,north=false,south=false,up=true,west=false]", + "4521": "minecraft:brown_mushroom_block[down=true,east=false,north=false,south=false,up=false,west=true]", + "4522": "minecraft:brown_mushroom_block[down=true,east=false,north=false,south=false,up=false,west=false]", + "4523": "minecraft:brown_mushroom_block[down=false,east=true,north=true,south=true,up=true,west=true]", + "4524": "minecraft:brown_mushroom_block[down=false,east=true,north=true,south=true,up=true,west=false]", + "4525": "minecraft:brown_mushroom_block[down=false,east=true,north=true,south=true,up=false,west=true]", + "4526": "minecraft:brown_mushroom_block[down=false,east=true,north=true,south=true,up=false,west=false]", + "4527": "minecraft:brown_mushroom_block[down=false,east=true,north=true,south=false,up=true,west=true]", + "4528": "minecraft:brown_mushroom_block[down=false,east=true,north=true,south=false,up=true,west=false]", + "4529": "minecraft:brown_mushroom_block[down=false,east=true,north=true,south=false,up=false,west=true]", + "4530": "minecraft:brown_mushroom_block[down=false,east=true,north=true,south=false,up=false,west=false]", + "4531": "minecraft:brown_mushroom_block[down=false,east=true,north=false,south=true,up=true,west=true]", + "4532": "minecraft:brown_mushroom_block[down=false,east=true,north=false,south=true,up=true,west=false]", + "4533": "minecraft:brown_mushroom_block[down=false,east=true,north=false,south=true,up=false,west=true]", + "4534": "minecraft:brown_mushroom_block[down=false,east=true,north=false,south=true,up=false,west=false]", + "4535": "minecraft:brown_mushroom_block[down=false,east=true,north=false,south=false,up=true,west=true]", + "4536": "minecraft:brown_mushroom_block[down=false,east=true,north=false,south=false,up=true,west=false]", + "4537": "minecraft:brown_mushroom_block[down=false,east=true,north=false,south=false,up=false,west=true]", + "4538": "minecraft:brown_mushroom_block[down=false,east=true,north=false,south=false,up=false,west=false]", + "4539": "minecraft:brown_mushroom_block[down=false,east=false,north=true,south=true,up=true,west=true]", + "4540": "minecraft:brown_mushroom_block[down=false,east=false,north=true,south=true,up=true,west=false]", + "4541": "minecraft:brown_mushroom_block[down=false,east=false,north=true,south=true,up=false,west=true]", + "4542": "minecraft:brown_mushroom_block[down=false,east=false,north=true,south=true,up=false,west=false]", + "4543": "minecraft:brown_mushroom_block[down=false,east=false,north=true,south=false,up=true,west=true]", + "4544": "minecraft:brown_mushroom_block[down=false,east=false,north=true,south=false,up=true,west=false]", + "4545": "minecraft:brown_mushroom_block[down=false,east=false,north=true,south=false,up=false,west=true]", + "4546": "minecraft:brown_mushroom_block[down=false,east=false,north=true,south=false,up=false,west=false]", + "4547": "minecraft:brown_mushroom_block[down=false,east=false,north=false,south=true,up=true,west=true]", + "4548": "minecraft:brown_mushroom_block[down=false,east=false,north=false,south=true,up=true,west=false]", + "4549": "minecraft:brown_mushroom_block[down=false,east=false,north=false,south=true,up=false,west=true]", + "4550": "minecraft:brown_mushroom_block[down=false,east=false,north=false,south=true,up=false,west=false]", + "4551": "minecraft:brown_mushroom_block[down=false,east=false,north=false,south=false,up=true,west=true]", + "4552": "minecraft:brown_mushroom_block[down=false,east=false,north=false,south=false,up=true,west=false]", + "4553": "minecraft:brown_mushroom_block[down=false,east=false,north=false,south=false,up=false,west=true]", + "4554": "minecraft:brown_mushroom_block[down=false,east=false,north=false,south=false,up=false,west=false]", + "4555": "minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=true]", + "4556": "minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=true,west=false]", + "4557": "minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=false,west=true]", + "4558": "minecraft:red_mushroom_block[down=true,east=true,north=true,south=true,up=false,west=false]", + "4559": "minecraft:red_mushroom_block[down=true,east=true,north=true,south=false,up=true,west=true]", + "4560": "minecraft:red_mushroom_block[down=true,east=true,north=true,south=false,up=true,west=false]", + "4561": "minecraft:red_mushroom_block[down=true,east=true,north=true,south=false,up=false,west=true]", + "4562": "minecraft:red_mushroom_block[down=true,east=true,north=true,south=false,up=false,west=false]", + "4563": "minecraft:red_mushroom_block[down=true,east=true,north=false,south=true,up=true,west=true]", + "4564": "minecraft:red_mushroom_block[down=true,east=true,north=false,south=true,up=true,west=false]", + "4565": "minecraft:red_mushroom_block[down=true,east=true,north=false,south=true,up=false,west=true]", + "4566": "minecraft:red_mushroom_block[down=true,east=true,north=false,south=true,up=false,west=false]", + "4567": "minecraft:red_mushroom_block[down=true,east=true,north=false,south=false,up=true,west=true]", + "4568": "minecraft:red_mushroom_block[down=true,east=true,north=false,south=false,up=true,west=false]", + "4569": "minecraft:red_mushroom_block[down=true,east=true,north=false,south=false,up=false,west=true]", + "4570": "minecraft:red_mushroom_block[down=true,east=true,north=false,south=false,up=false,west=false]", + "4571": "minecraft:red_mushroom_block[down=true,east=false,north=true,south=true,up=true,west=true]", + "4572": "minecraft:red_mushroom_block[down=true,east=false,north=true,south=true,up=true,west=false]", + "4573": "minecraft:red_mushroom_block[down=true,east=false,north=true,south=true,up=false,west=true]", + "4574": "minecraft:red_mushroom_block[down=true,east=false,north=true,south=true,up=false,west=false]", + "4575": "minecraft:red_mushroom_block[down=true,east=false,north=true,south=false,up=true,west=true]", + "4576": "minecraft:red_mushroom_block[down=true,east=false,north=true,south=false,up=true,west=false]", + "4577": "minecraft:red_mushroom_block[down=true,east=false,north=true,south=false,up=false,west=true]", + "4578": "minecraft:red_mushroom_block[down=true,east=false,north=true,south=false,up=false,west=false]", + "4579": "minecraft:red_mushroom_block[down=true,east=false,north=false,south=true,up=true,west=true]", + "4580": "minecraft:red_mushroom_block[down=true,east=false,north=false,south=true,up=true,west=false]", + "4581": "minecraft:red_mushroom_block[down=true,east=false,north=false,south=true,up=false,west=true]", + "4582": "minecraft:red_mushroom_block[down=true,east=false,north=false,south=true,up=false,west=false]", + "4583": "minecraft:red_mushroom_block[down=true,east=false,north=false,south=false,up=true,west=true]", + "4584": "minecraft:red_mushroom_block[down=true,east=false,north=false,south=false,up=true,west=false]", + "4585": "minecraft:red_mushroom_block[down=true,east=false,north=false,south=false,up=false,west=true]", + "4586": "minecraft:red_mushroom_block[down=true,east=false,north=false,south=false,up=false,west=false]", + "4587": "minecraft:red_mushroom_block[down=false,east=true,north=true,south=true,up=true,west=true]", + "4588": "minecraft:red_mushroom_block[down=false,east=true,north=true,south=true,up=true,west=false]", + "4589": "minecraft:red_mushroom_block[down=false,east=true,north=true,south=true,up=false,west=true]", + "4590": "minecraft:red_mushroom_block[down=false,east=true,north=true,south=true,up=false,west=false]", + "4591": "minecraft:red_mushroom_block[down=false,east=true,north=true,south=false,up=true,west=true]", + "4592": "minecraft:red_mushroom_block[down=false,east=true,north=true,south=false,up=true,west=false]", + "4593": "minecraft:red_mushroom_block[down=false,east=true,north=true,south=false,up=false,west=true]", + "4594": "minecraft:red_mushroom_block[down=false,east=true,north=true,south=false,up=false,west=false]", + "4595": "minecraft:red_mushroom_block[down=false,east=true,north=false,south=true,up=true,west=true]", + "4596": "minecraft:red_mushroom_block[down=false,east=true,north=false,south=true,up=true,west=false]", + "4597": "minecraft:red_mushroom_block[down=false,east=true,north=false,south=true,up=false,west=true]", + "4598": "minecraft:red_mushroom_block[down=false,east=true,north=false,south=true,up=false,west=false]", + "4599": "minecraft:red_mushroom_block[down=false,east=true,north=false,south=false,up=true,west=true]", + "4600": "minecraft:red_mushroom_block[down=false,east=true,north=false,south=false,up=true,west=false]", + "4601": "minecraft:red_mushroom_block[down=false,east=true,north=false,south=false,up=false,west=true]", + "4602": "minecraft:red_mushroom_block[down=false,east=true,north=false,south=false,up=false,west=false]", + "4603": "minecraft:red_mushroom_block[down=false,east=false,north=true,south=true,up=true,west=true]", + "4604": "minecraft:red_mushroom_block[down=false,east=false,north=true,south=true,up=true,west=false]", + "4605": "minecraft:red_mushroom_block[down=false,east=false,north=true,south=true,up=false,west=true]", + "4606": "minecraft:red_mushroom_block[down=false,east=false,north=true,south=true,up=false,west=false]", + "4607": "minecraft:red_mushroom_block[down=false,east=false,north=true,south=false,up=true,west=true]", + "4608": "minecraft:red_mushroom_block[down=false,east=false,north=true,south=false,up=true,west=false]", + "4609": "minecraft:red_mushroom_block[down=false,east=false,north=true,south=false,up=false,west=true]", + "4610": "minecraft:red_mushroom_block[down=false,east=false,north=true,south=false,up=false,west=false]", + "4611": "minecraft:red_mushroom_block[down=false,east=false,north=false,south=true,up=true,west=true]", + "4612": "minecraft:red_mushroom_block[down=false,east=false,north=false,south=true,up=true,west=false]", + "4613": "minecraft:red_mushroom_block[down=false,east=false,north=false,south=true,up=false,west=true]", + "4614": "minecraft:red_mushroom_block[down=false,east=false,north=false,south=true,up=false,west=false]", + "4615": "minecraft:red_mushroom_block[down=false,east=false,north=false,south=false,up=true,west=true]", + "4616": "minecraft:red_mushroom_block[down=false,east=false,north=false,south=false,up=true,west=false]", + "4617": "minecraft:red_mushroom_block[down=false,east=false,north=false,south=false,up=false,west=true]", + "4618": "minecraft:red_mushroom_block[down=false,east=false,north=false,south=false,up=false,west=false]", + "4619": "minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=true]", + "4620": "minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=true,west=false]", + "4621": "minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=false,west=true]", + "4622": "minecraft:mushroom_stem[down=true,east=true,north=true,south=true,up=false,west=false]", + "4623": "minecraft:mushroom_stem[down=true,east=true,north=true,south=false,up=true,west=true]", + "4624": "minecraft:mushroom_stem[down=true,east=true,north=true,south=false,up=true,west=false]", + "4625": "minecraft:mushroom_stem[down=true,east=true,north=true,south=false,up=false,west=true]", + "4626": "minecraft:mushroom_stem[down=true,east=true,north=true,south=false,up=false,west=false]", + "4627": "minecraft:mushroom_stem[down=true,east=true,north=false,south=true,up=true,west=true]", + "4628": "minecraft:mushroom_stem[down=true,east=true,north=false,south=true,up=true,west=false]", + "4629": "minecraft:mushroom_stem[down=true,east=true,north=false,south=true,up=false,west=true]", + "4630": "minecraft:mushroom_stem[down=true,east=true,north=false,south=true,up=false,west=false]", + "4631": "minecraft:mushroom_stem[down=true,east=true,north=false,south=false,up=true,west=true]", + "4632": "minecraft:mushroom_stem[down=true,east=true,north=false,south=false,up=true,west=false]", + "4633": "minecraft:mushroom_stem[down=true,east=true,north=false,south=false,up=false,west=true]", + "4634": "minecraft:mushroom_stem[down=true,east=true,north=false,south=false,up=false,west=false]", + "4635": "minecraft:mushroom_stem[down=true,east=false,north=true,south=true,up=true,west=true]", + "4636": "minecraft:mushroom_stem[down=true,east=false,north=true,south=true,up=true,west=false]", + "4637": "minecraft:mushroom_stem[down=true,east=false,north=true,south=true,up=false,west=true]", + "4638": "minecraft:mushroom_stem[down=true,east=false,north=true,south=true,up=false,west=false]", + "4639": "minecraft:mushroom_stem[down=true,east=false,north=true,south=false,up=true,west=true]", + "4640": "minecraft:mushroom_stem[down=true,east=false,north=true,south=false,up=true,west=false]", + "4641": "minecraft:mushroom_stem[down=true,east=false,north=true,south=false,up=false,west=true]", + "4642": "minecraft:mushroom_stem[down=true,east=false,north=true,south=false,up=false,west=false]", + "4643": "minecraft:mushroom_stem[down=true,east=false,north=false,south=true,up=true,west=true]", + "4644": "minecraft:mushroom_stem[down=true,east=false,north=false,south=true,up=true,west=false]", + "4645": "minecraft:mushroom_stem[down=true,east=false,north=false,south=true,up=false,west=true]", + "4646": "minecraft:mushroom_stem[down=true,east=false,north=false,south=true,up=false,west=false]", + "4647": "minecraft:mushroom_stem[down=true,east=false,north=false,south=false,up=true,west=true]", + "4648": "minecraft:mushroom_stem[down=true,east=false,north=false,south=false,up=true,west=false]", + "4649": "minecraft:mushroom_stem[down=true,east=false,north=false,south=false,up=false,west=true]", + "4650": "minecraft:mushroom_stem[down=true,east=false,north=false,south=false,up=false,west=false]", + "4651": "minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=true,west=true]", + "4652": "minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=true,west=false]", + "4653": "minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=false,west=true]", + "4654": "minecraft:mushroom_stem[down=false,east=true,north=true,south=true,up=false,west=false]", + "4655": "minecraft:mushroom_stem[down=false,east=true,north=true,south=false,up=true,west=true]", + "4656": "minecraft:mushroom_stem[down=false,east=true,north=true,south=false,up=true,west=false]", + "4657": "minecraft:mushroom_stem[down=false,east=true,north=true,south=false,up=false,west=true]", + "4658": "minecraft:mushroom_stem[down=false,east=true,north=true,south=false,up=false,west=false]", + "4659": "minecraft:mushroom_stem[down=false,east=true,north=false,south=true,up=true,west=true]", + "4660": "minecraft:mushroom_stem[down=false,east=true,north=false,south=true,up=true,west=false]", + "4661": "minecraft:mushroom_stem[down=false,east=true,north=false,south=true,up=false,west=true]", + "4662": "minecraft:mushroom_stem[down=false,east=true,north=false,south=true,up=false,west=false]", + "4663": "minecraft:mushroom_stem[down=false,east=true,north=false,south=false,up=true,west=true]", + "4664": "minecraft:mushroom_stem[down=false,east=true,north=false,south=false,up=true,west=false]", + "4665": "minecraft:mushroom_stem[down=false,east=true,north=false,south=false,up=false,west=true]", + "4666": "minecraft:mushroom_stem[down=false,east=true,north=false,south=false,up=false,west=false]", + "4667": "minecraft:mushroom_stem[down=false,east=false,north=true,south=true,up=true,west=true]", + "4668": "minecraft:mushroom_stem[down=false,east=false,north=true,south=true,up=true,west=false]", + "4669": "minecraft:mushroom_stem[down=false,east=false,north=true,south=true,up=false,west=true]", + "4670": "minecraft:mushroom_stem[down=false,east=false,north=true,south=true,up=false,west=false]", + "4671": "minecraft:mushroom_stem[down=false,east=false,north=true,south=false,up=true,west=true]", + "4672": "minecraft:mushroom_stem[down=false,east=false,north=true,south=false,up=true,west=false]", + "4673": "minecraft:mushroom_stem[down=false,east=false,north=true,south=false,up=false,west=true]", + "4674": "minecraft:mushroom_stem[down=false,east=false,north=true,south=false,up=false,west=false]", + "4675": "minecraft:mushroom_stem[down=false,east=false,north=false,south=true,up=true,west=true]", + "4676": "minecraft:mushroom_stem[down=false,east=false,north=false,south=true,up=true,west=false]", + "4677": "minecraft:mushroom_stem[down=false,east=false,north=false,south=true,up=false,west=true]", + "4678": "minecraft:mushroom_stem[down=false,east=false,north=false,south=true,up=false,west=false]", + "4679": "minecraft:mushroom_stem[down=false,east=false,north=false,south=false,up=true,west=true]", + "4680": "minecraft:mushroom_stem[down=false,east=false,north=false,south=false,up=true,west=false]", + "4681": "minecraft:mushroom_stem[down=false,east=false,north=false,south=false,up=false,west=true]", + "4682": "minecraft:mushroom_stem[down=false,east=false,north=false,south=false,up=false,west=false]", + "4683": "minecraft:iron_bars[east=true,north=true,south=true,waterlogged=true,west=true]", + "4684": "minecraft:iron_bars[east=true,north=true,south=true,waterlogged=true,west=false]", + "4685": "minecraft:iron_bars[east=true,north=true,south=true,waterlogged=false,west=true]", + "4686": "minecraft:iron_bars[east=true,north=true,south=true,waterlogged=false,west=false]", + "4687": "minecraft:iron_bars[east=true,north=true,south=false,waterlogged=true,west=true]", + "4688": "minecraft:iron_bars[east=true,north=true,south=false,waterlogged=true,west=false]", + "4689": "minecraft:iron_bars[east=true,north=true,south=false,waterlogged=false,west=true]", + "4690": "minecraft:iron_bars[east=true,north=true,south=false,waterlogged=false,west=false]", + "4691": "minecraft:iron_bars[east=true,north=false,south=true,waterlogged=true,west=true]", + "4692": "minecraft:iron_bars[east=true,north=false,south=true,waterlogged=true,west=false]", + "4693": "minecraft:iron_bars[east=true,north=false,south=true,waterlogged=false,west=true]", + "4694": "minecraft:iron_bars[east=true,north=false,south=true,waterlogged=false,west=false]", + "4695": "minecraft:iron_bars[east=true,north=false,south=false,waterlogged=true,west=true]", + "4696": "minecraft:iron_bars[east=true,north=false,south=false,waterlogged=true,west=false]", + "4697": "minecraft:iron_bars[east=true,north=false,south=false,waterlogged=false,west=true]", + "4698": "minecraft:iron_bars[east=true,north=false,south=false,waterlogged=false,west=false]", + "4699": "minecraft:iron_bars[east=false,north=true,south=true,waterlogged=true,west=true]", + "4700": "minecraft:iron_bars[east=false,north=true,south=true,waterlogged=true,west=false]", + "4701": "minecraft:iron_bars[east=false,north=true,south=true,waterlogged=false,west=true]", + "4702": "minecraft:iron_bars[east=false,north=true,south=true,waterlogged=false,west=false]", + "4703": "minecraft:iron_bars[east=false,north=true,south=false,waterlogged=true,west=true]", + "4704": "minecraft:iron_bars[east=false,north=true,south=false,waterlogged=true,west=false]", + "4705": "minecraft:iron_bars[east=false,north=true,south=false,waterlogged=false,west=true]", + "4706": "minecraft:iron_bars[east=false,north=true,south=false,waterlogged=false,west=false]", + "4707": "minecraft:iron_bars[east=false,north=false,south=true,waterlogged=true,west=true]", + "4708": "minecraft:iron_bars[east=false,north=false,south=true,waterlogged=true,west=false]", + "4709": "minecraft:iron_bars[east=false,north=false,south=true,waterlogged=false,west=true]", + "4710": "minecraft:iron_bars[east=false,north=false,south=true,waterlogged=false,west=false]", + "4711": "minecraft:iron_bars[east=false,north=false,south=false,waterlogged=true,west=true]", + "4712": "minecraft:iron_bars[east=false,north=false,south=false,waterlogged=true,west=false]", + "4713": "minecraft:iron_bars[east=false,north=false,south=false,waterlogged=false,west=true]", + "4714": "minecraft:iron_bars[east=false,north=false,south=false,waterlogged=false,west=false]", + "4715": "minecraft:glass_pane[east=true,north=true,south=true,waterlogged=true,west=true]", + "4716": "minecraft:glass_pane[east=true,north=true,south=true,waterlogged=true,west=false]", + "4717": "minecraft:glass_pane[east=true,north=true,south=true,waterlogged=false,west=true]", + "4718": "minecraft:glass_pane[east=true,north=true,south=true,waterlogged=false,west=false]", + "4719": "minecraft:glass_pane[east=true,north=true,south=false,waterlogged=true,west=true]", + "4720": "minecraft:glass_pane[east=true,north=true,south=false,waterlogged=true,west=false]", + "4721": "minecraft:glass_pane[east=true,north=true,south=false,waterlogged=false,west=true]", + "4722": "minecraft:glass_pane[east=true,north=true,south=false,waterlogged=false,west=false]", + "4723": "minecraft:glass_pane[east=true,north=false,south=true,waterlogged=true,west=true]", + "4724": "minecraft:glass_pane[east=true,north=false,south=true,waterlogged=true,west=false]", + "4725": "minecraft:glass_pane[east=true,north=false,south=true,waterlogged=false,west=true]", + "4726": "minecraft:glass_pane[east=true,north=false,south=true,waterlogged=false,west=false]", + "4727": "minecraft:glass_pane[east=true,north=false,south=false,waterlogged=true,west=true]", + "4728": "minecraft:glass_pane[east=true,north=false,south=false,waterlogged=true,west=false]", + "4729": "minecraft:glass_pane[east=true,north=false,south=false,waterlogged=false,west=true]", + "4730": "minecraft:glass_pane[east=true,north=false,south=false,waterlogged=false,west=false]", + "4731": "minecraft:glass_pane[east=false,north=true,south=true,waterlogged=true,west=true]", + "4732": "minecraft:glass_pane[east=false,north=true,south=true,waterlogged=true,west=false]", + "4733": "minecraft:glass_pane[east=false,north=true,south=true,waterlogged=false,west=true]", + "4734": "minecraft:glass_pane[east=false,north=true,south=true,waterlogged=false,west=false]", + "4735": "minecraft:glass_pane[east=false,north=true,south=false,waterlogged=true,west=true]", + "4736": "minecraft:glass_pane[east=false,north=true,south=false,waterlogged=true,west=false]", + "4737": "minecraft:glass_pane[east=false,north=true,south=false,waterlogged=false,west=true]", + "4738": "minecraft:glass_pane[east=false,north=true,south=false,waterlogged=false,west=false]", + "4739": "minecraft:glass_pane[east=false,north=false,south=true,waterlogged=true,west=true]", + "4740": "minecraft:glass_pane[east=false,north=false,south=true,waterlogged=true,west=false]", + "4741": "minecraft:glass_pane[east=false,north=false,south=true,waterlogged=false,west=true]", + "4742": "minecraft:glass_pane[east=false,north=false,south=true,waterlogged=false,west=false]", + "4743": "minecraft:glass_pane[east=false,north=false,south=false,waterlogged=true,west=true]", + "4744": "minecraft:glass_pane[east=false,north=false,south=false,waterlogged=true,west=false]", + "4745": "minecraft:glass_pane[east=false,north=false,south=false,waterlogged=false,west=true]", + "4746": "minecraft:glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]", + "4747": "minecraft:melon", + "4748": "minecraft:attached_pumpkin_stem[facing=north]", + "4749": "minecraft:attached_pumpkin_stem[facing=south]", + "4750": "minecraft:attached_pumpkin_stem[facing=west]", + "4751": "minecraft:attached_pumpkin_stem[facing=east]", + "4752": "minecraft:attached_melon_stem[facing=north]", + "4753": "minecraft:attached_melon_stem[facing=south]", + "4754": "minecraft:attached_melon_stem[facing=west]", + "4755": "minecraft:attached_melon_stem[facing=east]", + "4756": "minecraft:pumpkin_stem[age=0]", + "4757": "minecraft:pumpkin_stem[age=1]", + "4758": "minecraft:pumpkin_stem[age=2]", + "4759": "minecraft:pumpkin_stem[age=3]", + "4760": "minecraft:pumpkin_stem[age=4]", + "4761": "minecraft:pumpkin_stem[age=5]", + "4762": "minecraft:pumpkin_stem[age=6]", + "4763": "minecraft:pumpkin_stem[age=7]", + "4764": "minecraft:melon_stem[age=0]", + "4765": "minecraft:melon_stem[age=1]", + "4766": "minecraft:melon_stem[age=2]", + "4767": "minecraft:melon_stem[age=3]", + "4768": "minecraft:melon_stem[age=4]", + "4769": "minecraft:melon_stem[age=5]", + "4770": "minecraft:melon_stem[age=6]", + "4771": "minecraft:melon_stem[age=7]", + "4772": "minecraft:vine[east=true,north=true,south=true,up=true,west=true]", + "4773": "minecraft:vine[east=true,north=true,south=true,up=true,west=false]", + "4774": "minecraft:vine[east=true,north=true,south=true,up=false,west=true]", + "4775": "minecraft:vine[east=true,north=true,south=true,up=false,west=false]", + "4776": "minecraft:vine[east=true,north=true,south=false,up=true,west=true]", + "4777": "minecraft:vine[east=true,north=true,south=false,up=true,west=false]", + "4778": "minecraft:vine[east=true,north=true,south=false,up=false,west=true]", + "4779": "minecraft:vine[east=true,north=true,south=false,up=false,west=false]", + "4780": "minecraft:vine[east=true,north=false,south=true,up=true,west=true]", + "4781": "minecraft:vine[east=true,north=false,south=true,up=true,west=false]", + "4782": "minecraft:vine[east=true,north=false,south=true,up=false,west=true]", + "4783": "minecraft:vine[east=true,north=false,south=true,up=false,west=false]", + "4784": "minecraft:vine[east=true,north=false,south=false,up=true,west=true]", + "4785": "minecraft:vine[east=true,north=false,south=false,up=true,west=false]", + "4786": "minecraft:vine[east=true,north=false,south=false,up=false,west=true]", + "4787": "minecraft:vine[east=true,north=false,south=false,up=false,west=false]", + "4788": "minecraft:vine[east=false,north=true,south=true,up=true,west=true]", + "4789": "minecraft:vine[east=false,north=true,south=true,up=true,west=false]", + "4790": "minecraft:vine[east=false,north=true,south=true,up=false,west=true]", + "4791": "minecraft:vine[east=false,north=true,south=true,up=false,west=false]", + "4792": "minecraft:vine[east=false,north=true,south=false,up=true,west=true]", + "4793": "minecraft:vine[east=false,north=true,south=false,up=true,west=false]", + "4794": "minecraft:vine[east=false,north=true,south=false,up=false,west=true]", + "4795": "minecraft:vine[east=false,north=true,south=false,up=false,west=false]", + "4796": "minecraft:vine[east=false,north=false,south=true,up=true,west=true]", + "4797": "minecraft:vine[east=false,north=false,south=true,up=true,west=false]", + "4798": "minecraft:vine[east=false,north=false,south=true,up=false,west=true]", + "4799": "minecraft:vine[east=false,north=false,south=true,up=false,west=false]", + "4800": "minecraft:vine[east=false,north=false,south=false,up=true,west=true]", + "4801": "minecraft:vine[east=false,north=false,south=false,up=true,west=false]", + "4802": "minecraft:vine[east=false,north=false,south=false,up=false,west=true]", + "4803": "minecraft:vine[east=false,north=false,south=false,up=false,west=false]", + "4804": "minecraft:oak_fence_gate[facing=north,in_wall=true,open=true,powered=true]", + "4805": "minecraft:oak_fence_gate[facing=north,in_wall=true,open=true,powered=false]", + "4806": "minecraft:oak_fence_gate[facing=north,in_wall=true,open=false,powered=true]", + "4807": "minecraft:oak_fence_gate[facing=north,in_wall=true,open=false,powered=false]", + "4808": "minecraft:oak_fence_gate[facing=north,in_wall=false,open=true,powered=true]", + "4809": "minecraft:oak_fence_gate[facing=north,in_wall=false,open=true,powered=false]", + "4810": "minecraft:oak_fence_gate[facing=north,in_wall=false,open=false,powered=true]", + "4811": "minecraft:oak_fence_gate[facing=north,in_wall=false,open=false,powered=false]", + "4812": "minecraft:oak_fence_gate[facing=south,in_wall=true,open=true,powered=true]", + "4813": "minecraft:oak_fence_gate[facing=south,in_wall=true,open=true,powered=false]", + "4814": "minecraft:oak_fence_gate[facing=south,in_wall=true,open=false,powered=true]", + "4815": "minecraft:oak_fence_gate[facing=south,in_wall=true,open=false,powered=false]", + "4816": "minecraft:oak_fence_gate[facing=south,in_wall=false,open=true,powered=true]", + "4817": "minecraft:oak_fence_gate[facing=south,in_wall=false,open=true,powered=false]", + "4818": "minecraft:oak_fence_gate[facing=south,in_wall=false,open=false,powered=true]", + "4819": "minecraft:oak_fence_gate[facing=south,in_wall=false,open=false,powered=false]", + "4820": "minecraft:oak_fence_gate[facing=west,in_wall=true,open=true,powered=true]", + "4821": "minecraft:oak_fence_gate[facing=west,in_wall=true,open=true,powered=false]", + "4822": "minecraft:oak_fence_gate[facing=west,in_wall=true,open=false,powered=true]", + "4823": "minecraft:oak_fence_gate[facing=west,in_wall=true,open=false,powered=false]", + "4824": "minecraft:oak_fence_gate[facing=west,in_wall=false,open=true,powered=true]", + "4825": "minecraft:oak_fence_gate[facing=west,in_wall=false,open=true,powered=false]", + "4826": "minecraft:oak_fence_gate[facing=west,in_wall=false,open=false,powered=true]", + "4827": "minecraft:oak_fence_gate[facing=west,in_wall=false,open=false,powered=false]", + "4828": "minecraft:oak_fence_gate[facing=east,in_wall=true,open=true,powered=true]", + "4829": "minecraft:oak_fence_gate[facing=east,in_wall=true,open=true,powered=false]", + "4830": "minecraft:oak_fence_gate[facing=east,in_wall=true,open=false,powered=true]", + "4831": "minecraft:oak_fence_gate[facing=east,in_wall=true,open=false,powered=false]", + "4832": "minecraft:oak_fence_gate[facing=east,in_wall=false,open=true,powered=true]", + "4833": "minecraft:oak_fence_gate[facing=east,in_wall=false,open=true,powered=false]", + "4834": "minecraft:oak_fence_gate[facing=east,in_wall=false,open=false,powered=true]", + "4835": "minecraft:oak_fence_gate[facing=east,in_wall=false,open=false,powered=false]", + "4836": "minecraft:brick_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "4837": "minecraft:brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "4838": "minecraft:brick_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "4839": "minecraft:brick_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "4840": "minecraft:brick_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "4841": "minecraft:brick_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "4842": "minecraft:brick_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "4843": "minecraft:brick_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "4844": "minecraft:brick_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "4845": "minecraft:brick_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "4846": "minecraft:brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "4847": "minecraft:brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "4848": "minecraft:brick_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "4849": "minecraft:brick_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "4850": "minecraft:brick_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "4851": "minecraft:brick_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "4852": "minecraft:brick_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "4853": "minecraft:brick_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "4854": "minecraft:brick_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "4855": "minecraft:brick_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "4856": "minecraft:brick_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "4857": "minecraft:brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "4858": "minecraft:brick_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "4859": "minecraft:brick_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "4860": "minecraft:brick_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "4861": "minecraft:brick_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "4862": "minecraft:brick_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "4863": "minecraft:brick_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "4864": "minecraft:brick_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "4865": "minecraft:brick_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "4866": "minecraft:brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "4867": "minecraft:brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "4868": "minecraft:brick_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "4869": "minecraft:brick_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "4870": "minecraft:brick_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "4871": "minecraft:brick_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "4872": "minecraft:brick_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "4873": "minecraft:brick_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "4874": "minecraft:brick_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "4875": "minecraft:brick_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "4876": "minecraft:brick_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "4877": "minecraft:brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "4878": "minecraft:brick_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "4879": "minecraft:brick_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "4880": "minecraft:brick_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "4881": "minecraft:brick_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "4882": "minecraft:brick_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "4883": "minecraft:brick_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "4884": "minecraft:brick_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "4885": "minecraft:brick_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "4886": "minecraft:brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "4887": "minecraft:brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "4888": "minecraft:brick_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "4889": "minecraft:brick_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "4890": "minecraft:brick_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "4891": "minecraft:brick_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "4892": "minecraft:brick_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "4893": "minecraft:brick_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "4894": "minecraft:brick_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "4895": "minecraft:brick_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "4896": "minecraft:brick_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "4897": "minecraft:brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "4898": "minecraft:brick_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "4899": "minecraft:brick_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "4900": "minecraft:brick_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "4901": "minecraft:brick_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "4902": "minecraft:brick_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "4903": "minecraft:brick_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "4904": "minecraft:brick_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "4905": "minecraft:brick_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "4906": "minecraft:brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "4907": "minecraft:brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "4908": "minecraft:brick_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "4909": "minecraft:brick_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "4910": "minecraft:brick_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "4911": "minecraft:brick_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "4912": "minecraft:brick_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "4913": "minecraft:brick_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "4914": "minecraft:brick_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "4915": "minecraft:brick_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "4916": "minecraft:stone_brick_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "4917": "minecraft:stone_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "4918": "minecraft:stone_brick_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "4919": "minecraft:stone_brick_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "4920": "minecraft:stone_brick_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "4921": "minecraft:stone_brick_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "4922": "minecraft:stone_brick_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "4923": "minecraft:stone_brick_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "4924": "minecraft:stone_brick_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "4925": "minecraft:stone_brick_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "4926": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "4927": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "4928": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "4929": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "4930": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "4931": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "4932": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "4933": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "4934": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "4935": "minecraft:stone_brick_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "4936": "minecraft:stone_brick_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "4937": "minecraft:stone_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "4938": "minecraft:stone_brick_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "4939": "minecraft:stone_brick_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "4940": "minecraft:stone_brick_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "4941": "minecraft:stone_brick_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "4942": "minecraft:stone_brick_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "4943": "minecraft:stone_brick_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "4944": "minecraft:stone_brick_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "4945": "minecraft:stone_brick_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "4946": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "4947": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "4948": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "4949": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "4950": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "4951": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "4952": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "4953": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "4954": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "4955": "minecraft:stone_brick_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "4956": "minecraft:stone_brick_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "4957": "minecraft:stone_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "4958": "minecraft:stone_brick_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "4959": "minecraft:stone_brick_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "4960": "minecraft:stone_brick_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "4961": "minecraft:stone_brick_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "4962": "minecraft:stone_brick_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "4963": "minecraft:stone_brick_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "4964": "minecraft:stone_brick_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "4965": "minecraft:stone_brick_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "4966": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "4967": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "4968": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "4969": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "4970": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "4971": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "4972": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "4973": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "4974": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "4975": "minecraft:stone_brick_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "4976": "minecraft:stone_brick_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "4977": "minecraft:stone_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "4978": "minecraft:stone_brick_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "4979": "minecraft:stone_brick_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "4980": "minecraft:stone_brick_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "4981": "minecraft:stone_brick_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "4982": "minecraft:stone_brick_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "4983": "minecraft:stone_brick_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "4984": "minecraft:stone_brick_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "4985": "minecraft:stone_brick_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "4986": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "4987": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "4988": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "4989": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "4990": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "4991": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "4992": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "4993": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "4994": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "4995": "minecraft:stone_brick_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "4996": "minecraft:mycelium[snowy=true]", + "4997": "minecraft:mycelium[snowy=false]", + "4998": "minecraft:lily_pad", + "4999": "minecraft:nether_bricks", + "5000": "minecraft:nether_brick_fence[east=true,north=true,south=true,waterlogged=true,west=true]", + "5001": "minecraft:nether_brick_fence[east=true,north=true,south=true,waterlogged=true,west=false]", + "5002": "minecraft:nether_brick_fence[east=true,north=true,south=true,waterlogged=false,west=true]", + "5003": "minecraft:nether_brick_fence[east=true,north=true,south=true,waterlogged=false,west=false]", + "5004": "minecraft:nether_brick_fence[east=true,north=true,south=false,waterlogged=true,west=true]", + "5005": "minecraft:nether_brick_fence[east=true,north=true,south=false,waterlogged=true,west=false]", + "5006": "minecraft:nether_brick_fence[east=true,north=true,south=false,waterlogged=false,west=true]", + "5007": "minecraft:nether_brick_fence[east=true,north=true,south=false,waterlogged=false,west=false]", + "5008": "minecraft:nether_brick_fence[east=true,north=false,south=true,waterlogged=true,west=true]", + "5009": "minecraft:nether_brick_fence[east=true,north=false,south=true,waterlogged=true,west=false]", + "5010": "minecraft:nether_brick_fence[east=true,north=false,south=true,waterlogged=false,west=true]", + "5011": "minecraft:nether_brick_fence[east=true,north=false,south=true,waterlogged=false,west=false]", + "5012": "minecraft:nether_brick_fence[east=true,north=false,south=false,waterlogged=true,west=true]", + "5013": "minecraft:nether_brick_fence[east=true,north=false,south=false,waterlogged=true,west=false]", + "5014": "minecraft:nether_brick_fence[east=true,north=false,south=false,waterlogged=false,west=true]", + "5015": "minecraft:nether_brick_fence[east=true,north=false,south=false,waterlogged=false,west=false]", + "5016": "minecraft:nether_brick_fence[east=false,north=true,south=true,waterlogged=true,west=true]", + "5017": "minecraft:nether_brick_fence[east=false,north=true,south=true,waterlogged=true,west=false]", + "5018": "minecraft:nether_brick_fence[east=false,north=true,south=true,waterlogged=false,west=true]", + "5019": "minecraft:nether_brick_fence[east=false,north=true,south=true,waterlogged=false,west=false]", + "5020": "minecraft:nether_brick_fence[east=false,north=true,south=false,waterlogged=true,west=true]", + "5021": "minecraft:nether_brick_fence[east=false,north=true,south=false,waterlogged=true,west=false]", + "5022": "minecraft:nether_brick_fence[east=false,north=true,south=false,waterlogged=false,west=true]", + "5023": "minecraft:nether_brick_fence[east=false,north=true,south=false,waterlogged=false,west=false]", + "5024": "minecraft:nether_brick_fence[east=false,north=false,south=true,waterlogged=true,west=true]", + "5025": "minecraft:nether_brick_fence[east=false,north=false,south=true,waterlogged=true,west=false]", + "5026": "minecraft:nether_brick_fence[east=false,north=false,south=true,waterlogged=false,west=true]", + "5027": "minecraft:nether_brick_fence[east=false,north=false,south=true,waterlogged=false,west=false]", + "5028": "minecraft:nether_brick_fence[east=false,north=false,south=false,waterlogged=true,west=true]", + "5029": "minecraft:nether_brick_fence[east=false,north=false,south=false,waterlogged=true,west=false]", + "5030": "minecraft:nether_brick_fence[east=false,north=false,south=false,waterlogged=false,west=true]", + "5031": "minecraft:nether_brick_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "5032": "minecraft:nether_brick_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "5033": "minecraft:nether_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "5034": "minecraft:nether_brick_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "5035": "minecraft:nether_brick_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "5036": "minecraft:nether_brick_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "5037": "minecraft:nether_brick_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "5038": "minecraft:nether_brick_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "5039": "minecraft:nether_brick_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "5040": "minecraft:nether_brick_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "5041": "minecraft:nether_brick_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "5042": "minecraft:nether_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "5043": "minecraft:nether_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "5044": "minecraft:nether_brick_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "5045": "minecraft:nether_brick_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "5046": "minecraft:nether_brick_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "5047": "minecraft:nether_brick_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "5048": "minecraft:nether_brick_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "5049": "minecraft:nether_brick_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "5050": "minecraft:nether_brick_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "5051": "minecraft:nether_brick_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "5052": "minecraft:nether_brick_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "5053": "minecraft:nether_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "5054": "minecraft:nether_brick_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "5055": "minecraft:nether_brick_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "5056": "minecraft:nether_brick_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "5057": "minecraft:nether_brick_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "5058": "minecraft:nether_brick_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "5059": "minecraft:nether_brick_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "5060": "minecraft:nether_brick_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "5061": "minecraft:nether_brick_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "5062": "minecraft:nether_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "5063": "minecraft:nether_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "5064": "minecraft:nether_brick_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "5065": "minecraft:nether_brick_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "5066": "minecraft:nether_brick_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "5067": "minecraft:nether_brick_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "5068": "minecraft:nether_brick_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "5069": "minecraft:nether_brick_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "5070": "minecraft:nether_brick_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "5071": "minecraft:nether_brick_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "5072": "minecraft:nether_brick_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "5073": "minecraft:nether_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "5074": "minecraft:nether_brick_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "5075": "minecraft:nether_brick_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "5076": "minecraft:nether_brick_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "5077": "minecraft:nether_brick_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "5078": "minecraft:nether_brick_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "5079": "minecraft:nether_brick_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "5080": "minecraft:nether_brick_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "5081": "minecraft:nether_brick_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "5082": "minecraft:nether_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "5083": "minecraft:nether_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "5084": "minecraft:nether_brick_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "5085": "minecraft:nether_brick_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "5086": "minecraft:nether_brick_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "5087": "minecraft:nether_brick_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "5088": "minecraft:nether_brick_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "5089": "minecraft:nether_brick_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "5090": "minecraft:nether_brick_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "5091": "minecraft:nether_brick_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "5092": "minecraft:nether_brick_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "5093": "minecraft:nether_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "5094": "minecraft:nether_brick_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "5095": "minecraft:nether_brick_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "5096": "minecraft:nether_brick_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "5097": "minecraft:nether_brick_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "5098": "minecraft:nether_brick_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "5099": "minecraft:nether_brick_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "5100": "minecraft:nether_brick_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "5101": "minecraft:nether_brick_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "5102": "minecraft:nether_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "5103": "minecraft:nether_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "5104": "minecraft:nether_brick_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "5105": "minecraft:nether_brick_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "5106": "minecraft:nether_brick_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "5107": "minecraft:nether_brick_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "5108": "minecraft:nether_brick_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "5109": "minecraft:nether_brick_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "5110": "minecraft:nether_brick_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "5111": "minecraft:nether_brick_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "5112": "minecraft:nether_wart[age=0]", + "5113": "minecraft:nether_wart[age=1]", + "5114": "minecraft:nether_wart[age=2]", + "5115": "minecraft:nether_wart[age=3]", + "5116": "minecraft:enchanting_table", + "5117": "minecraft:brewing_stand[has_bottle_0=true,has_bottle_1=true,has_bottle_2=true]", + "5118": "minecraft:brewing_stand[has_bottle_0=true,has_bottle_1=true,has_bottle_2=false]", + "5119": "minecraft:brewing_stand[has_bottle_0=true,has_bottle_1=false,has_bottle_2=true]", + "5120": "minecraft:brewing_stand[has_bottle_0=true,has_bottle_1=false,has_bottle_2=false]", + "5121": "minecraft:brewing_stand[has_bottle_0=false,has_bottle_1=true,has_bottle_2=true]", + "5122": "minecraft:brewing_stand[has_bottle_0=false,has_bottle_1=true,has_bottle_2=false]", + "5123": "minecraft:brewing_stand[has_bottle_0=false,has_bottle_1=false,has_bottle_2=true]", + "5124": "minecraft:brewing_stand[has_bottle_0=false,has_bottle_1=false,has_bottle_2=false]", + "5125": "minecraft:cauldron[level=0]", + "5126": "minecraft:cauldron[level=1]", + "5127": "minecraft:cauldron[level=2]", + "5128": "minecraft:cauldron[level=3]", + "5129": "minecraft:end_portal", + "5130": "minecraft:end_portal_frame[eye=true,facing=north]", + "5131": "minecraft:end_portal_frame[eye=true,facing=south]", + "5132": "minecraft:end_portal_frame[eye=true,facing=west]", + "5133": "minecraft:end_portal_frame[eye=true,facing=east]", + "5134": "minecraft:end_portal_frame[eye=false,facing=north]", + "5135": "minecraft:end_portal_frame[eye=false,facing=south]", + "5136": "minecraft:end_portal_frame[eye=false,facing=west]", + "5137": "minecraft:end_portal_frame[eye=false,facing=east]", + "5138": "minecraft:end_stone", + "5139": "minecraft:dragon_egg", + "5140": "minecraft:redstone_lamp[lit=true]", + "5141": "minecraft:redstone_lamp[lit=false]", + "5142": "minecraft:cocoa[age=0,facing=north]", + "5143": "minecraft:cocoa[age=0,facing=south]", + "5144": "minecraft:cocoa[age=0,facing=west]", + "5145": "minecraft:cocoa[age=0,facing=east]", + "5146": "minecraft:cocoa[age=1,facing=north]", + "5147": "minecraft:cocoa[age=1,facing=south]", + "5148": "minecraft:cocoa[age=1,facing=west]", + "5149": "minecraft:cocoa[age=1,facing=east]", + "5150": "minecraft:cocoa[age=2,facing=north]", + "5151": "minecraft:cocoa[age=2,facing=south]", + "5152": "minecraft:cocoa[age=2,facing=west]", + "5153": "minecraft:cocoa[age=2,facing=east]", + "5154": "minecraft:sandstone_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "5155": "minecraft:sandstone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "5156": "minecraft:sandstone_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "5157": "minecraft:sandstone_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "5158": "minecraft:sandstone_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "5159": "minecraft:sandstone_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "5160": "minecraft:sandstone_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "5161": "minecraft:sandstone_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "5162": "minecraft:sandstone_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "5163": "minecraft:sandstone_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "5164": "minecraft:sandstone_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "5165": "minecraft:sandstone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "5166": "minecraft:sandstone_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "5167": "minecraft:sandstone_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "5168": "minecraft:sandstone_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "5169": "minecraft:sandstone_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "5170": "minecraft:sandstone_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "5171": "minecraft:sandstone_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "5172": "minecraft:sandstone_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "5173": "minecraft:sandstone_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "5174": "minecraft:sandstone_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "5175": "minecraft:sandstone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "5176": "minecraft:sandstone_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "5177": "minecraft:sandstone_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "5178": "minecraft:sandstone_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "5179": "minecraft:sandstone_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "5180": "minecraft:sandstone_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "5181": "minecraft:sandstone_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "5182": "minecraft:sandstone_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "5183": "minecraft:sandstone_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "5184": "minecraft:sandstone_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "5185": "minecraft:sandstone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "5186": "minecraft:sandstone_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "5187": "minecraft:sandstone_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "5188": "minecraft:sandstone_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "5189": "minecraft:sandstone_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "5190": "minecraft:sandstone_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "5191": "minecraft:sandstone_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "5192": "minecraft:sandstone_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "5193": "minecraft:sandstone_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "5194": "minecraft:sandstone_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "5195": "minecraft:sandstone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "5196": "minecraft:sandstone_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "5197": "minecraft:sandstone_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "5198": "minecraft:sandstone_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "5199": "minecraft:sandstone_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "5200": "minecraft:sandstone_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "5201": "minecraft:sandstone_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "5202": "minecraft:sandstone_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "5203": "minecraft:sandstone_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "5204": "minecraft:sandstone_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "5205": "minecraft:sandstone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "5206": "minecraft:sandstone_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "5207": "minecraft:sandstone_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "5208": "minecraft:sandstone_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "5209": "minecraft:sandstone_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "5210": "minecraft:sandstone_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "5211": "minecraft:sandstone_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "5212": "minecraft:sandstone_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "5213": "minecraft:sandstone_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "5214": "minecraft:sandstone_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "5215": "minecraft:sandstone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "5216": "minecraft:sandstone_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "5217": "minecraft:sandstone_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "5218": "minecraft:sandstone_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "5219": "minecraft:sandstone_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "5220": "minecraft:sandstone_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "5221": "minecraft:sandstone_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "5222": "minecraft:sandstone_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "5223": "minecraft:sandstone_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "5224": "minecraft:sandstone_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "5225": "minecraft:sandstone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "5226": "minecraft:sandstone_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "5227": "minecraft:sandstone_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "5228": "minecraft:sandstone_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "5229": "minecraft:sandstone_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "5230": "minecraft:sandstone_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "5231": "minecraft:sandstone_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "5232": "minecraft:sandstone_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "5233": "minecraft:sandstone_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "5234": "minecraft:emerald_ore", + "5235": "minecraft:ender_chest[facing=north,waterlogged=true]", + "5236": "minecraft:ender_chest[facing=north,waterlogged=false]", + "5237": "minecraft:ender_chest[facing=south,waterlogged=true]", + "5238": "minecraft:ender_chest[facing=south,waterlogged=false]", + "5239": "minecraft:ender_chest[facing=west,waterlogged=true]", + "5240": "minecraft:ender_chest[facing=west,waterlogged=false]", + "5241": "minecraft:ender_chest[facing=east,waterlogged=true]", + "5242": "minecraft:ender_chest[facing=east,waterlogged=false]", + "5243": "minecraft:tripwire_hook[attached=true,facing=north,powered=true]", + "5244": "minecraft:tripwire_hook[attached=true,facing=north,powered=false]", + "5245": "minecraft:tripwire_hook[attached=true,facing=south,powered=true]", + "5246": "minecraft:tripwire_hook[attached=true,facing=south,powered=false]", + "5247": "minecraft:tripwire_hook[attached=true,facing=west,powered=true]", + "5248": "minecraft:tripwire_hook[attached=true,facing=west,powered=false]", + "5249": "minecraft:tripwire_hook[attached=true,facing=east,powered=true]", + "5250": "minecraft:tripwire_hook[attached=true,facing=east,powered=false]", + "5251": "minecraft:tripwire_hook[attached=false,facing=north,powered=true]", + "5252": "minecraft:tripwire_hook[attached=false,facing=north,powered=false]", + "5253": "minecraft:tripwire_hook[attached=false,facing=south,powered=true]", + "5254": "minecraft:tripwire_hook[attached=false,facing=south,powered=false]", + "5255": "minecraft:tripwire_hook[attached=false,facing=west,powered=true]", + "5256": "minecraft:tripwire_hook[attached=false,facing=west,powered=false]", + "5257": "minecraft:tripwire_hook[attached=false,facing=east,powered=true]", + "5258": "minecraft:tripwire_hook[attached=false,facing=east,powered=false]", + "5259": "minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=true]", + "5260": "minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=true,west=false]", + "5261": "minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=false,west=true]", + "5262": "minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,powered=true,south=false,west=false]", + "5263": "minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,powered=false,south=true,west=true]", + "5264": "minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,powered=false,south=true,west=false]", + "5265": "minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,powered=false,south=false,west=true]", + "5266": "minecraft:tripwire[attached=true,disarmed=true,east=true,north=true,powered=false,south=false,west=false]", + "5267": "minecraft:tripwire[attached=true,disarmed=true,east=true,north=false,powered=true,south=true,west=true]", + "5268": "minecraft:tripwire[attached=true,disarmed=true,east=true,north=false,powered=true,south=true,west=false]", + "5269": "minecraft:tripwire[attached=true,disarmed=true,east=true,north=false,powered=true,south=false,west=true]", + "5270": "minecraft:tripwire[attached=true,disarmed=true,east=true,north=false,powered=true,south=false,west=false]", + "5271": "minecraft:tripwire[attached=true,disarmed=true,east=true,north=false,powered=false,south=true,west=true]", + "5272": "minecraft:tripwire[attached=true,disarmed=true,east=true,north=false,powered=false,south=true,west=false]", + "5273": "minecraft:tripwire[attached=true,disarmed=true,east=true,north=false,powered=false,south=false,west=true]", + "5274": "minecraft:tripwire[attached=true,disarmed=true,east=true,north=false,powered=false,south=false,west=false]", + "5275": "minecraft:tripwire[attached=true,disarmed=true,east=false,north=true,powered=true,south=true,west=true]", + "5276": "minecraft:tripwire[attached=true,disarmed=true,east=false,north=true,powered=true,south=true,west=false]", + "5277": "minecraft:tripwire[attached=true,disarmed=true,east=false,north=true,powered=true,south=false,west=true]", + "5278": "minecraft:tripwire[attached=true,disarmed=true,east=false,north=true,powered=true,south=false,west=false]", + "5279": "minecraft:tripwire[attached=true,disarmed=true,east=false,north=true,powered=false,south=true,west=true]", + "5280": "minecraft:tripwire[attached=true,disarmed=true,east=false,north=true,powered=false,south=true,west=false]", + "5281": "minecraft:tripwire[attached=true,disarmed=true,east=false,north=true,powered=false,south=false,west=true]", + "5282": "minecraft:tripwire[attached=true,disarmed=true,east=false,north=true,powered=false,south=false,west=false]", + "5283": "minecraft:tripwire[attached=true,disarmed=true,east=false,north=false,powered=true,south=true,west=true]", + "5284": "minecraft:tripwire[attached=true,disarmed=true,east=false,north=false,powered=true,south=true,west=false]", + "5285": "minecraft:tripwire[attached=true,disarmed=true,east=false,north=false,powered=true,south=false,west=true]", + "5286": "minecraft:tripwire[attached=true,disarmed=true,east=false,north=false,powered=true,south=false,west=false]", + "5287": "minecraft:tripwire[attached=true,disarmed=true,east=false,north=false,powered=false,south=true,west=true]", + "5288": "minecraft:tripwire[attached=true,disarmed=true,east=false,north=false,powered=false,south=true,west=false]", + "5289": "minecraft:tripwire[attached=true,disarmed=true,east=false,north=false,powered=false,south=false,west=true]", + "5290": "minecraft:tripwire[attached=true,disarmed=true,east=false,north=false,powered=false,south=false,west=false]", + "5291": "minecraft:tripwire[attached=true,disarmed=false,east=true,north=true,powered=true,south=true,west=true]", + "5292": "minecraft:tripwire[attached=true,disarmed=false,east=true,north=true,powered=true,south=true,west=false]", + "5293": "minecraft:tripwire[attached=true,disarmed=false,east=true,north=true,powered=true,south=false,west=true]", + "5294": "minecraft:tripwire[attached=true,disarmed=false,east=true,north=true,powered=true,south=false,west=false]", + "5295": "minecraft:tripwire[attached=true,disarmed=false,east=true,north=true,powered=false,south=true,west=true]", + "5296": "minecraft:tripwire[attached=true,disarmed=false,east=true,north=true,powered=false,south=true,west=false]", + "5297": "minecraft:tripwire[attached=true,disarmed=false,east=true,north=true,powered=false,south=false,west=true]", + "5298": "minecraft:tripwire[attached=true,disarmed=false,east=true,north=true,powered=false,south=false,west=false]", + "5299": "minecraft:tripwire[attached=true,disarmed=false,east=true,north=false,powered=true,south=true,west=true]", + "5300": "minecraft:tripwire[attached=true,disarmed=false,east=true,north=false,powered=true,south=true,west=false]", + "5301": "minecraft:tripwire[attached=true,disarmed=false,east=true,north=false,powered=true,south=false,west=true]", + "5302": "minecraft:tripwire[attached=true,disarmed=false,east=true,north=false,powered=true,south=false,west=false]", + "5303": "minecraft:tripwire[attached=true,disarmed=false,east=true,north=false,powered=false,south=true,west=true]", + "5304": "minecraft:tripwire[attached=true,disarmed=false,east=true,north=false,powered=false,south=true,west=false]", + "5305": "minecraft:tripwire[attached=true,disarmed=false,east=true,north=false,powered=false,south=false,west=true]", + "5306": "minecraft:tripwire[attached=true,disarmed=false,east=true,north=false,powered=false,south=false,west=false]", + "5307": "minecraft:tripwire[attached=true,disarmed=false,east=false,north=true,powered=true,south=true,west=true]", + "5308": "minecraft:tripwire[attached=true,disarmed=false,east=false,north=true,powered=true,south=true,west=false]", + "5309": "minecraft:tripwire[attached=true,disarmed=false,east=false,north=true,powered=true,south=false,west=true]", + "5310": "minecraft:tripwire[attached=true,disarmed=false,east=false,north=true,powered=true,south=false,west=false]", + "5311": "minecraft:tripwire[attached=true,disarmed=false,east=false,north=true,powered=false,south=true,west=true]", + "5312": "minecraft:tripwire[attached=true,disarmed=false,east=false,north=true,powered=false,south=true,west=false]", + "5313": "minecraft:tripwire[attached=true,disarmed=false,east=false,north=true,powered=false,south=false,west=true]", + "5314": "minecraft:tripwire[attached=true,disarmed=false,east=false,north=true,powered=false,south=false,west=false]", + "5315": "minecraft:tripwire[attached=true,disarmed=false,east=false,north=false,powered=true,south=true,west=true]", + "5316": "minecraft:tripwire[attached=true,disarmed=false,east=false,north=false,powered=true,south=true,west=false]", + "5317": "minecraft:tripwire[attached=true,disarmed=false,east=false,north=false,powered=true,south=false,west=true]", + "5318": "minecraft:tripwire[attached=true,disarmed=false,east=false,north=false,powered=true,south=false,west=false]", + "5319": "minecraft:tripwire[attached=true,disarmed=false,east=false,north=false,powered=false,south=true,west=true]", + "5320": "minecraft:tripwire[attached=true,disarmed=false,east=false,north=false,powered=false,south=true,west=false]", + "5321": "minecraft:tripwire[attached=true,disarmed=false,east=false,north=false,powered=false,south=false,west=true]", + "5322": "minecraft:tripwire[attached=true,disarmed=false,east=false,north=false,powered=false,south=false,west=false]", + "5323": "minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=true]", + "5324": "minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=true,west=false]", + "5325": "minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=false,west=true]", + "5326": "minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,powered=true,south=false,west=false]", + "5327": "minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,powered=false,south=true,west=true]", + "5328": "minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,powered=false,south=true,west=false]", + "5329": "minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,powered=false,south=false,west=true]", + "5330": "minecraft:tripwire[attached=false,disarmed=true,east=true,north=true,powered=false,south=false,west=false]", + "5331": "minecraft:tripwire[attached=false,disarmed=true,east=true,north=false,powered=true,south=true,west=true]", + "5332": "minecraft:tripwire[attached=false,disarmed=true,east=true,north=false,powered=true,south=true,west=false]", + "5333": "minecraft:tripwire[attached=false,disarmed=true,east=true,north=false,powered=true,south=false,west=true]", + "5334": "minecraft:tripwire[attached=false,disarmed=true,east=true,north=false,powered=true,south=false,west=false]", + "5335": "minecraft:tripwire[attached=false,disarmed=true,east=true,north=false,powered=false,south=true,west=true]", + "5336": "minecraft:tripwire[attached=false,disarmed=true,east=true,north=false,powered=false,south=true,west=false]", + "5337": "minecraft:tripwire[attached=false,disarmed=true,east=true,north=false,powered=false,south=false,west=true]", + "5338": "minecraft:tripwire[attached=false,disarmed=true,east=true,north=false,powered=false,south=false,west=false]", + "5339": "minecraft:tripwire[attached=false,disarmed=true,east=false,north=true,powered=true,south=true,west=true]", + "5340": "minecraft:tripwire[attached=false,disarmed=true,east=false,north=true,powered=true,south=true,west=false]", + "5341": "minecraft:tripwire[attached=false,disarmed=true,east=false,north=true,powered=true,south=false,west=true]", + "5342": "minecraft:tripwire[attached=false,disarmed=true,east=false,north=true,powered=true,south=false,west=false]", + "5343": "minecraft:tripwire[attached=false,disarmed=true,east=false,north=true,powered=false,south=true,west=true]", + "5344": "minecraft:tripwire[attached=false,disarmed=true,east=false,north=true,powered=false,south=true,west=false]", + "5345": "minecraft:tripwire[attached=false,disarmed=true,east=false,north=true,powered=false,south=false,west=true]", + "5346": "minecraft:tripwire[attached=false,disarmed=true,east=false,north=true,powered=false,south=false,west=false]", + "5347": "minecraft:tripwire[attached=false,disarmed=true,east=false,north=false,powered=true,south=true,west=true]", + "5348": "minecraft:tripwire[attached=false,disarmed=true,east=false,north=false,powered=true,south=true,west=false]", + "5349": "minecraft:tripwire[attached=false,disarmed=true,east=false,north=false,powered=true,south=false,west=true]", + "5350": "minecraft:tripwire[attached=false,disarmed=true,east=false,north=false,powered=true,south=false,west=false]", + "5351": "minecraft:tripwire[attached=false,disarmed=true,east=false,north=false,powered=false,south=true,west=true]", + "5352": "minecraft:tripwire[attached=false,disarmed=true,east=false,north=false,powered=false,south=true,west=false]", + "5353": "minecraft:tripwire[attached=false,disarmed=true,east=false,north=false,powered=false,south=false,west=true]", + "5354": "minecraft:tripwire[attached=false,disarmed=true,east=false,north=false,powered=false,south=false,west=false]", + "5355": "minecraft:tripwire[attached=false,disarmed=false,east=true,north=true,powered=true,south=true,west=true]", + "5356": "minecraft:tripwire[attached=false,disarmed=false,east=true,north=true,powered=true,south=true,west=false]", + "5357": "minecraft:tripwire[attached=false,disarmed=false,east=true,north=true,powered=true,south=false,west=true]", + "5358": "minecraft:tripwire[attached=false,disarmed=false,east=true,north=true,powered=true,south=false,west=false]", + "5359": "minecraft:tripwire[attached=false,disarmed=false,east=true,north=true,powered=false,south=true,west=true]", + "5360": "minecraft:tripwire[attached=false,disarmed=false,east=true,north=true,powered=false,south=true,west=false]", + "5361": "minecraft:tripwire[attached=false,disarmed=false,east=true,north=true,powered=false,south=false,west=true]", + "5362": "minecraft:tripwire[attached=false,disarmed=false,east=true,north=true,powered=false,south=false,west=false]", + "5363": "minecraft:tripwire[attached=false,disarmed=false,east=true,north=false,powered=true,south=true,west=true]", + "5364": "minecraft:tripwire[attached=false,disarmed=false,east=true,north=false,powered=true,south=true,west=false]", + "5365": "minecraft:tripwire[attached=false,disarmed=false,east=true,north=false,powered=true,south=false,west=true]", + "5366": "minecraft:tripwire[attached=false,disarmed=false,east=true,north=false,powered=true,south=false,west=false]", + "5367": "minecraft:tripwire[attached=false,disarmed=false,east=true,north=false,powered=false,south=true,west=true]", + "5368": "minecraft:tripwire[attached=false,disarmed=false,east=true,north=false,powered=false,south=true,west=false]", + "5369": "minecraft:tripwire[attached=false,disarmed=false,east=true,north=false,powered=false,south=false,west=true]", + "5370": "minecraft:tripwire[attached=false,disarmed=false,east=true,north=false,powered=false,south=false,west=false]", + "5371": "minecraft:tripwire[attached=false,disarmed=false,east=false,north=true,powered=true,south=true,west=true]", + "5372": "minecraft:tripwire[attached=false,disarmed=false,east=false,north=true,powered=true,south=true,west=false]", + "5373": "minecraft:tripwire[attached=false,disarmed=false,east=false,north=true,powered=true,south=false,west=true]", + "5374": "minecraft:tripwire[attached=false,disarmed=false,east=false,north=true,powered=true,south=false,west=false]", + "5375": "minecraft:tripwire[attached=false,disarmed=false,east=false,north=true,powered=false,south=true,west=true]", + "5376": "minecraft:tripwire[attached=false,disarmed=false,east=false,north=true,powered=false,south=true,west=false]", + "5377": "minecraft:tripwire[attached=false,disarmed=false,east=false,north=true,powered=false,south=false,west=true]", + "5378": "minecraft:tripwire[attached=false,disarmed=false,east=false,north=true,powered=false,south=false,west=false]", + "5379": "minecraft:tripwire[attached=false,disarmed=false,east=false,north=false,powered=true,south=true,west=true]", + "5380": "minecraft:tripwire[attached=false,disarmed=false,east=false,north=false,powered=true,south=true,west=false]", + "5381": "minecraft:tripwire[attached=false,disarmed=false,east=false,north=false,powered=true,south=false,west=true]", + "5382": "minecraft:tripwire[attached=false,disarmed=false,east=false,north=false,powered=true,south=false,west=false]", + "5383": "minecraft:tripwire[attached=false,disarmed=false,east=false,north=false,powered=false,south=true,west=true]", + "5384": "minecraft:tripwire[attached=false,disarmed=false,east=false,north=false,powered=false,south=true,west=false]", + "5385": "minecraft:tripwire[attached=false,disarmed=false,east=false,north=false,powered=false,south=false,west=true]", + "5386": "minecraft:tripwire[attached=false,disarmed=false,east=false,north=false,powered=false,south=false,west=false]", + "5387": "minecraft:emerald_block", + "5388": "minecraft:spruce_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "5389": "minecraft:spruce_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "5390": "minecraft:spruce_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "5391": "minecraft:spruce_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "5392": "minecraft:spruce_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "5393": "minecraft:spruce_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "5394": "minecraft:spruce_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "5395": "minecraft:spruce_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "5396": "minecraft:spruce_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "5397": "minecraft:spruce_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "5398": "minecraft:spruce_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "5399": "minecraft:spruce_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "5400": "minecraft:spruce_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "5401": "minecraft:spruce_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "5402": "minecraft:spruce_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "5403": "minecraft:spruce_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "5404": "minecraft:spruce_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "5405": "minecraft:spruce_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "5406": "minecraft:spruce_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "5407": "minecraft:spruce_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "5408": "minecraft:spruce_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "5409": "minecraft:spruce_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "5410": "minecraft:spruce_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "5411": "minecraft:spruce_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "5412": "minecraft:spruce_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "5413": "minecraft:spruce_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "5414": "minecraft:spruce_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "5415": "minecraft:spruce_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "5416": "minecraft:spruce_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "5417": "minecraft:spruce_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "5418": "minecraft:spruce_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "5419": "minecraft:spruce_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "5420": "minecraft:spruce_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "5421": "minecraft:spruce_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "5422": "minecraft:spruce_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "5423": "minecraft:spruce_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "5424": "minecraft:spruce_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "5425": "minecraft:spruce_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "5426": "minecraft:spruce_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "5427": "minecraft:spruce_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "5428": "minecraft:spruce_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "5429": "minecraft:spruce_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "5430": "minecraft:spruce_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "5431": "minecraft:spruce_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "5432": "minecraft:spruce_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "5433": "minecraft:spruce_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "5434": "minecraft:spruce_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "5435": "minecraft:spruce_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "5436": "minecraft:spruce_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "5437": "minecraft:spruce_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "5438": "minecraft:spruce_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "5439": "minecraft:spruce_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "5440": "minecraft:spruce_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "5441": "minecraft:spruce_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "5442": "minecraft:spruce_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "5443": "minecraft:spruce_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "5444": "minecraft:spruce_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "5445": "minecraft:spruce_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "5446": "minecraft:spruce_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "5447": "minecraft:spruce_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "5448": "minecraft:spruce_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "5449": "minecraft:spruce_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "5450": "minecraft:spruce_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "5451": "minecraft:spruce_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "5452": "minecraft:spruce_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "5453": "minecraft:spruce_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "5454": "minecraft:spruce_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "5455": "minecraft:spruce_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "5456": "minecraft:spruce_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "5457": "minecraft:spruce_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "5458": "minecraft:spruce_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "5459": "minecraft:spruce_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "5460": "minecraft:spruce_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "5461": "minecraft:spruce_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "5462": "minecraft:spruce_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "5463": "minecraft:spruce_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "5464": "minecraft:spruce_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "5465": "minecraft:spruce_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "5466": "minecraft:spruce_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "5467": "minecraft:spruce_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "5468": "minecraft:birch_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "5469": "minecraft:birch_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "5470": "minecraft:birch_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "5471": "minecraft:birch_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "5472": "minecraft:birch_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "5473": "minecraft:birch_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "5474": "minecraft:birch_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "5475": "minecraft:birch_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "5476": "minecraft:birch_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "5477": "minecraft:birch_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "5478": "minecraft:birch_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "5479": "minecraft:birch_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "5480": "minecraft:birch_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "5481": "minecraft:birch_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "5482": "minecraft:birch_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "5483": "minecraft:birch_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "5484": "minecraft:birch_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "5485": "minecraft:birch_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "5486": "minecraft:birch_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "5487": "minecraft:birch_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "5488": "minecraft:birch_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "5489": "minecraft:birch_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "5490": "minecraft:birch_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "5491": "minecraft:birch_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "5492": "minecraft:birch_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "5493": "minecraft:birch_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "5494": "minecraft:birch_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "5495": "minecraft:birch_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "5496": "minecraft:birch_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "5497": "minecraft:birch_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "5498": "minecraft:birch_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "5499": "minecraft:birch_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "5500": "minecraft:birch_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "5501": "minecraft:birch_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "5502": "minecraft:birch_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "5503": "minecraft:birch_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "5504": "minecraft:birch_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "5505": "minecraft:birch_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "5506": "minecraft:birch_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "5507": "minecraft:birch_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "5508": "minecraft:birch_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "5509": "minecraft:birch_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "5510": "minecraft:birch_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "5511": "minecraft:birch_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "5512": "minecraft:birch_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "5513": "minecraft:birch_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "5514": "minecraft:birch_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "5515": "minecraft:birch_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "5516": "minecraft:birch_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "5517": "minecraft:birch_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "5518": "minecraft:birch_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "5519": "minecraft:birch_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "5520": "minecraft:birch_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "5521": "minecraft:birch_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "5522": "minecraft:birch_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "5523": "minecraft:birch_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "5524": "minecraft:birch_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "5525": "minecraft:birch_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "5526": "minecraft:birch_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "5527": "minecraft:birch_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "5528": "minecraft:birch_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "5529": "minecraft:birch_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "5530": "minecraft:birch_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "5531": "minecraft:birch_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "5532": "minecraft:birch_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "5533": "minecraft:birch_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "5534": "minecraft:birch_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "5535": "minecraft:birch_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "5536": "minecraft:birch_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "5537": "minecraft:birch_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "5538": "minecraft:birch_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "5539": "minecraft:birch_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "5540": "minecraft:birch_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "5541": "minecraft:birch_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "5542": "minecraft:birch_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "5543": "minecraft:birch_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "5544": "minecraft:birch_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "5545": "minecraft:birch_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "5546": "minecraft:birch_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "5547": "minecraft:birch_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "5548": "minecraft:jungle_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "5549": "minecraft:jungle_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "5550": "minecraft:jungle_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "5551": "minecraft:jungle_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "5552": "minecraft:jungle_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "5553": "minecraft:jungle_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "5554": "minecraft:jungle_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "5555": "minecraft:jungle_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "5556": "minecraft:jungle_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "5557": "minecraft:jungle_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "5558": "minecraft:jungle_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "5559": "minecraft:jungle_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "5560": "minecraft:jungle_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "5561": "minecraft:jungle_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "5562": "minecraft:jungle_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "5563": "minecraft:jungle_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "5564": "minecraft:jungle_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "5565": "minecraft:jungle_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "5566": "minecraft:jungle_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "5567": "minecraft:jungle_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "5568": "minecraft:jungle_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "5569": "minecraft:jungle_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "5570": "minecraft:jungle_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "5571": "minecraft:jungle_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "5572": "minecraft:jungle_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "5573": "minecraft:jungle_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "5574": "minecraft:jungle_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "5575": "minecraft:jungle_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "5576": "minecraft:jungle_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "5577": "minecraft:jungle_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "5578": "minecraft:jungle_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "5579": "minecraft:jungle_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "5580": "minecraft:jungle_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "5581": "minecraft:jungle_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "5582": "minecraft:jungle_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "5583": "minecraft:jungle_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "5584": "minecraft:jungle_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "5585": "minecraft:jungle_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "5586": "minecraft:jungle_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "5587": "minecraft:jungle_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "5588": "minecraft:jungle_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "5589": "minecraft:jungle_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "5590": "minecraft:jungle_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "5591": "minecraft:jungle_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "5592": "minecraft:jungle_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "5593": "minecraft:jungle_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "5594": "minecraft:jungle_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "5595": "minecraft:jungle_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "5596": "minecraft:jungle_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "5597": "minecraft:jungle_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "5598": "minecraft:jungle_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "5599": "minecraft:jungle_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "5600": "minecraft:jungle_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "5601": "minecraft:jungle_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "5602": "minecraft:jungle_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "5603": "minecraft:jungle_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "5604": "minecraft:jungle_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "5605": "minecraft:jungle_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "5606": "minecraft:jungle_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "5607": "minecraft:jungle_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "5608": "minecraft:jungle_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "5609": "minecraft:jungle_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "5610": "minecraft:jungle_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "5611": "minecraft:jungle_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "5612": "minecraft:jungle_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "5613": "minecraft:jungle_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "5614": "minecraft:jungle_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "5615": "minecraft:jungle_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "5616": "minecraft:jungle_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "5617": "minecraft:jungle_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "5618": "minecraft:jungle_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "5619": "minecraft:jungle_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "5620": "minecraft:jungle_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "5621": "minecraft:jungle_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "5622": "minecraft:jungle_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "5623": "minecraft:jungle_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "5624": "minecraft:jungle_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "5625": "minecraft:jungle_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "5626": "minecraft:jungle_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "5627": "minecraft:jungle_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "5628": "minecraft:command_block[conditional=true,facing=north]", + "5629": "minecraft:command_block[conditional=true,facing=east]", + "5630": "minecraft:command_block[conditional=true,facing=south]", + "5631": "minecraft:command_block[conditional=true,facing=west]", + "5632": "minecraft:command_block[conditional=true,facing=up]", + "5633": "minecraft:command_block[conditional=true,facing=down]", + "5634": "minecraft:command_block[conditional=false,facing=north]", + "5635": "minecraft:command_block[conditional=false,facing=east]", + "5636": "minecraft:command_block[conditional=false,facing=south]", + "5637": "minecraft:command_block[conditional=false,facing=west]", + "5638": "minecraft:command_block[conditional=false,facing=up]", + "5639": "minecraft:command_block[conditional=false,facing=down]", + "5640": "minecraft:beacon", + "5641": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=true]", + "5642": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=false]", + "5643": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=true]", + "5644": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=false]", + "5645": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=true]", + "5646": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=false]", + "5647": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=true]", + "5648": "minecraft:cobblestone_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=false]", + "5649": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=true]", + "5650": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=false]", + "5651": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=true]", + "5652": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=false]", + "5653": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=true]", + "5654": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=false]", + "5655": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=true]", + "5656": "minecraft:cobblestone_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=false]", + "5657": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=true]", + "5658": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=false]", + "5659": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=true]", + "5660": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=false]", + "5661": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=true]", + "5662": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=false]", + "5663": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=true]", + "5664": "minecraft:cobblestone_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=false]", + "5665": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=true]", + "5666": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=false]", + "5667": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=true]", + "5668": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=false]", + "5669": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=true]", + "5670": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=false]", + "5671": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=true]", + "5672": "minecraft:cobblestone_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=false]", + "5673": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=true]", + "5674": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=false]", + "5675": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=true]", + "5676": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=false]", + "5677": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=true]", + "5678": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=false]", + "5679": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=true]", + "5680": "minecraft:cobblestone_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=false]", + "5681": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=true]", + "5682": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=false]", + "5683": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=true]", + "5684": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=false]", + "5685": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=true]", + "5686": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=false]", + "5687": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=true]", + "5688": "minecraft:cobblestone_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=false]", + "5689": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=true]", + "5690": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=false]", + "5691": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=true]", + "5692": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=false]", + "5693": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=true]", + "5694": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=false]", + "5695": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=true]", + "5696": "minecraft:cobblestone_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=false]", + "5697": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=true]", + "5698": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=false]", + "5699": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=true]", + "5700": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=false]", + "5701": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=true]", + "5702": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=false]", + "5703": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=true]", + "5704": "minecraft:cobblestone_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=false]", + "5705": "minecraft:mossy_cobblestone_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=true]", + "5706": "minecraft:mossy_cobblestone_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=false]", + "5707": "minecraft:mossy_cobblestone_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=true]", + "5708": "minecraft:mossy_cobblestone_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=false]", + "5709": "minecraft:mossy_cobblestone_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=true]", + "5710": "minecraft:mossy_cobblestone_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=false]", + "5711": "minecraft:mossy_cobblestone_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=true]", + "5712": "minecraft:mossy_cobblestone_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=false]", + "5713": "minecraft:mossy_cobblestone_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=true]", + "5714": "minecraft:mossy_cobblestone_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=false]", + "5715": "minecraft:mossy_cobblestone_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=true]", + "5716": "minecraft:mossy_cobblestone_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=false]", + "5717": "minecraft:mossy_cobblestone_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=true]", + "5718": "minecraft:mossy_cobblestone_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=false]", + "5719": "minecraft:mossy_cobblestone_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=true]", + "5720": "minecraft:mossy_cobblestone_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=false]", + "5721": "minecraft:mossy_cobblestone_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=true]", + "5722": "minecraft:mossy_cobblestone_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=false]", + "5723": "minecraft:mossy_cobblestone_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=true]", + "5724": "minecraft:mossy_cobblestone_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=false]", + "5725": "minecraft:mossy_cobblestone_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=true]", + "5726": "minecraft:mossy_cobblestone_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=false]", + "5727": "minecraft:mossy_cobblestone_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=true]", + "5728": "minecraft:mossy_cobblestone_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=false]", + "5729": "minecraft:mossy_cobblestone_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=true]", + "5730": "minecraft:mossy_cobblestone_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=false]", + "5731": "minecraft:mossy_cobblestone_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=true]", + "5732": "minecraft:mossy_cobblestone_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=false]", + "5733": "minecraft:mossy_cobblestone_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=true]", + "5734": "minecraft:mossy_cobblestone_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=false]", + "5735": "minecraft:mossy_cobblestone_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=true]", + "5736": "minecraft:mossy_cobblestone_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=false]", + "5737": "minecraft:mossy_cobblestone_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=true]", + "5738": "minecraft:mossy_cobblestone_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=false]", + "5739": "minecraft:mossy_cobblestone_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=true]", + "5740": "minecraft:mossy_cobblestone_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=false]", + "5741": "minecraft:mossy_cobblestone_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=true]", + "5742": "minecraft:mossy_cobblestone_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=false]", + "5743": "minecraft:mossy_cobblestone_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=true]", + "5744": "minecraft:mossy_cobblestone_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=false]", + "5745": "minecraft:mossy_cobblestone_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=true]", + "5746": "minecraft:mossy_cobblestone_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=false]", + "5747": "minecraft:mossy_cobblestone_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=true]", + "5748": "minecraft:mossy_cobblestone_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=false]", + "5749": "minecraft:mossy_cobblestone_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=true]", + "5750": "minecraft:mossy_cobblestone_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=false]", + "5751": "minecraft:mossy_cobblestone_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=true]", + "5752": "minecraft:mossy_cobblestone_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=false]", + "5753": "minecraft:mossy_cobblestone_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=true]", + "5754": "minecraft:mossy_cobblestone_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=false]", + "5755": "minecraft:mossy_cobblestone_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=true]", + "5756": "minecraft:mossy_cobblestone_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=false]", + "5757": "minecraft:mossy_cobblestone_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=true]", + "5758": "minecraft:mossy_cobblestone_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=false]", + "5759": "minecraft:mossy_cobblestone_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=true]", + "5760": "minecraft:mossy_cobblestone_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=false]", + "5761": "minecraft:mossy_cobblestone_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=true]", + "5762": "minecraft:mossy_cobblestone_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=false]", + "5763": "minecraft:mossy_cobblestone_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=true]", + "5764": "minecraft:mossy_cobblestone_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=false]", + "5765": "minecraft:mossy_cobblestone_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=true]", + "5766": "minecraft:mossy_cobblestone_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=false]", + "5767": "minecraft:mossy_cobblestone_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=true]", + "5768": "minecraft:mossy_cobblestone_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=false]", + "5769": "minecraft:flower_pot", + "5770": "minecraft:potted_oak_sapling", + "5771": "minecraft:potted_spruce_sapling", + "5772": "minecraft:potted_birch_sapling", + "5773": "minecraft:potted_jungle_sapling", + "5774": "minecraft:potted_acacia_sapling", + "5775": "minecraft:potted_dark_oak_sapling", + "5776": "minecraft:potted_fern", + "5777": "minecraft:potted_dandelion", + "5778": "minecraft:potted_poppy", + "5779": "minecraft:potted_blue_orchid", + "5780": "minecraft:potted_allium", + "5781": "minecraft:potted_azure_bluet", + "5782": "minecraft:potted_red_tulip", + "5783": "minecraft:potted_orange_tulip", + "5784": "minecraft:potted_white_tulip", + "5785": "minecraft:potted_pink_tulip", + "5786": "minecraft:potted_oxeye_daisy", + "5787": "minecraft:potted_cornflower", + "5788": "minecraft:potted_lily_of_the_valley", + "5789": "minecraft:potted_wither_rose", + "5790": "minecraft:potted_red_mushroom", + "5791": "minecraft:potted_brown_mushroom", + "5792": "minecraft:potted_dead_bush", + "5793": "minecraft:potted_cactus", + "5794": "minecraft:carrots[age=0]", + "5795": "minecraft:carrots[age=1]", + "5796": "minecraft:carrots[age=2]", + "5797": "minecraft:carrots[age=3]", + "5798": "minecraft:carrots[age=4]", + "5799": "minecraft:carrots[age=5]", + "5800": "minecraft:carrots[age=6]", + "5801": "minecraft:carrots[age=7]", + "5802": "minecraft:potatoes[age=0]", + "5803": "minecraft:potatoes[age=1]", + "5804": "minecraft:potatoes[age=2]", + "5805": "minecraft:potatoes[age=3]", + "5806": "minecraft:potatoes[age=4]", + "5807": "minecraft:potatoes[age=5]", + "5808": "minecraft:potatoes[age=6]", + "5809": "minecraft:potatoes[age=7]", + "5810": "minecraft:oak_button[face=floor,facing=north,powered=true]", + "5811": "minecraft:oak_button[face=floor,facing=north,powered=false]", + "5812": "minecraft:oak_button[face=floor,facing=south,powered=true]", + "5813": "minecraft:oak_button[face=floor,facing=south,powered=false]", + "5814": "minecraft:oak_button[face=floor,facing=west,powered=true]", + "5815": "minecraft:oak_button[face=floor,facing=west,powered=false]", + "5816": "minecraft:oak_button[face=floor,facing=east,powered=true]", + "5817": "minecraft:oak_button[face=floor,facing=east,powered=false]", + "5818": "minecraft:oak_button[face=wall,facing=north,powered=true]", + "5819": "minecraft:oak_button[face=wall,facing=north,powered=false]", + "5820": "minecraft:oak_button[face=wall,facing=south,powered=true]", + "5821": "minecraft:oak_button[face=wall,facing=south,powered=false]", + "5822": "minecraft:oak_button[face=wall,facing=west,powered=true]", + "5823": "minecraft:oak_button[face=wall,facing=west,powered=false]", + "5824": "minecraft:oak_button[face=wall,facing=east,powered=true]", + "5825": "minecraft:oak_button[face=wall,facing=east,powered=false]", + "5826": "minecraft:oak_button[face=ceiling,facing=north,powered=true]", + "5827": "minecraft:oak_button[face=ceiling,facing=north,powered=false]", + "5828": "minecraft:oak_button[face=ceiling,facing=south,powered=true]", + "5829": "minecraft:oak_button[face=ceiling,facing=south,powered=false]", + "5830": "minecraft:oak_button[face=ceiling,facing=west,powered=true]", + "5831": "minecraft:oak_button[face=ceiling,facing=west,powered=false]", + "5832": "minecraft:oak_button[face=ceiling,facing=east,powered=true]", + "5833": "minecraft:oak_button[face=ceiling,facing=east,powered=false]", + "5834": "minecraft:spruce_button[face=floor,facing=north,powered=true]", + "5835": "minecraft:spruce_button[face=floor,facing=north,powered=false]", + "5836": "minecraft:spruce_button[face=floor,facing=south,powered=true]", + "5837": "minecraft:spruce_button[face=floor,facing=south,powered=false]", + "5838": "minecraft:spruce_button[face=floor,facing=west,powered=true]", + "5839": "minecraft:spruce_button[face=floor,facing=west,powered=false]", + "5840": "minecraft:spruce_button[face=floor,facing=east,powered=true]", + "5841": "minecraft:spruce_button[face=floor,facing=east,powered=false]", + "5842": "minecraft:spruce_button[face=wall,facing=north,powered=true]", + "5843": "minecraft:spruce_button[face=wall,facing=north,powered=false]", + "5844": "minecraft:spruce_button[face=wall,facing=south,powered=true]", + "5845": "minecraft:spruce_button[face=wall,facing=south,powered=false]", + "5846": "minecraft:spruce_button[face=wall,facing=west,powered=true]", + "5847": "minecraft:spruce_button[face=wall,facing=west,powered=false]", + "5848": "minecraft:spruce_button[face=wall,facing=east,powered=true]", + "5849": "minecraft:spruce_button[face=wall,facing=east,powered=false]", + "5850": "minecraft:spruce_button[face=ceiling,facing=north,powered=true]", + "5851": "minecraft:spruce_button[face=ceiling,facing=north,powered=false]", + "5852": "minecraft:spruce_button[face=ceiling,facing=south,powered=true]", + "5853": "minecraft:spruce_button[face=ceiling,facing=south,powered=false]", + "5854": "minecraft:spruce_button[face=ceiling,facing=west,powered=true]", + "5855": "minecraft:spruce_button[face=ceiling,facing=west,powered=false]", + "5856": "minecraft:spruce_button[face=ceiling,facing=east,powered=true]", + "5857": "minecraft:spruce_button[face=ceiling,facing=east,powered=false]", + "5858": "minecraft:birch_button[face=floor,facing=north,powered=true]", + "5859": "minecraft:birch_button[face=floor,facing=north,powered=false]", + "5860": "minecraft:birch_button[face=floor,facing=south,powered=true]", + "5861": "minecraft:birch_button[face=floor,facing=south,powered=false]", + "5862": "minecraft:birch_button[face=floor,facing=west,powered=true]", + "5863": "minecraft:birch_button[face=floor,facing=west,powered=false]", + "5864": "minecraft:birch_button[face=floor,facing=east,powered=true]", + "5865": "minecraft:birch_button[face=floor,facing=east,powered=false]", + "5866": "minecraft:birch_button[face=wall,facing=north,powered=true]", + "5867": "minecraft:birch_button[face=wall,facing=north,powered=false]", + "5868": "minecraft:birch_button[face=wall,facing=south,powered=true]", + "5869": "minecraft:birch_button[face=wall,facing=south,powered=false]", + "5870": "minecraft:birch_button[face=wall,facing=west,powered=true]", + "5871": "minecraft:birch_button[face=wall,facing=west,powered=false]", + "5872": "minecraft:birch_button[face=wall,facing=east,powered=true]", + "5873": "minecraft:birch_button[face=wall,facing=east,powered=false]", + "5874": "minecraft:birch_button[face=ceiling,facing=north,powered=true]", + "5875": "minecraft:birch_button[face=ceiling,facing=north,powered=false]", + "5876": "minecraft:birch_button[face=ceiling,facing=south,powered=true]", + "5877": "minecraft:birch_button[face=ceiling,facing=south,powered=false]", + "5878": "minecraft:birch_button[face=ceiling,facing=west,powered=true]", + "5879": "minecraft:birch_button[face=ceiling,facing=west,powered=false]", + "5880": "minecraft:birch_button[face=ceiling,facing=east,powered=true]", + "5881": "minecraft:birch_button[face=ceiling,facing=east,powered=false]", + "5882": "minecraft:jungle_button[face=floor,facing=north,powered=true]", + "5883": "minecraft:jungle_button[face=floor,facing=north,powered=false]", + "5884": "minecraft:jungle_button[face=floor,facing=south,powered=true]", + "5885": "minecraft:jungle_button[face=floor,facing=south,powered=false]", + "5886": "minecraft:jungle_button[face=floor,facing=west,powered=true]", + "5887": "minecraft:jungle_button[face=floor,facing=west,powered=false]", + "5888": "minecraft:jungle_button[face=floor,facing=east,powered=true]", + "5889": "minecraft:jungle_button[face=floor,facing=east,powered=false]", + "5890": "minecraft:jungle_button[face=wall,facing=north,powered=true]", + "5891": "minecraft:jungle_button[face=wall,facing=north,powered=false]", + "5892": "minecraft:jungle_button[face=wall,facing=south,powered=true]", + "5893": "minecraft:jungle_button[face=wall,facing=south,powered=false]", + "5894": "minecraft:jungle_button[face=wall,facing=west,powered=true]", + "5895": "minecraft:jungle_button[face=wall,facing=west,powered=false]", + "5896": "minecraft:jungle_button[face=wall,facing=east,powered=true]", + "5897": "minecraft:jungle_button[face=wall,facing=east,powered=false]", + "5898": "minecraft:jungle_button[face=ceiling,facing=north,powered=true]", + "5899": "minecraft:jungle_button[face=ceiling,facing=north,powered=false]", + "5900": "minecraft:jungle_button[face=ceiling,facing=south,powered=true]", + "5901": "minecraft:jungle_button[face=ceiling,facing=south,powered=false]", + "5902": "minecraft:jungle_button[face=ceiling,facing=west,powered=true]", + "5903": "minecraft:jungle_button[face=ceiling,facing=west,powered=false]", + "5904": "minecraft:jungle_button[face=ceiling,facing=east,powered=true]", + "5905": "minecraft:jungle_button[face=ceiling,facing=east,powered=false]", + "5906": "minecraft:acacia_button[face=floor,facing=north,powered=true]", + "5907": "minecraft:acacia_button[face=floor,facing=north,powered=false]", + "5908": "minecraft:acacia_button[face=floor,facing=south,powered=true]", + "5909": "minecraft:acacia_button[face=floor,facing=south,powered=false]", + "5910": "minecraft:acacia_button[face=floor,facing=west,powered=true]", + "5911": "minecraft:acacia_button[face=floor,facing=west,powered=false]", + "5912": "minecraft:acacia_button[face=floor,facing=east,powered=true]", + "5913": "minecraft:acacia_button[face=floor,facing=east,powered=false]", + "5914": "minecraft:acacia_button[face=wall,facing=north,powered=true]", + "5915": "minecraft:acacia_button[face=wall,facing=north,powered=false]", + "5916": "minecraft:acacia_button[face=wall,facing=south,powered=true]", + "5917": "minecraft:acacia_button[face=wall,facing=south,powered=false]", + "5918": "minecraft:acacia_button[face=wall,facing=west,powered=true]", + "5919": "minecraft:acacia_button[face=wall,facing=west,powered=false]", + "5920": "minecraft:acacia_button[face=wall,facing=east,powered=true]", + "5921": "minecraft:acacia_button[face=wall,facing=east,powered=false]", + "5922": "minecraft:acacia_button[face=ceiling,facing=north,powered=true]", + "5923": "minecraft:acacia_button[face=ceiling,facing=north,powered=false]", + "5924": "minecraft:acacia_button[face=ceiling,facing=south,powered=true]", + "5925": "minecraft:acacia_button[face=ceiling,facing=south,powered=false]", + "5926": "minecraft:acacia_button[face=ceiling,facing=west,powered=true]", + "5927": "minecraft:acacia_button[face=ceiling,facing=west,powered=false]", + "5928": "minecraft:acacia_button[face=ceiling,facing=east,powered=true]", + "5929": "minecraft:acacia_button[face=ceiling,facing=east,powered=false]", + "5930": "minecraft:dark_oak_button[face=floor,facing=north,powered=true]", + "5931": "minecraft:dark_oak_button[face=floor,facing=north,powered=false]", + "5932": "minecraft:dark_oak_button[face=floor,facing=south,powered=true]", + "5933": "minecraft:dark_oak_button[face=floor,facing=south,powered=false]", + "5934": "minecraft:dark_oak_button[face=floor,facing=west,powered=true]", + "5935": "minecraft:dark_oak_button[face=floor,facing=west,powered=false]", + "5936": "minecraft:dark_oak_button[face=floor,facing=east,powered=true]", + "5937": "minecraft:dark_oak_button[face=floor,facing=east,powered=false]", + "5938": "minecraft:dark_oak_button[face=wall,facing=north,powered=true]", + "5939": "minecraft:dark_oak_button[face=wall,facing=north,powered=false]", + "5940": "minecraft:dark_oak_button[face=wall,facing=south,powered=true]", + "5941": "minecraft:dark_oak_button[face=wall,facing=south,powered=false]", + "5942": "minecraft:dark_oak_button[face=wall,facing=west,powered=true]", + "5943": "minecraft:dark_oak_button[face=wall,facing=west,powered=false]", + "5944": "minecraft:dark_oak_button[face=wall,facing=east,powered=true]", + "5945": "minecraft:dark_oak_button[face=wall,facing=east,powered=false]", + "5946": "minecraft:dark_oak_button[face=ceiling,facing=north,powered=true]", + "5947": "minecraft:dark_oak_button[face=ceiling,facing=north,powered=false]", + "5948": "minecraft:dark_oak_button[face=ceiling,facing=south,powered=true]", + "5949": "minecraft:dark_oak_button[face=ceiling,facing=south,powered=false]", + "5950": "minecraft:dark_oak_button[face=ceiling,facing=west,powered=true]", + "5951": "minecraft:dark_oak_button[face=ceiling,facing=west,powered=false]", + "5952": "minecraft:dark_oak_button[face=ceiling,facing=east,powered=true]", + "5953": "minecraft:dark_oak_button[face=ceiling,facing=east,powered=false]", + "5954": "minecraft:skeleton_skull[rotation=0]", + "5955": "minecraft:skeleton_skull[rotation=1]", + "5956": "minecraft:skeleton_skull[rotation=2]", + "5957": "minecraft:skeleton_skull[rotation=3]", + "5958": "minecraft:skeleton_skull[rotation=4]", + "5959": "minecraft:skeleton_skull[rotation=5]", + "5960": "minecraft:skeleton_skull[rotation=6]", + "5961": "minecraft:skeleton_skull[rotation=7]", + "5962": "minecraft:skeleton_skull[rotation=8]", + "5963": "minecraft:skeleton_skull[rotation=9]", + "5964": "minecraft:skeleton_skull[rotation=10]", + "5965": "minecraft:skeleton_skull[rotation=11]", + "5966": "minecraft:skeleton_skull[rotation=12]", + "5967": "minecraft:skeleton_skull[rotation=13]", + "5968": "minecraft:skeleton_skull[rotation=14]", + "5969": "minecraft:skeleton_skull[rotation=15]", + "5970": "minecraft:skeleton_wall_skull[facing=north]", + "5971": "minecraft:skeleton_wall_skull[facing=south]", + "5972": "minecraft:skeleton_wall_skull[facing=west]", + "5973": "minecraft:skeleton_wall_skull[facing=east]", + "5974": "minecraft:wither_skeleton_skull[rotation=0]", + "5975": "minecraft:wither_skeleton_skull[rotation=1]", + "5976": "minecraft:wither_skeleton_skull[rotation=2]", + "5977": "minecraft:wither_skeleton_skull[rotation=3]", + "5978": "minecraft:wither_skeleton_skull[rotation=4]", + "5979": "minecraft:wither_skeleton_skull[rotation=5]", + "5980": "minecraft:wither_skeleton_skull[rotation=6]", + "5981": "minecraft:wither_skeleton_skull[rotation=7]", + "5982": "minecraft:wither_skeleton_skull[rotation=8]", + "5983": "minecraft:wither_skeleton_skull[rotation=9]", + "5984": "minecraft:wither_skeleton_skull[rotation=10]", + "5985": "minecraft:wither_skeleton_skull[rotation=11]", + "5986": "minecraft:wither_skeleton_skull[rotation=12]", + "5987": "minecraft:wither_skeleton_skull[rotation=13]", + "5988": "minecraft:wither_skeleton_skull[rotation=14]", + "5989": "minecraft:wither_skeleton_skull[rotation=15]", + "5990": "minecraft:wither_skeleton_wall_skull[facing=north]", + "5991": "minecraft:wither_skeleton_wall_skull[facing=south]", + "5992": "minecraft:wither_skeleton_wall_skull[facing=west]", + "5993": "minecraft:wither_skeleton_wall_skull[facing=east]", + "5994": "minecraft:zombie_head[rotation=0]", + "5995": "minecraft:zombie_head[rotation=1]", + "5996": "minecraft:zombie_head[rotation=2]", + "5997": "minecraft:zombie_head[rotation=3]", + "5998": "minecraft:zombie_head[rotation=4]", + "5999": "minecraft:zombie_head[rotation=5]", + "6000": "minecraft:zombie_head[rotation=6]", + "6001": "minecraft:zombie_head[rotation=7]", + "6002": "minecraft:zombie_head[rotation=8]", + "6003": "minecraft:zombie_head[rotation=9]", + "6004": "minecraft:zombie_head[rotation=10]", + "6005": "minecraft:zombie_head[rotation=11]", + "6006": "minecraft:zombie_head[rotation=12]", + "6007": "minecraft:zombie_head[rotation=13]", + "6008": "minecraft:zombie_head[rotation=14]", + "6009": "minecraft:zombie_head[rotation=15]", + "6010": "minecraft:zombie_wall_head[facing=north]", + "6011": "minecraft:zombie_wall_head[facing=south]", + "6012": "minecraft:zombie_wall_head[facing=west]", + "6013": "minecraft:zombie_wall_head[facing=east]", + "6014": "minecraft:player_head[rotation=0]", + "6015": "minecraft:player_head[rotation=1]", + "6016": "minecraft:player_head[rotation=2]", + "6017": "minecraft:player_head[rotation=3]", + "6018": "minecraft:player_head[rotation=4]", + "6019": "minecraft:player_head[rotation=5]", + "6020": "minecraft:player_head[rotation=6]", + "6021": "minecraft:player_head[rotation=7]", + "6022": "minecraft:player_head[rotation=8]", + "6023": "minecraft:player_head[rotation=9]", + "6024": "minecraft:player_head[rotation=10]", + "6025": "minecraft:player_head[rotation=11]", + "6026": "minecraft:player_head[rotation=12]", + "6027": "minecraft:player_head[rotation=13]", + "6028": "minecraft:player_head[rotation=14]", + "6029": "minecraft:player_head[rotation=15]", + "6030": "minecraft:player_wall_head[facing=north]", + "6031": "minecraft:player_wall_head[facing=south]", + "6032": "minecraft:player_wall_head[facing=west]", + "6033": "minecraft:player_wall_head[facing=east]", + "6034": "minecraft:creeper_head[rotation=0]", + "6035": "minecraft:creeper_head[rotation=1]", + "6036": "minecraft:creeper_head[rotation=2]", + "6037": "minecraft:creeper_head[rotation=3]", + "6038": "minecraft:creeper_head[rotation=4]", + "6039": "minecraft:creeper_head[rotation=5]", + "6040": "minecraft:creeper_head[rotation=6]", + "6041": "minecraft:creeper_head[rotation=7]", + "6042": "minecraft:creeper_head[rotation=8]", + "6043": "minecraft:creeper_head[rotation=9]", + "6044": "minecraft:creeper_head[rotation=10]", + "6045": "minecraft:creeper_head[rotation=11]", + "6046": "minecraft:creeper_head[rotation=12]", + "6047": "minecraft:creeper_head[rotation=13]", + "6048": "minecraft:creeper_head[rotation=14]", + "6049": "minecraft:creeper_head[rotation=15]", + "6050": "minecraft:creeper_wall_head[facing=north]", + "6051": "minecraft:creeper_wall_head[facing=south]", + "6052": "minecraft:creeper_wall_head[facing=west]", + "6053": "minecraft:creeper_wall_head[facing=east]", + "6054": "minecraft:dragon_head[rotation=0]", + "6055": "minecraft:dragon_head[rotation=1]", + "6056": "minecraft:dragon_head[rotation=2]", + "6057": "minecraft:dragon_head[rotation=3]", + "6058": "minecraft:dragon_head[rotation=4]", + "6059": "minecraft:dragon_head[rotation=5]", + "6060": "minecraft:dragon_head[rotation=6]", + "6061": "minecraft:dragon_head[rotation=7]", + "6062": "minecraft:dragon_head[rotation=8]", + "6063": "minecraft:dragon_head[rotation=9]", + "6064": "minecraft:dragon_head[rotation=10]", + "6065": "minecraft:dragon_head[rotation=11]", + "6066": "minecraft:dragon_head[rotation=12]", + "6067": "minecraft:dragon_head[rotation=13]", + "6068": "minecraft:dragon_head[rotation=14]", + "6069": "minecraft:dragon_head[rotation=15]", + "6070": "minecraft:dragon_wall_head[facing=north]", + "6071": "minecraft:dragon_wall_head[facing=south]", + "6072": "minecraft:dragon_wall_head[facing=west]", + "6073": "minecraft:dragon_wall_head[facing=east]", + "6074": "minecraft:anvil[facing=north]", + "6075": "minecraft:anvil[facing=south]", + "6076": "minecraft:anvil[facing=west]", + "6077": "minecraft:anvil[facing=east]", + "6078": "minecraft:chipped_anvil[facing=north]", + "6079": "minecraft:chipped_anvil[facing=south]", + "6080": "minecraft:chipped_anvil[facing=west]", + "6081": "minecraft:chipped_anvil[facing=east]", + "6082": "minecraft:damaged_anvil[facing=north]", + "6083": "minecraft:damaged_anvil[facing=south]", + "6084": "minecraft:damaged_anvil[facing=west]", + "6085": "minecraft:damaged_anvil[facing=east]", + "6086": "minecraft:trapped_chest[facing=north,type=single,waterlogged=true]", + "6087": "minecraft:trapped_chest[facing=north,type=single,waterlogged=false]", + "6088": "minecraft:trapped_chest[facing=north,type=left,waterlogged=true]", + "6089": "minecraft:trapped_chest[facing=north,type=left,waterlogged=false]", + "6090": "minecraft:trapped_chest[facing=north,type=right,waterlogged=true]", + "6091": "minecraft:trapped_chest[facing=north,type=right,waterlogged=false]", + "6092": "minecraft:trapped_chest[facing=south,type=single,waterlogged=true]", + "6093": "minecraft:trapped_chest[facing=south,type=single,waterlogged=false]", + "6094": "minecraft:trapped_chest[facing=south,type=left,waterlogged=true]", + "6095": "minecraft:trapped_chest[facing=south,type=left,waterlogged=false]", + "6096": "minecraft:trapped_chest[facing=south,type=right,waterlogged=true]", + "6097": "minecraft:trapped_chest[facing=south,type=right,waterlogged=false]", + "6098": "minecraft:trapped_chest[facing=west,type=single,waterlogged=true]", + "6099": "minecraft:trapped_chest[facing=west,type=single,waterlogged=false]", + "6100": "minecraft:trapped_chest[facing=west,type=left,waterlogged=true]", + "6101": "minecraft:trapped_chest[facing=west,type=left,waterlogged=false]", + "6102": "minecraft:trapped_chest[facing=west,type=right,waterlogged=true]", + "6103": "minecraft:trapped_chest[facing=west,type=right,waterlogged=false]", + "6104": "minecraft:trapped_chest[facing=east,type=single,waterlogged=true]", + "6105": "minecraft:trapped_chest[facing=east,type=single,waterlogged=false]", + "6106": "minecraft:trapped_chest[facing=east,type=left,waterlogged=true]", + "6107": "minecraft:trapped_chest[facing=east,type=left,waterlogged=false]", + "6108": "minecraft:trapped_chest[facing=east,type=right,waterlogged=true]", + "6109": "minecraft:trapped_chest[facing=east,type=right,waterlogged=false]", + "6110": "minecraft:light_weighted_pressure_plate[power=0]", + "6111": "minecraft:light_weighted_pressure_plate[power=1]", + "6112": "minecraft:light_weighted_pressure_plate[power=2]", + "6113": "minecraft:light_weighted_pressure_plate[power=3]", + "6114": "minecraft:light_weighted_pressure_plate[power=4]", + "6115": "minecraft:light_weighted_pressure_plate[power=5]", + "6116": "minecraft:light_weighted_pressure_plate[power=6]", + "6117": "minecraft:light_weighted_pressure_plate[power=7]", + "6118": "minecraft:light_weighted_pressure_plate[power=8]", + "6119": "minecraft:light_weighted_pressure_plate[power=9]", + "6120": "minecraft:light_weighted_pressure_plate[power=10]", + "6121": "minecraft:light_weighted_pressure_plate[power=11]", + "6122": "minecraft:light_weighted_pressure_plate[power=12]", + "6123": "minecraft:light_weighted_pressure_plate[power=13]", + "6124": "minecraft:light_weighted_pressure_plate[power=14]", + "6125": "minecraft:light_weighted_pressure_plate[power=15]", + "6126": "minecraft:heavy_weighted_pressure_plate[power=0]", + "6127": "minecraft:heavy_weighted_pressure_plate[power=1]", + "6128": "minecraft:heavy_weighted_pressure_plate[power=2]", + "6129": "minecraft:heavy_weighted_pressure_plate[power=3]", + "6130": "minecraft:heavy_weighted_pressure_plate[power=4]", + "6131": "minecraft:heavy_weighted_pressure_plate[power=5]", + "6132": "minecraft:heavy_weighted_pressure_plate[power=6]", + "6133": "minecraft:heavy_weighted_pressure_plate[power=7]", + "6134": "minecraft:heavy_weighted_pressure_plate[power=8]", + "6135": "minecraft:heavy_weighted_pressure_plate[power=9]", + "6136": "minecraft:heavy_weighted_pressure_plate[power=10]", + "6137": "minecraft:heavy_weighted_pressure_plate[power=11]", + "6138": "minecraft:heavy_weighted_pressure_plate[power=12]", + "6139": "minecraft:heavy_weighted_pressure_plate[power=13]", + "6140": "minecraft:heavy_weighted_pressure_plate[power=14]", + "6141": "minecraft:heavy_weighted_pressure_plate[power=15]", + "6142": "minecraft:comparator[facing=north,mode=compare,powered=true]", + "6143": "minecraft:comparator[facing=north,mode=compare,powered=false]", + "6144": "minecraft:comparator[facing=north,mode=subtract,powered=true]", + "6145": "minecraft:comparator[facing=north,mode=subtract,powered=false]", + "6146": "minecraft:comparator[facing=south,mode=compare,powered=true]", + "6147": "minecraft:comparator[facing=south,mode=compare,powered=false]", + "6148": "minecraft:comparator[facing=south,mode=subtract,powered=true]", + "6149": "minecraft:comparator[facing=south,mode=subtract,powered=false]", + "6150": "minecraft:comparator[facing=west,mode=compare,powered=true]", + "6151": "minecraft:comparator[facing=west,mode=compare,powered=false]", + "6152": "minecraft:comparator[facing=west,mode=subtract,powered=true]", + "6153": "minecraft:comparator[facing=west,mode=subtract,powered=false]", + "6154": "minecraft:comparator[facing=east,mode=compare,powered=true]", + "6155": "minecraft:comparator[facing=east,mode=compare,powered=false]", + "6156": "minecraft:comparator[facing=east,mode=subtract,powered=true]", + "6157": "minecraft:comparator[facing=east,mode=subtract,powered=false]", + "6158": "minecraft:daylight_detector[inverted=true,power=0]", + "6159": "minecraft:daylight_detector[inverted=true,power=1]", + "6160": "minecraft:daylight_detector[inverted=true,power=2]", + "6161": "minecraft:daylight_detector[inverted=true,power=3]", + "6162": "minecraft:daylight_detector[inverted=true,power=4]", + "6163": "minecraft:daylight_detector[inverted=true,power=5]", + "6164": "minecraft:daylight_detector[inverted=true,power=6]", + "6165": "minecraft:daylight_detector[inverted=true,power=7]", + "6166": "minecraft:daylight_detector[inverted=true,power=8]", + "6167": "minecraft:daylight_detector[inverted=true,power=9]", + "6168": "minecraft:daylight_detector[inverted=true,power=10]", + "6169": "minecraft:daylight_detector[inverted=true,power=11]", + "6170": "minecraft:daylight_detector[inverted=true,power=12]", + "6171": "minecraft:daylight_detector[inverted=true,power=13]", + "6172": "minecraft:daylight_detector[inverted=true,power=14]", + "6173": "minecraft:daylight_detector[inverted=true,power=15]", + "6174": "minecraft:daylight_detector[inverted=false,power=0]", + "6175": "minecraft:daylight_detector[inverted=false,power=1]", + "6176": "minecraft:daylight_detector[inverted=false,power=2]", + "6177": "minecraft:daylight_detector[inverted=false,power=3]", + "6178": "minecraft:daylight_detector[inverted=false,power=4]", + "6179": "minecraft:daylight_detector[inverted=false,power=5]", + "6180": "minecraft:daylight_detector[inverted=false,power=6]", + "6181": "minecraft:daylight_detector[inverted=false,power=7]", + "6182": "minecraft:daylight_detector[inverted=false,power=8]", + "6183": "minecraft:daylight_detector[inverted=false,power=9]", + "6184": "minecraft:daylight_detector[inverted=false,power=10]", + "6185": "minecraft:daylight_detector[inverted=false,power=11]", + "6186": "minecraft:daylight_detector[inverted=false,power=12]", + "6187": "minecraft:daylight_detector[inverted=false,power=13]", + "6188": "minecraft:daylight_detector[inverted=false,power=14]", + "6189": "minecraft:daylight_detector[inverted=false,power=15]", + "6190": "minecraft:redstone_block", + "6191": "minecraft:nether_quartz_ore", + "6192": "minecraft:hopper[enabled=true,facing=down]", + "6193": "minecraft:hopper[enabled=true,facing=north]", + "6194": "minecraft:hopper[enabled=true,facing=south]", + "6195": "minecraft:hopper[enabled=true,facing=west]", + "6196": "minecraft:hopper[enabled=true,facing=east]", + "6197": "minecraft:hopper[enabled=false,facing=down]", + "6198": "minecraft:hopper[enabled=false,facing=north]", + "6199": "minecraft:hopper[enabled=false,facing=south]", + "6200": "minecraft:hopper[enabled=false,facing=west]", + "6201": "minecraft:hopper[enabled=false,facing=east]", + "6202": "minecraft:quartz_block", + "6203": "minecraft:chiseled_quartz_block", + "6204": "minecraft:quartz_pillar[axis=x]", + "6205": "minecraft:quartz_pillar[axis=y]", + "6206": "minecraft:quartz_pillar[axis=z]", + "6207": "minecraft:quartz_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "6208": "minecraft:quartz_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "6209": "minecraft:quartz_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "6210": "minecraft:quartz_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "6211": "minecraft:quartz_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "6212": "minecraft:quartz_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "6213": "minecraft:quartz_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "6214": "minecraft:quartz_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "6215": "minecraft:quartz_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "6216": "minecraft:quartz_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "6217": "minecraft:quartz_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "6218": "minecraft:quartz_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "6219": "minecraft:quartz_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "6220": "minecraft:quartz_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "6221": "minecraft:quartz_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "6222": "minecraft:quartz_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "6223": "minecraft:quartz_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "6224": "minecraft:quartz_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "6225": "minecraft:quartz_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "6226": "minecraft:quartz_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "6227": "minecraft:quartz_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "6228": "minecraft:quartz_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "6229": "minecraft:quartz_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "6230": "minecraft:quartz_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "6231": "minecraft:quartz_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "6232": "minecraft:quartz_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "6233": "minecraft:quartz_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "6234": "minecraft:quartz_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "6235": "minecraft:quartz_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "6236": "minecraft:quartz_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "6237": "minecraft:quartz_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "6238": "minecraft:quartz_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "6239": "minecraft:quartz_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "6240": "minecraft:quartz_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "6241": "minecraft:quartz_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "6242": "minecraft:quartz_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "6243": "minecraft:quartz_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "6244": "minecraft:quartz_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "6245": "minecraft:quartz_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "6246": "minecraft:quartz_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "6247": "minecraft:quartz_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "6248": "minecraft:quartz_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "6249": "minecraft:quartz_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "6250": "minecraft:quartz_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "6251": "minecraft:quartz_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "6252": "minecraft:quartz_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "6253": "minecraft:quartz_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "6254": "minecraft:quartz_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "6255": "minecraft:quartz_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "6256": "minecraft:quartz_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "6257": "minecraft:quartz_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "6258": "minecraft:quartz_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "6259": "minecraft:quartz_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "6260": "minecraft:quartz_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "6261": "minecraft:quartz_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "6262": "minecraft:quartz_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "6263": "minecraft:quartz_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "6264": "minecraft:quartz_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "6265": "minecraft:quartz_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "6266": "minecraft:quartz_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "6267": "minecraft:quartz_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "6268": "minecraft:quartz_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "6269": "minecraft:quartz_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "6270": "minecraft:quartz_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "6271": "minecraft:quartz_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "6272": "minecraft:quartz_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "6273": "minecraft:quartz_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "6274": "minecraft:quartz_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "6275": "minecraft:quartz_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "6276": "minecraft:quartz_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "6277": "minecraft:quartz_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "6278": "minecraft:quartz_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "6279": "minecraft:quartz_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "6280": "minecraft:quartz_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "6281": "minecraft:quartz_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "6282": "minecraft:quartz_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "6283": "minecraft:quartz_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "6284": "minecraft:quartz_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "6285": "minecraft:quartz_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "6286": "minecraft:quartz_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "6287": "minecraft:activator_rail[powered=true,shape=north_south]", + "6288": "minecraft:activator_rail[powered=true,shape=east_west]", + "6289": "minecraft:activator_rail[powered=true,shape=ascending_east]", + "6290": "minecraft:activator_rail[powered=true,shape=ascending_west]", + "6291": "minecraft:activator_rail[powered=true,shape=ascending_north]", + "6292": "minecraft:activator_rail[powered=true,shape=ascending_south]", + "6293": "minecraft:activator_rail[powered=false,shape=north_south]", + "6294": "minecraft:activator_rail[powered=false,shape=east_west]", + "6295": "minecraft:activator_rail[powered=false,shape=ascending_east]", + "6296": "minecraft:activator_rail[powered=false,shape=ascending_west]", + "6297": "minecraft:activator_rail[powered=false,shape=ascending_north]", + "6298": "minecraft:activator_rail[powered=false,shape=ascending_south]", + "6299": "minecraft:dropper[facing=north,triggered=true]", + "6300": "minecraft:dropper[facing=north,triggered=false]", + "6301": "minecraft:dropper[facing=east,triggered=true]", + "6302": "minecraft:dropper[facing=east,triggered=false]", + "6303": "minecraft:dropper[facing=south,triggered=true]", + "6304": "minecraft:dropper[facing=south,triggered=false]", + "6305": "minecraft:dropper[facing=west,triggered=true]", + "6306": "minecraft:dropper[facing=west,triggered=false]", + "6307": "minecraft:dropper[facing=up,triggered=true]", + "6308": "minecraft:dropper[facing=up,triggered=false]", + "6309": "minecraft:dropper[facing=down,triggered=true]", + "6310": "minecraft:dropper[facing=down,triggered=false]", + "6311": "minecraft:white_terracotta", + "6312": "minecraft:orange_terracotta", + "6313": "minecraft:magenta_terracotta", + "6314": "minecraft:light_blue_terracotta", + "6315": "minecraft:yellow_terracotta", + "6316": "minecraft:lime_terracotta", + "6317": "minecraft:pink_terracotta", + "6318": "minecraft:gray_terracotta", + "6319": "minecraft:light_gray_terracotta", + "6320": "minecraft:cyan_terracotta", + "6321": "minecraft:purple_terracotta", + "6322": "minecraft:blue_terracotta", + "6323": "minecraft:brown_terracotta", + "6324": "minecraft:green_terracotta", + "6325": "minecraft:red_terracotta", + "6326": "minecraft:black_terracotta", + "6327": "minecraft:white_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=true]", + "6328": "minecraft:white_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=false]", + "6329": "minecraft:white_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=true]", + "6330": "minecraft:white_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=false]", + "6331": "minecraft:white_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=true]", + "6332": "minecraft:white_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=false]", + "6333": "minecraft:white_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=true]", + "6334": "minecraft:white_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=false]", + "6335": "minecraft:white_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=true]", + "6336": "minecraft:white_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=false]", + "6337": "minecraft:white_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=true]", + "6338": "minecraft:white_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=false]", + "6339": "minecraft:white_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=true]", + "6340": "minecraft:white_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=false]", + "6341": "minecraft:white_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=true]", + "6342": "minecraft:white_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=false]", + "6343": "minecraft:white_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=true]", + "6344": "minecraft:white_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=false]", + "6345": "minecraft:white_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=true]", + "6346": "minecraft:white_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=false]", + "6347": "minecraft:white_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=true]", + "6348": "minecraft:white_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=false]", + "6349": "minecraft:white_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=true]", + "6350": "minecraft:white_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=false]", + "6351": "minecraft:white_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=true]", + "6352": "minecraft:white_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=false]", + "6353": "minecraft:white_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=true]", + "6354": "minecraft:white_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=false]", + "6355": "minecraft:white_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=true]", + "6356": "minecraft:white_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=false]", + "6357": "minecraft:white_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=true]", + "6358": "minecraft:white_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]", + "6359": "minecraft:orange_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=true]", + "6360": "minecraft:orange_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=false]", + "6361": "minecraft:orange_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=true]", + "6362": "minecraft:orange_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=false]", + "6363": "minecraft:orange_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=true]", + "6364": "minecraft:orange_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=false]", + "6365": "minecraft:orange_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=true]", + "6366": "minecraft:orange_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=false]", + "6367": "minecraft:orange_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=true]", + "6368": "minecraft:orange_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=false]", + "6369": "minecraft:orange_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=true]", + "6370": "minecraft:orange_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=false]", + "6371": "minecraft:orange_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=true]", + "6372": "minecraft:orange_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=false]", + "6373": "minecraft:orange_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=true]", + "6374": "minecraft:orange_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=false]", + "6375": "minecraft:orange_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=true]", + "6376": "minecraft:orange_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=false]", + "6377": "minecraft:orange_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=true]", + "6378": "minecraft:orange_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=false]", + "6379": "minecraft:orange_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=true]", + "6380": "minecraft:orange_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=false]", + "6381": "minecraft:orange_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=true]", + "6382": "minecraft:orange_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=false]", + "6383": "minecraft:orange_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=true]", + "6384": "minecraft:orange_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=false]", + "6385": "minecraft:orange_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=true]", + "6386": "minecraft:orange_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=false]", + "6387": "minecraft:orange_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=true]", + "6388": "minecraft:orange_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=false]", + "6389": "minecraft:orange_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=true]", + "6390": "minecraft:orange_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]", + "6391": "minecraft:magenta_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=true]", + "6392": "minecraft:magenta_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=false]", + "6393": "minecraft:magenta_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=true]", + "6394": "minecraft:magenta_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=false]", + "6395": "minecraft:magenta_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=true]", + "6396": "minecraft:magenta_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=false]", + "6397": "minecraft:magenta_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=true]", + "6398": "minecraft:magenta_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=false]", + "6399": "minecraft:magenta_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=true]", + "6400": "minecraft:magenta_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=false]", + "6401": "minecraft:magenta_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=true]", + "6402": "minecraft:magenta_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=false]", + "6403": "minecraft:magenta_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=true]", + "6404": "minecraft:magenta_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=false]", + "6405": "minecraft:magenta_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=true]", + "6406": "minecraft:magenta_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=false]", + "6407": "minecraft:magenta_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=true]", + "6408": "minecraft:magenta_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=false]", + "6409": "minecraft:magenta_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=true]", + "6410": "minecraft:magenta_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=false]", + "6411": "minecraft:magenta_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=true]", + "6412": "minecraft:magenta_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=false]", + "6413": "minecraft:magenta_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=true]", + "6414": "minecraft:magenta_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=false]", + "6415": "minecraft:magenta_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=true]", + "6416": "minecraft:magenta_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=false]", + "6417": "minecraft:magenta_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=true]", + "6418": "minecraft:magenta_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=false]", + "6419": "minecraft:magenta_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=true]", + "6420": "minecraft:magenta_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=false]", + "6421": "minecraft:magenta_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=true]", + "6422": "minecraft:magenta_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]", + "6423": "minecraft:light_blue_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=true]", + "6424": "minecraft:light_blue_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=false]", + "6425": "minecraft:light_blue_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=true]", + "6426": "minecraft:light_blue_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=false]", + "6427": "minecraft:light_blue_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=true]", + "6428": "minecraft:light_blue_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=false]", + "6429": "minecraft:light_blue_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=true]", + "6430": "minecraft:light_blue_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=false]", + "6431": "minecraft:light_blue_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=true]", + "6432": "minecraft:light_blue_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=false]", + "6433": "minecraft:light_blue_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=true]", + "6434": "minecraft:light_blue_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=false]", + "6435": "minecraft:light_blue_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=true]", + "6436": "minecraft:light_blue_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=false]", + "6437": "minecraft:light_blue_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=true]", + "6438": "minecraft:light_blue_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=false]", + "6439": "minecraft:light_blue_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=true]", + "6440": "minecraft:light_blue_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=false]", + "6441": "minecraft:light_blue_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=true]", + "6442": "minecraft:light_blue_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=false]", + "6443": "minecraft:light_blue_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=true]", + "6444": "minecraft:light_blue_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=false]", + "6445": "minecraft:light_blue_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=true]", + "6446": "minecraft:light_blue_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=false]", + "6447": "minecraft:light_blue_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=true]", + "6448": "minecraft:light_blue_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=false]", + "6449": "minecraft:light_blue_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=true]", + "6450": "minecraft:light_blue_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=false]", + "6451": "minecraft:light_blue_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=true]", + "6452": "minecraft:light_blue_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=false]", + "6453": "minecraft:light_blue_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=true]", + "6454": "minecraft:light_blue_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]", + "6455": "minecraft:yellow_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=true]", + "6456": "minecraft:yellow_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=false]", + "6457": "minecraft:yellow_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=true]", + "6458": "minecraft:yellow_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=false]", + "6459": "minecraft:yellow_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=true]", + "6460": "minecraft:yellow_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=false]", + "6461": "minecraft:yellow_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=true]", + "6462": "minecraft:yellow_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=false]", + "6463": "minecraft:yellow_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=true]", + "6464": "minecraft:yellow_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=false]", + "6465": "minecraft:yellow_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=true]", + "6466": "minecraft:yellow_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=false]", + "6467": "minecraft:yellow_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=true]", + "6468": "minecraft:yellow_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=false]", + "6469": "minecraft:yellow_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=true]", + "6470": "minecraft:yellow_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=false]", + "6471": "minecraft:yellow_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=true]", + "6472": "minecraft:yellow_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=false]", + "6473": "minecraft:yellow_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=true]", + "6474": "minecraft:yellow_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=false]", + "6475": "minecraft:yellow_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=true]", + "6476": "minecraft:yellow_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=false]", + "6477": "minecraft:yellow_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=true]", + "6478": "minecraft:yellow_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=false]", + "6479": "minecraft:yellow_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=true]", + "6480": "minecraft:yellow_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=false]", + "6481": "minecraft:yellow_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=true]", + "6482": "minecraft:yellow_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=false]", + "6483": "minecraft:yellow_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=true]", + "6484": "minecraft:yellow_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=false]", + "6485": "minecraft:yellow_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=true]", + "6486": "minecraft:yellow_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]", + "6487": "minecraft:lime_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=true]", + "6488": "minecraft:lime_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=false]", + "6489": "minecraft:lime_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=true]", + "6490": "minecraft:lime_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=false]", + "6491": "minecraft:lime_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=true]", + "6492": "minecraft:lime_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=false]", + "6493": "minecraft:lime_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=true]", + "6494": "minecraft:lime_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=false]", + "6495": "minecraft:lime_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=true]", + "6496": "minecraft:lime_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=false]", + "6497": "minecraft:lime_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=true]", + "6498": "minecraft:lime_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=false]", + "6499": "minecraft:lime_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=true]", + "6500": "minecraft:lime_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=false]", + "6501": "minecraft:lime_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=true]", + "6502": "minecraft:lime_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=false]", + "6503": "minecraft:lime_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=true]", + "6504": "minecraft:lime_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=false]", + "6505": "minecraft:lime_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=true]", + "6506": "minecraft:lime_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=false]", + "6507": "minecraft:lime_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=true]", + "6508": "minecraft:lime_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=false]", + "6509": "minecraft:lime_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=true]", + "6510": "minecraft:lime_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=false]", + "6511": "minecraft:lime_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=true]", + "6512": "minecraft:lime_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=false]", + "6513": "minecraft:lime_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=true]", + "6514": "minecraft:lime_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=false]", + "6515": "minecraft:lime_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=true]", + "6516": "minecraft:lime_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=false]", + "6517": "minecraft:lime_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=true]", + "6518": "minecraft:lime_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]", + "6519": "minecraft:pink_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=true]", + "6520": "minecraft:pink_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=false]", + "6521": "minecraft:pink_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=true]", + "6522": "minecraft:pink_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=false]", + "6523": "minecraft:pink_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=true]", + "6524": "minecraft:pink_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=false]", + "6525": "minecraft:pink_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=true]", + "6526": "minecraft:pink_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=false]", + "6527": "minecraft:pink_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=true]", + "6528": "minecraft:pink_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=false]", + "6529": "minecraft:pink_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=true]", + "6530": "minecraft:pink_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=false]", + "6531": "minecraft:pink_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=true]", + "6532": "minecraft:pink_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=false]", + "6533": "minecraft:pink_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=true]", + "6534": "minecraft:pink_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=false]", + "6535": "minecraft:pink_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=true]", + "6536": "minecraft:pink_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=false]", + "6537": "minecraft:pink_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=true]", + "6538": "minecraft:pink_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=false]", + "6539": "minecraft:pink_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=true]", + "6540": "minecraft:pink_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=false]", + "6541": "minecraft:pink_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=true]", + "6542": "minecraft:pink_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=false]", + "6543": "minecraft:pink_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=true]", + "6544": "minecraft:pink_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=false]", + "6545": "minecraft:pink_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=true]", + "6546": "minecraft:pink_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=false]", + "6547": "minecraft:pink_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=true]", + "6548": "minecraft:pink_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=false]", + "6549": "minecraft:pink_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=true]", + "6550": "minecraft:pink_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]", + "6551": "minecraft:gray_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=true]", + "6552": "minecraft:gray_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=false]", + "6553": "minecraft:gray_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=true]", + "6554": "minecraft:gray_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=false]", + "6555": "minecraft:gray_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=true]", + "6556": "minecraft:gray_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=false]", + "6557": "minecraft:gray_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=true]", + "6558": "minecraft:gray_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=false]", + "6559": "minecraft:gray_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=true]", + "6560": "minecraft:gray_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=false]", + "6561": "minecraft:gray_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=true]", + "6562": "minecraft:gray_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=false]", + "6563": "minecraft:gray_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=true]", + "6564": "minecraft:gray_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=false]", + "6565": "minecraft:gray_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=true]", + "6566": "minecraft:gray_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=false]", + "6567": "minecraft:gray_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=true]", + "6568": "minecraft:gray_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=false]", + "6569": "minecraft:gray_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=true]", + "6570": "minecraft:gray_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=false]", + "6571": "minecraft:gray_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=true]", + "6572": "minecraft:gray_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=false]", + "6573": "minecraft:gray_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=true]", + "6574": "minecraft:gray_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=false]", + "6575": "minecraft:gray_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=true]", + "6576": "minecraft:gray_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=false]", + "6577": "minecraft:gray_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=true]", + "6578": "minecraft:gray_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=false]", + "6579": "minecraft:gray_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=true]", + "6580": "minecraft:gray_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=false]", + "6581": "minecraft:gray_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=true]", + "6582": "minecraft:gray_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]", + "6583": "minecraft:light_gray_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=true]", + "6584": "minecraft:light_gray_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=false]", + "6585": "minecraft:light_gray_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=true]", + "6586": "minecraft:light_gray_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=false]", + "6587": "minecraft:light_gray_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=true]", + "6588": "minecraft:light_gray_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=false]", + "6589": "minecraft:light_gray_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=true]", + "6590": "minecraft:light_gray_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=false]", + "6591": "minecraft:light_gray_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=true]", + "6592": "minecraft:light_gray_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=false]", + "6593": "minecraft:light_gray_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=true]", + "6594": "minecraft:light_gray_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=false]", + "6595": "minecraft:light_gray_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=true]", + "6596": "minecraft:light_gray_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=false]", + "6597": "minecraft:light_gray_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=true]", + "6598": "minecraft:light_gray_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=false]", + "6599": "minecraft:light_gray_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=true]", + "6600": "minecraft:light_gray_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=false]", + "6601": "minecraft:light_gray_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=true]", + "6602": "minecraft:light_gray_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=false]", + "6603": "minecraft:light_gray_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=true]", + "6604": "minecraft:light_gray_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=false]", + "6605": "minecraft:light_gray_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=true]", + "6606": "minecraft:light_gray_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=false]", + "6607": "minecraft:light_gray_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=true]", + "6608": "minecraft:light_gray_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=false]", + "6609": "minecraft:light_gray_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=true]", + "6610": "minecraft:light_gray_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=false]", + "6611": "minecraft:light_gray_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=true]", + "6612": "minecraft:light_gray_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=false]", + "6613": "minecraft:light_gray_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=true]", + "6614": "minecraft:light_gray_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]", + "6615": "minecraft:cyan_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=true]", + "6616": "minecraft:cyan_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=false]", + "6617": "minecraft:cyan_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=true]", + "6618": "minecraft:cyan_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=false]", + "6619": "minecraft:cyan_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=true]", + "6620": "minecraft:cyan_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=false]", + "6621": "minecraft:cyan_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=true]", + "6622": "minecraft:cyan_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=false]", + "6623": "minecraft:cyan_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=true]", + "6624": "minecraft:cyan_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=false]", + "6625": "minecraft:cyan_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=true]", + "6626": "minecraft:cyan_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=false]", + "6627": "minecraft:cyan_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=true]", + "6628": "minecraft:cyan_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=false]", + "6629": "minecraft:cyan_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=true]", + "6630": "minecraft:cyan_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=false]", + "6631": "minecraft:cyan_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=true]", + "6632": "minecraft:cyan_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=false]", + "6633": "minecraft:cyan_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=true]", + "6634": "minecraft:cyan_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=false]", + "6635": "minecraft:cyan_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=true]", + "6636": "minecraft:cyan_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=false]", + "6637": "minecraft:cyan_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=true]", + "6638": "minecraft:cyan_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=false]", + "6639": "minecraft:cyan_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=true]", + "6640": "minecraft:cyan_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=false]", + "6641": "minecraft:cyan_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=true]", + "6642": "minecraft:cyan_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=false]", + "6643": "minecraft:cyan_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=true]", + "6644": "minecraft:cyan_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=false]", + "6645": "minecraft:cyan_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=true]", + "6646": "minecraft:cyan_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]", + "6647": "minecraft:purple_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=true]", + "6648": "minecraft:purple_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=false]", + "6649": "minecraft:purple_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=true]", + "6650": "minecraft:purple_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=false]", + "6651": "minecraft:purple_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=true]", + "6652": "minecraft:purple_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=false]", + "6653": "minecraft:purple_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=true]", + "6654": "minecraft:purple_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=false]", + "6655": "minecraft:purple_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=true]", + "6656": "minecraft:purple_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=false]", + "6657": "minecraft:purple_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=true]", + "6658": "minecraft:purple_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=false]", + "6659": "minecraft:purple_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=true]", + "6660": "minecraft:purple_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=false]", + "6661": "minecraft:purple_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=true]", + "6662": "minecraft:purple_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=false]", + "6663": "minecraft:purple_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=true]", + "6664": "minecraft:purple_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=false]", + "6665": "minecraft:purple_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=true]", + "6666": "minecraft:purple_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=false]", + "6667": "minecraft:purple_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=true]", + "6668": "minecraft:purple_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=false]", + "6669": "minecraft:purple_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=true]", + "6670": "minecraft:purple_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=false]", + "6671": "minecraft:purple_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=true]", + "6672": "minecraft:purple_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=false]", + "6673": "minecraft:purple_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=true]", + "6674": "minecraft:purple_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=false]", + "6675": "minecraft:purple_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=true]", + "6676": "minecraft:purple_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=false]", + "6677": "minecraft:purple_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=true]", + "6678": "minecraft:purple_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]", + "6679": "minecraft:blue_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=true]", + "6680": "minecraft:blue_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=false]", + "6681": "minecraft:blue_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=true]", + "6682": "minecraft:blue_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=false]", + "6683": "minecraft:blue_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=true]", + "6684": "minecraft:blue_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=false]", + "6685": "minecraft:blue_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=true]", + "6686": "minecraft:blue_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=false]", + "6687": "minecraft:blue_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=true]", + "6688": "minecraft:blue_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=false]", + "6689": "minecraft:blue_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=true]", + "6690": "minecraft:blue_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=false]", + "6691": "minecraft:blue_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=true]", + "6692": "minecraft:blue_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=false]", + "6693": "minecraft:blue_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=true]", + "6694": "minecraft:blue_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=false]", + "6695": "minecraft:blue_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=true]", + "6696": "minecraft:blue_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=false]", + "6697": "minecraft:blue_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=true]", + "6698": "minecraft:blue_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=false]", + "6699": "minecraft:blue_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=true]", + "6700": "minecraft:blue_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=false]", + "6701": "minecraft:blue_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=true]", + "6702": "minecraft:blue_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=false]", + "6703": "minecraft:blue_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=true]", + "6704": "minecraft:blue_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=false]", + "6705": "minecraft:blue_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=true]", + "6706": "minecraft:blue_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=false]", + "6707": "minecraft:blue_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=true]", + "6708": "minecraft:blue_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=false]", + "6709": "minecraft:blue_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=true]", + "6710": "minecraft:blue_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]", + "6711": "minecraft:brown_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=true]", + "6712": "minecraft:brown_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=false]", + "6713": "minecraft:brown_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=true]", + "6714": "minecraft:brown_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=false]", + "6715": "minecraft:brown_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=true]", + "6716": "minecraft:brown_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=false]", + "6717": "minecraft:brown_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=true]", + "6718": "minecraft:brown_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=false]", + "6719": "minecraft:brown_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=true]", + "6720": "minecraft:brown_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=false]", + "6721": "minecraft:brown_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=true]", + "6722": "minecraft:brown_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=false]", + "6723": "minecraft:brown_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=true]", + "6724": "minecraft:brown_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=false]", + "6725": "minecraft:brown_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=true]", + "6726": "minecraft:brown_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=false]", + "6727": "minecraft:brown_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=true]", + "6728": "minecraft:brown_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=false]", + "6729": "minecraft:brown_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=true]", + "6730": "minecraft:brown_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=false]", + "6731": "minecraft:brown_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=true]", + "6732": "minecraft:brown_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=false]", + "6733": "minecraft:brown_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=true]", + "6734": "minecraft:brown_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=false]", + "6735": "minecraft:brown_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=true]", + "6736": "minecraft:brown_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=false]", + "6737": "minecraft:brown_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=true]", + "6738": "minecraft:brown_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=false]", + "6739": "minecraft:brown_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=true]", + "6740": "minecraft:brown_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=false]", + "6741": "minecraft:brown_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=true]", + "6742": "minecraft:brown_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]", + "6743": "minecraft:green_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=true]", + "6744": "minecraft:green_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=false]", + "6745": "minecraft:green_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=true]", + "6746": "minecraft:green_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=false]", + "6747": "minecraft:green_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=true]", + "6748": "minecraft:green_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=false]", + "6749": "minecraft:green_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=true]", + "6750": "minecraft:green_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=false]", + "6751": "minecraft:green_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=true]", + "6752": "minecraft:green_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=false]", + "6753": "minecraft:green_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=true]", + "6754": "minecraft:green_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=false]", + "6755": "minecraft:green_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=true]", + "6756": "minecraft:green_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=false]", + "6757": "minecraft:green_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=true]", + "6758": "minecraft:green_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=false]", + "6759": "minecraft:green_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=true]", + "6760": "minecraft:green_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=false]", + "6761": "minecraft:green_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=true]", + "6762": "minecraft:green_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=false]", + "6763": "minecraft:green_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=true]", + "6764": "minecraft:green_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=false]", + "6765": "minecraft:green_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=true]", + "6766": "minecraft:green_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=false]", + "6767": "minecraft:green_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=true]", + "6768": "minecraft:green_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=false]", + "6769": "minecraft:green_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=true]", + "6770": "minecraft:green_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=false]", + "6771": "minecraft:green_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=true]", + "6772": "minecraft:green_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=false]", + "6773": "minecraft:green_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=true]", + "6774": "minecraft:green_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]", + "6775": "minecraft:red_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=true]", + "6776": "minecraft:red_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=false]", + "6777": "minecraft:red_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=true]", + "6778": "minecraft:red_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=false]", + "6779": "minecraft:red_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=true]", + "6780": "minecraft:red_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=false]", + "6781": "minecraft:red_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=true]", + "6782": "minecraft:red_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=false]", + "6783": "minecraft:red_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=true]", + "6784": "minecraft:red_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=false]", + "6785": "minecraft:red_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=true]", + "6786": "minecraft:red_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=false]", + "6787": "minecraft:red_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=true]", + "6788": "minecraft:red_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=false]", + "6789": "minecraft:red_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=true]", + "6790": "minecraft:red_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=false]", + "6791": "minecraft:red_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=true]", + "6792": "minecraft:red_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=false]", + "6793": "minecraft:red_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=true]", + "6794": "minecraft:red_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=false]", + "6795": "minecraft:red_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=true]", + "6796": "minecraft:red_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=false]", + "6797": "minecraft:red_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=true]", + "6798": "minecraft:red_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=false]", + "6799": "minecraft:red_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=true]", + "6800": "minecraft:red_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=false]", + "6801": "minecraft:red_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=true]", + "6802": "minecraft:red_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=false]", + "6803": "minecraft:red_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=true]", + "6804": "minecraft:red_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=false]", + "6805": "minecraft:red_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=true]", + "6806": "minecraft:red_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]", + "6807": "minecraft:black_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=true]", + "6808": "minecraft:black_stained_glass_pane[east=true,north=true,south=true,waterlogged=true,west=false]", + "6809": "minecraft:black_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=true]", + "6810": "minecraft:black_stained_glass_pane[east=true,north=true,south=true,waterlogged=false,west=false]", + "6811": "minecraft:black_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=true]", + "6812": "minecraft:black_stained_glass_pane[east=true,north=true,south=false,waterlogged=true,west=false]", + "6813": "minecraft:black_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=true]", + "6814": "minecraft:black_stained_glass_pane[east=true,north=true,south=false,waterlogged=false,west=false]", + "6815": "minecraft:black_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=true]", + "6816": "minecraft:black_stained_glass_pane[east=true,north=false,south=true,waterlogged=true,west=false]", + "6817": "minecraft:black_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=true]", + "6818": "minecraft:black_stained_glass_pane[east=true,north=false,south=true,waterlogged=false,west=false]", + "6819": "minecraft:black_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=true]", + "6820": "minecraft:black_stained_glass_pane[east=true,north=false,south=false,waterlogged=true,west=false]", + "6821": "minecraft:black_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=true]", + "6822": "minecraft:black_stained_glass_pane[east=true,north=false,south=false,waterlogged=false,west=false]", + "6823": "minecraft:black_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=true]", + "6824": "minecraft:black_stained_glass_pane[east=false,north=true,south=true,waterlogged=true,west=false]", + "6825": "minecraft:black_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=true]", + "6826": "minecraft:black_stained_glass_pane[east=false,north=true,south=true,waterlogged=false,west=false]", + "6827": "minecraft:black_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=true]", + "6828": "minecraft:black_stained_glass_pane[east=false,north=true,south=false,waterlogged=true,west=false]", + "6829": "minecraft:black_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=true]", + "6830": "minecraft:black_stained_glass_pane[east=false,north=true,south=false,waterlogged=false,west=false]", + "6831": "minecraft:black_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=true]", + "6832": "minecraft:black_stained_glass_pane[east=false,north=false,south=true,waterlogged=true,west=false]", + "6833": "minecraft:black_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=true]", + "6834": "minecraft:black_stained_glass_pane[east=false,north=false,south=true,waterlogged=false,west=false]", + "6835": "minecraft:black_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=true]", + "6836": "minecraft:black_stained_glass_pane[east=false,north=false,south=false,waterlogged=true,west=false]", + "6837": "minecraft:black_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=true]", + "6838": "minecraft:black_stained_glass_pane[east=false,north=false,south=false,waterlogged=false,west=false]", + "6839": "minecraft:acacia_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "6840": "minecraft:acacia_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "6841": "minecraft:acacia_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "6842": "minecraft:acacia_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "6843": "minecraft:acacia_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "6844": "minecraft:acacia_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "6845": "minecraft:acacia_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "6846": "minecraft:acacia_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "6847": "minecraft:acacia_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "6848": "minecraft:acacia_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "6849": "minecraft:acacia_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "6850": "minecraft:acacia_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "6851": "minecraft:acacia_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "6852": "minecraft:acacia_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "6853": "minecraft:acacia_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "6854": "minecraft:acacia_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "6855": "minecraft:acacia_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "6856": "minecraft:acacia_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "6857": "minecraft:acacia_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "6858": "minecraft:acacia_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "6859": "minecraft:acacia_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "6860": "minecraft:acacia_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "6861": "minecraft:acacia_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "6862": "minecraft:acacia_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "6863": "minecraft:acacia_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "6864": "minecraft:acacia_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "6865": "minecraft:acacia_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "6866": "minecraft:acacia_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "6867": "minecraft:acacia_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "6868": "minecraft:acacia_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "6869": "minecraft:acacia_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "6870": "minecraft:acacia_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "6871": "minecraft:acacia_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "6872": "minecraft:acacia_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "6873": "minecraft:acacia_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "6874": "minecraft:acacia_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "6875": "minecraft:acacia_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "6876": "minecraft:acacia_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "6877": "minecraft:acacia_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "6878": "minecraft:acacia_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "6879": "minecraft:acacia_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "6880": "minecraft:acacia_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "6881": "minecraft:acacia_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "6882": "minecraft:acacia_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "6883": "minecraft:acacia_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "6884": "minecraft:acacia_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "6885": "minecraft:acacia_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "6886": "minecraft:acacia_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "6887": "minecraft:acacia_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "6888": "minecraft:acacia_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "6889": "minecraft:acacia_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "6890": "minecraft:acacia_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "6891": "minecraft:acacia_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "6892": "minecraft:acacia_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "6893": "minecraft:acacia_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "6894": "minecraft:acacia_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "6895": "minecraft:acacia_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "6896": "minecraft:acacia_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "6897": "minecraft:acacia_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "6898": "minecraft:acacia_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "6899": "minecraft:acacia_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "6900": "minecraft:acacia_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "6901": "minecraft:acacia_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "6902": "minecraft:acacia_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "6903": "minecraft:acacia_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "6904": "minecraft:acacia_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "6905": "minecraft:acacia_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "6906": "minecraft:acacia_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "6907": "minecraft:acacia_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "6908": "minecraft:acacia_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "6909": "minecraft:acacia_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "6910": "minecraft:acacia_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "6911": "minecraft:acacia_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "6912": "minecraft:acacia_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "6913": "minecraft:acacia_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "6914": "minecraft:acacia_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "6915": "minecraft:acacia_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "6916": "minecraft:acacia_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "6917": "minecraft:acacia_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "6918": "minecraft:acacia_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "6919": "minecraft:dark_oak_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "6920": "minecraft:dark_oak_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "6921": "minecraft:dark_oak_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "6922": "minecraft:dark_oak_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "6923": "minecraft:dark_oak_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "6924": "minecraft:dark_oak_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "6925": "minecraft:dark_oak_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "6926": "minecraft:dark_oak_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "6927": "minecraft:dark_oak_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "6928": "minecraft:dark_oak_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "6929": "minecraft:dark_oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "6930": "minecraft:dark_oak_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "6931": "minecraft:dark_oak_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "6932": "minecraft:dark_oak_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "6933": "minecraft:dark_oak_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "6934": "minecraft:dark_oak_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "6935": "minecraft:dark_oak_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "6936": "minecraft:dark_oak_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "6937": "minecraft:dark_oak_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "6938": "minecraft:dark_oak_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "6939": "minecraft:dark_oak_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "6940": "minecraft:dark_oak_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "6941": "minecraft:dark_oak_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "6942": "minecraft:dark_oak_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "6943": "minecraft:dark_oak_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "6944": "minecraft:dark_oak_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "6945": "minecraft:dark_oak_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "6946": "minecraft:dark_oak_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "6947": "minecraft:dark_oak_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "6948": "minecraft:dark_oak_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "6949": "minecraft:dark_oak_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "6950": "minecraft:dark_oak_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "6951": "minecraft:dark_oak_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "6952": "minecraft:dark_oak_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "6953": "minecraft:dark_oak_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "6954": "minecraft:dark_oak_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "6955": "minecraft:dark_oak_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "6956": "minecraft:dark_oak_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "6957": "minecraft:dark_oak_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "6958": "minecraft:dark_oak_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "6959": "minecraft:dark_oak_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "6960": "minecraft:dark_oak_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "6961": "minecraft:dark_oak_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "6962": "minecraft:dark_oak_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "6963": "minecraft:dark_oak_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "6964": "minecraft:dark_oak_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "6965": "minecraft:dark_oak_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "6966": "minecraft:dark_oak_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "6967": "minecraft:dark_oak_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "6968": "minecraft:dark_oak_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "6969": "minecraft:dark_oak_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "6970": "minecraft:dark_oak_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "6971": "minecraft:dark_oak_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "6972": "minecraft:dark_oak_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "6973": "minecraft:dark_oak_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "6974": "minecraft:dark_oak_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "6975": "minecraft:dark_oak_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "6976": "minecraft:dark_oak_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "6977": "minecraft:dark_oak_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "6978": "minecraft:dark_oak_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "6979": "minecraft:dark_oak_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "6980": "minecraft:dark_oak_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "6981": "minecraft:dark_oak_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "6982": "minecraft:dark_oak_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "6983": "minecraft:dark_oak_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "6984": "minecraft:dark_oak_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "6985": "minecraft:dark_oak_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "6986": "minecraft:dark_oak_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "6987": "minecraft:dark_oak_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "6988": "minecraft:dark_oak_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "6989": "minecraft:dark_oak_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "6990": "minecraft:dark_oak_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "6991": "minecraft:dark_oak_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "6992": "minecraft:dark_oak_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "6993": "minecraft:dark_oak_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "6994": "minecraft:dark_oak_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "6995": "minecraft:dark_oak_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "6996": "minecraft:dark_oak_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "6997": "minecraft:dark_oak_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "6998": "minecraft:dark_oak_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "6999": "minecraft:slime_block", + "7000": "minecraft:barrier", + "7001": "minecraft:iron_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=true]", + "7002": "minecraft:iron_trapdoor[facing=north,half=top,open=true,powered=true,waterlogged=false]", + "7003": "minecraft:iron_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=true]", + "7004": "minecraft:iron_trapdoor[facing=north,half=top,open=true,powered=false,waterlogged=false]", + "7005": "minecraft:iron_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=true]", + "7006": "minecraft:iron_trapdoor[facing=north,half=top,open=false,powered=true,waterlogged=false]", + "7007": "minecraft:iron_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=true]", + "7008": "minecraft:iron_trapdoor[facing=north,half=top,open=false,powered=false,waterlogged=false]", + "7009": "minecraft:iron_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=true]", + "7010": "minecraft:iron_trapdoor[facing=north,half=bottom,open=true,powered=true,waterlogged=false]", + "7011": "minecraft:iron_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=true]", + "7012": "minecraft:iron_trapdoor[facing=north,half=bottom,open=true,powered=false,waterlogged=false]", + "7013": "minecraft:iron_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=true]", + "7014": "minecraft:iron_trapdoor[facing=north,half=bottom,open=false,powered=true,waterlogged=false]", + "7015": "minecraft:iron_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=true]", + "7016": "minecraft:iron_trapdoor[facing=north,half=bottom,open=false,powered=false,waterlogged=false]", + "7017": "minecraft:iron_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=true]", + "7018": "minecraft:iron_trapdoor[facing=south,half=top,open=true,powered=true,waterlogged=false]", + "7019": "minecraft:iron_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=true]", + "7020": "minecraft:iron_trapdoor[facing=south,half=top,open=true,powered=false,waterlogged=false]", + "7021": "minecraft:iron_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=true]", + "7022": "minecraft:iron_trapdoor[facing=south,half=top,open=false,powered=true,waterlogged=false]", + "7023": "minecraft:iron_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=true]", + "7024": "minecraft:iron_trapdoor[facing=south,half=top,open=false,powered=false,waterlogged=false]", + "7025": "minecraft:iron_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=true]", + "7026": "minecraft:iron_trapdoor[facing=south,half=bottom,open=true,powered=true,waterlogged=false]", + "7027": "minecraft:iron_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=true]", + "7028": "minecraft:iron_trapdoor[facing=south,half=bottom,open=true,powered=false,waterlogged=false]", + "7029": "minecraft:iron_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=true]", + "7030": "minecraft:iron_trapdoor[facing=south,half=bottom,open=false,powered=true,waterlogged=false]", + "7031": "minecraft:iron_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=true]", + "7032": "minecraft:iron_trapdoor[facing=south,half=bottom,open=false,powered=false,waterlogged=false]", + "7033": "minecraft:iron_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=true]", + "7034": "minecraft:iron_trapdoor[facing=west,half=top,open=true,powered=true,waterlogged=false]", + "7035": "minecraft:iron_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=true]", + "7036": "minecraft:iron_trapdoor[facing=west,half=top,open=true,powered=false,waterlogged=false]", + "7037": "minecraft:iron_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=true]", + "7038": "minecraft:iron_trapdoor[facing=west,half=top,open=false,powered=true,waterlogged=false]", + "7039": "minecraft:iron_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=true]", + "7040": "minecraft:iron_trapdoor[facing=west,half=top,open=false,powered=false,waterlogged=false]", + "7041": "minecraft:iron_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=true]", + "7042": "minecraft:iron_trapdoor[facing=west,half=bottom,open=true,powered=true,waterlogged=false]", + "7043": "minecraft:iron_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=true]", + "7044": "minecraft:iron_trapdoor[facing=west,half=bottom,open=true,powered=false,waterlogged=false]", + "7045": "minecraft:iron_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=true]", + "7046": "minecraft:iron_trapdoor[facing=west,half=bottom,open=false,powered=true,waterlogged=false]", + "7047": "minecraft:iron_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=true]", + "7048": "minecraft:iron_trapdoor[facing=west,half=bottom,open=false,powered=false,waterlogged=false]", + "7049": "minecraft:iron_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=true]", + "7050": "minecraft:iron_trapdoor[facing=east,half=top,open=true,powered=true,waterlogged=false]", + "7051": "minecraft:iron_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=true]", + "7052": "minecraft:iron_trapdoor[facing=east,half=top,open=true,powered=false,waterlogged=false]", + "7053": "minecraft:iron_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=true]", + "7054": "minecraft:iron_trapdoor[facing=east,half=top,open=false,powered=true,waterlogged=false]", + "7055": "minecraft:iron_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=true]", + "7056": "minecraft:iron_trapdoor[facing=east,half=top,open=false,powered=false,waterlogged=false]", + "7057": "minecraft:iron_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=true]", + "7058": "minecraft:iron_trapdoor[facing=east,half=bottom,open=true,powered=true,waterlogged=false]", + "7059": "minecraft:iron_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=true]", + "7060": "minecraft:iron_trapdoor[facing=east,half=bottom,open=true,powered=false,waterlogged=false]", + "7061": "minecraft:iron_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=true]", + "7062": "minecraft:iron_trapdoor[facing=east,half=bottom,open=false,powered=true,waterlogged=false]", + "7063": "minecraft:iron_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=true]", + "7064": "minecraft:iron_trapdoor[facing=east,half=bottom,open=false,powered=false,waterlogged=false]", + "7065": "minecraft:prismarine", + "7066": "minecraft:prismarine_bricks", + "7067": "minecraft:dark_prismarine", + "7068": "minecraft:prismarine_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "7069": "minecraft:prismarine_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "7070": "minecraft:prismarine_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "7071": "minecraft:prismarine_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "7072": "minecraft:prismarine_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "7073": "minecraft:prismarine_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "7074": "minecraft:prismarine_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "7075": "minecraft:prismarine_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "7076": "minecraft:prismarine_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "7077": "minecraft:prismarine_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "7078": "minecraft:prismarine_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "7079": "minecraft:prismarine_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "7080": "minecraft:prismarine_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "7081": "minecraft:prismarine_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "7082": "minecraft:prismarine_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "7083": "minecraft:prismarine_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "7084": "minecraft:prismarine_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "7085": "minecraft:prismarine_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "7086": "minecraft:prismarine_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "7087": "minecraft:prismarine_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "7088": "minecraft:prismarine_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "7089": "minecraft:prismarine_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "7090": "minecraft:prismarine_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "7091": "minecraft:prismarine_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "7092": "minecraft:prismarine_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "7093": "minecraft:prismarine_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "7094": "minecraft:prismarine_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "7095": "minecraft:prismarine_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "7096": "minecraft:prismarine_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "7097": "minecraft:prismarine_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "7098": "minecraft:prismarine_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "7099": "minecraft:prismarine_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "7100": "minecraft:prismarine_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "7101": "minecraft:prismarine_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "7102": "minecraft:prismarine_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "7103": "minecraft:prismarine_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "7104": "minecraft:prismarine_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "7105": "minecraft:prismarine_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "7106": "minecraft:prismarine_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "7107": "minecraft:prismarine_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "7108": "minecraft:prismarine_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "7109": "minecraft:prismarine_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "7110": "minecraft:prismarine_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "7111": "minecraft:prismarine_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "7112": "minecraft:prismarine_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "7113": "minecraft:prismarine_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "7114": "minecraft:prismarine_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "7115": "minecraft:prismarine_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "7116": "minecraft:prismarine_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "7117": "minecraft:prismarine_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "7118": "minecraft:prismarine_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "7119": "minecraft:prismarine_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "7120": "minecraft:prismarine_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "7121": "minecraft:prismarine_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "7122": "minecraft:prismarine_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "7123": "minecraft:prismarine_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "7124": "minecraft:prismarine_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "7125": "minecraft:prismarine_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "7126": "minecraft:prismarine_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "7127": "minecraft:prismarine_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "7128": "minecraft:prismarine_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "7129": "minecraft:prismarine_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "7130": "minecraft:prismarine_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "7131": "minecraft:prismarine_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "7132": "minecraft:prismarine_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "7133": "minecraft:prismarine_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "7134": "minecraft:prismarine_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "7135": "minecraft:prismarine_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "7136": "minecraft:prismarine_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "7137": "minecraft:prismarine_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "7138": "minecraft:prismarine_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "7139": "minecraft:prismarine_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "7140": "minecraft:prismarine_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "7141": "minecraft:prismarine_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "7142": "minecraft:prismarine_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "7143": "minecraft:prismarine_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "7144": "minecraft:prismarine_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "7145": "minecraft:prismarine_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "7146": "minecraft:prismarine_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "7147": "minecraft:prismarine_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "7148": "minecraft:prismarine_brick_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "7149": "minecraft:prismarine_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "7150": "minecraft:prismarine_brick_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "7151": "minecraft:prismarine_brick_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "7152": "minecraft:prismarine_brick_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "7153": "minecraft:prismarine_brick_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "7154": "minecraft:prismarine_brick_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "7155": "minecraft:prismarine_brick_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "7156": "minecraft:prismarine_brick_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "7157": "minecraft:prismarine_brick_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "7158": "minecraft:prismarine_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "7159": "minecraft:prismarine_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "7160": "minecraft:prismarine_brick_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "7161": "minecraft:prismarine_brick_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "7162": "minecraft:prismarine_brick_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "7163": "minecraft:prismarine_brick_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "7164": "minecraft:prismarine_brick_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "7165": "minecraft:prismarine_brick_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "7166": "minecraft:prismarine_brick_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "7167": "minecraft:prismarine_brick_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "7168": "minecraft:prismarine_brick_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "7169": "minecraft:prismarine_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "7170": "minecraft:prismarine_brick_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "7171": "minecraft:prismarine_brick_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "7172": "minecraft:prismarine_brick_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "7173": "minecraft:prismarine_brick_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "7174": "minecraft:prismarine_brick_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "7175": "minecraft:prismarine_brick_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "7176": "minecraft:prismarine_brick_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "7177": "minecraft:prismarine_brick_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "7178": "minecraft:prismarine_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "7179": "minecraft:prismarine_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "7180": "minecraft:prismarine_brick_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "7181": "minecraft:prismarine_brick_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "7182": "minecraft:prismarine_brick_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "7183": "minecraft:prismarine_brick_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "7184": "minecraft:prismarine_brick_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "7185": "minecraft:prismarine_brick_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "7186": "minecraft:prismarine_brick_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "7187": "minecraft:prismarine_brick_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "7188": "minecraft:prismarine_brick_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "7189": "minecraft:prismarine_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "7190": "minecraft:prismarine_brick_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "7191": "minecraft:prismarine_brick_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "7192": "minecraft:prismarine_brick_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "7193": "minecraft:prismarine_brick_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "7194": "minecraft:prismarine_brick_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "7195": "minecraft:prismarine_brick_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "7196": "minecraft:prismarine_brick_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "7197": "minecraft:prismarine_brick_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "7198": "minecraft:prismarine_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "7199": "minecraft:prismarine_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "7200": "minecraft:prismarine_brick_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "7201": "minecraft:prismarine_brick_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "7202": "minecraft:prismarine_brick_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "7203": "minecraft:prismarine_brick_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "7204": "minecraft:prismarine_brick_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "7205": "minecraft:prismarine_brick_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "7206": "minecraft:prismarine_brick_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "7207": "minecraft:prismarine_brick_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "7208": "minecraft:prismarine_brick_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "7209": "minecraft:prismarine_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "7210": "minecraft:prismarine_brick_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "7211": "minecraft:prismarine_brick_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "7212": "minecraft:prismarine_brick_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "7213": "minecraft:prismarine_brick_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "7214": "minecraft:prismarine_brick_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "7215": "minecraft:prismarine_brick_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "7216": "minecraft:prismarine_brick_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "7217": "minecraft:prismarine_brick_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "7218": "minecraft:prismarine_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "7219": "minecraft:prismarine_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "7220": "minecraft:prismarine_brick_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "7221": "minecraft:prismarine_brick_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "7222": "minecraft:prismarine_brick_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "7223": "minecraft:prismarine_brick_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "7224": "minecraft:prismarine_brick_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "7225": "minecraft:prismarine_brick_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "7226": "minecraft:prismarine_brick_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "7227": "minecraft:prismarine_brick_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "7228": "minecraft:dark_prismarine_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "7229": "minecraft:dark_prismarine_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "7230": "minecraft:dark_prismarine_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "7231": "minecraft:dark_prismarine_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "7232": "minecraft:dark_prismarine_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "7233": "minecraft:dark_prismarine_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "7234": "minecraft:dark_prismarine_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "7235": "minecraft:dark_prismarine_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "7236": "minecraft:dark_prismarine_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "7237": "minecraft:dark_prismarine_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "7238": "minecraft:dark_prismarine_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "7239": "minecraft:dark_prismarine_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "7240": "minecraft:dark_prismarine_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "7241": "minecraft:dark_prismarine_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "7242": "minecraft:dark_prismarine_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "7243": "minecraft:dark_prismarine_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "7244": "minecraft:dark_prismarine_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "7245": "minecraft:dark_prismarine_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "7246": "minecraft:dark_prismarine_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "7247": "minecraft:dark_prismarine_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "7248": "minecraft:dark_prismarine_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "7249": "minecraft:dark_prismarine_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "7250": "minecraft:dark_prismarine_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "7251": "minecraft:dark_prismarine_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "7252": "minecraft:dark_prismarine_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "7253": "minecraft:dark_prismarine_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "7254": "minecraft:dark_prismarine_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "7255": "minecraft:dark_prismarine_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "7256": "minecraft:dark_prismarine_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "7257": "minecraft:dark_prismarine_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "7258": "minecraft:dark_prismarine_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "7259": "minecraft:dark_prismarine_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "7260": "minecraft:dark_prismarine_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "7261": "minecraft:dark_prismarine_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "7262": "minecraft:dark_prismarine_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "7263": "minecraft:dark_prismarine_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "7264": "minecraft:dark_prismarine_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "7265": "minecraft:dark_prismarine_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "7266": "minecraft:dark_prismarine_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "7267": "minecraft:dark_prismarine_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "7268": "minecraft:dark_prismarine_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "7269": "minecraft:dark_prismarine_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "7270": "minecraft:dark_prismarine_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "7271": "minecraft:dark_prismarine_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "7272": "minecraft:dark_prismarine_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "7273": "minecraft:dark_prismarine_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "7274": "minecraft:dark_prismarine_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "7275": "minecraft:dark_prismarine_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "7276": "minecraft:dark_prismarine_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "7277": "minecraft:dark_prismarine_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "7278": "minecraft:dark_prismarine_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "7279": "minecraft:dark_prismarine_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "7280": "minecraft:dark_prismarine_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "7281": "minecraft:dark_prismarine_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "7282": "minecraft:dark_prismarine_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "7283": "minecraft:dark_prismarine_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "7284": "minecraft:dark_prismarine_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "7285": "minecraft:dark_prismarine_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "7286": "minecraft:dark_prismarine_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "7287": "minecraft:dark_prismarine_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "7288": "minecraft:dark_prismarine_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "7289": "minecraft:dark_prismarine_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "7290": "minecraft:dark_prismarine_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "7291": "minecraft:dark_prismarine_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "7292": "minecraft:dark_prismarine_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "7293": "minecraft:dark_prismarine_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "7294": "minecraft:dark_prismarine_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "7295": "minecraft:dark_prismarine_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "7296": "minecraft:dark_prismarine_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "7297": "minecraft:dark_prismarine_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "7298": "minecraft:dark_prismarine_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "7299": "minecraft:dark_prismarine_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "7300": "minecraft:dark_prismarine_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "7301": "minecraft:dark_prismarine_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "7302": "minecraft:dark_prismarine_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "7303": "minecraft:dark_prismarine_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "7304": "minecraft:dark_prismarine_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "7305": "minecraft:dark_prismarine_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "7306": "minecraft:dark_prismarine_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "7307": "minecraft:dark_prismarine_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "7308": "minecraft:prismarine_slab[type=top,waterlogged=true]", + "7309": "minecraft:prismarine_slab[type=top,waterlogged=false]", + "7310": "minecraft:prismarine_slab[type=bottom,waterlogged=true]", + "7311": "minecraft:prismarine_slab[type=bottom,waterlogged=false]", + "7312": "minecraft:prismarine_slab[type=double,waterlogged=true]", + "7313": "minecraft:prismarine_slab[type=double,waterlogged=false]", + "7314": "minecraft:prismarine_brick_slab[type=top,waterlogged=true]", + "7315": "minecraft:prismarine_brick_slab[type=top,waterlogged=false]", + "7316": "minecraft:prismarine_brick_slab[type=bottom,waterlogged=true]", + "7317": "minecraft:prismarine_brick_slab[type=bottom,waterlogged=false]", + "7318": "minecraft:prismarine_brick_slab[type=double,waterlogged=true]", + "7319": "minecraft:prismarine_brick_slab[type=double,waterlogged=false]", + "7320": "minecraft:dark_prismarine_slab[type=top,waterlogged=true]", + "7321": "minecraft:dark_prismarine_slab[type=top,waterlogged=false]", + "7322": "minecraft:dark_prismarine_slab[type=bottom,waterlogged=true]", + "7323": "minecraft:dark_prismarine_slab[type=bottom,waterlogged=false]", + "7324": "minecraft:dark_prismarine_slab[type=double,waterlogged=true]", + "7325": "minecraft:dark_prismarine_slab[type=double,waterlogged=false]", + "7326": "minecraft:sea_lantern", + "7327": "minecraft:hay_block[axis=x]", + "7328": "minecraft:hay_block[axis=y]", + "7329": "minecraft:hay_block[axis=z]", + "7330": "minecraft:white_carpet", + "7331": "minecraft:orange_carpet", + "7332": "minecraft:magenta_carpet", + "7333": "minecraft:light_blue_carpet", + "7334": "minecraft:yellow_carpet", + "7335": "minecraft:lime_carpet", + "7336": "minecraft:pink_carpet", + "7337": "minecraft:gray_carpet", + "7338": "minecraft:light_gray_carpet", + "7339": "minecraft:cyan_carpet", + "7340": "minecraft:purple_carpet", + "7341": "minecraft:blue_carpet", + "7342": "minecraft:brown_carpet", + "7343": "minecraft:green_carpet", + "7344": "minecraft:red_carpet", + "7345": "minecraft:black_carpet", + "7346": "minecraft:terracotta", + "7347": "minecraft:coal_block", + "7348": "minecraft:packed_ice", + "7349": "minecraft:sunflower[half=upper]", + "7350": "minecraft:sunflower[half=lower]", + "7351": "minecraft:lilac[half=upper]", + "7352": "minecraft:lilac[half=lower]", + "7353": "minecraft:rose_bush[half=upper]", + "7354": "minecraft:rose_bush[half=lower]", + "7355": "minecraft:peony[half=upper]", + "7356": "minecraft:peony[half=lower]", + "7357": "minecraft:tall_grass[half=upper]", + "7358": "minecraft:tall_grass[half=lower]", + "7359": "minecraft:large_fern[half=upper]", + "7360": "minecraft:large_fern[half=lower]", + "7361": "minecraft:white_banner[rotation=0]", + "7362": "minecraft:white_banner[rotation=1]", + "7363": "minecraft:white_banner[rotation=2]", + "7364": "minecraft:white_banner[rotation=3]", + "7365": "minecraft:white_banner[rotation=4]", + "7366": "minecraft:white_banner[rotation=5]", + "7367": "minecraft:white_banner[rotation=6]", + "7368": "minecraft:white_banner[rotation=7]", + "7369": "minecraft:white_banner[rotation=8]", + "7370": "minecraft:white_banner[rotation=9]", + "7371": "minecraft:white_banner[rotation=10]", + "7372": "minecraft:white_banner[rotation=11]", + "7373": "minecraft:white_banner[rotation=12]", + "7374": "minecraft:white_banner[rotation=13]", + "7375": "minecraft:white_banner[rotation=14]", + "7376": "minecraft:white_banner[rotation=15]", + "7377": "minecraft:orange_banner[rotation=0]", + "7378": "minecraft:orange_banner[rotation=1]", + "7379": "minecraft:orange_banner[rotation=2]", + "7380": "minecraft:orange_banner[rotation=3]", + "7381": "minecraft:orange_banner[rotation=4]", + "7382": "minecraft:orange_banner[rotation=5]", + "7383": "minecraft:orange_banner[rotation=6]", + "7384": "minecraft:orange_banner[rotation=7]", + "7385": "minecraft:orange_banner[rotation=8]", + "7386": "minecraft:orange_banner[rotation=9]", + "7387": "minecraft:orange_banner[rotation=10]", + "7388": "minecraft:orange_banner[rotation=11]", + "7389": "minecraft:orange_banner[rotation=12]", + "7390": "minecraft:orange_banner[rotation=13]", + "7391": "minecraft:orange_banner[rotation=14]", + "7392": "minecraft:orange_banner[rotation=15]", + "7393": "minecraft:magenta_banner[rotation=0]", + "7394": "minecraft:magenta_banner[rotation=1]", + "7395": "minecraft:magenta_banner[rotation=2]", + "7396": "minecraft:magenta_banner[rotation=3]", + "7397": "minecraft:magenta_banner[rotation=4]", + "7398": "minecraft:magenta_banner[rotation=5]", + "7399": "minecraft:magenta_banner[rotation=6]", + "7400": "minecraft:magenta_banner[rotation=7]", + "7401": "minecraft:magenta_banner[rotation=8]", + "7402": "minecraft:magenta_banner[rotation=9]", + "7403": "minecraft:magenta_banner[rotation=10]", + "7404": "minecraft:magenta_banner[rotation=11]", + "7405": "minecraft:magenta_banner[rotation=12]", + "7406": "minecraft:magenta_banner[rotation=13]", + "7407": "minecraft:magenta_banner[rotation=14]", + "7408": "minecraft:magenta_banner[rotation=15]", + "7409": "minecraft:light_blue_banner[rotation=0]", + "7410": "minecraft:light_blue_banner[rotation=1]", + "7411": "minecraft:light_blue_banner[rotation=2]", + "7412": "minecraft:light_blue_banner[rotation=3]", + "7413": "minecraft:light_blue_banner[rotation=4]", + "7414": "minecraft:light_blue_banner[rotation=5]", + "7415": "minecraft:light_blue_banner[rotation=6]", + "7416": "minecraft:light_blue_banner[rotation=7]", + "7417": "minecraft:light_blue_banner[rotation=8]", + "7418": "minecraft:light_blue_banner[rotation=9]", + "7419": "minecraft:light_blue_banner[rotation=10]", + "7420": "minecraft:light_blue_banner[rotation=11]", + "7421": "minecraft:light_blue_banner[rotation=12]", + "7422": "minecraft:light_blue_banner[rotation=13]", + "7423": "minecraft:light_blue_banner[rotation=14]", + "7424": "minecraft:light_blue_banner[rotation=15]", + "7425": "minecraft:yellow_banner[rotation=0]", + "7426": "minecraft:yellow_banner[rotation=1]", + "7427": "minecraft:yellow_banner[rotation=2]", + "7428": "minecraft:yellow_banner[rotation=3]", + "7429": "minecraft:yellow_banner[rotation=4]", + "7430": "minecraft:yellow_banner[rotation=5]", + "7431": "minecraft:yellow_banner[rotation=6]", + "7432": "minecraft:yellow_banner[rotation=7]", + "7433": "minecraft:yellow_banner[rotation=8]", + "7434": "minecraft:yellow_banner[rotation=9]", + "7435": "minecraft:yellow_banner[rotation=10]", + "7436": "minecraft:yellow_banner[rotation=11]", + "7437": "minecraft:yellow_banner[rotation=12]", + "7438": "minecraft:yellow_banner[rotation=13]", + "7439": "minecraft:yellow_banner[rotation=14]", + "7440": "minecraft:yellow_banner[rotation=15]", + "7441": "minecraft:lime_banner[rotation=0]", + "7442": "minecraft:lime_banner[rotation=1]", + "7443": "minecraft:lime_banner[rotation=2]", + "7444": "minecraft:lime_banner[rotation=3]", + "7445": "minecraft:lime_banner[rotation=4]", + "7446": "minecraft:lime_banner[rotation=5]", + "7447": "minecraft:lime_banner[rotation=6]", + "7448": "minecraft:lime_banner[rotation=7]", + "7449": "minecraft:lime_banner[rotation=8]", + "7450": "minecraft:lime_banner[rotation=9]", + "7451": "minecraft:lime_banner[rotation=10]", + "7452": "minecraft:lime_banner[rotation=11]", + "7453": "minecraft:lime_banner[rotation=12]", + "7454": "minecraft:lime_banner[rotation=13]", + "7455": "minecraft:lime_banner[rotation=14]", + "7456": "minecraft:lime_banner[rotation=15]", + "7457": "minecraft:pink_banner[rotation=0]", + "7458": "minecraft:pink_banner[rotation=1]", + "7459": "minecraft:pink_banner[rotation=2]", + "7460": "minecraft:pink_banner[rotation=3]", + "7461": "minecraft:pink_banner[rotation=4]", + "7462": "minecraft:pink_banner[rotation=5]", + "7463": "minecraft:pink_banner[rotation=6]", + "7464": "minecraft:pink_banner[rotation=7]", + "7465": "minecraft:pink_banner[rotation=8]", + "7466": "minecraft:pink_banner[rotation=9]", + "7467": "minecraft:pink_banner[rotation=10]", + "7468": "minecraft:pink_banner[rotation=11]", + "7469": "minecraft:pink_banner[rotation=12]", + "7470": "minecraft:pink_banner[rotation=13]", + "7471": "minecraft:pink_banner[rotation=14]", + "7472": "minecraft:pink_banner[rotation=15]", + "7473": "minecraft:gray_banner[rotation=0]", + "7474": "minecraft:gray_banner[rotation=1]", + "7475": "minecraft:gray_banner[rotation=2]", + "7476": "minecraft:gray_banner[rotation=3]", + "7477": "minecraft:gray_banner[rotation=4]", + "7478": "minecraft:gray_banner[rotation=5]", + "7479": "minecraft:gray_banner[rotation=6]", + "7480": "minecraft:gray_banner[rotation=7]", + "7481": "minecraft:gray_banner[rotation=8]", + "7482": "minecraft:gray_banner[rotation=9]", + "7483": "minecraft:gray_banner[rotation=10]", + "7484": "minecraft:gray_banner[rotation=11]", + "7485": "minecraft:gray_banner[rotation=12]", + "7486": "minecraft:gray_banner[rotation=13]", + "7487": "minecraft:gray_banner[rotation=14]", + "7488": "minecraft:gray_banner[rotation=15]", + "7489": "minecraft:light_gray_banner[rotation=0]", + "7490": "minecraft:light_gray_banner[rotation=1]", + "7491": "minecraft:light_gray_banner[rotation=2]", + "7492": "minecraft:light_gray_banner[rotation=3]", + "7493": "minecraft:light_gray_banner[rotation=4]", + "7494": "minecraft:light_gray_banner[rotation=5]", + "7495": "minecraft:light_gray_banner[rotation=6]", + "7496": "minecraft:light_gray_banner[rotation=7]", + "7497": "minecraft:light_gray_banner[rotation=8]", + "7498": "minecraft:light_gray_banner[rotation=9]", + "7499": "minecraft:light_gray_banner[rotation=10]", + "7500": "minecraft:light_gray_banner[rotation=11]", + "7501": "minecraft:light_gray_banner[rotation=12]", + "7502": "minecraft:light_gray_banner[rotation=13]", + "7503": "minecraft:light_gray_banner[rotation=14]", + "7504": "minecraft:light_gray_banner[rotation=15]", + "7505": "minecraft:cyan_banner[rotation=0]", + "7506": "minecraft:cyan_banner[rotation=1]", + "7507": "minecraft:cyan_banner[rotation=2]", + "7508": "minecraft:cyan_banner[rotation=3]", + "7509": "minecraft:cyan_banner[rotation=4]", + "7510": "minecraft:cyan_banner[rotation=5]", + "7511": "minecraft:cyan_banner[rotation=6]", + "7512": "minecraft:cyan_banner[rotation=7]", + "7513": "minecraft:cyan_banner[rotation=8]", + "7514": "minecraft:cyan_banner[rotation=9]", + "7515": "minecraft:cyan_banner[rotation=10]", + "7516": "minecraft:cyan_banner[rotation=11]", + "7517": "minecraft:cyan_banner[rotation=12]", + "7518": "minecraft:cyan_banner[rotation=13]", + "7519": "minecraft:cyan_banner[rotation=14]", + "7520": "minecraft:cyan_banner[rotation=15]", + "7521": "minecraft:purple_banner[rotation=0]", + "7522": "minecraft:purple_banner[rotation=1]", + "7523": "minecraft:purple_banner[rotation=2]", + "7524": "minecraft:purple_banner[rotation=3]", + "7525": "minecraft:purple_banner[rotation=4]", + "7526": "minecraft:purple_banner[rotation=5]", + "7527": "minecraft:purple_banner[rotation=6]", + "7528": "minecraft:purple_banner[rotation=7]", + "7529": "minecraft:purple_banner[rotation=8]", + "7530": "minecraft:purple_banner[rotation=9]", + "7531": "minecraft:purple_banner[rotation=10]", + "7532": "minecraft:purple_banner[rotation=11]", + "7533": "minecraft:purple_banner[rotation=12]", + "7534": "minecraft:purple_banner[rotation=13]", + "7535": "minecraft:purple_banner[rotation=14]", + "7536": "minecraft:purple_banner[rotation=15]", + "7537": "minecraft:blue_banner[rotation=0]", + "7538": "minecraft:blue_banner[rotation=1]", + "7539": "minecraft:blue_banner[rotation=2]", + "7540": "minecraft:blue_banner[rotation=3]", + "7541": "minecraft:blue_banner[rotation=4]", + "7542": "minecraft:blue_banner[rotation=5]", + "7543": "minecraft:blue_banner[rotation=6]", + "7544": "minecraft:blue_banner[rotation=7]", + "7545": "minecraft:blue_banner[rotation=8]", + "7546": "minecraft:blue_banner[rotation=9]", + "7547": "minecraft:blue_banner[rotation=10]", + "7548": "minecraft:blue_banner[rotation=11]", + "7549": "minecraft:blue_banner[rotation=12]", + "7550": "minecraft:blue_banner[rotation=13]", + "7551": "minecraft:blue_banner[rotation=14]", + "7552": "minecraft:blue_banner[rotation=15]", + "7553": "minecraft:brown_banner[rotation=0]", + "7554": "minecraft:brown_banner[rotation=1]", + "7555": "minecraft:brown_banner[rotation=2]", + "7556": "minecraft:brown_banner[rotation=3]", + "7557": "minecraft:brown_banner[rotation=4]", + "7558": "minecraft:brown_banner[rotation=5]", + "7559": "minecraft:brown_banner[rotation=6]", + "7560": "minecraft:brown_banner[rotation=7]", + "7561": "minecraft:brown_banner[rotation=8]", + "7562": "minecraft:brown_banner[rotation=9]", + "7563": "minecraft:brown_banner[rotation=10]", + "7564": "minecraft:brown_banner[rotation=11]", + "7565": "minecraft:brown_banner[rotation=12]", + "7566": "minecraft:brown_banner[rotation=13]", + "7567": "minecraft:brown_banner[rotation=14]", + "7568": "minecraft:brown_banner[rotation=15]", + "7569": "minecraft:green_banner[rotation=0]", + "7570": "minecraft:green_banner[rotation=1]", + "7571": "minecraft:green_banner[rotation=2]", + "7572": "minecraft:green_banner[rotation=3]", + "7573": "minecraft:green_banner[rotation=4]", + "7574": "minecraft:green_banner[rotation=5]", + "7575": "minecraft:green_banner[rotation=6]", + "7576": "minecraft:green_banner[rotation=7]", + "7577": "minecraft:green_banner[rotation=8]", + "7578": "minecraft:green_banner[rotation=9]", + "7579": "minecraft:green_banner[rotation=10]", + "7580": "minecraft:green_banner[rotation=11]", + "7581": "minecraft:green_banner[rotation=12]", + "7582": "minecraft:green_banner[rotation=13]", + "7583": "minecraft:green_banner[rotation=14]", + "7584": "minecraft:green_banner[rotation=15]", + "7585": "minecraft:red_banner[rotation=0]", + "7586": "minecraft:red_banner[rotation=1]", + "7587": "minecraft:red_banner[rotation=2]", + "7588": "minecraft:red_banner[rotation=3]", + "7589": "minecraft:red_banner[rotation=4]", + "7590": "minecraft:red_banner[rotation=5]", + "7591": "minecraft:red_banner[rotation=6]", + "7592": "minecraft:red_banner[rotation=7]", + "7593": "minecraft:red_banner[rotation=8]", + "7594": "minecraft:red_banner[rotation=9]", + "7595": "minecraft:red_banner[rotation=10]", + "7596": "minecraft:red_banner[rotation=11]", + "7597": "minecraft:red_banner[rotation=12]", + "7598": "minecraft:red_banner[rotation=13]", + "7599": "minecraft:red_banner[rotation=14]", + "7600": "minecraft:red_banner[rotation=15]", + "7601": "minecraft:black_banner[rotation=0]", + "7602": "minecraft:black_banner[rotation=1]", + "7603": "minecraft:black_banner[rotation=2]", + "7604": "minecraft:black_banner[rotation=3]", + "7605": "minecraft:black_banner[rotation=4]", + "7606": "minecraft:black_banner[rotation=5]", + "7607": "minecraft:black_banner[rotation=6]", + "7608": "minecraft:black_banner[rotation=7]", + "7609": "minecraft:black_banner[rotation=8]", + "7610": "minecraft:black_banner[rotation=9]", + "7611": "minecraft:black_banner[rotation=10]", + "7612": "minecraft:black_banner[rotation=11]", + "7613": "minecraft:black_banner[rotation=12]", + "7614": "minecraft:black_banner[rotation=13]", + "7615": "minecraft:black_banner[rotation=14]", + "7616": "minecraft:black_banner[rotation=15]", + "7617": "minecraft:white_wall_banner[facing=north]", + "7618": "minecraft:white_wall_banner[facing=south]", + "7619": "minecraft:white_wall_banner[facing=west]", + "7620": "minecraft:white_wall_banner[facing=east]", + "7621": "minecraft:orange_wall_banner[facing=north]", + "7622": "minecraft:orange_wall_banner[facing=south]", + "7623": "minecraft:orange_wall_banner[facing=west]", + "7624": "minecraft:orange_wall_banner[facing=east]", + "7625": "minecraft:magenta_wall_banner[facing=north]", + "7626": "minecraft:magenta_wall_banner[facing=south]", + "7627": "minecraft:magenta_wall_banner[facing=west]", + "7628": "minecraft:magenta_wall_banner[facing=east]", + "7629": "minecraft:light_blue_wall_banner[facing=north]", + "7630": "minecraft:light_blue_wall_banner[facing=south]", + "7631": "minecraft:light_blue_wall_banner[facing=west]", + "7632": "minecraft:light_blue_wall_banner[facing=east]", + "7633": "minecraft:yellow_wall_banner[facing=north]", + "7634": "minecraft:yellow_wall_banner[facing=south]", + "7635": "minecraft:yellow_wall_banner[facing=west]", + "7636": "minecraft:yellow_wall_banner[facing=east]", + "7637": "minecraft:lime_wall_banner[facing=north]", + "7638": "minecraft:lime_wall_banner[facing=south]", + "7639": "minecraft:lime_wall_banner[facing=west]", + "7640": "minecraft:lime_wall_banner[facing=east]", + "7641": "minecraft:pink_wall_banner[facing=north]", + "7642": "minecraft:pink_wall_banner[facing=south]", + "7643": "minecraft:pink_wall_banner[facing=west]", + "7644": "minecraft:pink_wall_banner[facing=east]", + "7645": "minecraft:gray_wall_banner[facing=north]", + "7646": "minecraft:gray_wall_banner[facing=south]", + "7647": "minecraft:gray_wall_banner[facing=west]", + "7648": "minecraft:gray_wall_banner[facing=east]", + "7649": "minecraft:light_gray_wall_banner[facing=north]", + "7650": "minecraft:light_gray_wall_banner[facing=south]", + "7651": "minecraft:light_gray_wall_banner[facing=west]", + "7652": "minecraft:light_gray_wall_banner[facing=east]", + "7653": "minecraft:cyan_wall_banner[facing=north]", + "7654": "minecraft:cyan_wall_banner[facing=south]", + "7655": "minecraft:cyan_wall_banner[facing=west]", + "7656": "minecraft:cyan_wall_banner[facing=east]", + "7657": "minecraft:purple_wall_banner[facing=north]", + "7658": "minecraft:purple_wall_banner[facing=south]", + "7659": "minecraft:purple_wall_banner[facing=west]", + "7660": "minecraft:purple_wall_banner[facing=east]", + "7661": "minecraft:blue_wall_banner[facing=north]", + "7662": "minecraft:blue_wall_banner[facing=south]", + "7663": "minecraft:blue_wall_banner[facing=west]", + "7664": "minecraft:blue_wall_banner[facing=east]", + "7665": "minecraft:brown_wall_banner[facing=north]", + "7666": "minecraft:brown_wall_banner[facing=south]", + "7667": "minecraft:brown_wall_banner[facing=west]", + "7668": "minecraft:brown_wall_banner[facing=east]", + "7669": "minecraft:green_wall_banner[facing=north]", + "7670": "minecraft:green_wall_banner[facing=south]", + "7671": "minecraft:green_wall_banner[facing=west]", + "7672": "minecraft:green_wall_banner[facing=east]", + "7673": "minecraft:red_wall_banner[facing=north]", + "7674": "minecraft:red_wall_banner[facing=south]", + "7675": "minecraft:red_wall_banner[facing=west]", + "7676": "minecraft:red_wall_banner[facing=east]", + "7677": "minecraft:black_wall_banner[facing=north]", + "7678": "minecraft:black_wall_banner[facing=south]", + "7679": "minecraft:black_wall_banner[facing=west]", + "7680": "minecraft:black_wall_banner[facing=east]", + "7681": "minecraft:red_sandstone", + "7682": "minecraft:chiseled_red_sandstone", + "7683": "minecraft:cut_red_sandstone", + "7684": "minecraft:red_sandstone_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "7685": "minecraft:red_sandstone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "7686": "minecraft:red_sandstone_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "7687": "minecraft:red_sandstone_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "7688": "minecraft:red_sandstone_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "7689": "minecraft:red_sandstone_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "7690": "minecraft:red_sandstone_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "7691": "minecraft:red_sandstone_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "7692": "minecraft:red_sandstone_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "7693": "minecraft:red_sandstone_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "7694": "minecraft:red_sandstone_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "7695": "minecraft:red_sandstone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "7696": "minecraft:red_sandstone_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "7697": "minecraft:red_sandstone_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "7698": "minecraft:red_sandstone_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "7699": "minecraft:red_sandstone_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "7700": "minecraft:red_sandstone_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "7701": "minecraft:red_sandstone_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "7702": "minecraft:red_sandstone_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "7703": "minecraft:red_sandstone_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "7704": "minecraft:red_sandstone_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "7705": "minecraft:red_sandstone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "7706": "minecraft:red_sandstone_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "7707": "minecraft:red_sandstone_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "7708": "minecraft:red_sandstone_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "7709": "minecraft:red_sandstone_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "7710": "minecraft:red_sandstone_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "7711": "minecraft:red_sandstone_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "7712": "minecraft:red_sandstone_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "7713": "minecraft:red_sandstone_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "7714": "minecraft:red_sandstone_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "7715": "minecraft:red_sandstone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "7716": "minecraft:red_sandstone_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "7717": "minecraft:red_sandstone_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "7718": "minecraft:red_sandstone_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "7719": "minecraft:red_sandstone_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "7720": "minecraft:red_sandstone_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "7721": "minecraft:red_sandstone_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "7722": "minecraft:red_sandstone_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "7723": "minecraft:red_sandstone_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "7724": "minecraft:red_sandstone_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "7725": "minecraft:red_sandstone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "7726": "minecraft:red_sandstone_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "7727": "minecraft:red_sandstone_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "7728": "minecraft:red_sandstone_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "7729": "minecraft:red_sandstone_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "7730": "minecraft:red_sandstone_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "7731": "minecraft:red_sandstone_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "7732": "minecraft:red_sandstone_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "7733": "minecraft:red_sandstone_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "7734": "minecraft:red_sandstone_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "7735": "minecraft:red_sandstone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "7736": "minecraft:red_sandstone_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "7737": "minecraft:red_sandstone_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "7738": "minecraft:red_sandstone_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "7739": "minecraft:red_sandstone_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "7740": "minecraft:red_sandstone_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "7741": "minecraft:red_sandstone_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "7742": "minecraft:red_sandstone_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "7743": "minecraft:red_sandstone_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "7744": "minecraft:red_sandstone_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "7745": "minecraft:red_sandstone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "7746": "minecraft:red_sandstone_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "7747": "minecraft:red_sandstone_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "7748": "minecraft:red_sandstone_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "7749": "minecraft:red_sandstone_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "7750": "minecraft:red_sandstone_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "7751": "minecraft:red_sandstone_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "7752": "minecraft:red_sandstone_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "7753": "minecraft:red_sandstone_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "7754": "minecraft:red_sandstone_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "7755": "minecraft:red_sandstone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "7756": "minecraft:red_sandstone_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "7757": "minecraft:red_sandstone_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "7758": "minecraft:red_sandstone_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "7759": "minecraft:red_sandstone_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "7760": "minecraft:red_sandstone_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "7761": "minecraft:red_sandstone_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "7762": "minecraft:red_sandstone_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "7763": "minecraft:red_sandstone_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "7764": "minecraft:oak_slab[type=top,waterlogged=true]", + "7765": "minecraft:oak_slab[type=top,waterlogged=false]", + "7766": "minecraft:oak_slab[type=bottom,waterlogged=true]", + "7767": "minecraft:oak_slab[type=bottom,waterlogged=false]", + "7768": "minecraft:oak_slab[type=double,waterlogged=true]", + "7769": "minecraft:oak_slab[type=double,waterlogged=false]", + "7770": "minecraft:spruce_slab[type=top,waterlogged=true]", + "7771": "minecraft:spruce_slab[type=top,waterlogged=false]", + "7772": "minecraft:spruce_slab[type=bottom,waterlogged=true]", + "7773": "minecraft:spruce_slab[type=bottom,waterlogged=false]", + "7774": "minecraft:spruce_slab[type=double,waterlogged=true]", + "7775": "minecraft:spruce_slab[type=double,waterlogged=false]", + "7776": "minecraft:birch_slab[type=top,waterlogged=true]", + "7777": "minecraft:birch_slab[type=top,waterlogged=false]", + "7778": "minecraft:birch_slab[type=bottom,waterlogged=true]", + "7779": "minecraft:birch_slab[type=bottom,waterlogged=false]", + "7780": "minecraft:birch_slab[type=double,waterlogged=true]", + "7781": "minecraft:birch_slab[type=double,waterlogged=false]", + "7782": "minecraft:jungle_slab[type=top,waterlogged=true]", + "7783": "minecraft:jungle_slab[type=top,waterlogged=false]", + "7784": "minecraft:jungle_slab[type=bottom,waterlogged=true]", + "7785": "minecraft:jungle_slab[type=bottom,waterlogged=false]", + "7786": "minecraft:jungle_slab[type=double,waterlogged=true]", + "7787": "minecraft:jungle_slab[type=double,waterlogged=false]", + "7788": "minecraft:acacia_slab[type=top,waterlogged=true]", + "7789": "minecraft:acacia_slab[type=top,waterlogged=false]", + "7790": "minecraft:acacia_slab[type=bottom,waterlogged=true]", + "7791": "minecraft:acacia_slab[type=bottom,waterlogged=false]", + "7792": "minecraft:acacia_slab[type=double,waterlogged=true]", + "7793": "minecraft:acacia_slab[type=double,waterlogged=false]", + "7794": "minecraft:dark_oak_slab[type=top,waterlogged=true]", + "7795": "minecraft:dark_oak_slab[type=top,waterlogged=false]", + "7796": "minecraft:dark_oak_slab[type=bottom,waterlogged=true]", + "7797": "minecraft:dark_oak_slab[type=bottom,waterlogged=false]", + "7798": "minecraft:dark_oak_slab[type=double,waterlogged=true]", + "7799": "minecraft:dark_oak_slab[type=double,waterlogged=false]", + "7800": "minecraft:stone_slab[type=top,waterlogged=true]", + "7801": "minecraft:stone_slab[type=top,waterlogged=false]", + "7802": "minecraft:stone_slab[type=bottom,waterlogged=true]", + "7803": "minecraft:stone_slab[type=bottom,waterlogged=false]", + "7804": "minecraft:stone_slab[type=double,waterlogged=true]", + "7805": "minecraft:stone_slab[type=double,waterlogged=false]", + "7806": "minecraft:smooth_stone_slab[type=top,waterlogged=true]", + "7807": "minecraft:smooth_stone_slab[type=top,waterlogged=false]", + "7808": "minecraft:smooth_stone_slab[type=bottom,waterlogged=true]", + "7809": "minecraft:smooth_stone_slab[type=bottom,waterlogged=false]", + "7810": "minecraft:smooth_stone_slab[type=double,waterlogged=true]", + "7811": "minecraft:smooth_stone_slab[type=double,waterlogged=false]", + "7812": "minecraft:sandstone_slab[type=top,waterlogged=true]", + "7813": "minecraft:sandstone_slab[type=top,waterlogged=false]", + "7814": "minecraft:sandstone_slab[type=bottom,waterlogged=true]", + "7815": "minecraft:sandstone_slab[type=bottom,waterlogged=false]", + "7816": "minecraft:sandstone_slab[type=double,waterlogged=true]", + "7817": "minecraft:sandstone_slab[type=double,waterlogged=false]", + "7818": "minecraft:cut_sandstone_slab[type=top,waterlogged=true]", + "7819": "minecraft:cut_sandstone_slab[type=top,waterlogged=false]", + "7820": "minecraft:cut_sandstone_slab[type=bottom,waterlogged=true]", + "7821": "minecraft:cut_sandstone_slab[type=bottom,waterlogged=false]", + "7822": "minecraft:cut_sandstone_slab[type=double,waterlogged=true]", + "7823": "minecraft:cut_sandstone_slab[type=double,waterlogged=false]", + "7824": "minecraft:petrified_oak_slab[type=top,waterlogged=true]", + "7825": "minecraft:petrified_oak_slab[type=top,waterlogged=false]", + "7826": "minecraft:petrified_oak_slab[type=bottom,waterlogged=true]", + "7827": "minecraft:petrified_oak_slab[type=bottom,waterlogged=false]", + "7828": "minecraft:petrified_oak_slab[type=double,waterlogged=true]", + "7829": "minecraft:petrified_oak_slab[type=double,waterlogged=false]", + "7830": "minecraft:cobblestone_slab[type=top,waterlogged=true]", + "7831": "minecraft:cobblestone_slab[type=top,waterlogged=false]", + "7832": "minecraft:cobblestone_slab[type=bottom,waterlogged=true]", + "7833": "minecraft:cobblestone_slab[type=bottom,waterlogged=false]", + "7834": "minecraft:cobblestone_slab[type=double,waterlogged=true]", + "7835": "minecraft:cobblestone_slab[type=double,waterlogged=false]", + "7836": "minecraft:brick_slab[type=top,waterlogged=true]", + "7837": "minecraft:brick_slab[type=top,waterlogged=false]", + "7838": "minecraft:brick_slab[type=bottom,waterlogged=true]", + "7839": "minecraft:brick_slab[type=bottom,waterlogged=false]", + "7840": "minecraft:brick_slab[type=double,waterlogged=true]", + "7841": "minecraft:brick_slab[type=double,waterlogged=false]", + "7842": "minecraft:stone_brick_slab[type=top,waterlogged=true]", + "7843": "minecraft:stone_brick_slab[type=top,waterlogged=false]", + "7844": "minecraft:stone_brick_slab[type=bottom,waterlogged=true]", + "7845": "minecraft:stone_brick_slab[type=bottom,waterlogged=false]", + "7846": "minecraft:stone_brick_slab[type=double,waterlogged=true]", + "7847": "minecraft:stone_brick_slab[type=double,waterlogged=false]", + "7848": "minecraft:nether_brick_slab[type=top,waterlogged=true]", + "7849": "minecraft:nether_brick_slab[type=top,waterlogged=false]", + "7850": "minecraft:nether_brick_slab[type=bottom,waterlogged=true]", + "7851": "minecraft:nether_brick_slab[type=bottom,waterlogged=false]", + "7852": "minecraft:nether_brick_slab[type=double,waterlogged=true]", + "7853": "minecraft:nether_brick_slab[type=double,waterlogged=false]", + "7854": "minecraft:quartz_slab[type=top,waterlogged=true]", + "7855": "minecraft:quartz_slab[type=top,waterlogged=false]", + "7856": "minecraft:quartz_slab[type=bottom,waterlogged=true]", + "7857": "minecraft:quartz_slab[type=bottom,waterlogged=false]", + "7858": "minecraft:quartz_slab[type=double,waterlogged=true]", + "7859": "minecraft:quartz_slab[type=double,waterlogged=false]", + "7860": "minecraft:red_sandstone_slab[type=top,waterlogged=true]", + "7861": "minecraft:red_sandstone_slab[type=top,waterlogged=false]", + "7862": "minecraft:red_sandstone_slab[type=bottom,waterlogged=true]", + "7863": "minecraft:red_sandstone_slab[type=bottom,waterlogged=false]", + "7864": "minecraft:red_sandstone_slab[type=double,waterlogged=true]", + "7865": "minecraft:red_sandstone_slab[type=double,waterlogged=false]", + "7866": "minecraft:cut_red_sandstone_slab[type=top,waterlogged=true]", + "7867": "minecraft:cut_red_sandstone_slab[type=top,waterlogged=false]", + "7868": "minecraft:cut_red_sandstone_slab[type=bottom,waterlogged=true]", + "7869": "minecraft:cut_red_sandstone_slab[type=bottom,waterlogged=false]", + "7870": "minecraft:cut_red_sandstone_slab[type=double,waterlogged=true]", + "7871": "minecraft:cut_red_sandstone_slab[type=double,waterlogged=false]", + "7872": "minecraft:purpur_slab[type=top,waterlogged=true]", + "7873": "minecraft:purpur_slab[type=top,waterlogged=false]", + "7874": "minecraft:purpur_slab[type=bottom,waterlogged=true]", + "7875": "minecraft:purpur_slab[type=bottom,waterlogged=false]", + "7876": "minecraft:purpur_slab[type=double,waterlogged=true]", + "7877": "minecraft:purpur_slab[type=double,waterlogged=false]", + "7878": "minecraft:smooth_stone", + "7879": "minecraft:smooth_sandstone", + "7880": "minecraft:smooth_quartz", + "7881": "minecraft:smooth_red_sandstone", + "7882": "minecraft:spruce_fence_gate[facing=north,in_wall=true,open=true,powered=true]", + "7883": "minecraft:spruce_fence_gate[facing=north,in_wall=true,open=true,powered=false]", + "7884": "minecraft:spruce_fence_gate[facing=north,in_wall=true,open=false,powered=true]", + "7885": "minecraft:spruce_fence_gate[facing=north,in_wall=true,open=false,powered=false]", + "7886": "minecraft:spruce_fence_gate[facing=north,in_wall=false,open=true,powered=true]", + "7887": "minecraft:spruce_fence_gate[facing=north,in_wall=false,open=true,powered=false]", + "7888": "minecraft:spruce_fence_gate[facing=north,in_wall=false,open=false,powered=true]", + "7889": "minecraft:spruce_fence_gate[facing=north,in_wall=false,open=false,powered=false]", + "7890": "minecraft:spruce_fence_gate[facing=south,in_wall=true,open=true,powered=true]", + "7891": "minecraft:spruce_fence_gate[facing=south,in_wall=true,open=true,powered=false]", + "7892": "minecraft:spruce_fence_gate[facing=south,in_wall=true,open=false,powered=true]", + "7893": "minecraft:spruce_fence_gate[facing=south,in_wall=true,open=false,powered=false]", + "7894": "minecraft:spruce_fence_gate[facing=south,in_wall=false,open=true,powered=true]", + "7895": "minecraft:spruce_fence_gate[facing=south,in_wall=false,open=true,powered=false]", + "7896": "minecraft:spruce_fence_gate[facing=south,in_wall=false,open=false,powered=true]", + "7897": "minecraft:spruce_fence_gate[facing=south,in_wall=false,open=false,powered=false]", + "7898": "minecraft:spruce_fence_gate[facing=west,in_wall=true,open=true,powered=true]", + "7899": "minecraft:spruce_fence_gate[facing=west,in_wall=true,open=true,powered=false]", + "7900": "minecraft:spruce_fence_gate[facing=west,in_wall=true,open=false,powered=true]", + "7901": "minecraft:spruce_fence_gate[facing=west,in_wall=true,open=false,powered=false]", + "7902": "minecraft:spruce_fence_gate[facing=west,in_wall=false,open=true,powered=true]", + "7903": "minecraft:spruce_fence_gate[facing=west,in_wall=false,open=true,powered=false]", + "7904": "minecraft:spruce_fence_gate[facing=west,in_wall=false,open=false,powered=true]", + "7905": "minecraft:spruce_fence_gate[facing=west,in_wall=false,open=false,powered=false]", + "7906": "minecraft:spruce_fence_gate[facing=east,in_wall=true,open=true,powered=true]", + "7907": "minecraft:spruce_fence_gate[facing=east,in_wall=true,open=true,powered=false]", + "7908": "minecraft:spruce_fence_gate[facing=east,in_wall=true,open=false,powered=true]", + "7909": "minecraft:spruce_fence_gate[facing=east,in_wall=true,open=false,powered=false]", + "7910": "minecraft:spruce_fence_gate[facing=east,in_wall=false,open=true,powered=true]", + "7911": "minecraft:spruce_fence_gate[facing=east,in_wall=false,open=true,powered=false]", + "7912": "minecraft:spruce_fence_gate[facing=east,in_wall=false,open=false,powered=true]", + "7913": "minecraft:spruce_fence_gate[facing=east,in_wall=false,open=false,powered=false]", + "7914": "minecraft:birch_fence_gate[facing=north,in_wall=true,open=true,powered=true]", + "7915": "minecraft:birch_fence_gate[facing=north,in_wall=true,open=true,powered=false]", + "7916": "minecraft:birch_fence_gate[facing=north,in_wall=true,open=false,powered=true]", + "7917": "minecraft:birch_fence_gate[facing=north,in_wall=true,open=false,powered=false]", + "7918": "minecraft:birch_fence_gate[facing=north,in_wall=false,open=true,powered=true]", + "7919": "minecraft:birch_fence_gate[facing=north,in_wall=false,open=true,powered=false]", + "7920": "minecraft:birch_fence_gate[facing=north,in_wall=false,open=false,powered=true]", + "7921": "minecraft:birch_fence_gate[facing=north,in_wall=false,open=false,powered=false]", + "7922": "minecraft:birch_fence_gate[facing=south,in_wall=true,open=true,powered=true]", + "7923": "minecraft:birch_fence_gate[facing=south,in_wall=true,open=true,powered=false]", + "7924": "minecraft:birch_fence_gate[facing=south,in_wall=true,open=false,powered=true]", + "7925": "minecraft:birch_fence_gate[facing=south,in_wall=true,open=false,powered=false]", + "7926": "minecraft:birch_fence_gate[facing=south,in_wall=false,open=true,powered=true]", + "7927": "minecraft:birch_fence_gate[facing=south,in_wall=false,open=true,powered=false]", + "7928": "minecraft:birch_fence_gate[facing=south,in_wall=false,open=false,powered=true]", + "7929": "minecraft:birch_fence_gate[facing=south,in_wall=false,open=false,powered=false]", + "7930": "minecraft:birch_fence_gate[facing=west,in_wall=true,open=true,powered=true]", + "7931": "minecraft:birch_fence_gate[facing=west,in_wall=true,open=true,powered=false]", + "7932": "minecraft:birch_fence_gate[facing=west,in_wall=true,open=false,powered=true]", + "7933": "minecraft:birch_fence_gate[facing=west,in_wall=true,open=false,powered=false]", + "7934": "minecraft:birch_fence_gate[facing=west,in_wall=false,open=true,powered=true]", + "7935": "minecraft:birch_fence_gate[facing=west,in_wall=false,open=true,powered=false]", + "7936": "minecraft:birch_fence_gate[facing=west,in_wall=false,open=false,powered=true]", + "7937": "minecraft:birch_fence_gate[facing=west,in_wall=false,open=false,powered=false]", + "7938": "minecraft:birch_fence_gate[facing=east,in_wall=true,open=true,powered=true]", + "7939": "minecraft:birch_fence_gate[facing=east,in_wall=true,open=true,powered=false]", + "7940": "minecraft:birch_fence_gate[facing=east,in_wall=true,open=false,powered=true]", + "7941": "minecraft:birch_fence_gate[facing=east,in_wall=true,open=false,powered=false]", + "7942": "minecraft:birch_fence_gate[facing=east,in_wall=false,open=true,powered=true]", + "7943": "minecraft:birch_fence_gate[facing=east,in_wall=false,open=true,powered=false]", + "7944": "minecraft:birch_fence_gate[facing=east,in_wall=false,open=false,powered=true]", + "7945": "minecraft:birch_fence_gate[facing=east,in_wall=false,open=false,powered=false]", + "7946": "minecraft:jungle_fence_gate[facing=north,in_wall=true,open=true,powered=true]", + "7947": "minecraft:jungle_fence_gate[facing=north,in_wall=true,open=true,powered=false]", + "7948": "minecraft:jungle_fence_gate[facing=north,in_wall=true,open=false,powered=true]", + "7949": "minecraft:jungle_fence_gate[facing=north,in_wall=true,open=false,powered=false]", + "7950": "minecraft:jungle_fence_gate[facing=north,in_wall=false,open=true,powered=true]", + "7951": "minecraft:jungle_fence_gate[facing=north,in_wall=false,open=true,powered=false]", + "7952": "minecraft:jungle_fence_gate[facing=north,in_wall=false,open=false,powered=true]", + "7953": "minecraft:jungle_fence_gate[facing=north,in_wall=false,open=false,powered=false]", + "7954": "minecraft:jungle_fence_gate[facing=south,in_wall=true,open=true,powered=true]", + "7955": "minecraft:jungle_fence_gate[facing=south,in_wall=true,open=true,powered=false]", + "7956": "minecraft:jungle_fence_gate[facing=south,in_wall=true,open=false,powered=true]", + "7957": "minecraft:jungle_fence_gate[facing=south,in_wall=true,open=false,powered=false]", + "7958": "minecraft:jungle_fence_gate[facing=south,in_wall=false,open=true,powered=true]", + "7959": "minecraft:jungle_fence_gate[facing=south,in_wall=false,open=true,powered=false]", + "7960": "minecraft:jungle_fence_gate[facing=south,in_wall=false,open=false,powered=true]", + "7961": "minecraft:jungle_fence_gate[facing=south,in_wall=false,open=false,powered=false]", + "7962": "minecraft:jungle_fence_gate[facing=west,in_wall=true,open=true,powered=true]", + "7963": "minecraft:jungle_fence_gate[facing=west,in_wall=true,open=true,powered=false]", + "7964": "minecraft:jungle_fence_gate[facing=west,in_wall=true,open=false,powered=true]", + "7965": "minecraft:jungle_fence_gate[facing=west,in_wall=true,open=false,powered=false]", + "7966": "minecraft:jungle_fence_gate[facing=west,in_wall=false,open=true,powered=true]", + "7967": "minecraft:jungle_fence_gate[facing=west,in_wall=false,open=true,powered=false]", + "7968": "minecraft:jungle_fence_gate[facing=west,in_wall=false,open=false,powered=true]", + "7969": "minecraft:jungle_fence_gate[facing=west,in_wall=false,open=false,powered=false]", + "7970": "minecraft:jungle_fence_gate[facing=east,in_wall=true,open=true,powered=true]", + "7971": "minecraft:jungle_fence_gate[facing=east,in_wall=true,open=true,powered=false]", + "7972": "minecraft:jungle_fence_gate[facing=east,in_wall=true,open=false,powered=true]", + "7973": "minecraft:jungle_fence_gate[facing=east,in_wall=true,open=false,powered=false]", + "7974": "minecraft:jungle_fence_gate[facing=east,in_wall=false,open=true,powered=true]", + "7975": "minecraft:jungle_fence_gate[facing=east,in_wall=false,open=true,powered=false]", + "7976": "minecraft:jungle_fence_gate[facing=east,in_wall=false,open=false,powered=true]", + "7977": "minecraft:jungle_fence_gate[facing=east,in_wall=false,open=false,powered=false]", + "7978": "minecraft:acacia_fence_gate[facing=north,in_wall=true,open=true,powered=true]", + "7979": "minecraft:acacia_fence_gate[facing=north,in_wall=true,open=true,powered=false]", + "7980": "minecraft:acacia_fence_gate[facing=north,in_wall=true,open=false,powered=true]", + "7981": "minecraft:acacia_fence_gate[facing=north,in_wall=true,open=false,powered=false]", + "7982": "minecraft:acacia_fence_gate[facing=north,in_wall=false,open=true,powered=true]", + "7983": "minecraft:acacia_fence_gate[facing=north,in_wall=false,open=true,powered=false]", + "7984": "minecraft:acacia_fence_gate[facing=north,in_wall=false,open=false,powered=true]", + "7985": "minecraft:acacia_fence_gate[facing=north,in_wall=false,open=false,powered=false]", + "7986": "minecraft:acacia_fence_gate[facing=south,in_wall=true,open=true,powered=true]", + "7987": "minecraft:acacia_fence_gate[facing=south,in_wall=true,open=true,powered=false]", + "7988": "minecraft:acacia_fence_gate[facing=south,in_wall=true,open=false,powered=true]", + "7989": "minecraft:acacia_fence_gate[facing=south,in_wall=true,open=false,powered=false]", + "7990": "minecraft:acacia_fence_gate[facing=south,in_wall=false,open=true,powered=true]", + "7991": "minecraft:acacia_fence_gate[facing=south,in_wall=false,open=true,powered=false]", + "7992": "minecraft:acacia_fence_gate[facing=south,in_wall=false,open=false,powered=true]", + "7993": "minecraft:acacia_fence_gate[facing=south,in_wall=false,open=false,powered=false]", + "7994": "minecraft:acacia_fence_gate[facing=west,in_wall=true,open=true,powered=true]", + "7995": "minecraft:acacia_fence_gate[facing=west,in_wall=true,open=true,powered=false]", + "7996": "minecraft:acacia_fence_gate[facing=west,in_wall=true,open=false,powered=true]", + "7997": "minecraft:acacia_fence_gate[facing=west,in_wall=true,open=false,powered=false]", + "7998": "minecraft:acacia_fence_gate[facing=west,in_wall=false,open=true,powered=true]", + "7999": "minecraft:acacia_fence_gate[facing=west,in_wall=false,open=true,powered=false]", + "8000": "minecraft:acacia_fence_gate[facing=west,in_wall=false,open=false,powered=true]", + "8001": "minecraft:acacia_fence_gate[facing=west,in_wall=false,open=false,powered=false]", + "8002": "minecraft:acacia_fence_gate[facing=east,in_wall=true,open=true,powered=true]", + "8003": "minecraft:acacia_fence_gate[facing=east,in_wall=true,open=true,powered=false]", + "8004": "minecraft:acacia_fence_gate[facing=east,in_wall=true,open=false,powered=true]", + "8005": "minecraft:acacia_fence_gate[facing=east,in_wall=true,open=false,powered=false]", + "8006": "minecraft:acacia_fence_gate[facing=east,in_wall=false,open=true,powered=true]", + "8007": "minecraft:acacia_fence_gate[facing=east,in_wall=false,open=true,powered=false]", + "8008": "minecraft:acacia_fence_gate[facing=east,in_wall=false,open=false,powered=true]", + "8009": "minecraft:acacia_fence_gate[facing=east,in_wall=false,open=false,powered=false]", + "8010": "minecraft:dark_oak_fence_gate[facing=north,in_wall=true,open=true,powered=true]", + "8011": "minecraft:dark_oak_fence_gate[facing=north,in_wall=true,open=true,powered=false]", + "8012": "minecraft:dark_oak_fence_gate[facing=north,in_wall=true,open=false,powered=true]", + "8013": "minecraft:dark_oak_fence_gate[facing=north,in_wall=true,open=false,powered=false]", + "8014": "minecraft:dark_oak_fence_gate[facing=north,in_wall=false,open=true,powered=true]", + "8015": "minecraft:dark_oak_fence_gate[facing=north,in_wall=false,open=true,powered=false]", + "8016": "minecraft:dark_oak_fence_gate[facing=north,in_wall=false,open=false,powered=true]", + "8017": "minecraft:dark_oak_fence_gate[facing=north,in_wall=false,open=false,powered=false]", + "8018": "minecraft:dark_oak_fence_gate[facing=south,in_wall=true,open=true,powered=true]", + "8019": "minecraft:dark_oak_fence_gate[facing=south,in_wall=true,open=true,powered=false]", + "8020": "minecraft:dark_oak_fence_gate[facing=south,in_wall=true,open=false,powered=true]", + "8021": "minecraft:dark_oak_fence_gate[facing=south,in_wall=true,open=false,powered=false]", + "8022": "minecraft:dark_oak_fence_gate[facing=south,in_wall=false,open=true,powered=true]", + "8023": "minecraft:dark_oak_fence_gate[facing=south,in_wall=false,open=true,powered=false]", + "8024": "minecraft:dark_oak_fence_gate[facing=south,in_wall=false,open=false,powered=true]", + "8025": "minecraft:dark_oak_fence_gate[facing=south,in_wall=false,open=false,powered=false]", + "8026": "minecraft:dark_oak_fence_gate[facing=west,in_wall=true,open=true,powered=true]", + "8027": "minecraft:dark_oak_fence_gate[facing=west,in_wall=true,open=true,powered=false]", + "8028": "minecraft:dark_oak_fence_gate[facing=west,in_wall=true,open=false,powered=true]", + "8029": "minecraft:dark_oak_fence_gate[facing=west,in_wall=true,open=false,powered=false]", + "8030": "minecraft:dark_oak_fence_gate[facing=west,in_wall=false,open=true,powered=true]", + "8031": "minecraft:dark_oak_fence_gate[facing=west,in_wall=false,open=true,powered=false]", + "8032": "minecraft:dark_oak_fence_gate[facing=west,in_wall=false,open=false,powered=true]", + "8033": "minecraft:dark_oak_fence_gate[facing=west,in_wall=false,open=false,powered=false]", + "8034": "minecraft:dark_oak_fence_gate[facing=east,in_wall=true,open=true,powered=true]", + "8035": "minecraft:dark_oak_fence_gate[facing=east,in_wall=true,open=true,powered=false]", + "8036": "minecraft:dark_oak_fence_gate[facing=east,in_wall=true,open=false,powered=true]", + "8037": "minecraft:dark_oak_fence_gate[facing=east,in_wall=true,open=false,powered=false]", + "8038": "minecraft:dark_oak_fence_gate[facing=east,in_wall=false,open=true,powered=true]", + "8039": "minecraft:dark_oak_fence_gate[facing=east,in_wall=false,open=true,powered=false]", + "8040": "minecraft:dark_oak_fence_gate[facing=east,in_wall=false,open=false,powered=true]", + "8041": "minecraft:dark_oak_fence_gate[facing=east,in_wall=false,open=false,powered=false]", + "8042": "minecraft:spruce_fence[east=true,north=true,south=true,waterlogged=true,west=true]", + "8043": "minecraft:spruce_fence[east=true,north=true,south=true,waterlogged=true,west=false]", + "8044": "minecraft:spruce_fence[east=true,north=true,south=true,waterlogged=false,west=true]", + "8045": "minecraft:spruce_fence[east=true,north=true,south=true,waterlogged=false,west=false]", + "8046": "minecraft:spruce_fence[east=true,north=true,south=false,waterlogged=true,west=true]", + "8047": "minecraft:spruce_fence[east=true,north=true,south=false,waterlogged=true,west=false]", + "8048": "minecraft:spruce_fence[east=true,north=true,south=false,waterlogged=false,west=true]", + "8049": "minecraft:spruce_fence[east=true,north=true,south=false,waterlogged=false,west=false]", + "8050": "minecraft:spruce_fence[east=true,north=false,south=true,waterlogged=true,west=true]", + "8051": "minecraft:spruce_fence[east=true,north=false,south=true,waterlogged=true,west=false]", + "8052": "minecraft:spruce_fence[east=true,north=false,south=true,waterlogged=false,west=true]", + "8053": "minecraft:spruce_fence[east=true,north=false,south=true,waterlogged=false,west=false]", + "8054": "minecraft:spruce_fence[east=true,north=false,south=false,waterlogged=true,west=true]", + "8055": "minecraft:spruce_fence[east=true,north=false,south=false,waterlogged=true,west=false]", + "8056": "minecraft:spruce_fence[east=true,north=false,south=false,waterlogged=false,west=true]", + "8057": "minecraft:spruce_fence[east=true,north=false,south=false,waterlogged=false,west=false]", + "8058": "minecraft:spruce_fence[east=false,north=true,south=true,waterlogged=true,west=true]", + "8059": "minecraft:spruce_fence[east=false,north=true,south=true,waterlogged=true,west=false]", + "8060": "minecraft:spruce_fence[east=false,north=true,south=true,waterlogged=false,west=true]", + "8061": "minecraft:spruce_fence[east=false,north=true,south=true,waterlogged=false,west=false]", + "8062": "minecraft:spruce_fence[east=false,north=true,south=false,waterlogged=true,west=true]", + "8063": "minecraft:spruce_fence[east=false,north=true,south=false,waterlogged=true,west=false]", + "8064": "minecraft:spruce_fence[east=false,north=true,south=false,waterlogged=false,west=true]", + "8065": "minecraft:spruce_fence[east=false,north=true,south=false,waterlogged=false,west=false]", + "8066": "minecraft:spruce_fence[east=false,north=false,south=true,waterlogged=true,west=true]", + "8067": "minecraft:spruce_fence[east=false,north=false,south=true,waterlogged=true,west=false]", + "8068": "minecraft:spruce_fence[east=false,north=false,south=true,waterlogged=false,west=true]", + "8069": "minecraft:spruce_fence[east=false,north=false,south=true,waterlogged=false,west=false]", + "8070": "minecraft:spruce_fence[east=false,north=false,south=false,waterlogged=true,west=true]", + "8071": "minecraft:spruce_fence[east=false,north=false,south=false,waterlogged=true,west=false]", + "8072": "minecraft:spruce_fence[east=false,north=false,south=false,waterlogged=false,west=true]", + "8073": "minecraft:spruce_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "8074": "minecraft:birch_fence[east=true,north=true,south=true,waterlogged=true,west=true]", + "8075": "minecraft:birch_fence[east=true,north=true,south=true,waterlogged=true,west=false]", + "8076": "minecraft:birch_fence[east=true,north=true,south=true,waterlogged=false,west=true]", + "8077": "minecraft:birch_fence[east=true,north=true,south=true,waterlogged=false,west=false]", + "8078": "minecraft:birch_fence[east=true,north=true,south=false,waterlogged=true,west=true]", + "8079": "minecraft:birch_fence[east=true,north=true,south=false,waterlogged=true,west=false]", + "8080": "minecraft:birch_fence[east=true,north=true,south=false,waterlogged=false,west=true]", + "8081": "minecraft:birch_fence[east=true,north=true,south=false,waterlogged=false,west=false]", + "8082": "minecraft:birch_fence[east=true,north=false,south=true,waterlogged=true,west=true]", + "8083": "minecraft:birch_fence[east=true,north=false,south=true,waterlogged=true,west=false]", + "8084": "minecraft:birch_fence[east=true,north=false,south=true,waterlogged=false,west=true]", + "8085": "minecraft:birch_fence[east=true,north=false,south=true,waterlogged=false,west=false]", + "8086": "minecraft:birch_fence[east=true,north=false,south=false,waterlogged=true,west=true]", + "8087": "minecraft:birch_fence[east=true,north=false,south=false,waterlogged=true,west=false]", + "8088": "minecraft:birch_fence[east=true,north=false,south=false,waterlogged=false,west=true]", + "8089": "minecraft:birch_fence[east=true,north=false,south=false,waterlogged=false,west=false]", + "8090": "minecraft:birch_fence[east=false,north=true,south=true,waterlogged=true,west=true]", + "8091": "minecraft:birch_fence[east=false,north=true,south=true,waterlogged=true,west=false]", + "8092": "minecraft:birch_fence[east=false,north=true,south=true,waterlogged=false,west=true]", + "8093": "minecraft:birch_fence[east=false,north=true,south=true,waterlogged=false,west=false]", + "8094": "minecraft:birch_fence[east=false,north=true,south=false,waterlogged=true,west=true]", + "8095": "minecraft:birch_fence[east=false,north=true,south=false,waterlogged=true,west=false]", + "8096": "minecraft:birch_fence[east=false,north=true,south=false,waterlogged=false,west=true]", + "8097": "minecraft:birch_fence[east=false,north=true,south=false,waterlogged=false,west=false]", + "8098": "minecraft:birch_fence[east=false,north=false,south=true,waterlogged=true,west=true]", + "8099": "minecraft:birch_fence[east=false,north=false,south=true,waterlogged=true,west=false]", + "8100": "minecraft:birch_fence[east=false,north=false,south=true,waterlogged=false,west=true]", + "8101": "minecraft:birch_fence[east=false,north=false,south=true,waterlogged=false,west=false]", + "8102": "minecraft:birch_fence[east=false,north=false,south=false,waterlogged=true,west=true]", + "8103": "minecraft:birch_fence[east=false,north=false,south=false,waterlogged=true,west=false]", + "8104": "minecraft:birch_fence[east=false,north=false,south=false,waterlogged=false,west=true]", + "8105": "minecraft:birch_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "8106": "minecraft:jungle_fence[east=true,north=true,south=true,waterlogged=true,west=true]", + "8107": "minecraft:jungle_fence[east=true,north=true,south=true,waterlogged=true,west=false]", + "8108": "minecraft:jungle_fence[east=true,north=true,south=true,waterlogged=false,west=true]", + "8109": "minecraft:jungle_fence[east=true,north=true,south=true,waterlogged=false,west=false]", + "8110": "minecraft:jungle_fence[east=true,north=true,south=false,waterlogged=true,west=true]", + "8111": "minecraft:jungle_fence[east=true,north=true,south=false,waterlogged=true,west=false]", + "8112": "minecraft:jungle_fence[east=true,north=true,south=false,waterlogged=false,west=true]", + "8113": "minecraft:jungle_fence[east=true,north=true,south=false,waterlogged=false,west=false]", + "8114": "minecraft:jungle_fence[east=true,north=false,south=true,waterlogged=true,west=true]", + "8115": "minecraft:jungle_fence[east=true,north=false,south=true,waterlogged=true,west=false]", + "8116": "minecraft:jungle_fence[east=true,north=false,south=true,waterlogged=false,west=true]", + "8117": "minecraft:jungle_fence[east=true,north=false,south=true,waterlogged=false,west=false]", + "8118": "minecraft:jungle_fence[east=true,north=false,south=false,waterlogged=true,west=true]", + "8119": "minecraft:jungle_fence[east=true,north=false,south=false,waterlogged=true,west=false]", + "8120": "minecraft:jungle_fence[east=true,north=false,south=false,waterlogged=false,west=true]", + "8121": "minecraft:jungle_fence[east=true,north=false,south=false,waterlogged=false,west=false]", + "8122": "minecraft:jungle_fence[east=false,north=true,south=true,waterlogged=true,west=true]", + "8123": "minecraft:jungle_fence[east=false,north=true,south=true,waterlogged=true,west=false]", + "8124": "minecraft:jungle_fence[east=false,north=true,south=true,waterlogged=false,west=true]", + "8125": "minecraft:jungle_fence[east=false,north=true,south=true,waterlogged=false,west=false]", + "8126": "minecraft:jungle_fence[east=false,north=true,south=false,waterlogged=true,west=true]", + "8127": "minecraft:jungle_fence[east=false,north=true,south=false,waterlogged=true,west=false]", + "8128": "minecraft:jungle_fence[east=false,north=true,south=false,waterlogged=false,west=true]", + "8129": "minecraft:jungle_fence[east=false,north=true,south=false,waterlogged=false,west=false]", + "8130": "minecraft:jungle_fence[east=false,north=false,south=true,waterlogged=true,west=true]", + "8131": "minecraft:jungle_fence[east=false,north=false,south=true,waterlogged=true,west=false]", + "8132": "minecraft:jungle_fence[east=false,north=false,south=true,waterlogged=false,west=true]", + "8133": "minecraft:jungle_fence[east=false,north=false,south=true,waterlogged=false,west=false]", + "8134": "minecraft:jungle_fence[east=false,north=false,south=false,waterlogged=true,west=true]", + "8135": "minecraft:jungle_fence[east=false,north=false,south=false,waterlogged=true,west=false]", + "8136": "minecraft:jungle_fence[east=false,north=false,south=false,waterlogged=false,west=true]", + "8137": "minecraft:jungle_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "8138": "minecraft:acacia_fence[east=true,north=true,south=true,waterlogged=true,west=true]", + "8139": "minecraft:acacia_fence[east=true,north=true,south=true,waterlogged=true,west=false]", + "8140": "minecraft:acacia_fence[east=true,north=true,south=true,waterlogged=false,west=true]", + "8141": "minecraft:acacia_fence[east=true,north=true,south=true,waterlogged=false,west=false]", + "8142": "minecraft:acacia_fence[east=true,north=true,south=false,waterlogged=true,west=true]", + "8143": "minecraft:acacia_fence[east=true,north=true,south=false,waterlogged=true,west=false]", + "8144": "minecraft:acacia_fence[east=true,north=true,south=false,waterlogged=false,west=true]", + "8145": "minecraft:acacia_fence[east=true,north=true,south=false,waterlogged=false,west=false]", + "8146": "minecraft:acacia_fence[east=true,north=false,south=true,waterlogged=true,west=true]", + "8147": "minecraft:acacia_fence[east=true,north=false,south=true,waterlogged=true,west=false]", + "8148": "minecraft:acacia_fence[east=true,north=false,south=true,waterlogged=false,west=true]", + "8149": "minecraft:acacia_fence[east=true,north=false,south=true,waterlogged=false,west=false]", + "8150": "minecraft:acacia_fence[east=true,north=false,south=false,waterlogged=true,west=true]", + "8151": "minecraft:acacia_fence[east=true,north=false,south=false,waterlogged=true,west=false]", + "8152": "minecraft:acacia_fence[east=true,north=false,south=false,waterlogged=false,west=true]", + "8153": "minecraft:acacia_fence[east=true,north=false,south=false,waterlogged=false,west=false]", + "8154": "minecraft:acacia_fence[east=false,north=true,south=true,waterlogged=true,west=true]", + "8155": "minecraft:acacia_fence[east=false,north=true,south=true,waterlogged=true,west=false]", + "8156": "minecraft:acacia_fence[east=false,north=true,south=true,waterlogged=false,west=true]", + "8157": "minecraft:acacia_fence[east=false,north=true,south=true,waterlogged=false,west=false]", + "8158": "minecraft:acacia_fence[east=false,north=true,south=false,waterlogged=true,west=true]", + "8159": "minecraft:acacia_fence[east=false,north=true,south=false,waterlogged=true,west=false]", + "8160": "minecraft:acacia_fence[east=false,north=true,south=false,waterlogged=false,west=true]", + "8161": "minecraft:acacia_fence[east=false,north=true,south=false,waterlogged=false,west=false]", + "8162": "minecraft:acacia_fence[east=false,north=false,south=true,waterlogged=true,west=true]", + "8163": "minecraft:acacia_fence[east=false,north=false,south=true,waterlogged=true,west=false]", + "8164": "minecraft:acacia_fence[east=false,north=false,south=true,waterlogged=false,west=true]", + "8165": "minecraft:acacia_fence[east=false,north=false,south=true,waterlogged=false,west=false]", + "8166": "minecraft:acacia_fence[east=false,north=false,south=false,waterlogged=true,west=true]", + "8167": "minecraft:acacia_fence[east=false,north=false,south=false,waterlogged=true,west=false]", + "8168": "minecraft:acacia_fence[east=false,north=false,south=false,waterlogged=false,west=true]", + "8169": "minecraft:acacia_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "8170": "minecraft:dark_oak_fence[east=true,north=true,south=true,waterlogged=true,west=true]", + "8171": "minecraft:dark_oak_fence[east=true,north=true,south=true,waterlogged=true,west=false]", + "8172": "minecraft:dark_oak_fence[east=true,north=true,south=true,waterlogged=false,west=true]", + "8173": "minecraft:dark_oak_fence[east=true,north=true,south=true,waterlogged=false,west=false]", + "8174": "minecraft:dark_oak_fence[east=true,north=true,south=false,waterlogged=true,west=true]", + "8175": "minecraft:dark_oak_fence[east=true,north=true,south=false,waterlogged=true,west=false]", + "8176": "minecraft:dark_oak_fence[east=true,north=true,south=false,waterlogged=false,west=true]", + "8177": "minecraft:dark_oak_fence[east=true,north=true,south=false,waterlogged=false,west=false]", + "8178": "minecraft:dark_oak_fence[east=true,north=false,south=true,waterlogged=true,west=true]", + "8179": "minecraft:dark_oak_fence[east=true,north=false,south=true,waterlogged=true,west=false]", + "8180": "minecraft:dark_oak_fence[east=true,north=false,south=true,waterlogged=false,west=true]", + "8181": "minecraft:dark_oak_fence[east=true,north=false,south=true,waterlogged=false,west=false]", + "8182": "minecraft:dark_oak_fence[east=true,north=false,south=false,waterlogged=true,west=true]", + "8183": "minecraft:dark_oak_fence[east=true,north=false,south=false,waterlogged=true,west=false]", + "8184": "minecraft:dark_oak_fence[east=true,north=false,south=false,waterlogged=false,west=true]", + "8185": "minecraft:dark_oak_fence[east=true,north=false,south=false,waterlogged=false,west=false]", + "8186": "minecraft:dark_oak_fence[east=false,north=true,south=true,waterlogged=true,west=true]", + "8187": "minecraft:dark_oak_fence[east=false,north=true,south=true,waterlogged=true,west=false]", + "8188": "minecraft:dark_oak_fence[east=false,north=true,south=true,waterlogged=false,west=true]", + "8189": "minecraft:dark_oak_fence[east=false,north=true,south=true,waterlogged=false,west=false]", + "8190": "minecraft:dark_oak_fence[east=false,north=true,south=false,waterlogged=true,west=true]", + "8191": "minecraft:dark_oak_fence[east=false,north=true,south=false,waterlogged=true,west=false]", + "8192": "minecraft:dark_oak_fence[east=false,north=true,south=false,waterlogged=false,west=true]", + "8193": "minecraft:dark_oak_fence[east=false,north=true,south=false,waterlogged=false,west=false]", + "8194": "minecraft:dark_oak_fence[east=false,north=false,south=true,waterlogged=true,west=true]", + "8195": "minecraft:dark_oak_fence[east=false,north=false,south=true,waterlogged=true,west=false]", + "8196": "minecraft:dark_oak_fence[east=false,north=false,south=true,waterlogged=false,west=true]", + "8197": "minecraft:dark_oak_fence[east=false,north=false,south=true,waterlogged=false,west=false]", + "8198": "minecraft:dark_oak_fence[east=false,north=false,south=false,waterlogged=true,west=true]", + "8199": "minecraft:dark_oak_fence[east=false,north=false,south=false,waterlogged=true,west=false]", + "8200": "minecraft:dark_oak_fence[east=false,north=false,south=false,waterlogged=false,west=true]", + "8201": "minecraft:dark_oak_fence[east=false,north=false,south=false,waterlogged=false,west=false]", + "8202": "minecraft:spruce_door[facing=north,half=upper,hinge=left,open=true,powered=true]", + "8203": "minecraft:spruce_door[facing=north,half=upper,hinge=left,open=true,powered=false]", + "8204": "minecraft:spruce_door[facing=north,half=upper,hinge=left,open=false,powered=true]", + "8205": "minecraft:spruce_door[facing=north,half=upper,hinge=left,open=false,powered=false]", + "8206": "minecraft:spruce_door[facing=north,half=upper,hinge=right,open=true,powered=true]", + "8207": "minecraft:spruce_door[facing=north,half=upper,hinge=right,open=true,powered=false]", + "8208": "minecraft:spruce_door[facing=north,half=upper,hinge=right,open=false,powered=true]", + "8209": "minecraft:spruce_door[facing=north,half=upper,hinge=right,open=false,powered=false]", + "8210": "minecraft:spruce_door[facing=north,half=lower,hinge=left,open=true,powered=true]", + "8211": "minecraft:spruce_door[facing=north,half=lower,hinge=left,open=true,powered=false]", + "8212": "minecraft:spruce_door[facing=north,half=lower,hinge=left,open=false,powered=true]", + "8213": "minecraft:spruce_door[facing=north,half=lower,hinge=left,open=false,powered=false]", + "8214": "minecraft:spruce_door[facing=north,half=lower,hinge=right,open=true,powered=true]", + "8215": "minecraft:spruce_door[facing=north,half=lower,hinge=right,open=true,powered=false]", + "8216": "minecraft:spruce_door[facing=north,half=lower,hinge=right,open=false,powered=true]", + "8217": "minecraft:spruce_door[facing=north,half=lower,hinge=right,open=false,powered=false]", + "8218": "minecraft:spruce_door[facing=south,half=upper,hinge=left,open=true,powered=true]", + "8219": "minecraft:spruce_door[facing=south,half=upper,hinge=left,open=true,powered=false]", + "8220": "minecraft:spruce_door[facing=south,half=upper,hinge=left,open=false,powered=true]", + "8221": "minecraft:spruce_door[facing=south,half=upper,hinge=left,open=false,powered=false]", + "8222": "minecraft:spruce_door[facing=south,half=upper,hinge=right,open=true,powered=true]", + "8223": "minecraft:spruce_door[facing=south,half=upper,hinge=right,open=true,powered=false]", + "8224": "minecraft:spruce_door[facing=south,half=upper,hinge=right,open=false,powered=true]", + "8225": "minecraft:spruce_door[facing=south,half=upper,hinge=right,open=false,powered=false]", + "8226": "minecraft:spruce_door[facing=south,half=lower,hinge=left,open=true,powered=true]", + "8227": "minecraft:spruce_door[facing=south,half=lower,hinge=left,open=true,powered=false]", + "8228": "minecraft:spruce_door[facing=south,half=lower,hinge=left,open=false,powered=true]", + "8229": "minecraft:spruce_door[facing=south,half=lower,hinge=left,open=false,powered=false]", + "8230": "minecraft:spruce_door[facing=south,half=lower,hinge=right,open=true,powered=true]", + "8231": "minecraft:spruce_door[facing=south,half=lower,hinge=right,open=true,powered=false]", + "8232": "minecraft:spruce_door[facing=south,half=lower,hinge=right,open=false,powered=true]", + "8233": "minecraft:spruce_door[facing=south,half=lower,hinge=right,open=false,powered=false]", + "8234": "minecraft:spruce_door[facing=west,half=upper,hinge=left,open=true,powered=true]", + "8235": "minecraft:spruce_door[facing=west,half=upper,hinge=left,open=true,powered=false]", + "8236": "minecraft:spruce_door[facing=west,half=upper,hinge=left,open=false,powered=true]", + "8237": "minecraft:spruce_door[facing=west,half=upper,hinge=left,open=false,powered=false]", + "8238": "minecraft:spruce_door[facing=west,half=upper,hinge=right,open=true,powered=true]", + "8239": "minecraft:spruce_door[facing=west,half=upper,hinge=right,open=true,powered=false]", + "8240": "minecraft:spruce_door[facing=west,half=upper,hinge=right,open=false,powered=true]", + "8241": "minecraft:spruce_door[facing=west,half=upper,hinge=right,open=false,powered=false]", + "8242": "minecraft:spruce_door[facing=west,half=lower,hinge=left,open=true,powered=true]", + "8243": "minecraft:spruce_door[facing=west,half=lower,hinge=left,open=true,powered=false]", + "8244": "minecraft:spruce_door[facing=west,half=lower,hinge=left,open=false,powered=true]", + "8245": "minecraft:spruce_door[facing=west,half=lower,hinge=left,open=false,powered=false]", + "8246": "minecraft:spruce_door[facing=west,half=lower,hinge=right,open=true,powered=true]", + "8247": "minecraft:spruce_door[facing=west,half=lower,hinge=right,open=true,powered=false]", + "8248": "minecraft:spruce_door[facing=west,half=lower,hinge=right,open=false,powered=true]", + "8249": "minecraft:spruce_door[facing=west,half=lower,hinge=right,open=false,powered=false]", + "8250": "minecraft:spruce_door[facing=east,half=upper,hinge=left,open=true,powered=true]", + "8251": "minecraft:spruce_door[facing=east,half=upper,hinge=left,open=true,powered=false]", + "8252": "minecraft:spruce_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "8253": "minecraft:spruce_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "8254": "minecraft:spruce_door[facing=east,half=upper,hinge=right,open=true,powered=true]", + "8255": "minecraft:spruce_door[facing=east,half=upper,hinge=right,open=true,powered=false]", + "8256": "minecraft:spruce_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "8257": "minecraft:spruce_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "8258": "minecraft:spruce_door[facing=east,half=lower,hinge=left,open=true,powered=true]", + "8259": "minecraft:spruce_door[facing=east,half=lower,hinge=left,open=true,powered=false]", + "8260": "minecraft:spruce_door[facing=east,half=lower,hinge=left,open=false,powered=true]", + "8261": "minecraft:spruce_door[facing=east,half=lower,hinge=left,open=false,powered=false]", + "8262": "minecraft:spruce_door[facing=east,half=lower,hinge=right,open=true,powered=true]", + "8263": "minecraft:spruce_door[facing=east,half=lower,hinge=right,open=true,powered=false]", + "8264": "minecraft:spruce_door[facing=east,half=lower,hinge=right,open=false,powered=true]", + "8265": "minecraft:spruce_door[facing=east,half=lower,hinge=right,open=false,powered=false]", + "8266": "minecraft:birch_door[facing=north,half=upper,hinge=left,open=true,powered=true]", + "8267": "minecraft:birch_door[facing=north,half=upper,hinge=left,open=true,powered=false]", + "8268": "minecraft:birch_door[facing=north,half=upper,hinge=left,open=false,powered=true]", + "8269": "minecraft:birch_door[facing=north,half=upper,hinge=left,open=false,powered=false]", + "8270": "minecraft:birch_door[facing=north,half=upper,hinge=right,open=true,powered=true]", + "8271": "minecraft:birch_door[facing=north,half=upper,hinge=right,open=true,powered=false]", + "8272": "minecraft:birch_door[facing=north,half=upper,hinge=right,open=false,powered=true]", + "8273": "minecraft:birch_door[facing=north,half=upper,hinge=right,open=false,powered=false]", + "8274": "minecraft:birch_door[facing=north,half=lower,hinge=left,open=true,powered=true]", + "8275": "minecraft:birch_door[facing=north,half=lower,hinge=left,open=true,powered=false]", + "8276": "minecraft:birch_door[facing=north,half=lower,hinge=left,open=false,powered=true]", + "8277": "minecraft:birch_door[facing=north,half=lower,hinge=left,open=false,powered=false]", + "8278": "minecraft:birch_door[facing=north,half=lower,hinge=right,open=true,powered=true]", + "8279": "minecraft:birch_door[facing=north,half=lower,hinge=right,open=true,powered=false]", + "8280": "minecraft:birch_door[facing=north,half=lower,hinge=right,open=false,powered=true]", + "8281": "minecraft:birch_door[facing=north,half=lower,hinge=right,open=false,powered=false]", + "8282": "minecraft:birch_door[facing=south,half=upper,hinge=left,open=true,powered=true]", + "8283": "minecraft:birch_door[facing=south,half=upper,hinge=left,open=true,powered=false]", + "8284": "minecraft:birch_door[facing=south,half=upper,hinge=left,open=false,powered=true]", + "8285": "minecraft:birch_door[facing=south,half=upper,hinge=left,open=false,powered=false]", + "8286": "minecraft:birch_door[facing=south,half=upper,hinge=right,open=true,powered=true]", + "8287": "minecraft:birch_door[facing=south,half=upper,hinge=right,open=true,powered=false]", + "8288": "minecraft:birch_door[facing=south,half=upper,hinge=right,open=false,powered=true]", + "8289": "minecraft:birch_door[facing=south,half=upper,hinge=right,open=false,powered=false]", + "8290": "minecraft:birch_door[facing=south,half=lower,hinge=left,open=true,powered=true]", + "8291": "minecraft:birch_door[facing=south,half=lower,hinge=left,open=true,powered=false]", + "8292": "minecraft:birch_door[facing=south,half=lower,hinge=left,open=false,powered=true]", + "8293": "minecraft:birch_door[facing=south,half=lower,hinge=left,open=false,powered=false]", + "8294": "minecraft:birch_door[facing=south,half=lower,hinge=right,open=true,powered=true]", + "8295": "minecraft:birch_door[facing=south,half=lower,hinge=right,open=true,powered=false]", + "8296": "minecraft:birch_door[facing=south,half=lower,hinge=right,open=false,powered=true]", + "8297": "minecraft:birch_door[facing=south,half=lower,hinge=right,open=false,powered=false]", + "8298": "minecraft:birch_door[facing=west,half=upper,hinge=left,open=true,powered=true]", + "8299": "minecraft:birch_door[facing=west,half=upper,hinge=left,open=true,powered=false]", + "8300": "minecraft:birch_door[facing=west,half=upper,hinge=left,open=false,powered=true]", + "8301": "minecraft:birch_door[facing=west,half=upper,hinge=left,open=false,powered=false]", + "8302": "minecraft:birch_door[facing=west,half=upper,hinge=right,open=true,powered=true]", + "8303": "minecraft:birch_door[facing=west,half=upper,hinge=right,open=true,powered=false]", + "8304": "minecraft:birch_door[facing=west,half=upper,hinge=right,open=false,powered=true]", + "8305": "minecraft:birch_door[facing=west,half=upper,hinge=right,open=false,powered=false]", + "8306": "minecraft:birch_door[facing=west,half=lower,hinge=left,open=true,powered=true]", + "8307": "minecraft:birch_door[facing=west,half=lower,hinge=left,open=true,powered=false]", + "8308": "minecraft:birch_door[facing=west,half=lower,hinge=left,open=false,powered=true]", + "8309": "minecraft:birch_door[facing=west,half=lower,hinge=left,open=false,powered=false]", + "8310": "minecraft:birch_door[facing=west,half=lower,hinge=right,open=true,powered=true]", + "8311": "minecraft:birch_door[facing=west,half=lower,hinge=right,open=true,powered=false]", + "8312": "minecraft:birch_door[facing=west,half=lower,hinge=right,open=false,powered=true]", + "8313": "minecraft:birch_door[facing=west,half=lower,hinge=right,open=false,powered=false]", + "8314": "minecraft:birch_door[facing=east,half=upper,hinge=left,open=true,powered=true]", + "8315": "minecraft:birch_door[facing=east,half=upper,hinge=left,open=true,powered=false]", + "8316": "minecraft:birch_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "8317": "minecraft:birch_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "8318": "minecraft:birch_door[facing=east,half=upper,hinge=right,open=true,powered=true]", + "8319": "minecraft:birch_door[facing=east,half=upper,hinge=right,open=true,powered=false]", + "8320": "minecraft:birch_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "8321": "minecraft:birch_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "8322": "minecraft:birch_door[facing=east,half=lower,hinge=left,open=true,powered=true]", + "8323": "minecraft:birch_door[facing=east,half=lower,hinge=left,open=true,powered=false]", + "8324": "minecraft:birch_door[facing=east,half=lower,hinge=left,open=false,powered=true]", + "8325": "minecraft:birch_door[facing=east,half=lower,hinge=left,open=false,powered=false]", + "8326": "minecraft:birch_door[facing=east,half=lower,hinge=right,open=true,powered=true]", + "8327": "minecraft:birch_door[facing=east,half=lower,hinge=right,open=true,powered=false]", + "8328": "minecraft:birch_door[facing=east,half=lower,hinge=right,open=false,powered=true]", + "8329": "minecraft:birch_door[facing=east,half=lower,hinge=right,open=false,powered=false]", + "8330": "minecraft:jungle_door[facing=north,half=upper,hinge=left,open=true,powered=true]", + "8331": "minecraft:jungle_door[facing=north,half=upper,hinge=left,open=true,powered=false]", + "8332": "minecraft:jungle_door[facing=north,half=upper,hinge=left,open=false,powered=true]", + "8333": "minecraft:jungle_door[facing=north,half=upper,hinge=left,open=false,powered=false]", + "8334": "minecraft:jungle_door[facing=north,half=upper,hinge=right,open=true,powered=true]", + "8335": "minecraft:jungle_door[facing=north,half=upper,hinge=right,open=true,powered=false]", + "8336": "minecraft:jungle_door[facing=north,half=upper,hinge=right,open=false,powered=true]", + "8337": "minecraft:jungle_door[facing=north,half=upper,hinge=right,open=false,powered=false]", + "8338": "minecraft:jungle_door[facing=north,half=lower,hinge=left,open=true,powered=true]", + "8339": "minecraft:jungle_door[facing=north,half=lower,hinge=left,open=true,powered=false]", + "8340": "minecraft:jungle_door[facing=north,half=lower,hinge=left,open=false,powered=true]", + "8341": "minecraft:jungle_door[facing=north,half=lower,hinge=left,open=false,powered=false]", + "8342": "minecraft:jungle_door[facing=north,half=lower,hinge=right,open=true,powered=true]", + "8343": "minecraft:jungle_door[facing=north,half=lower,hinge=right,open=true,powered=false]", + "8344": "minecraft:jungle_door[facing=north,half=lower,hinge=right,open=false,powered=true]", + "8345": "minecraft:jungle_door[facing=north,half=lower,hinge=right,open=false,powered=false]", + "8346": "minecraft:jungle_door[facing=south,half=upper,hinge=left,open=true,powered=true]", + "8347": "minecraft:jungle_door[facing=south,half=upper,hinge=left,open=true,powered=false]", + "8348": "minecraft:jungle_door[facing=south,half=upper,hinge=left,open=false,powered=true]", + "8349": "minecraft:jungle_door[facing=south,half=upper,hinge=left,open=false,powered=false]", + "8350": "minecraft:jungle_door[facing=south,half=upper,hinge=right,open=true,powered=true]", + "8351": "minecraft:jungle_door[facing=south,half=upper,hinge=right,open=true,powered=false]", + "8352": "minecraft:jungle_door[facing=south,half=upper,hinge=right,open=false,powered=true]", + "8353": "minecraft:jungle_door[facing=south,half=upper,hinge=right,open=false,powered=false]", + "8354": "minecraft:jungle_door[facing=south,half=lower,hinge=left,open=true,powered=true]", + "8355": "minecraft:jungle_door[facing=south,half=lower,hinge=left,open=true,powered=false]", + "8356": "minecraft:jungle_door[facing=south,half=lower,hinge=left,open=false,powered=true]", + "8357": "minecraft:jungle_door[facing=south,half=lower,hinge=left,open=false,powered=false]", + "8358": "minecraft:jungle_door[facing=south,half=lower,hinge=right,open=true,powered=true]", + "8359": "minecraft:jungle_door[facing=south,half=lower,hinge=right,open=true,powered=false]", + "8360": "minecraft:jungle_door[facing=south,half=lower,hinge=right,open=false,powered=true]", + "8361": "minecraft:jungle_door[facing=south,half=lower,hinge=right,open=false,powered=false]", + "8362": "minecraft:jungle_door[facing=west,half=upper,hinge=left,open=true,powered=true]", + "8363": "minecraft:jungle_door[facing=west,half=upper,hinge=left,open=true,powered=false]", + "8364": "minecraft:jungle_door[facing=west,half=upper,hinge=left,open=false,powered=true]", + "8365": "minecraft:jungle_door[facing=west,half=upper,hinge=left,open=false,powered=false]", + "8366": "minecraft:jungle_door[facing=west,half=upper,hinge=right,open=true,powered=true]", + "8367": "minecraft:jungle_door[facing=west,half=upper,hinge=right,open=true,powered=false]", + "8368": "minecraft:jungle_door[facing=west,half=upper,hinge=right,open=false,powered=true]", + "8369": "minecraft:jungle_door[facing=west,half=upper,hinge=right,open=false,powered=false]", + "8370": "minecraft:jungle_door[facing=west,half=lower,hinge=left,open=true,powered=true]", + "8371": "minecraft:jungle_door[facing=west,half=lower,hinge=left,open=true,powered=false]", + "8372": "minecraft:jungle_door[facing=west,half=lower,hinge=left,open=false,powered=true]", + "8373": "minecraft:jungle_door[facing=west,half=lower,hinge=left,open=false,powered=false]", + "8374": "minecraft:jungle_door[facing=west,half=lower,hinge=right,open=true,powered=true]", + "8375": "minecraft:jungle_door[facing=west,half=lower,hinge=right,open=true,powered=false]", + "8376": "minecraft:jungle_door[facing=west,half=lower,hinge=right,open=false,powered=true]", + "8377": "minecraft:jungle_door[facing=west,half=lower,hinge=right,open=false,powered=false]", + "8378": "minecraft:jungle_door[facing=east,half=upper,hinge=left,open=true,powered=true]", + "8379": "minecraft:jungle_door[facing=east,half=upper,hinge=left,open=true,powered=false]", + "8380": "minecraft:jungle_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "8381": "minecraft:jungle_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "8382": "minecraft:jungle_door[facing=east,half=upper,hinge=right,open=true,powered=true]", + "8383": "minecraft:jungle_door[facing=east,half=upper,hinge=right,open=true,powered=false]", + "8384": "minecraft:jungle_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "8385": "minecraft:jungle_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "8386": "minecraft:jungle_door[facing=east,half=lower,hinge=left,open=true,powered=true]", + "8387": "minecraft:jungle_door[facing=east,half=lower,hinge=left,open=true,powered=false]", + "8388": "minecraft:jungle_door[facing=east,half=lower,hinge=left,open=false,powered=true]", + "8389": "minecraft:jungle_door[facing=east,half=lower,hinge=left,open=false,powered=false]", + "8390": "minecraft:jungle_door[facing=east,half=lower,hinge=right,open=true,powered=true]", + "8391": "minecraft:jungle_door[facing=east,half=lower,hinge=right,open=true,powered=false]", + "8392": "minecraft:jungle_door[facing=east,half=lower,hinge=right,open=false,powered=true]", + "8393": "minecraft:jungle_door[facing=east,half=lower,hinge=right,open=false,powered=false]", + "8394": "minecraft:acacia_door[facing=north,half=upper,hinge=left,open=true,powered=true]", + "8395": "minecraft:acacia_door[facing=north,half=upper,hinge=left,open=true,powered=false]", + "8396": "minecraft:acacia_door[facing=north,half=upper,hinge=left,open=false,powered=true]", + "8397": "minecraft:acacia_door[facing=north,half=upper,hinge=left,open=false,powered=false]", + "8398": "minecraft:acacia_door[facing=north,half=upper,hinge=right,open=true,powered=true]", + "8399": "minecraft:acacia_door[facing=north,half=upper,hinge=right,open=true,powered=false]", + "8400": "minecraft:acacia_door[facing=north,half=upper,hinge=right,open=false,powered=true]", + "8401": "minecraft:acacia_door[facing=north,half=upper,hinge=right,open=false,powered=false]", + "8402": "minecraft:acacia_door[facing=north,half=lower,hinge=left,open=true,powered=true]", + "8403": "minecraft:acacia_door[facing=north,half=lower,hinge=left,open=true,powered=false]", + "8404": "minecraft:acacia_door[facing=north,half=lower,hinge=left,open=false,powered=true]", + "8405": "minecraft:acacia_door[facing=north,half=lower,hinge=left,open=false,powered=false]", + "8406": "minecraft:acacia_door[facing=north,half=lower,hinge=right,open=true,powered=true]", + "8407": "minecraft:acacia_door[facing=north,half=lower,hinge=right,open=true,powered=false]", + "8408": "minecraft:acacia_door[facing=north,half=lower,hinge=right,open=false,powered=true]", + "8409": "minecraft:acacia_door[facing=north,half=lower,hinge=right,open=false,powered=false]", + "8410": "minecraft:acacia_door[facing=south,half=upper,hinge=left,open=true,powered=true]", + "8411": "minecraft:acacia_door[facing=south,half=upper,hinge=left,open=true,powered=false]", + "8412": "minecraft:acacia_door[facing=south,half=upper,hinge=left,open=false,powered=true]", + "8413": "minecraft:acacia_door[facing=south,half=upper,hinge=left,open=false,powered=false]", + "8414": "minecraft:acacia_door[facing=south,half=upper,hinge=right,open=true,powered=true]", + "8415": "minecraft:acacia_door[facing=south,half=upper,hinge=right,open=true,powered=false]", + "8416": "minecraft:acacia_door[facing=south,half=upper,hinge=right,open=false,powered=true]", + "8417": "minecraft:acacia_door[facing=south,half=upper,hinge=right,open=false,powered=false]", + "8418": "minecraft:acacia_door[facing=south,half=lower,hinge=left,open=true,powered=true]", + "8419": "minecraft:acacia_door[facing=south,half=lower,hinge=left,open=true,powered=false]", + "8420": "minecraft:acacia_door[facing=south,half=lower,hinge=left,open=false,powered=true]", + "8421": "minecraft:acacia_door[facing=south,half=lower,hinge=left,open=false,powered=false]", + "8422": "minecraft:acacia_door[facing=south,half=lower,hinge=right,open=true,powered=true]", + "8423": "minecraft:acacia_door[facing=south,half=lower,hinge=right,open=true,powered=false]", + "8424": "minecraft:acacia_door[facing=south,half=lower,hinge=right,open=false,powered=true]", + "8425": "minecraft:acacia_door[facing=south,half=lower,hinge=right,open=false,powered=false]", + "8426": "minecraft:acacia_door[facing=west,half=upper,hinge=left,open=true,powered=true]", + "8427": "minecraft:acacia_door[facing=west,half=upper,hinge=left,open=true,powered=false]", + "8428": "minecraft:acacia_door[facing=west,half=upper,hinge=left,open=false,powered=true]", + "8429": "minecraft:acacia_door[facing=west,half=upper,hinge=left,open=false,powered=false]", + "8430": "minecraft:acacia_door[facing=west,half=upper,hinge=right,open=true,powered=true]", + "8431": "minecraft:acacia_door[facing=west,half=upper,hinge=right,open=true,powered=false]", + "8432": "minecraft:acacia_door[facing=west,half=upper,hinge=right,open=false,powered=true]", + "8433": "minecraft:acacia_door[facing=west,half=upper,hinge=right,open=false,powered=false]", + "8434": "minecraft:acacia_door[facing=west,half=lower,hinge=left,open=true,powered=true]", + "8435": "minecraft:acacia_door[facing=west,half=lower,hinge=left,open=true,powered=false]", + "8436": "minecraft:acacia_door[facing=west,half=lower,hinge=left,open=false,powered=true]", + "8437": "minecraft:acacia_door[facing=west,half=lower,hinge=left,open=false,powered=false]", + "8438": "minecraft:acacia_door[facing=west,half=lower,hinge=right,open=true,powered=true]", + "8439": "minecraft:acacia_door[facing=west,half=lower,hinge=right,open=true,powered=false]", + "8440": "minecraft:acacia_door[facing=west,half=lower,hinge=right,open=false,powered=true]", + "8441": "minecraft:acacia_door[facing=west,half=lower,hinge=right,open=false,powered=false]", + "8442": "minecraft:acacia_door[facing=east,half=upper,hinge=left,open=true,powered=true]", + "8443": "minecraft:acacia_door[facing=east,half=upper,hinge=left,open=true,powered=false]", + "8444": "minecraft:acacia_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "8445": "minecraft:acacia_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "8446": "minecraft:acacia_door[facing=east,half=upper,hinge=right,open=true,powered=true]", + "8447": "minecraft:acacia_door[facing=east,half=upper,hinge=right,open=true,powered=false]", + "8448": "minecraft:acacia_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "8449": "minecraft:acacia_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "8450": "minecraft:acacia_door[facing=east,half=lower,hinge=left,open=true,powered=true]", + "8451": "minecraft:acacia_door[facing=east,half=lower,hinge=left,open=true,powered=false]", + "8452": "minecraft:acacia_door[facing=east,half=lower,hinge=left,open=false,powered=true]", + "8453": "minecraft:acacia_door[facing=east,half=lower,hinge=left,open=false,powered=false]", + "8454": "minecraft:acacia_door[facing=east,half=lower,hinge=right,open=true,powered=true]", + "8455": "minecraft:acacia_door[facing=east,half=lower,hinge=right,open=true,powered=false]", + "8456": "minecraft:acacia_door[facing=east,half=lower,hinge=right,open=false,powered=true]", + "8457": "minecraft:acacia_door[facing=east,half=lower,hinge=right,open=false,powered=false]", + "8458": "minecraft:dark_oak_door[facing=north,half=upper,hinge=left,open=true,powered=true]", + "8459": "minecraft:dark_oak_door[facing=north,half=upper,hinge=left,open=true,powered=false]", + "8460": "minecraft:dark_oak_door[facing=north,half=upper,hinge=left,open=false,powered=true]", + "8461": "minecraft:dark_oak_door[facing=north,half=upper,hinge=left,open=false,powered=false]", + "8462": "minecraft:dark_oak_door[facing=north,half=upper,hinge=right,open=true,powered=true]", + "8463": "minecraft:dark_oak_door[facing=north,half=upper,hinge=right,open=true,powered=false]", + "8464": "minecraft:dark_oak_door[facing=north,half=upper,hinge=right,open=false,powered=true]", + "8465": "minecraft:dark_oak_door[facing=north,half=upper,hinge=right,open=false,powered=false]", + "8466": "minecraft:dark_oak_door[facing=north,half=lower,hinge=left,open=true,powered=true]", + "8467": "minecraft:dark_oak_door[facing=north,half=lower,hinge=left,open=true,powered=false]", + "8468": "minecraft:dark_oak_door[facing=north,half=lower,hinge=left,open=false,powered=true]", + "8469": "minecraft:dark_oak_door[facing=north,half=lower,hinge=left,open=false,powered=false]", + "8470": "minecraft:dark_oak_door[facing=north,half=lower,hinge=right,open=true,powered=true]", + "8471": "minecraft:dark_oak_door[facing=north,half=lower,hinge=right,open=true,powered=false]", + "8472": "minecraft:dark_oak_door[facing=north,half=lower,hinge=right,open=false,powered=true]", + "8473": "minecraft:dark_oak_door[facing=north,half=lower,hinge=right,open=false,powered=false]", + "8474": "minecraft:dark_oak_door[facing=south,half=upper,hinge=left,open=true,powered=true]", + "8475": "minecraft:dark_oak_door[facing=south,half=upper,hinge=left,open=true,powered=false]", + "8476": "minecraft:dark_oak_door[facing=south,half=upper,hinge=left,open=false,powered=true]", + "8477": "minecraft:dark_oak_door[facing=south,half=upper,hinge=left,open=false,powered=false]", + "8478": "minecraft:dark_oak_door[facing=south,half=upper,hinge=right,open=true,powered=true]", + "8479": "minecraft:dark_oak_door[facing=south,half=upper,hinge=right,open=true,powered=false]", + "8480": "minecraft:dark_oak_door[facing=south,half=upper,hinge=right,open=false,powered=true]", + "8481": "minecraft:dark_oak_door[facing=south,half=upper,hinge=right,open=false,powered=false]", + "8482": "minecraft:dark_oak_door[facing=south,half=lower,hinge=left,open=true,powered=true]", + "8483": "minecraft:dark_oak_door[facing=south,half=lower,hinge=left,open=true,powered=false]", + "8484": "minecraft:dark_oak_door[facing=south,half=lower,hinge=left,open=false,powered=true]", + "8485": "minecraft:dark_oak_door[facing=south,half=lower,hinge=left,open=false,powered=false]", + "8486": "minecraft:dark_oak_door[facing=south,half=lower,hinge=right,open=true,powered=true]", + "8487": "minecraft:dark_oak_door[facing=south,half=lower,hinge=right,open=true,powered=false]", + "8488": "minecraft:dark_oak_door[facing=south,half=lower,hinge=right,open=false,powered=true]", + "8489": "minecraft:dark_oak_door[facing=south,half=lower,hinge=right,open=false,powered=false]", + "8490": "minecraft:dark_oak_door[facing=west,half=upper,hinge=left,open=true,powered=true]", + "8491": "minecraft:dark_oak_door[facing=west,half=upper,hinge=left,open=true,powered=false]", + "8492": "minecraft:dark_oak_door[facing=west,half=upper,hinge=left,open=false,powered=true]", + "8493": "minecraft:dark_oak_door[facing=west,half=upper,hinge=left,open=false,powered=false]", + "8494": "minecraft:dark_oak_door[facing=west,half=upper,hinge=right,open=true,powered=true]", + "8495": "minecraft:dark_oak_door[facing=west,half=upper,hinge=right,open=true,powered=false]", + "8496": "minecraft:dark_oak_door[facing=west,half=upper,hinge=right,open=false,powered=true]", + "8497": "minecraft:dark_oak_door[facing=west,half=upper,hinge=right,open=false,powered=false]", + "8498": "minecraft:dark_oak_door[facing=west,half=lower,hinge=left,open=true,powered=true]", + "8499": "minecraft:dark_oak_door[facing=west,half=lower,hinge=left,open=true,powered=false]", + "8500": "minecraft:dark_oak_door[facing=west,half=lower,hinge=left,open=false,powered=true]", + "8501": "minecraft:dark_oak_door[facing=west,half=lower,hinge=left,open=false,powered=false]", + "8502": "minecraft:dark_oak_door[facing=west,half=lower,hinge=right,open=true,powered=true]", + "8503": "minecraft:dark_oak_door[facing=west,half=lower,hinge=right,open=true,powered=false]", + "8504": "minecraft:dark_oak_door[facing=west,half=lower,hinge=right,open=false,powered=true]", + "8505": "minecraft:dark_oak_door[facing=west,half=lower,hinge=right,open=false,powered=false]", + "8506": "minecraft:dark_oak_door[facing=east,half=upper,hinge=left,open=true,powered=true]", + "8507": "minecraft:dark_oak_door[facing=east,half=upper,hinge=left,open=true,powered=false]", + "8508": "minecraft:dark_oak_door[facing=east,half=upper,hinge=left,open=false,powered=true]", + "8509": "minecraft:dark_oak_door[facing=east,half=upper,hinge=left,open=false,powered=false]", + "8510": "minecraft:dark_oak_door[facing=east,half=upper,hinge=right,open=true,powered=true]", + "8511": "minecraft:dark_oak_door[facing=east,half=upper,hinge=right,open=true,powered=false]", + "8512": "minecraft:dark_oak_door[facing=east,half=upper,hinge=right,open=false,powered=true]", + "8513": "minecraft:dark_oak_door[facing=east,half=upper,hinge=right,open=false,powered=false]", + "8514": "minecraft:dark_oak_door[facing=east,half=lower,hinge=left,open=true,powered=true]", + "8515": "minecraft:dark_oak_door[facing=east,half=lower,hinge=left,open=true,powered=false]", + "8516": "minecraft:dark_oak_door[facing=east,half=lower,hinge=left,open=false,powered=true]", + "8517": "minecraft:dark_oak_door[facing=east,half=lower,hinge=left,open=false,powered=false]", + "8518": "minecraft:dark_oak_door[facing=east,half=lower,hinge=right,open=true,powered=true]", + "8519": "minecraft:dark_oak_door[facing=east,half=lower,hinge=right,open=true,powered=false]", + "8520": "minecraft:dark_oak_door[facing=east,half=lower,hinge=right,open=false,powered=true]", + "8521": "minecraft:dark_oak_door[facing=east,half=lower,hinge=right,open=false,powered=false]", + "8522": "minecraft:end_rod[facing=north]", + "8523": "minecraft:end_rod[facing=east]", + "8524": "minecraft:end_rod[facing=south]", + "8525": "minecraft:end_rod[facing=west]", + "8526": "minecraft:end_rod[facing=up]", + "8527": "minecraft:end_rod[facing=down]", + "8528": "minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=true]", + "8529": "minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=true,west=false]", + "8530": "minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=false,west=true]", + "8531": "minecraft:chorus_plant[down=true,east=true,north=true,south=true,up=false,west=false]", + "8532": "minecraft:chorus_plant[down=true,east=true,north=true,south=false,up=true,west=true]", + "8533": "minecraft:chorus_plant[down=true,east=true,north=true,south=false,up=true,west=false]", + "8534": "minecraft:chorus_plant[down=true,east=true,north=true,south=false,up=false,west=true]", + "8535": "minecraft:chorus_plant[down=true,east=true,north=true,south=false,up=false,west=false]", + "8536": "minecraft:chorus_plant[down=true,east=true,north=false,south=true,up=true,west=true]", + "8537": "minecraft:chorus_plant[down=true,east=true,north=false,south=true,up=true,west=false]", + "8538": "minecraft:chorus_plant[down=true,east=true,north=false,south=true,up=false,west=true]", + "8539": "minecraft:chorus_plant[down=true,east=true,north=false,south=true,up=false,west=false]", + "8540": "minecraft:chorus_plant[down=true,east=true,north=false,south=false,up=true,west=true]", + "8541": "minecraft:chorus_plant[down=true,east=true,north=false,south=false,up=true,west=false]", + "8542": "minecraft:chorus_plant[down=true,east=true,north=false,south=false,up=false,west=true]", + "8543": "minecraft:chorus_plant[down=true,east=true,north=false,south=false,up=false,west=false]", + "8544": "minecraft:chorus_plant[down=true,east=false,north=true,south=true,up=true,west=true]", + "8545": "minecraft:chorus_plant[down=true,east=false,north=true,south=true,up=true,west=false]", + "8546": "minecraft:chorus_plant[down=true,east=false,north=true,south=true,up=false,west=true]", + "8547": "minecraft:chorus_plant[down=true,east=false,north=true,south=true,up=false,west=false]", + "8548": "minecraft:chorus_plant[down=true,east=false,north=true,south=false,up=true,west=true]", + "8549": "minecraft:chorus_plant[down=true,east=false,north=true,south=false,up=true,west=false]", + "8550": "minecraft:chorus_plant[down=true,east=false,north=true,south=false,up=false,west=true]", + "8551": "minecraft:chorus_plant[down=true,east=false,north=true,south=false,up=false,west=false]", + "8552": "minecraft:chorus_plant[down=true,east=false,north=false,south=true,up=true,west=true]", + "8553": "minecraft:chorus_plant[down=true,east=false,north=false,south=true,up=true,west=false]", + "8554": "minecraft:chorus_plant[down=true,east=false,north=false,south=true,up=false,west=true]", + "8555": "minecraft:chorus_plant[down=true,east=false,north=false,south=true,up=false,west=false]", + "8556": "minecraft:chorus_plant[down=true,east=false,north=false,south=false,up=true,west=true]", + "8557": "minecraft:chorus_plant[down=true,east=false,north=false,south=false,up=true,west=false]", + "8558": "minecraft:chorus_plant[down=true,east=false,north=false,south=false,up=false,west=true]", + "8559": "minecraft:chorus_plant[down=true,east=false,north=false,south=false,up=false,west=false]", + "8560": "minecraft:chorus_plant[down=false,east=true,north=true,south=true,up=true,west=true]", + "8561": "minecraft:chorus_plant[down=false,east=true,north=true,south=true,up=true,west=false]", + "8562": "minecraft:chorus_plant[down=false,east=true,north=true,south=true,up=false,west=true]", + "8563": "minecraft:chorus_plant[down=false,east=true,north=true,south=true,up=false,west=false]", + "8564": "minecraft:chorus_plant[down=false,east=true,north=true,south=false,up=true,west=true]", + "8565": "minecraft:chorus_plant[down=false,east=true,north=true,south=false,up=true,west=false]", + "8566": "minecraft:chorus_plant[down=false,east=true,north=true,south=false,up=false,west=true]", + "8567": "minecraft:chorus_plant[down=false,east=true,north=true,south=false,up=false,west=false]", + "8568": "minecraft:chorus_plant[down=false,east=true,north=false,south=true,up=true,west=true]", + "8569": "minecraft:chorus_plant[down=false,east=true,north=false,south=true,up=true,west=false]", + "8570": "minecraft:chorus_plant[down=false,east=true,north=false,south=true,up=false,west=true]", + "8571": "minecraft:chorus_plant[down=false,east=true,north=false,south=true,up=false,west=false]", + "8572": "minecraft:chorus_plant[down=false,east=true,north=false,south=false,up=true,west=true]", + "8573": "minecraft:chorus_plant[down=false,east=true,north=false,south=false,up=true,west=false]", + "8574": "minecraft:chorus_plant[down=false,east=true,north=false,south=false,up=false,west=true]", + "8575": "minecraft:chorus_plant[down=false,east=true,north=false,south=false,up=false,west=false]", + "8576": "minecraft:chorus_plant[down=false,east=false,north=true,south=true,up=true,west=true]", + "8577": "minecraft:chorus_plant[down=false,east=false,north=true,south=true,up=true,west=false]", + "8578": "minecraft:chorus_plant[down=false,east=false,north=true,south=true,up=false,west=true]", + "8579": "minecraft:chorus_plant[down=false,east=false,north=true,south=true,up=false,west=false]", + "8580": "minecraft:chorus_plant[down=false,east=false,north=true,south=false,up=true,west=true]", + "8581": "minecraft:chorus_plant[down=false,east=false,north=true,south=false,up=true,west=false]", + "8582": "minecraft:chorus_plant[down=false,east=false,north=true,south=false,up=false,west=true]", + "8583": "minecraft:chorus_plant[down=false,east=false,north=true,south=false,up=false,west=false]", + "8584": "minecraft:chorus_plant[down=false,east=false,north=false,south=true,up=true,west=true]", + "8585": "minecraft:chorus_plant[down=false,east=false,north=false,south=true,up=true,west=false]", + "8586": "minecraft:chorus_plant[down=false,east=false,north=false,south=true,up=false,west=true]", + "8587": "minecraft:chorus_plant[down=false,east=false,north=false,south=true,up=false,west=false]", + "8588": "minecraft:chorus_plant[down=false,east=false,north=false,south=false,up=true,west=true]", + "8589": "minecraft:chorus_plant[down=false,east=false,north=false,south=false,up=true,west=false]", + "8590": "minecraft:chorus_plant[down=false,east=false,north=false,south=false,up=false,west=true]", + "8591": "minecraft:chorus_plant[down=false,east=false,north=false,south=false,up=false,west=false]", + "8592": "minecraft:chorus_flower[age=0]", + "8593": "minecraft:chorus_flower[age=1]", + "8594": "minecraft:chorus_flower[age=2]", + "8595": "minecraft:chorus_flower[age=3]", + "8596": "minecraft:chorus_flower[age=4]", + "8597": "minecraft:chorus_flower[age=5]", + "8598": "minecraft:purpur_block", + "8599": "minecraft:purpur_pillar[axis=x]", + "8600": "minecraft:purpur_pillar[axis=y]", + "8601": "minecraft:purpur_pillar[axis=z]", + "8602": "minecraft:purpur_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "8603": "minecraft:purpur_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "8604": "minecraft:purpur_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "8605": "minecraft:purpur_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "8606": "minecraft:purpur_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "8607": "minecraft:purpur_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "8608": "minecraft:purpur_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "8609": "minecraft:purpur_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "8610": "minecraft:purpur_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "8611": "minecraft:purpur_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "8612": "minecraft:purpur_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "8613": "minecraft:purpur_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "8614": "minecraft:purpur_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "8615": "minecraft:purpur_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "8616": "minecraft:purpur_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "8617": "minecraft:purpur_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "8618": "minecraft:purpur_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "8619": "minecraft:purpur_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "8620": "minecraft:purpur_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "8621": "minecraft:purpur_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "8622": "minecraft:purpur_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "8623": "minecraft:purpur_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "8624": "minecraft:purpur_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "8625": "minecraft:purpur_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "8626": "minecraft:purpur_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "8627": "minecraft:purpur_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "8628": "minecraft:purpur_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "8629": "minecraft:purpur_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "8630": "minecraft:purpur_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "8631": "minecraft:purpur_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "8632": "minecraft:purpur_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "8633": "minecraft:purpur_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "8634": "minecraft:purpur_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "8635": "minecraft:purpur_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "8636": "minecraft:purpur_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "8637": "minecraft:purpur_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "8638": "minecraft:purpur_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "8639": "minecraft:purpur_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "8640": "minecraft:purpur_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "8641": "minecraft:purpur_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "8642": "minecraft:purpur_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "8643": "minecraft:purpur_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "8644": "minecraft:purpur_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "8645": "minecraft:purpur_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "8646": "minecraft:purpur_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "8647": "minecraft:purpur_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "8648": "minecraft:purpur_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "8649": "minecraft:purpur_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "8650": "minecraft:purpur_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "8651": "minecraft:purpur_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "8652": "minecraft:purpur_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "8653": "minecraft:purpur_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "8654": "minecraft:purpur_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "8655": "minecraft:purpur_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "8656": "minecraft:purpur_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "8657": "minecraft:purpur_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "8658": "minecraft:purpur_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "8659": "minecraft:purpur_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "8660": "minecraft:purpur_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "8661": "minecraft:purpur_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "8662": "minecraft:purpur_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "8663": "minecraft:purpur_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "8664": "minecraft:purpur_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "8665": "minecraft:purpur_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "8666": "minecraft:purpur_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "8667": "minecraft:purpur_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "8668": "minecraft:purpur_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "8669": "minecraft:purpur_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "8670": "minecraft:purpur_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "8671": "minecraft:purpur_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "8672": "minecraft:purpur_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "8673": "minecraft:purpur_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "8674": "minecraft:purpur_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "8675": "minecraft:purpur_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "8676": "minecraft:purpur_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "8677": "minecraft:purpur_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "8678": "minecraft:purpur_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "8679": "minecraft:purpur_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "8680": "minecraft:purpur_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "8681": "minecraft:purpur_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "8682": "minecraft:end_stone_bricks", + "8683": "minecraft:beetroots[age=0]", + "8684": "minecraft:beetroots[age=1]", + "8685": "minecraft:beetroots[age=2]", + "8686": "minecraft:beetroots[age=3]", + "8687": "minecraft:grass_path", + "8688": "minecraft:end_gateway", + "8689": "minecraft:repeating_command_block[conditional=true,facing=north]", + "8690": "minecraft:repeating_command_block[conditional=true,facing=east]", + "8691": "minecraft:repeating_command_block[conditional=true,facing=south]", + "8692": "minecraft:repeating_command_block[conditional=true,facing=west]", + "8693": "minecraft:repeating_command_block[conditional=true,facing=up]", + "8694": "minecraft:repeating_command_block[conditional=true,facing=down]", + "8695": "minecraft:repeating_command_block[conditional=false,facing=north]", + "8696": "minecraft:repeating_command_block[conditional=false,facing=east]", + "8697": "minecraft:repeating_command_block[conditional=false,facing=south]", + "8698": "minecraft:repeating_command_block[conditional=false,facing=west]", + "8699": "minecraft:repeating_command_block[conditional=false,facing=up]", + "8700": "minecraft:repeating_command_block[conditional=false,facing=down]", + "8701": "minecraft:chain_command_block[conditional=true,facing=north]", + "8702": "minecraft:chain_command_block[conditional=true,facing=east]", + "8703": "minecraft:chain_command_block[conditional=true,facing=south]", + "8704": "minecraft:chain_command_block[conditional=true,facing=west]", + "8705": "minecraft:chain_command_block[conditional=true,facing=up]", + "8706": "minecraft:chain_command_block[conditional=true,facing=down]", + "8707": "minecraft:chain_command_block[conditional=false,facing=north]", + "8708": "minecraft:chain_command_block[conditional=false,facing=east]", + "8709": "minecraft:chain_command_block[conditional=false,facing=south]", + "8710": "minecraft:chain_command_block[conditional=false,facing=west]", + "8711": "minecraft:chain_command_block[conditional=false,facing=up]", + "8712": "minecraft:chain_command_block[conditional=false,facing=down]", + "8713": "minecraft:frosted_ice[age=0]", + "8714": "minecraft:frosted_ice[age=1]", + "8715": "minecraft:frosted_ice[age=2]", + "8716": "minecraft:frosted_ice[age=3]", + "8717": "minecraft:magma_block", + "8718": "minecraft:nether_wart_block", + "8719": "minecraft:red_nether_bricks", + "8720": "minecraft:bone_block[axis=x]", + "8721": "minecraft:bone_block[axis=y]", + "8722": "minecraft:bone_block[axis=z]", + "8723": "minecraft:structure_void", + "8724": "minecraft:observer[facing=north,powered=true]", + "8725": "minecraft:observer[facing=north,powered=false]", + "8726": "minecraft:observer[facing=east,powered=true]", + "8727": "minecraft:observer[facing=east,powered=false]", + "8728": "minecraft:observer[facing=south,powered=true]", + "8729": "minecraft:observer[facing=south,powered=false]", + "8730": "minecraft:observer[facing=west,powered=true]", + "8731": "minecraft:observer[facing=west,powered=false]", + "8732": "minecraft:observer[facing=up,powered=true]", + "8733": "minecraft:observer[facing=up,powered=false]", + "8734": "minecraft:observer[facing=down,powered=true]", + "8735": "minecraft:observer[facing=down,powered=false]", + "8736": "minecraft:shulker_box[facing=north]", + "8737": "minecraft:shulker_box[facing=east]", + "8738": "minecraft:shulker_box[facing=south]", + "8739": "minecraft:shulker_box[facing=west]", + "8740": "minecraft:shulker_box[facing=up]", + "8741": "minecraft:shulker_box[facing=down]", + "8742": "minecraft:white_shulker_box[facing=north]", + "8743": "minecraft:white_shulker_box[facing=east]", + "8744": "minecraft:white_shulker_box[facing=south]", + "8745": "minecraft:white_shulker_box[facing=west]", + "8746": "minecraft:white_shulker_box[facing=up]", + "8747": "minecraft:white_shulker_box[facing=down]", + "8748": "minecraft:orange_shulker_box[facing=north]", + "8749": "minecraft:orange_shulker_box[facing=east]", + "8750": "minecraft:orange_shulker_box[facing=south]", + "8751": "minecraft:orange_shulker_box[facing=west]", + "8752": "minecraft:orange_shulker_box[facing=up]", + "8753": "minecraft:orange_shulker_box[facing=down]", + "8754": "minecraft:magenta_shulker_box[facing=north]", + "8755": "minecraft:magenta_shulker_box[facing=east]", + "8756": "minecraft:magenta_shulker_box[facing=south]", + "8757": "minecraft:magenta_shulker_box[facing=west]", + "8758": "minecraft:magenta_shulker_box[facing=up]", + "8759": "minecraft:magenta_shulker_box[facing=down]", + "8760": "minecraft:light_blue_shulker_box[facing=north]", + "8761": "minecraft:light_blue_shulker_box[facing=east]", + "8762": "minecraft:light_blue_shulker_box[facing=south]", + "8763": "minecraft:light_blue_shulker_box[facing=west]", + "8764": "minecraft:light_blue_shulker_box[facing=up]", + "8765": "minecraft:light_blue_shulker_box[facing=down]", + "8766": "minecraft:yellow_shulker_box[facing=north]", + "8767": "minecraft:yellow_shulker_box[facing=east]", + "8768": "minecraft:yellow_shulker_box[facing=south]", + "8769": "minecraft:yellow_shulker_box[facing=west]", + "8770": "minecraft:yellow_shulker_box[facing=up]", + "8771": "minecraft:yellow_shulker_box[facing=down]", + "8772": "minecraft:lime_shulker_box[facing=north]", + "8773": "minecraft:lime_shulker_box[facing=east]", + "8774": "minecraft:lime_shulker_box[facing=south]", + "8775": "minecraft:lime_shulker_box[facing=west]", + "8776": "minecraft:lime_shulker_box[facing=up]", + "8777": "minecraft:lime_shulker_box[facing=down]", + "8778": "minecraft:pink_shulker_box[facing=north]", + "8779": "minecraft:pink_shulker_box[facing=east]", + "8780": "minecraft:pink_shulker_box[facing=south]", + "8781": "minecraft:pink_shulker_box[facing=west]", + "8782": "minecraft:pink_shulker_box[facing=up]", + "8783": "minecraft:pink_shulker_box[facing=down]", + "8784": "minecraft:gray_shulker_box[facing=north]", + "8785": "minecraft:gray_shulker_box[facing=east]", + "8786": "minecraft:gray_shulker_box[facing=south]", + "8787": "minecraft:gray_shulker_box[facing=west]", + "8788": "minecraft:gray_shulker_box[facing=up]", + "8789": "minecraft:gray_shulker_box[facing=down]", + "8790": "minecraft:light_gray_shulker_box[facing=north]", + "8791": "minecraft:light_gray_shulker_box[facing=east]", + "8792": "minecraft:light_gray_shulker_box[facing=south]", + "8793": "minecraft:light_gray_shulker_box[facing=west]", + "8794": "minecraft:light_gray_shulker_box[facing=up]", + "8795": "minecraft:light_gray_shulker_box[facing=down]", + "8796": "minecraft:cyan_shulker_box[facing=north]", + "8797": "minecraft:cyan_shulker_box[facing=east]", + "8798": "minecraft:cyan_shulker_box[facing=south]", + "8799": "minecraft:cyan_shulker_box[facing=west]", + "8800": "minecraft:cyan_shulker_box[facing=up]", + "8801": "minecraft:cyan_shulker_box[facing=down]", + "8802": "minecraft:purple_shulker_box[facing=north]", + "8803": "minecraft:purple_shulker_box[facing=east]", + "8804": "minecraft:purple_shulker_box[facing=south]", + "8805": "minecraft:purple_shulker_box[facing=west]", + "8806": "minecraft:purple_shulker_box[facing=up]", + "8807": "minecraft:purple_shulker_box[facing=down]", + "8808": "minecraft:blue_shulker_box[facing=north]", + "8809": "minecraft:blue_shulker_box[facing=east]", + "8810": "minecraft:blue_shulker_box[facing=south]", + "8811": "minecraft:blue_shulker_box[facing=west]", + "8812": "minecraft:blue_shulker_box[facing=up]", + "8813": "minecraft:blue_shulker_box[facing=down]", + "8814": "minecraft:brown_shulker_box[facing=north]", + "8815": "minecraft:brown_shulker_box[facing=east]", + "8816": "minecraft:brown_shulker_box[facing=south]", + "8817": "minecraft:brown_shulker_box[facing=west]", + "8818": "minecraft:brown_shulker_box[facing=up]", + "8819": "minecraft:brown_shulker_box[facing=down]", + "8820": "minecraft:green_shulker_box[facing=north]", + "8821": "minecraft:green_shulker_box[facing=east]", + "8822": "minecraft:green_shulker_box[facing=south]", + "8823": "minecraft:green_shulker_box[facing=west]", + "8824": "minecraft:green_shulker_box[facing=up]", + "8825": "minecraft:green_shulker_box[facing=down]", + "8826": "minecraft:red_shulker_box[facing=north]", + "8827": "minecraft:red_shulker_box[facing=east]", + "8828": "minecraft:red_shulker_box[facing=south]", + "8829": "minecraft:red_shulker_box[facing=west]", + "8830": "minecraft:red_shulker_box[facing=up]", + "8831": "minecraft:red_shulker_box[facing=down]", + "8832": "minecraft:black_shulker_box[facing=north]", + "8833": "minecraft:black_shulker_box[facing=east]", + "8834": "minecraft:black_shulker_box[facing=south]", + "8835": "minecraft:black_shulker_box[facing=west]", + "8836": "minecraft:black_shulker_box[facing=up]", + "8837": "minecraft:black_shulker_box[facing=down]", + "8838": "minecraft:white_glazed_terracotta[facing=north]", + "8839": "minecraft:white_glazed_terracotta[facing=south]", + "8840": "minecraft:white_glazed_terracotta[facing=west]", + "8841": "minecraft:white_glazed_terracotta[facing=east]", + "8842": "minecraft:orange_glazed_terracotta[facing=north]", + "8843": "minecraft:orange_glazed_terracotta[facing=south]", + "8844": "minecraft:orange_glazed_terracotta[facing=west]", + "8845": "minecraft:orange_glazed_terracotta[facing=east]", + "8846": "minecraft:magenta_glazed_terracotta[facing=north]", + "8847": "minecraft:magenta_glazed_terracotta[facing=south]", + "8848": "minecraft:magenta_glazed_terracotta[facing=west]", + "8849": "minecraft:magenta_glazed_terracotta[facing=east]", + "8850": "minecraft:light_blue_glazed_terracotta[facing=north]", + "8851": "minecraft:light_blue_glazed_terracotta[facing=south]", + "8852": "minecraft:light_blue_glazed_terracotta[facing=west]", + "8853": "minecraft:light_blue_glazed_terracotta[facing=east]", + "8854": "minecraft:yellow_glazed_terracotta[facing=north]", + "8855": "minecraft:yellow_glazed_terracotta[facing=south]", + "8856": "minecraft:yellow_glazed_terracotta[facing=west]", + "8857": "minecraft:yellow_glazed_terracotta[facing=east]", + "8858": "minecraft:lime_glazed_terracotta[facing=north]", + "8859": "minecraft:lime_glazed_terracotta[facing=south]", + "8860": "minecraft:lime_glazed_terracotta[facing=west]", + "8861": "minecraft:lime_glazed_terracotta[facing=east]", + "8862": "minecraft:pink_glazed_terracotta[facing=north]", + "8863": "minecraft:pink_glazed_terracotta[facing=south]", + "8864": "minecraft:pink_glazed_terracotta[facing=west]", + "8865": "minecraft:pink_glazed_terracotta[facing=east]", + "8866": "minecraft:gray_glazed_terracotta[facing=north]", + "8867": "minecraft:gray_glazed_terracotta[facing=south]", + "8868": "minecraft:gray_glazed_terracotta[facing=west]", + "8869": "minecraft:gray_glazed_terracotta[facing=east]", + "8870": "minecraft:light_gray_glazed_terracotta[facing=north]", + "8871": "minecraft:light_gray_glazed_terracotta[facing=south]", + "8872": "minecraft:light_gray_glazed_terracotta[facing=west]", + "8873": "minecraft:light_gray_glazed_terracotta[facing=east]", + "8874": "minecraft:cyan_glazed_terracotta[facing=north]", + "8875": "minecraft:cyan_glazed_terracotta[facing=south]", + "8876": "minecraft:cyan_glazed_terracotta[facing=west]", + "8877": "minecraft:cyan_glazed_terracotta[facing=east]", + "8878": "minecraft:purple_glazed_terracotta[facing=north]", + "8879": "minecraft:purple_glazed_terracotta[facing=south]", + "8880": "minecraft:purple_glazed_terracotta[facing=west]", + "8881": "minecraft:purple_glazed_terracotta[facing=east]", + "8882": "minecraft:blue_glazed_terracotta[facing=north]", + "8883": "minecraft:blue_glazed_terracotta[facing=south]", + "8884": "minecraft:blue_glazed_terracotta[facing=west]", + "8885": "minecraft:blue_glazed_terracotta[facing=east]", + "8886": "minecraft:brown_glazed_terracotta[facing=north]", + "8887": "minecraft:brown_glazed_terracotta[facing=south]", + "8888": "minecraft:brown_glazed_terracotta[facing=west]", + "8889": "minecraft:brown_glazed_terracotta[facing=east]", + "8890": "minecraft:green_glazed_terracotta[facing=north]", + "8891": "minecraft:green_glazed_terracotta[facing=south]", + "8892": "minecraft:green_glazed_terracotta[facing=west]", + "8893": "minecraft:green_glazed_terracotta[facing=east]", + "8894": "minecraft:red_glazed_terracotta[facing=north]", + "8895": "minecraft:red_glazed_terracotta[facing=south]", + "8896": "minecraft:red_glazed_terracotta[facing=west]", + "8897": "minecraft:red_glazed_terracotta[facing=east]", + "8898": "minecraft:black_glazed_terracotta[facing=north]", + "8899": "minecraft:black_glazed_terracotta[facing=south]", + "8900": "minecraft:black_glazed_terracotta[facing=west]", + "8901": "minecraft:black_glazed_terracotta[facing=east]", + "8902": "minecraft:white_concrete", + "8903": "minecraft:orange_concrete", + "8904": "minecraft:magenta_concrete", + "8905": "minecraft:light_blue_concrete", + "8906": "minecraft:yellow_concrete", + "8907": "minecraft:lime_concrete", + "8908": "minecraft:pink_concrete", + "8909": "minecraft:gray_concrete", + "8910": "minecraft:light_gray_concrete", + "8911": "minecraft:cyan_concrete", + "8912": "minecraft:purple_concrete", + "8913": "minecraft:blue_concrete", + "8914": "minecraft:brown_concrete", + "8915": "minecraft:green_concrete", + "8916": "minecraft:red_concrete", + "8917": "minecraft:black_concrete", + "8918": "minecraft:white_concrete_powder", + "8919": "minecraft:orange_concrete_powder", + "8920": "minecraft:magenta_concrete_powder", + "8921": "minecraft:light_blue_concrete_powder", + "8922": "minecraft:yellow_concrete_powder", + "8923": "minecraft:lime_concrete_powder", + "8924": "minecraft:pink_concrete_powder", + "8925": "minecraft:gray_concrete_powder", + "8926": "minecraft:light_gray_concrete_powder", + "8927": "minecraft:cyan_concrete_powder", + "8928": "minecraft:purple_concrete_powder", + "8929": "minecraft:blue_concrete_powder", + "8930": "minecraft:brown_concrete_powder", + "8931": "minecraft:green_concrete_powder", + "8932": "minecraft:red_concrete_powder", + "8933": "minecraft:black_concrete_powder", + "8934": "minecraft:kelp[age=0]", + "8935": "minecraft:kelp[age=1]", + "8936": "minecraft:kelp[age=2]", + "8937": "minecraft:kelp[age=3]", + "8938": "minecraft:kelp[age=4]", + "8939": "minecraft:kelp[age=5]", + "8940": "minecraft:kelp[age=6]", + "8941": "minecraft:kelp[age=7]", + "8942": "minecraft:kelp[age=8]", + "8943": "minecraft:kelp[age=9]", + "8944": "minecraft:kelp[age=10]", + "8945": "minecraft:kelp[age=11]", + "8946": "minecraft:kelp[age=12]", + "8947": "minecraft:kelp[age=13]", + "8948": "minecraft:kelp[age=14]", + "8949": "minecraft:kelp[age=15]", + "8950": "minecraft:kelp[age=16]", + "8951": "minecraft:kelp[age=17]", + "8952": "minecraft:kelp[age=18]", + "8953": "minecraft:kelp[age=19]", + "8954": "minecraft:kelp[age=20]", + "8955": "minecraft:kelp[age=21]", + "8956": "minecraft:kelp[age=22]", + "8957": "minecraft:kelp[age=23]", + "8958": "minecraft:kelp[age=24]", + "8959": "minecraft:kelp[age=25]", + "8960": "minecraft:kelp_plant", + "8961": "minecraft:dried_kelp_block", + "8962": "minecraft:turtle_egg[eggs=1,hatch=0]", + "8963": "minecraft:turtle_egg[eggs=1,hatch=1]", + "8964": "minecraft:turtle_egg[eggs=1,hatch=2]", + "8965": "minecraft:turtle_egg[eggs=2,hatch=0]", + "8966": "minecraft:turtle_egg[eggs=2,hatch=1]", + "8967": "minecraft:turtle_egg[eggs=2,hatch=2]", + "8968": "minecraft:turtle_egg[eggs=3,hatch=0]", + "8969": "minecraft:turtle_egg[eggs=3,hatch=1]", + "8970": "minecraft:turtle_egg[eggs=3,hatch=2]", + "8971": "minecraft:turtle_egg[eggs=4,hatch=0]", + "8972": "minecraft:turtle_egg[eggs=4,hatch=1]", + "8973": "minecraft:turtle_egg[eggs=4,hatch=2]", + "8974": "minecraft:dead_tube_coral_block", + "8975": "minecraft:dead_brain_coral_block", + "8976": "minecraft:dead_bubble_coral_block", + "8977": "minecraft:dead_fire_coral_block", + "8978": "minecraft:dead_horn_coral_block", + "8979": "minecraft:tube_coral_block", + "8980": "minecraft:brain_coral_block", + "8981": "minecraft:bubble_coral_block", + "8982": "minecraft:fire_coral_block", + "8983": "minecraft:horn_coral_block", + "8984": "minecraft:dead_tube_coral[waterlogged=true]", + "8985": "minecraft:dead_tube_coral[waterlogged=false]", + "8986": "minecraft:dead_brain_coral[waterlogged=true]", + "8987": "minecraft:dead_brain_coral[waterlogged=false]", + "8988": "minecraft:dead_bubble_coral[waterlogged=true]", + "8989": "minecraft:dead_bubble_coral[waterlogged=false]", + "8990": "minecraft:dead_fire_coral[waterlogged=true]", + "8991": "minecraft:dead_fire_coral[waterlogged=false]", + "8992": "minecraft:dead_horn_coral[waterlogged=true]", + "8993": "minecraft:dead_horn_coral[waterlogged=false]", + "8994": "minecraft:tube_coral[waterlogged=true]", + "8995": "minecraft:tube_coral[waterlogged=false]", + "8996": "minecraft:brain_coral[waterlogged=true]", + "8997": "minecraft:brain_coral[waterlogged=false]", + "8998": "minecraft:bubble_coral[waterlogged=true]", + "8999": "minecraft:bubble_coral[waterlogged=false]", + "9000": "minecraft:fire_coral[waterlogged=true]", + "9001": "minecraft:fire_coral[waterlogged=false]", + "9002": "minecraft:horn_coral[waterlogged=true]", + "9003": "minecraft:horn_coral[waterlogged=false]", + "9004": "minecraft:dead_tube_coral_fan[waterlogged=true]", + "9005": "minecraft:dead_tube_coral_fan[waterlogged=false]", + "9006": "minecraft:dead_brain_coral_fan[waterlogged=true]", + "9007": "minecraft:dead_brain_coral_fan[waterlogged=false]", + "9008": "minecraft:dead_bubble_coral_fan[waterlogged=true]", + "9009": "minecraft:dead_bubble_coral_fan[waterlogged=false]", + "9010": "minecraft:dead_fire_coral_fan[waterlogged=true]", + "9011": "minecraft:dead_fire_coral_fan[waterlogged=false]", + "9012": "minecraft:dead_horn_coral_fan[waterlogged=true]", + "9013": "minecraft:dead_horn_coral_fan[waterlogged=false]", + "9014": "minecraft:tube_coral_fan[waterlogged=true]", + "9015": "minecraft:tube_coral_fan[waterlogged=false]", + "9016": "minecraft:brain_coral_fan[waterlogged=true]", + "9017": "minecraft:brain_coral_fan[waterlogged=false]", + "9018": "minecraft:bubble_coral_fan[waterlogged=true]", + "9019": "minecraft:bubble_coral_fan[waterlogged=false]", + "9020": "minecraft:fire_coral_fan[waterlogged=true]", + "9021": "minecraft:fire_coral_fan[waterlogged=false]", + "9022": "minecraft:horn_coral_fan[waterlogged=true]", + "9023": "minecraft:horn_coral_fan[waterlogged=false]", + "9024": "minecraft:dead_tube_coral_wall_fan[facing=north,waterlogged=true]", + "9025": "minecraft:dead_tube_coral_wall_fan[facing=north,waterlogged=false]", + "9026": "minecraft:dead_tube_coral_wall_fan[facing=south,waterlogged=true]", + "9027": "minecraft:dead_tube_coral_wall_fan[facing=south,waterlogged=false]", + "9028": "minecraft:dead_tube_coral_wall_fan[facing=west,waterlogged=true]", + "9029": "minecraft:dead_tube_coral_wall_fan[facing=west,waterlogged=false]", + "9030": "minecraft:dead_tube_coral_wall_fan[facing=east,waterlogged=true]", + "9031": "minecraft:dead_tube_coral_wall_fan[facing=east,waterlogged=false]", + "9032": "minecraft:dead_brain_coral_wall_fan[facing=north,waterlogged=true]", + "9033": "minecraft:dead_brain_coral_wall_fan[facing=north,waterlogged=false]", + "9034": "minecraft:dead_brain_coral_wall_fan[facing=south,waterlogged=true]", + "9035": "minecraft:dead_brain_coral_wall_fan[facing=south,waterlogged=false]", + "9036": "minecraft:dead_brain_coral_wall_fan[facing=west,waterlogged=true]", + "9037": "minecraft:dead_brain_coral_wall_fan[facing=west,waterlogged=false]", + "9038": "minecraft:dead_brain_coral_wall_fan[facing=east,waterlogged=true]", + "9039": "minecraft:dead_brain_coral_wall_fan[facing=east,waterlogged=false]", + "9040": "minecraft:dead_bubble_coral_wall_fan[facing=north,waterlogged=true]", + "9041": "minecraft:dead_bubble_coral_wall_fan[facing=north,waterlogged=false]", + "9042": "minecraft:dead_bubble_coral_wall_fan[facing=south,waterlogged=true]", + "9043": "minecraft:dead_bubble_coral_wall_fan[facing=south,waterlogged=false]", + "9044": "minecraft:dead_bubble_coral_wall_fan[facing=west,waterlogged=true]", + "9045": "minecraft:dead_bubble_coral_wall_fan[facing=west,waterlogged=false]", + "9046": "minecraft:dead_bubble_coral_wall_fan[facing=east,waterlogged=true]", + "9047": "minecraft:dead_bubble_coral_wall_fan[facing=east,waterlogged=false]", + "9048": "minecraft:dead_fire_coral_wall_fan[facing=north,waterlogged=true]", + "9049": "minecraft:dead_fire_coral_wall_fan[facing=north,waterlogged=false]", + "9050": "minecraft:dead_fire_coral_wall_fan[facing=south,waterlogged=true]", + "9051": "minecraft:dead_fire_coral_wall_fan[facing=south,waterlogged=false]", + "9052": "minecraft:dead_fire_coral_wall_fan[facing=west,waterlogged=true]", + "9053": "minecraft:dead_fire_coral_wall_fan[facing=west,waterlogged=false]", + "9054": "minecraft:dead_fire_coral_wall_fan[facing=east,waterlogged=true]", + "9055": "minecraft:dead_fire_coral_wall_fan[facing=east,waterlogged=false]", + "9056": "minecraft:dead_horn_coral_wall_fan[facing=north,waterlogged=true]", + "9057": "minecraft:dead_horn_coral_wall_fan[facing=north,waterlogged=false]", + "9058": "minecraft:dead_horn_coral_wall_fan[facing=south,waterlogged=true]", + "9059": "minecraft:dead_horn_coral_wall_fan[facing=south,waterlogged=false]", + "9060": "minecraft:dead_horn_coral_wall_fan[facing=west,waterlogged=true]", + "9061": "minecraft:dead_horn_coral_wall_fan[facing=west,waterlogged=false]", + "9062": "minecraft:dead_horn_coral_wall_fan[facing=east,waterlogged=true]", + "9063": "minecraft:dead_horn_coral_wall_fan[facing=east,waterlogged=false]", + "9064": "minecraft:tube_coral_wall_fan[facing=north,waterlogged=true]", + "9065": "minecraft:tube_coral_wall_fan[facing=north,waterlogged=false]", + "9066": "minecraft:tube_coral_wall_fan[facing=south,waterlogged=true]", + "9067": "minecraft:tube_coral_wall_fan[facing=south,waterlogged=false]", + "9068": "minecraft:tube_coral_wall_fan[facing=west,waterlogged=true]", + "9069": "minecraft:tube_coral_wall_fan[facing=west,waterlogged=false]", + "9070": "minecraft:tube_coral_wall_fan[facing=east,waterlogged=true]", + "9071": "minecraft:tube_coral_wall_fan[facing=east,waterlogged=false]", + "9072": "minecraft:brain_coral_wall_fan[facing=north,waterlogged=true]", + "9073": "minecraft:brain_coral_wall_fan[facing=north,waterlogged=false]", + "9074": "minecraft:brain_coral_wall_fan[facing=south,waterlogged=true]", + "9075": "minecraft:brain_coral_wall_fan[facing=south,waterlogged=false]", + "9076": "minecraft:brain_coral_wall_fan[facing=west,waterlogged=true]", + "9077": "minecraft:brain_coral_wall_fan[facing=west,waterlogged=false]", + "9078": "minecraft:brain_coral_wall_fan[facing=east,waterlogged=true]", + "9079": "minecraft:brain_coral_wall_fan[facing=east,waterlogged=false]", + "9080": "minecraft:bubble_coral_wall_fan[facing=north,waterlogged=true]", + "9081": "minecraft:bubble_coral_wall_fan[facing=north,waterlogged=false]", + "9082": "minecraft:bubble_coral_wall_fan[facing=south,waterlogged=true]", + "9083": "minecraft:bubble_coral_wall_fan[facing=south,waterlogged=false]", + "9084": "minecraft:bubble_coral_wall_fan[facing=west,waterlogged=true]", + "9085": "minecraft:bubble_coral_wall_fan[facing=west,waterlogged=false]", + "9086": "minecraft:bubble_coral_wall_fan[facing=east,waterlogged=true]", + "9087": "minecraft:bubble_coral_wall_fan[facing=east,waterlogged=false]", + "9088": "minecraft:fire_coral_wall_fan[facing=north,waterlogged=true]", + "9089": "minecraft:fire_coral_wall_fan[facing=north,waterlogged=false]", + "9090": "minecraft:fire_coral_wall_fan[facing=south,waterlogged=true]", + "9091": "minecraft:fire_coral_wall_fan[facing=south,waterlogged=false]", + "9092": "minecraft:fire_coral_wall_fan[facing=west,waterlogged=true]", + "9093": "minecraft:fire_coral_wall_fan[facing=west,waterlogged=false]", + "9094": "minecraft:fire_coral_wall_fan[facing=east,waterlogged=true]", + "9095": "minecraft:fire_coral_wall_fan[facing=east,waterlogged=false]", + "9096": "minecraft:horn_coral_wall_fan[facing=north,waterlogged=true]", + "9097": "minecraft:horn_coral_wall_fan[facing=north,waterlogged=false]", + "9098": "minecraft:horn_coral_wall_fan[facing=south,waterlogged=true]", + "9099": "minecraft:horn_coral_wall_fan[facing=south,waterlogged=false]", + "9100": "minecraft:horn_coral_wall_fan[facing=west,waterlogged=true]", + "9101": "minecraft:horn_coral_wall_fan[facing=west,waterlogged=false]", + "9102": "minecraft:horn_coral_wall_fan[facing=east,waterlogged=true]", + "9103": "minecraft:horn_coral_wall_fan[facing=east,waterlogged=false]", + "9104": "minecraft:sea_pickle[pickles=1,waterlogged=true]", + "9105": "minecraft:sea_pickle[pickles=1,waterlogged=false]", + "9106": "minecraft:sea_pickle[pickles=2,waterlogged=true]", + "9107": "minecraft:sea_pickle[pickles=2,waterlogged=false]", + "9108": "minecraft:sea_pickle[pickles=3,waterlogged=true]", + "9109": "minecraft:sea_pickle[pickles=3,waterlogged=false]", + "9110": "minecraft:sea_pickle[pickles=4,waterlogged=true]", + "9111": "minecraft:sea_pickle[pickles=4,waterlogged=false]", + "9112": "minecraft:blue_ice", + "9113": "minecraft:conduit[waterlogged=true]", + "9114": "minecraft:conduit[waterlogged=false]", + "9115": "minecraft:bamboo_sapling", + "9116": "minecraft:bamboo[age=0,leaves=none,stage=0]", + "9117": "minecraft:bamboo[age=0,leaves=none,stage=1]", + "9118": "minecraft:bamboo[age=0,leaves=small,stage=0]", + "9119": "minecraft:bamboo[age=0,leaves=small,stage=1]", + "9120": "minecraft:bamboo[age=0,leaves=large,stage=0]", + "9121": "minecraft:bamboo[age=0,leaves=large,stage=1]", + "9122": "minecraft:bamboo[age=1,leaves=none,stage=0]", + "9123": "minecraft:bamboo[age=1,leaves=none,stage=1]", + "9124": "minecraft:bamboo[age=1,leaves=small,stage=0]", + "9125": "minecraft:bamboo[age=1,leaves=small,stage=1]", + "9126": "minecraft:bamboo[age=1,leaves=large,stage=0]", + "9127": "minecraft:bamboo[age=1,leaves=large,stage=1]", + "9128": "minecraft:potted_bamboo", + "9129": "minecraft:void_air", + "9130": "minecraft:cave_air", + "9131": "minecraft:bubble_column[drag=true]", + "9132": "minecraft:bubble_column[drag=false]", + "9133": "minecraft:polished_granite_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "9134": "minecraft:polished_granite_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "9135": "minecraft:polished_granite_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "9136": "minecraft:polished_granite_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "9137": "minecraft:polished_granite_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "9138": "minecraft:polished_granite_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "9139": "minecraft:polished_granite_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "9140": "minecraft:polished_granite_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "9141": "minecraft:polished_granite_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "9142": "minecraft:polished_granite_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "9143": "minecraft:polished_granite_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "9144": "minecraft:polished_granite_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "9145": "minecraft:polished_granite_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "9146": "minecraft:polished_granite_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "9147": "minecraft:polished_granite_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "9148": "minecraft:polished_granite_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "9149": "minecraft:polished_granite_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "9150": "minecraft:polished_granite_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "9151": "minecraft:polished_granite_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "9152": "minecraft:polished_granite_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "9153": "minecraft:polished_granite_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "9154": "minecraft:polished_granite_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "9155": "minecraft:polished_granite_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "9156": "minecraft:polished_granite_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "9157": "minecraft:polished_granite_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "9158": "minecraft:polished_granite_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "9159": "minecraft:polished_granite_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "9160": "minecraft:polished_granite_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "9161": "minecraft:polished_granite_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "9162": "minecraft:polished_granite_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "9163": "minecraft:polished_granite_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "9164": "minecraft:polished_granite_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "9165": "minecraft:polished_granite_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "9166": "minecraft:polished_granite_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "9167": "minecraft:polished_granite_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "9168": "minecraft:polished_granite_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "9169": "minecraft:polished_granite_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "9170": "minecraft:polished_granite_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "9171": "minecraft:polished_granite_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "9172": "minecraft:polished_granite_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "9173": "minecraft:polished_granite_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "9174": "minecraft:polished_granite_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "9175": "minecraft:polished_granite_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "9176": "minecraft:polished_granite_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "9177": "minecraft:polished_granite_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "9178": "minecraft:polished_granite_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "9179": "minecraft:polished_granite_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "9180": "minecraft:polished_granite_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "9181": "minecraft:polished_granite_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "9182": "minecraft:polished_granite_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "9183": "minecraft:polished_granite_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "9184": "minecraft:polished_granite_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "9185": "minecraft:polished_granite_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "9186": "minecraft:polished_granite_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "9187": "minecraft:polished_granite_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "9188": "minecraft:polished_granite_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "9189": "minecraft:polished_granite_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "9190": "minecraft:polished_granite_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "9191": "minecraft:polished_granite_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "9192": "minecraft:polished_granite_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "9193": "minecraft:polished_granite_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "9194": "minecraft:polished_granite_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "9195": "minecraft:polished_granite_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "9196": "minecraft:polished_granite_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "9197": "minecraft:polished_granite_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "9198": "minecraft:polished_granite_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "9199": "minecraft:polished_granite_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "9200": "minecraft:polished_granite_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "9201": "minecraft:polished_granite_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "9202": "minecraft:polished_granite_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "9203": "minecraft:polished_granite_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "9204": "minecraft:polished_granite_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "9205": "minecraft:polished_granite_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "9206": "minecraft:polished_granite_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "9207": "minecraft:polished_granite_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "9208": "minecraft:polished_granite_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "9209": "minecraft:polished_granite_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "9210": "minecraft:polished_granite_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "9211": "minecraft:polished_granite_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "9212": "minecraft:polished_granite_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "9213": "minecraft:smooth_red_sandstone_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "9214": "minecraft:smooth_red_sandstone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "9215": "minecraft:smooth_red_sandstone_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "9216": "minecraft:smooth_red_sandstone_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "9217": "minecraft:smooth_red_sandstone_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "9218": "minecraft:smooth_red_sandstone_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "9219": "minecraft:smooth_red_sandstone_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "9220": "minecraft:smooth_red_sandstone_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "9221": "minecraft:smooth_red_sandstone_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "9222": "minecraft:smooth_red_sandstone_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "9223": "minecraft:smooth_red_sandstone_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "9224": "minecraft:smooth_red_sandstone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "9225": "minecraft:smooth_red_sandstone_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "9226": "minecraft:smooth_red_sandstone_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "9227": "minecraft:smooth_red_sandstone_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "9228": "minecraft:smooth_red_sandstone_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "9229": "minecraft:smooth_red_sandstone_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "9230": "minecraft:smooth_red_sandstone_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "9231": "minecraft:smooth_red_sandstone_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "9232": "minecraft:smooth_red_sandstone_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "9233": "minecraft:smooth_red_sandstone_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "9234": "minecraft:smooth_red_sandstone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "9235": "minecraft:smooth_red_sandstone_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "9236": "minecraft:smooth_red_sandstone_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "9237": "minecraft:smooth_red_sandstone_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "9238": "minecraft:smooth_red_sandstone_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "9239": "minecraft:smooth_red_sandstone_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "9240": "minecraft:smooth_red_sandstone_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "9241": "minecraft:smooth_red_sandstone_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "9242": "minecraft:smooth_red_sandstone_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "9243": "minecraft:smooth_red_sandstone_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "9244": "minecraft:smooth_red_sandstone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "9245": "minecraft:smooth_red_sandstone_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "9246": "minecraft:smooth_red_sandstone_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "9247": "minecraft:smooth_red_sandstone_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "9248": "minecraft:smooth_red_sandstone_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "9249": "minecraft:smooth_red_sandstone_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "9250": "minecraft:smooth_red_sandstone_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "9251": "minecraft:smooth_red_sandstone_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "9252": "minecraft:smooth_red_sandstone_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "9253": "minecraft:smooth_red_sandstone_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "9254": "minecraft:smooth_red_sandstone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "9255": "minecraft:smooth_red_sandstone_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "9256": "minecraft:smooth_red_sandstone_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "9257": "minecraft:smooth_red_sandstone_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "9258": "minecraft:smooth_red_sandstone_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "9259": "minecraft:smooth_red_sandstone_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "9260": "minecraft:smooth_red_sandstone_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "9261": "minecraft:smooth_red_sandstone_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "9262": "minecraft:smooth_red_sandstone_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "9263": "minecraft:smooth_red_sandstone_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "9264": "minecraft:smooth_red_sandstone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "9265": "minecraft:smooth_red_sandstone_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "9266": "minecraft:smooth_red_sandstone_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "9267": "minecraft:smooth_red_sandstone_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "9268": "minecraft:smooth_red_sandstone_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "9269": "minecraft:smooth_red_sandstone_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "9270": "minecraft:smooth_red_sandstone_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "9271": "minecraft:smooth_red_sandstone_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "9272": "minecraft:smooth_red_sandstone_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "9273": "minecraft:smooth_red_sandstone_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "9274": "minecraft:smooth_red_sandstone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "9275": "minecraft:smooth_red_sandstone_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "9276": "minecraft:smooth_red_sandstone_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "9277": "minecraft:smooth_red_sandstone_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "9278": "minecraft:smooth_red_sandstone_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "9279": "minecraft:smooth_red_sandstone_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "9280": "minecraft:smooth_red_sandstone_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "9281": "minecraft:smooth_red_sandstone_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "9282": "minecraft:smooth_red_sandstone_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "9283": "minecraft:smooth_red_sandstone_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "9284": "minecraft:smooth_red_sandstone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "9285": "minecraft:smooth_red_sandstone_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "9286": "minecraft:smooth_red_sandstone_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "9287": "minecraft:smooth_red_sandstone_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "9288": "minecraft:smooth_red_sandstone_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "9289": "minecraft:smooth_red_sandstone_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "9290": "minecraft:smooth_red_sandstone_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "9291": "minecraft:smooth_red_sandstone_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "9292": "minecraft:smooth_red_sandstone_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "9293": "minecraft:mossy_stone_brick_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "9294": "minecraft:mossy_stone_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "9295": "minecraft:mossy_stone_brick_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "9296": "minecraft:mossy_stone_brick_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "9297": "minecraft:mossy_stone_brick_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "9298": "minecraft:mossy_stone_brick_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "9299": "minecraft:mossy_stone_brick_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "9300": "minecraft:mossy_stone_brick_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "9301": "minecraft:mossy_stone_brick_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "9302": "minecraft:mossy_stone_brick_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "9303": "minecraft:mossy_stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "9304": "minecraft:mossy_stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "9305": "minecraft:mossy_stone_brick_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "9306": "minecraft:mossy_stone_brick_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "9307": "minecraft:mossy_stone_brick_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "9308": "minecraft:mossy_stone_brick_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "9309": "minecraft:mossy_stone_brick_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "9310": "minecraft:mossy_stone_brick_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "9311": "minecraft:mossy_stone_brick_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "9312": "minecraft:mossy_stone_brick_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "9313": "minecraft:mossy_stone_brick_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "9314": "minecraft:mossy_stone_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "9315": "minecraft:mossy_stone_brick_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "9316": "minecraft:mossy_stone_brick_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "9317": "minecraft:mossy_stone_brick_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "9318": "minecraft:mossy_stone_brick_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "9319": "minecraft:mossy_stone_brick_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "9320": "minecraft:mossy_stone_brick_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "9321": "minecraft:mossy_stone_brick_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "9322": "minecraft:mossy_stone_brick_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "9323": "minecraft:mossy_stone_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "9324": "minecraft:mossy_stone_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "9325": "minecraft:mossy_stone_brick_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "9326": "minecraft:mossy_stone_brick_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "9327": "minecraft:mossy_stone_brick_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "9328": "minecraft:mossy_stone_brick_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "9329": "minecraft:mossy_stone_brick_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "9330": "minecraft:mossy_stone_brick_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "9331": "minecraft:mossy_stone_brick_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "9332": "minecraft:mossy_stone_brick_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "9333": "minecraft:mossy_stone_brick_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "9334": "minecraft:mossy_stone_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "9335": "minecraft:mossy_stone_brick_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "9336": "minecraft:mossy_stone_brick_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "9337": "minecraft:mossy_stone_brick_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "9338": "minecraft:mossy_stone_brick_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "9339": "minecraft:mossy_stone_brick_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "9340": "minecraft:mossy_stone_brick_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "9341": "minecraft:mossy_stone_brick_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "9342": "minecraft:mossy_stone_brick_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "9343": "minecraft:mossy_stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "9344": "minecraft:mossy_stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "9345": "minecraft:mossy_stone_brick_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "9346": "minecraft:mossy_stone_brick_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "9347": "minecraft:mossy_stone_brick_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "9348": "minecraft:mossy_stone_brick_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "9349": "minecraft:mossy_stone_brick_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "9350": "minecraft:mossy_stone_brick_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "9351": "minecraft:mossy_stone_brick_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "9352": "minecraft:mossy_stone_brick_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "9353": "minecraft:mossy_stone_brick_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "9354": "minecraft:mossy_stone_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "9355": "minecraft:mossy_stone_brick_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "9356": "minecraft:mossy_stone_brick_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "9357": "minecraft:mossy_stone_brick_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "9358": "minecraft:mossy_stone_brick_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "9359": "minecraft:mossy_stone_brick_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "9360": "minecraft:mossy_stone_brick_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "9361": "minecraft:mossy_stone_brick_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "9362": "minecraft:mossy_stone_brick_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "9363": "minecraft:mossy_stone_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "9364": "minecraft:mossy_stone_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "9365": "minecraft:mossy_stone_brick_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "9366": "minecraft:mossy_stone_brick_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "9367": "minecraft:mossy_stone_brick_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "9368": "minecraft:mossy_stone_brick_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "9369": "minecraft:mossy_stone_brick_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "9370": "minecraft:mossy_stone_brick_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "9371": "minecraft:mossy_stone_brick_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "9372": "minecraft:mossy_stone_brick_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "9373": "minecraft:polished_diorite_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "9374": "minecraft:polished_diorite_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "9375": "minecraft:polished_diorite_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "9376": "minecraft:polished_diorite_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "9377": "minecraft:polished_diorite_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "9378": "minecraft:polished_diorite_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "9379": "minecraft:polished_diorite_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "9380": "minecraft:polished_diorite_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "9381": "minecraft:polished_diorite_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "9382": "minecraft:polished_diorite_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "9383": "minecraft:polished_diorite_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "9384": "minecraft:polished_diorite_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "9385": "minecraft:polished_diorite_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "9386": "minecraft:polished_diorite_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "9387": "minecraft:polished_diorite_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "9388": "minecraft:polished_diorite_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "9389": "minecraft:polished_diorite_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "9390": "minecraft:polished_diorite_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "9391": "minecraft:polished_diorite_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "9392": "minecraft:polished_diorite_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "9393": "minecraft:polished_diorite_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "9394": "minecraft:polished_diorite_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "9395": "minecraft:polished_diorite_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "9396": "minecraft:polished_diorite_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "9397": "minecraft:polished_diorite_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "9398": "minecraft:polished_diorite_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "9399": "minecraft:polished_diorite_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "9400": "minecraft:polished_diorite_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "9401": "minecraft:polished_diorite_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "9402": "minecraft:polished_diorite_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "9403": "minecraft:polished_diorite_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "9404": "minecraft:polished_diorite_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "9405": "minecraft:polished_diorite_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "9406": "minecraft:polished_diorite_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "9407": "minecraft:polished_diorite_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "9408": "minecraft:polished_diorite_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "9409": "minecraft:polished_diorite_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "9410": "minecraft:polished_diorite_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "9411": "minecraft:polished_diorite_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "9412": "minecraft:polished_diorite_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "9413": "minecraft:polished_diorite_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "9414": "minecraft:polished_diorite_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "9415": "minecraft:polished_diorite_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "9416": "minecraft:polished_diorite_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "9417": "minecraft:polished_diorite_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "9418": "minecraft:polished_diorite_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "9419": "minecraft:polished_diorite_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "9420": "minecraft:polished_diorite_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "9421": "minecraft:polished_diorite_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "9422": "minecraft:polished_diorite_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "9423": "minecraft:polished_diorite_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "9424": "minecraft:polished_diorite_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "9425": "minecraft:polished_diorite_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "9426": "minecraft:polished_diorite_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "9427": "minecraft:polished_diorite_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "9428": "minecraft:polished_diorite_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "9429": "minecraft:polished_diorite_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "9430": "minecraft:polished_diorite_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "9431": "minecraft:polished_diorite_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "9432": "minecraft:polished_diorite_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "9433": "minecraft:polished_diorite_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "9434": "minecraft:polished_diorite_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "9435": "minecraft:polished_diorite_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "9436": "minecraft:polished_diorite_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "9437": "minecraft:polished_diorite_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "9438": "minecraft:polished_diorite_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "9439": "minecraft:polished_diorite_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "9440": "minecraft:polished_diorite_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "9441": "minecraft:polished_diorite_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "9442": "minecraft:polished_diorite_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "9443": "minecraft:polished_diorite_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "9444": "minecraft:polished_diorite_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "9445": "minecraft:polished_diorite_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "9446": "minecraft:polished_diorite_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "9447": "minecraft:polished_diorite_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "9448": "minecraft:polished_diorite_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "9449": "minecraft:polished_diorite_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "9450": "minecraft:polished_diorite_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "9451": "minecraft:polished_diorite_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "9452": "minecraft:polished_diorite_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "9453": "minecraft:mossy_cobblestone_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "9454": "minecraft:mossy_cobblestone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "9455": "minecraft:mossy_cobblestone_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "9456": "minecraft:mossy_cobblestone_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "9457": "minecraft:mossy_cobblestone_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "9458": "minecraft:mossy_cobblestone_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "9459": "minecraft:mossy_cobblestone_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "9460": "minecraft:mossy_cobblestone_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "9461": "minecraft:mossy_cobblestone_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "9462": "minecraft:mossy_cobblestone_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "9463": "minecraft:mossy_cobblestone_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "9464": "minecraft:mossy_cobblestone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "9465": "minecraft:mossy_cobblestone_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "9466": "minecraft:mossy_cobblestone_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "9467": "minecraft:mossy_cobblestone_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "9468": "minecraft:mossy_cobblestone_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "9469": "minecraft:mossy_cobblestone_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "9470": "minecraft:mossy_cobblestone_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "9471": "minecraft:mossy_cobblestone_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "9472": "minecraft:mossy_cobblestone_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "9473": "minecraft:mossy_cobblestone_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "9474": "minecraft:mossy_cobblestone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "9475": "minecraft:mossy_cobblestone_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "9476": "minecraft:mossy_cobblestone_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "9477": "minecraft:mossy_cobblestone_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "9478": "minecraft:mossy_cobblestone_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "9479": "minecraft:mossy_cobblestone_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "9480": "minecraft:mossy_cobblestone_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "9481": "minecraft:mossy_cobblestone_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "9482": "minecraft:mossy_cobblestone_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "9483": "minecraft:mossy_cobblestone_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "9484": "minecraft:mossy_cobblestone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "9485": "minecraft:mossy_cobblestone_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "9486": "minecraft:mossy_cobblestone_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "9487": "minecraft:mossy_cobblestone_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "9488": "minecraft:mossy_cobblestone_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "9489": "minecraft:mossy_cobblestone_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "9490": "minecraft:mossy_cobblestone_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "9491": "minecraft:mossy_cobblestone_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "9492": "minecraft:mossy_cobblestone_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "9493": "minecraft:mossy_cobblestone_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "9494": "minecraft:mossy_cobblestone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "9495": "minecraft:mossy_cobblestone_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "9496": "minecraft:mossy_cobblestone_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "9497": "minecraft:mossy_cobblestone_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "9498": "minecraft:mossy_cobblestone_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "9499": "minecraft:mossy_cobblestone_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "9500": "minecraft:mossy_cobblestone_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "9501": "minecraft:mossy_cobblestone_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "9502": "minecraft:mossy_cobblestone_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "9503": "minecraft:mossy_cobblestone_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "9504": "minecraft:mossy_cobblestone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "9505": "minecraft:mossy_cobblestone_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "9506": "minecraft:mossy_cobblestone_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "9507": "minecraft:mossy_cobblestone_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "9508": "minecraft:mossy_cobblestone_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "9509": "minecraft:mossy_cobblestone_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "9510": "minecraft:mossy_cobblestone_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "9511": "minecraft:mossy_cobblestone_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "9512": "minecraft:mossy_cobblestone_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "9513": "minecraft:mossy_cobblestone_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "9514": "minecraft:mossy_cobblestone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "9515": "minecraft:mossy_cobblestone_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "9516": "minecraft:mossy_cobblestone_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "9517": "minecraft:mossy_cobblestone_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "9518": "minecraft:mossy_cobblestone_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "9519": "minecraft:mossy_cobblestone_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "9520": "minecraft:mossy_cobblestone_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "9521": "minecraft:mossy_cobblestone_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "9522": "minecraft:mossy_cobblestone_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "9523": "minecraft:mossy_cobblestone_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "9524": "minecraft:mossy_cobblestone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "9525": "minecraft:mossy_cobblestone_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "9526": "minecraft:mossy_cobblestone_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "9527": "minecraft:mossy_cobblestone_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "9528": "minecraft:mossy_cobblestone_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "9529": "minecraft:mossy_cobblestone_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "9530": "minecraft:mossy_cobblestone_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "9531": "minecraft:mossy_cobblestone_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "9532": "minecraft:mossy_cobblestone_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "9533": "minecraft:end_stone_brick_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "9534": "minecraft:end_stone_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "9535": "minecraft:end_stone_brick_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "9536": "minecraft:end_stone_brick_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "9537": "minecraft:end_stone_brick_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "9538": "minecraft:end_stone_brick_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "9539": "minecraft:end_stone_brick_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "9540": "minecraft:end_stone_brick_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "9541": "minecraft:end_stone_brick_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "9542": "minecraft:end_stone_brick_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "9543": "minecraft:end_stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "9544": "minecraft:end_stone_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "9545": "minecraft:end_stone_brick_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "9546": "minecraft:end_stone_brick_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "9547": "minecraft:end_stone_brick_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "9548": "minecraft:end_stone_brick_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "9549": "minecraft:end_stone_brick_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "9550": "minecraft:end_stone_brick_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "9551": "minecraft:end_stone_brick_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "9552": "minecraft:end_stone_brick_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "9553": "minecraft:end_stone_brick_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "9554": "minecraft:end_stone_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "9555": "minecraft:end_stone_brick_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "9556": "minecraft:end_stone_brick_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "9557": "minecraft:end_stone_brick_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "9558": "minecraft:end_stone_brick_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "9559": "minecraft:end_stone_brick_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "9560": "minecraft:end_stone_brick_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "9561": "minecraft:end_stone_brick_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "9562": "minecraft:end_stone_brick_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "9563": "minecraft:end_stone_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "9564": "minecraft:end_stone_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "9565": "minecraft:end_stone_brick_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "9566": "minecraft:end_stone_brick_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "9567": "minecraft:end_stone_brick_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "9568": "minecraft:end_stone_brick_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "9569": "minecraft:end_stone_brick_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "9570": "minecraft:end_stone_brick_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "9571": "minecraft:end_stone_brick_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "9572": "minecraft:end_stone_brick_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "9573": "minecraft:end_stone_brick_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "9574": "minecraft:end_stone_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "9575": "minecraft:end_stone_brick_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "9576": "minecraft:end_stone_brick_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "9577": "minecraft:end_stone_brick_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "9578": "minecraft:end_stone_brick_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "9579": "minecraft:end_stone_brick_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "9580": "minecraft:end_stone_brick_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "9581": "minecraft:end_stone_brick_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "9582": "minecraft:end_stone_brick_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "9583": "minecraft:end_stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "9584": "minecraft:end_stone_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "9585": "minecraft:end_stone_brick_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "9586": "minecraft:end_stone_brick_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "9587": "minecraft:end_stone_brick_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "9588": "minecraft:end_stone_brick_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "9589": "minecraft:end_stone_brick_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "9590": "minecraft:end_stone_brick_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "9591": "minecraft:end_stone_brick_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "9592": "minecraft:end_stone_brick_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "9593": "minecraft:end_stone_brick_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "9594": "minecraft:end_stone_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "9595": "minecraft:end_stone_brick_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "9596": "minecraft:end_stone_brick_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "9597": "minecraft:end_stone_brick_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "9598": "minecraft:end_stone_brick_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "9599": "minecraft:end_stone_brick_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "9600": "minecraft:end_stone_brick_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "9601": "minecraft:end_stone_brick_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "9602": "minecraft:end_stone_brick_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "9603": "minecraft:end_stone_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "9604": "minecraft:end_stone_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "9605": "minecraft:end_stone_brick_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "9606": "minecraft:end_stone_brick_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "9607": "minecraft:end_stone_brick_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "9608": "minecraft:end_stone_brick_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "9609": "minecraft:end_stone_brick_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "9610": "minecraft:end_stone_brick_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "9611": "minecraft:end_stone_brick_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "9612": "minecraft:end_stone_brick_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "9613": "minecraft:stone_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "9614": "minecraft:stone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "9615": "minecraft:stone_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "9616": "minecraft:stone_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "9617": "minecraft:stone_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "9618": "minecraft:stone_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "9619": "minecraft:stone_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "9620": "minecraft:stone_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "9621": "minecraft:stone_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "9622": "minecraft:stone_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "9623": "minecraft:stone_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "9624": "minecraft:stone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "9625": "minecraft:stone_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "9626": "minecraft:stone_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "9627": "minecraft:stone_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "9628": "minecraft:stone_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "9629": "minecraft:stone_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "9630": "minecraft:stone_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "9631": "minecraft:stone_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "9632": "minecraft:stone_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "9633": "minecraft:stone_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "9634": "minecraft:stone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "9635": "minecraft:stone_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "9636": "minecraft:stone_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "9637": "minecraft:stone_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "9638": "minecraft:stone_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "9639": "minecraft:stone_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "9640": "minecraft:stone_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "9641": "minecraft:stone_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "9642": "minecraft:stone_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "9643": "minecraft:stone_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "9644": "minecraft:stone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "9645": "minecraft:stone_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "9646": "minecraft:stone_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "9647": "minecraft:stone_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "9648": "minecraft:stone_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "9649": "minecraft:stone_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "9650": "minecraft:stone_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "9651": "minecraft:stone_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "9652": "minecraft:stone_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "9653": "minecraft:stone_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "9654": "minecraft:stone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "9655": "minecraft:stone_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "9656": "minecraft:stone_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "9657": "minecraft:stone_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "9658": "minecraft:stone_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "9659": "minecraft:stone_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "9660": "minecraft:stone_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "9661": "minecraft:stone_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "9662": "minecraft:stone_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "9663": "minecraft:stone_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "9664": "minecraft:stone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "9665": "minecraft:stone_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "9666": "minecraft:stone_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "9667": "minecraft:stone_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "9668": "minecraft:stone_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "9669": "minecraft:stone_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "9670": "minecraft:stone_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "9671": "minecraft:stone_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "9672": "minecraft:stone_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "9673": "minecraft:stone_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "9674": "minecraft:stone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "9675": "minecraft:stone_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "9676": "minecraft:stone_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "9677": "minecraft:stone_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "9678": "minecraft:stone_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "9679": "minecraft:stone_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "9680": "minecraft:stone_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "9681": "minecraft:stone_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "9682": "minecraft:stone_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "9683": "minecraft:stone_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "9684": "minecraft:stone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "9685": "minecraft:stone_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "9686": "minecraft:stone_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "9687": "minecraft:stone_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "9688": "minecraft:stone_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "9689": "minecraft:stone_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "9690": "minecraft:stone_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "9691": "minecraft:stone_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "9692": "minecraft:stone_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "9693": "minecraft:smooth_sandstone_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "9694": "minecraft:smooth_sandstone_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "9695": "minecraft:smooth_sandstone_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "9696": "minecraft:smooth_sandstone_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "9697": "minecraft:smooth_sandstone_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "9698": "minecraft:smooth_sandstone_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "9699": "minecraft:smooth_sandstone_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "9700": "minecraft:smooth_sandstone_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "9701": "minecraft:smooth_sandstone_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "9702": "minecraft:smooth_sandstone_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "9703": "minecraft:smooth_sandstone_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "9704": "minecraft:smooth_sandstone_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "9705": "minecraft:smooth_sandstone_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "9706": "minecraft:smooth_sandstone_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "9707": "minecraft:smooth_sandstone_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "9708": "minecraft:smooth_sandstone_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "9709": "minecraft:smooth_sandstone_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "9710": "minecraft:smooth_sandstone_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "9711": "minecraft:smooth_sandstone_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "9712": "minecraft:smooth_sandstone_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "9713": "minecraft:smooth_sandstone_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "9714": "minecraft:smooth_sandstone_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "9715": "minecraft:smooth_sandstone_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "9716": "minecraft:smooth_sandstone_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "9717": "minecraft:smooth_sandstone_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "9718": "minecraft:smooth_sandstone_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "9719": "minecraft:smooth_sandstone_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "9720": "minecraft:smooth_sandstone_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "9721": "minecraft:smooth_sandstone_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "9722": "minecraft:smooth_sandstone_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "9723": "minecraft:smooth_sandstone_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "9724": "minecraft:smooth_sandstone_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "9725": "minecraft:smooth_sandstone_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "9726": "minecraft:smooth_sandstone_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "9727": "minecraft:smooth_sandstone_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "9728": "minecraft:smooth_sandstone_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "9729": "minecraft:smooth_sandstone_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "9730": "minecraft:smooth_sandstone_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "9731": "minecraft:smooth_sandstone_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "9732": "minecraft:smooth_sandstone_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "9733": "minecraft:smooth_sandstone_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "9734": "minecraft:smooth_sandstone_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "9735": "minecraft:smooth_sandstone_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "9736": "minecraft:smooth_sandstone_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "9737": "minecraft:smooth_sandstone_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "9738": "minecraft:smooth_sandstone_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "9739": "minecraft:smooth_sandstone_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "9740": "minecraft:smooth_sandstone_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "9741": "minecraft:smooth_sandstone_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "9742": "minecraft:smooth_sandstone_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "9743": "minecraft:smooth_sandstone_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "9744": "minecraft:smooth_sandstone_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "9745": "minecraft:smooth_sandstone_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "9746": "minecraft:smooth_sandstone_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "9747": "minecraft:smooth_sandstone_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "9748": "minecraft:smooth_sandstone_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "9749": "minecraft:smooth_sandstone_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "9750": "minecraft:smooth_sandstone_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "9751": "minecraft:smooth_sandstone_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "9752": "minecraft:smooth_sandstone_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "9753": "minecraft:smooth_sandstone_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "9754": "minecraft:smooth_sandstone_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "9755": "minecraft:smooth_sandstone_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "9756": "minecraft:smooth_sandstone_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "9757": "minecraft:smooth_sandstone_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "9758": "minecraft:smooth_sandstone_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "9759": "minecraft:smooth_sandstone_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "9760": "minecraft:smooth_sandstone_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "9761": "minecraft:smooth_sandstone_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "9762": "minecraft:smooth_sandstone_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "9763": "minecraft:smooth_sandstone_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "9764": "minecraft:smooth_sandstone_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "9765": "minecraft:smooth_sandstone_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "9766": "minecraft:smooth_sandstone_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "9767": "minecraft:smooth_sandstone_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "9768": "minecraft:smooth_sandstone_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "9769": "minecraft:smooth_sandstone_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "9770": "minecraft:smooth_sandstone_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "9771": "minecraft:smooth_sandstone_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "9772": "minecraft:smooth_sandstone_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "9773": "minecraft:smooth_quartz_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "9774": "minecraft:smooth_quartz_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "9775": "minecraft:smooth_quartz_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "9776": "minecraft:smooth_quartz_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "9777": "minecraft:smooth_quartz_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "9778": "minecraft:smooth_quartz_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "9779": "minecraft:smooth_quartz_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "9780": "minecraft:smooth_quartz_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "9781": "minecraft:smooth_quartz_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "9782": "minecraft:smooth_quartz_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "9783": "minecraft:smooth_quartz_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "9784": "minecraft:smooth_quartz_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "9785": "minecraft:smooth_quartz_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "9786": "minecraft:smooth_quartz_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "9787": "minecraft:smooth_quartz_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "9788": "minecraft:smooth_quartz_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "9789": "minecraft:smooth_quartz_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "9790": "minecraft:smooth_quartz_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "9791": "minecraft:smooth_quartz_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "9792": "minecraft:smooth_quartz_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "9793": "minecraft:smooth_quartz_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "9794": "minecraft:smooth_quartz_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "9795": "minecraft:smooth_quartz_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "9796": "minecraft:smooth_quartz_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "9797": "minecraft:smooth_quartz_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "9798": "minecraft:smooth_quartz_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "9799": "minecraft:smooth_quartz_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "9800": "minecraft:smooth_quartz_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "9801": "minecraft:smooth_quartz_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "9802": "minecraft:smooth_quartz_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "9803": "minecraft:smooth_quartz_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "9804": "minecraft:smooth_quartz_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "9805": "minecraft:smooth_quartz_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "9806": "minecraft:smooth_quartz_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "9807": "minecraft:smooth_quartz_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "9808": "minecraft:smooth_quartz_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "9809": "minecraft:smooth_quartz_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "9810": "minecraft:smooth_quartz_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "9811": "minecraft:smooth_quartz_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "9812": "minecraft:smooth_quartz_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "9813": "minecraft:smooth_quartz_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "9814": "minecraft:smooth_quartz_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "9815": "minecraft:smooth_quartz_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "9816": "minecraft:smooth_quartz_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "9817": "minecraft:smooth_quartz_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "9818": "minecraft:smooth_quartz_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "9819": "minecraft:smooth_quartz_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "9820": "minecraft:smooth_quartz_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "9821": "minecraft:smooth_quartz_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "9822": "minecraft:smooth_quartz_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "9823": "minecraft:smooth_quartz_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "9824": "minecraft:smooth_quartz_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "9825": "minecraft:smooth_quartz_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "9826": "minecraft:smooth_quartz_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "9827": "minecraft:smooth_quartz_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "9828": "minecraft:smooth_quartz_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "9829": "minecraft:smooth_quartz_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "9830": "minecraft:smooth_quartz_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "9831": "minecraft:smooth_quartz_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "9832": "minecraft:smooth_quartz_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "9833": "minecraft:smooth_quartz_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "9834": "minecraft:smooth_quartz_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "9835": "minecraft:smooth_quartz_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "9836": "minecraft:smooth_quartz_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "9837": "minecraft:smooth_quartz_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "9838": "minecraft:smooth_quartz_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "9839": "minecraft:smooth_quartz_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "9840": "minecraft:smooth_quartz_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "9841": "minecraft:smooth_quartz_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "9842": "minecraft:smooth_quartz_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "9843": "minecraft:smooth_quartz_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "9844": "minecraft:smooth_quartz_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "9845": "minecraft:smooth_quartz_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "9846": "minecraft:smooth_quartz_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "9847": "minecraft:smooth_quartz_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "9848": "minecraft:smooth_quartz_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "9849": "minecraft:smooth_quartz_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "9850": "minecraft:smooth_quartz_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "9851": "minecraft:smooth_quartz_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "9852": "minecraft:smooth_quartz_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "9853": "minecraft:granite_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "9854": "minecraft:granite_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "9855": "minecraft:granite_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "9856": "minecraft:granite_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "9857": "minecraft:granite_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "9858": "minecraft:granite_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "9859": "minecraft:granite_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "9860": "minecraft:granite_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "9861": "minecraft:granite_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "9862": "minecraft:granite_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "9863": "minecraft:granite_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "9864": "minecraft:granite_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "9865": "minecraft:granite_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "9866": "minecraft:granite_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "9867": "minecraft:granite_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "9868": "minecraft:granite_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "9869": "minecraft:granite_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "9870": "minecraft:granite_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "9871": "minecraft:granite_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "9872": "minecraft:granite_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "9873": "minecraft:granite_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "9874": "minecraft:granite_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "9875": "minecraft:granite_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "9876": "minecraft:granite_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "9877": "minecraft:granite_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "9878": "minecraft:granite_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "9879": "minecraft:granite_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "9880": "minecraft:granite_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "9881": "minecraft:granite_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "9882": "minecraft:granite_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "9883": "minecraft:granite_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "9884": "minecraft:granite_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "9885": "minecraft:granite_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "9886": "minecraft:granite_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "9887": "minecraft:granite_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "9888": "minecraft:granite_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "9889": "minecraft:granite_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "9890": "minecraft:granite_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "9891": "minecraft:granite_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "9892": "minecraft:granite_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "9893": "minecraft:granite_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "9894": "minecraft:granite_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "9895": "minecraft:granite_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "9896": "minecraft:granite_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "9897": "minecraft:granite_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "9898": "minecraft:granite_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "9899": "minecraft:granite_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "9900": "minecraft:granite_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "9901": "minecraft:granite_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "9902": "minecraft:granite_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "9903": "minecraft:granite_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "9904": "minecraft:granite_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "9905": "minecraft:granite_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "9906": "minecraft:granite_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "9907": "minecraft:granite_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "9908": "minecraft:granite_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "9909": "minecraft:granite_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "9910": "minecraft:granite_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "9911": "minecraft:granite_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "9912": "minecraft:granite_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "9913": "minecraft:granite_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "9914": "minecraft:granite_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "9915": "minecraft:granite_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "9916": "minecraft:granite_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "9917": "minecraft:granite_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "9918": "minecraft:granite_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "9919": "minecraft:granite_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "9920": "minecraft:granite_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "9921": "minecraft:granite_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "9922": "minecraft:granite_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "9923": "minecraft:granite_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "9924": "minecraft:granite_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "9925": "minecraft:granite_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "9926": "minecraft:granite_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "9927": "minecraft:granite_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "9928": "minecraft:granite_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "9929": "minecraft:granite_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "9930": "minecraft:granite_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "9931": "minecraft:granite_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "9932": "minecraft:granite_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "9933": "minecraft:andesite_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "9934": "minecraft:andesite_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "9935": "minecraft:andesite_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "9936": "minecraft:andesite_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "9937": "minecraft:andesite_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "9938": "minecraft:andesite_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "9939": "minecraft:andesite_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "9940": "minecraft:andesite_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "9941": "minecraft:andesite_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "9942": "minecraft:andesite_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "9943": "minecraft:andesite_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "9944": "minecraft:andesite_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "9945": "minecraft:andesite_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "9946": "minecraft:andesite_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "9947": "minecraft:andesite_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "9948": "minecraft:andesite_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "9949": "minecraft:andesite_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "9950": "minecraft:andesite_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "9951": "minecraft:andesite_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "9952": "minecraft:andesite_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "9953": "minecraft:andesite_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "9954": "minecraft:andesite_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "9955": "minecraft:andesite_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "9956": "minecraft:andesite_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "9957": "minecraft:andesite_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "9958": "minecraft:andesite_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "9959": "minecraft:andesite_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "9960": "minecraft:andesite_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "9961": "minecraft:andesite_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "9962": "minecraft:andesite_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "9963": "minecraft:andesite_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "9964": "minecraft:andesite_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "9965": "minecraft:andesite_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "9966": "minecraft:andesite_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "9967": "minecraft:andesite_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "9968": "minecraft:andesite_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "9969": "minecraft:andesite_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "9970": "minecraft:andesite_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "9971": "minecraft:andesite_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "9972": "minecraft:andesite_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "9973": "minecraft:andesite_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "9974": "minecraft:andesite_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "9975": "minecraft:andesite_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "9976": "minecraft:andesite_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "9977": "minecraft:andesite_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "9978": "minecraft:andesite_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "9979": "minecraft:andesite_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "9980": "minecraft:andesite_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "9981": "minecraft:andesite_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "9982": "minecraft:andesite_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "9983": "minecraft:andesite_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "9984": "minecraft:andesite_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "9985": "minecraft:andesite_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "9986": "minecraft:andesite_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "9987": "minecraft:andesite_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "9988": "minecraft:andesite_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "9989": "minecraft:andesite_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "9990": "minecraft:andesite_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "9991": "minecraft:andesite_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "9992": "minecraft:andesite_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "9993": "minecraft:andesite_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "9994": "minecraft:andesite_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "9995": "minecraft:andesite_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "9996": "minecraft:andesite_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "9997": "minecraft:andesite_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "9998": "minecraft:andesite_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "9999": "minecraft:andesite_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "10000": "minecraft:andesite_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "10001": "minecraft:andesite_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "10002": "minecraft:andesite_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "10003": "minecraft:andesite_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "10004": "minecraft:andesite_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "10005": "minecraft:andesite_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "10006": "minecraft:andesite_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "10007": "minecraft:andesite_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "10008": "minecraft:andesite_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "10009": "minecraft:andesite_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "10010": "minecraft:andesite_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "10011": "minecraft:andesite_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "10012": "minecraft:andesite_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "10013": "minecraft:red_nether_brick_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "10014": "minecraft:red_nether_brick_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "10015": "minecraft:red_nether_brick_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "10016": "minecraft:red_nether_brick_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "10017": "minecraft:red_nether_brick_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "10018": "minecraft:red_nether_brick_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "10019": "minecraft:red_nether_brick_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "10020": "minecraft:red_nether_brick_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "10021": "minecraft:red_nether_brick_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "10022": "minecraft:red_nether_brick_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "10023": "minecraft:red_nether_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "10024": "minecraft:red_nether_brick_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "10025": "minecraft:red_nether_brick_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "10026": "minecraft:red_nether_brick_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "10027": "minecraft:red_nether_brick_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "10028": "minecraft:red_nether_brick_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "10029": "minecraft:red_nether_brick_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "10030": "minecraft:red_nether_brick_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "10031": "minecraft:red_nether_brick_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "10032": "minecraft:red_nether_brick_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "10033": "minecraft:red_nether_brick_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "10034": "minecraft:red_nether_brick_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "10035": "minecraft:red_nether_brick_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "10036": "minecraft:red_nether_brick_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "10037": "minecraft:red_nether_brick_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "10038": "minecraft:red_nether_brick_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "10039": "minecraft:red_nether_brick_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "10040": "minecraft:red_nether_brick_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "10041": "minecraft:red_nether_brick_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "10042": "minecraft:red_nether_brick_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "10043": "minecraft:red_nether_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "10044": "minecraft:red_nether_brick_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "10045": "minecraft:red_nether_brick_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "10046": "minecraft:red_nether_brick_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "10047": "minecraft:red_nether_brick_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "10048": "minecraft:red_nether_brick_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "10049": "minecraft:red_nether_brick_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "10050": "minecraft:red_nether_brick_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "10051": "minecraft:red_nether_brick_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "10052": "minecraft:red_nether_brick_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "10053": "minecraft:red_nether_brick_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "10054": "minecraft:red_nether_brick_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "10055": "minecraft:red_nether_brick_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "10056": "minecraft:red_nether_brick_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "10057": "minecraft:red_nether_brick_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "10058": "minecraft:red_nether_brick_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "10059": "minecraft:red_nether_brick_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "10060": "minecraft:red_nether_brick_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "10061": "minecraft:red_nether_brick_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "10062": "minecraft:red_nether_brick_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "10063": "minecraft:red_nether_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "10064": "minecraft:red_nether_brick_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "10065": "minecraft:red_nether_brick_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "10066": "minecraft:red_nether_brick_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "10067": "minecraft:red_nether_brick_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "10068": "minecraft:red_nether_brick_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "10069": "minecraft:red_nether_brick_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "10070": "minecraft:red_nether_brick_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "10071": "minecraft:red_nether_brick_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "10072": "minecraft:red_nether_brick_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "10073": "minecraft:red_nether_brick_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "10074": "minecraft:red_nether_brick_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "10075": "minecraft:red_nether_brick_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "10076": "minecraft:red_nether_brick_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "10077": "minecraft:red_nether_brick_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "10078": "minecraft:red_nether_brick_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "10079": "minecraft:red_nether_brick_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "10080": "minecraft:red_nether_brick_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "10081": "minecraft:red_nether_brick_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "10082": "minecraft:red_nether_brick_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "10083": "minecraft:red_nether_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "10084": "minecraft:red_nether_brick_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "10085": "minecraft:red_nether_brick_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "10086": "minecraft:red_nether_brick_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "10087": "minecraft:red_nether_brick_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "10088": "minecraft:red_nether_brick_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "10089": "minecraft:red_nether_brick_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "10090": "minecraft:red_nether_brick_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "10091": "minecraft:red_nether_brick_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "10092": "minecraft:red_nether_brick_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "10093": "minecraft:polished_andesite_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "10094": "minecraft:polished_andesite_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "10095": "minecraft:polished_andesite_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "10096": "minecraft:polished_andesite_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "10097": "minecraft:polished_andesite_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "10098": "minecraft:polished_andesite_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "10099": "minecraft:polished_andesite_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "10100": "minecraft:polished_andesite_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "10101": "minecraft:polished_andesite_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "10102": "minecraft:polished_andesite_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "10103": "minecraft:polished_andesite_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "10104": "minecraft:polished_andesite_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "10105": "minecraft:polished_andesite_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "10106": "minecraft:polished_andesite_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "10107": "minecraft:polished_andesite_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "10108": "minecraft:polished_andesite_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "10109": "minecraft:polished_andesite_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "10110": "minecraft:polished_andesite_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "10111": "minecraft:polished_andesite_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "10112": "minecraft:polished_andesite_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "10113": "minecraft:polished_andesite_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "10114": "minecraft:polished_andesite_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "10115": "minecraft:polished_andesite_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "10116": "minecraft:polished_andesite_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "10117": "minecraft:polished_andesite_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "10118": "minecraft:polished_andesite_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "10119": "minecraft:polished_andesite_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "10120": "minecraft:polished_andesite_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "10121": "minecraft:polished_andesite_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "10122": "minecraft:polished_andesite_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "10123": "minecraft:polished_andesite_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "10124": "minecraft:polished_andesite_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "10125": "minecraft:polished_andesite_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "10126": "minecraft:polished_andesite_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "10127": "minecraft:polished_andesite_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "10128": "minecraft:polished_andesite_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "10129": "minecraft:polished_andesite_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "10130": "minecraft:polished_andesite_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "10131": "minecraft:polished_andesite_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "10132": "minecraft:polished_andesite_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "10133": "minecraft:polished_andesite_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "10134": "minecraft:polished_andesite_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "10135": "minecraft:polished_andesite_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "10136": "minecraft:polished_andesite_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "10137": "minecraft:polished_andesite_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "10138": "minecraft:polished_andesite_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "10139": "minecraft:polished_andesite_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "10140": "minecraft:polished_andesite_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "10141": "minecraft:polished_andesite_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "10142": "minecraft:polished_andesite_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "10143": "minecraft:polished_andesite_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "10144": "minecraft:polished_andesite_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "10145": "minecraft:polished_andesite_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "10146": "minecraft:polished_andesite_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "10147": "minecraft:polished_andesite_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "10148": "minecraft:polished_andesite_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "10149": "minecraft:polished_andesite_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "10150": "minecraft:polished_andesite_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "10151": "minecraft:polished_andesite_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "10152": "minecraft:polished_andesite_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "10153": "minecraft:polished_andesite_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "10154": "minecraft:polished_andesite_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "10155": "minecraft:polished_andesite_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "10156": "minecraft:polished_andesite_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "10157": "minecraft:polished_andesite_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "10158": "minecraft:polished_andesite_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "10159": "minecraft:polished_andesite_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "10160": "minecraft:polished_andesite_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "10161": "minecraft:polished_andesite_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "10162": "minecraft:polished_andesite_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "10163": "minecraft:polished_andesite_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "10164": "minecraft:polished_andesite_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "10165": "minecraft:polished_andesite_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "10166": "minecraft:polished_andesite_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "10167": "minecraft:polished_andesite_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "10168": "minecraft:polished_andesite_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "10169": "minecraft:polished_andesite_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "10170": "minecraft:polished_andesite_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "10171": "minecraft:polished_andesite_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "10172": "minecraft:polished_andesite_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "10173": "minecraft:diorite_stairs[facing=north,half=top,shape=straight,waterlogged=true]", + "10174": "minecraft:diorite_stairs[facing=north,half=top,shape=straight,waterlogged=false]", + "10175": "minecraft:diorite_stairs[facing=north,half=top,shape=inner_left,waterlogged=true]", + "10176": "minecraft:diorite_stairs[facing=north,half=top,shape=inner_left,waterlogged=false]", + "10177": "minecraft:diorite_stairs[facing=north,half=top,shape=inner_right,waterlogged=true]", + "10178": "minecraft:diorite_stairs[facing=north,half=top,shape=inner_right,waterlogged=false]", + "10179": "minecraft:diorite_stairs[facing=north,half=top,shape=outer_left,waterlogged=true]", + "10180": "minecraft:diorite_stairs[facing=north,half=top,shape=outer_left,waterlogged=false]", + "10181": "minecraft:diorite_stairs[facing=north,half=top,shape=outer_right,waterlogged=true]", + "10182": "minecraft:diorite_stairs[facing=north,half=top,shape=outer_right,waterlogged=false]", + "10183": "minecraft:diorite_stairs[facing=north,half=bottom,shape=straight,waterlogged=true]", + "10184": "minecraft:diorite_stairs[facing=north,half=bottom,shape=straight,waterlogged=false]", + "10185": "minecraft:diorite_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=true]", + "10186": "minecraft:diorite_stairs[facing=north,half=bottom,shape=inner_left,waterlogged=false]", + "10187": "minecraft:diorite_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=true]", + "10188": "minecraft:diorite_stairs[facing=north,half=bottom,shape=inner_right,waterlogged=false]", + "10189": "minecraft:diorite_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=true]", + "10190": "minecraft:diorite_stairs[facing=north,half=bottom,shape=outer_left,waterlogged=false]", + "10191": "minecraft:diorite_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=true]", + "10192": "minecraft:diorite_stairs[facing=north,half=bottom,shape=outer_right,waterlogged=false]", + "10193": "minecraft:diorite_stairs[facing=south,half=top,shape=straight,waterlogged=true]", + "10194": "minecraft:diorite_stairs[facing=south,half=top,shape=straight,waterlogged=false]", + "10195": "minecraft:diorite_stairs[facing=south,half=top,shape=inner_left,waterlogged=true]", + "10196": "minecraft:diorite_stairs[facing=south,half=top,shape=inner_left,waterlogged=false]", + "10197": "minecraft:diorite_stairs[facing=south,half=top,shape=inner_right,waterlogged=true]", + "10198": "minecraft:diorite_stairs[facing=south,half=top,shape=inner_right,waterlogged=false]", + "10199": "minecraft:diorite_stairs[facing=south,half=top,shape=outer_left,waterlogged=true]", + "10200": "minecraft:diorite_stairs[facing=south,half=top,shape=outer_left,waterlogged=false]", + "10201": "minecraft:diorite_stairs[facing=south,half=top,shape=outer_right,waterlogged=true]", + "10202": "minecraft:diorite_stairs[facing=south,half=top,shape=outer_right,waterlogged=false]", + "10203": "minecraft:diorite_stairs[facing=south,half=bottom,shape=straight,waterlogged=true]", + "10204": "minecraft:diorite_stairs[facing=south,half=bottom,shape=straight,waterlogged=false]", + "10205": "minecraft:diorite_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=true]", + "10206": "minecraft:diorite_stairs[facing=south,half=bottom,shape=inner_left,waterlogged=false]", + "10207": "minecraft:diorite_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=true]", + "10208": "minecraft:diorite_stairs[facing=south,half=bottom,shape=inner_right,waterlogged=false]", + "10209": "minecraft:diorite_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=true]", + "10210": "minecraft:diorite_stairs[facing=south,half=bottom,shape=outer_left,waterlogged=false]", + "10211": "minecraft:diorite_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=true]", + "10212": "minecraft:diorite_stairs[facing=south,half=bottom,shape=outer_right,waterlogged=false]", + "10213": "minecraft:diorite_stairs[facing=west,half=top,shape=straight,waterlogged=true]", + "10214": "minecraft:diorite_stairs[facing=west,half=top,shape=straight,waterlogged=false]", + "10215": "minecraft:diorite_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]", + "10216": "minecraft:diorite_stairs[facing=west,half=top,shape=inner_left,waterlogged=false]", + "10217": "minecraft:diorite_stairs[facing=west,half=top,shape=inner_right,waterlogged=true]", + "10218": "minecraft:diorite_stairs[facing=west,half=top,shape=inner_right,waterlogged=false]", + "10219": "minecraft:diorite_stairs[facing=west,half=top,shape=outer_left,waterlogged=true]", + "10220": "minecraft:diorite_stairs[facing=west,half=top,shape=outer_left,waterlogged=false]", + "10221": "minecraft:diorite_stairs[facing=west,half=top,shape=outer_right,waterlogged=true]", + "10222": "minecraft:diorite_stairs[facing=west,half=top,shape=outer_right,waterlogged=false]", + "10223": "minecraft:diorite_stairs[facing=west,half=bottom,shape=straight,waterlogged=true]", + "10224": "minecraft:diorite_stairs[facing=west,half=bottom,shape=straight,waterlogged=false]", + "10225": "minecraft:diorite_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=true]", + "10226": "minecraft:diorite_stairs[facing=west,half=bottom,shape=inner_left,waterlogged=false]", + "10227": "minecraft:diorite_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=true]", + "10228": "minecraft:diorite_stairs[facing=west,half=bottom,shape=inner_right,waterlogged=false]", + "10229": "minecraft:diorite_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=true]", + "10230": "minecraft:diorite_stairs[facing=west,half=bottom,shape=outer_left,waterlogged=false]", + "10231": "minecraft:diorite_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=true]", + "10232": "minecraft:diorite_stairs[facing=west,half=bottom,shape=outer_right,waterlogged=false]", + "10233": "minecraft:diorite_stairs[facing=east,half=top,shape=straight,waterlogged=true]", + "10234": "minecraft:diorite_stairs[facing=east,half=top,shape=straight,waterlogged=false]", + "10235": "minecraft:diorite_stairs[facing=east,half=top,shape=inner_left,waterlogged=true]", + "10236": "minecraft:diorite_stairs[facing=east,half=top,shape=inner_left,waterlogged=false]", + "10237": "minecraft:diorite_stairs[facing=east,half=top,shape=inner_right,waterlogged=true]", + "10238": "minecraft:diorite_stairs[facing=east,half=top,shape=inner_right,waterlogged=false]", + "10239": "minecraft:diorite_stairs[facing=east,half=top,shape=outer_left,waterlogged=true]", + "10240": "minecraft:diorite_stairs[facing=east,half=top,shape=outer_left,waterlogged=false]", + "10241": "minecraft:diorite_stairs[facing=east,half=top,shape=outer_right,waterlogged=true]", + "10242": "minecraft:diorite_stairs[facing=east,half=top,shape=outer_right,waterlogged=false]", + "10243": "minecraft:diorite_stairs[facing=east,half=bottom,shape=straight,waterlogged=true]", + "10244": "minecraft:diorite_stairs[facing=east,half=bottom,shape=straight,waterlogged=false]", + "10245": "minecraft:diorite_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=true]", + "10246": "minecraft:diorite_stairs[facing=east,half=bottom,shape=inner_left,waterlogged=false]", + "10247": "minecraft:diorite_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=true]", + "10248": "minecraft:diorite_stairs[facing=east,half=bottom,shape=inner_right,waterlogged=false]", + "10249": "minecraft:diorite_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=true]", + "10250": "minecraft:diorite_stairs[facing=east,half=bottom,shape=outer_left,waterlogged=false]", + "10251": "minecraft:diorite_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=true]", + "10252": "minecraft:diorite_stairs[facing=east,half=bottom,shape=outer_right,waterlogged=false]", + "10253": "minecraft:polished_granite_slab[type=top,waterlogged=true]", + "10254": "minecraft:polished_granite_slab[type=top,waterlogged=false]", + "10255": "minecraft:polished_granite_slab[type=bottom,waterlogged=true]", + "10256": "minecraft:polished_granite_slab[type=bottom,waterlogged=false]", + "10257": "minecraft:polished_granite_slab[type=double,waterlogged=true]", + "10258": "minecraft:polished_granite_slab[type=double,waterlogged=false]", + "10259": "minecraft:smooth_red_sandstone_slab[type=top,waterlogged=true]", + "10260": "minecraft:smooth_red_sandstone_slab[type=top,waterlogged=false]", + "10261": "minecraft:smooth_red_sandstone_slab[type=bottom,waterlogged=true]", + "10262": "minecraft:smooth_red_sandstone_slab[type=bottom,waterlogged=false]", + "10263": "minecraft:smooth_red_sandstone_slab[type=double,waterlogged=true]", + "10264": "minecraft:smooth_red_sandstone_slab[type=double,waterlogged=false]", + "10265": "minecraft:mossy_stone_brick_slab[type=top,waterlogged=true]", + "10266": "minecraft:mossy_stone_brick_slab[type=top,waterlogged=false]", + "10267": "minecraft:mossy_stone_brick_slab[type=bottom,waterlogged=true]", + "10268": "minecraft:mossy_stone_brick_slab[type=bottom,waterlogged=false]", + "10269": "minecraft:mossy_stone_brick_slab[type=double,waterlogged=true]", + "10270": "minecraft:mossy_stone_brick_slab[type=double,waterlogged=false]", + "10271": "minecraft:polished_diorite_slab[type=top,waterlogged=true]", + "10272": "minecraft:polished_diorite_slab[type=top,waterlogged=false]", + "10273": "minecraft:polished_diorite_slab[type=bottom,waterlogged=true]", + "10274": "minecraft:polished_diorite_slab[type=bottom,waterlogged=false]", + "10275": "minecraft:polished_diorite_slab[type=double,waterlogged=true]", + "10276": "minecraft:polished_diorite_slab[type=double,waterlogged=false]", + "10277": "minecraft:mossy_cobblestone_slab[type=top,waterlogged=true]", + "10278": "minecraft:mossy_cobblestone_slab[type=top,waterlogged=false]", + "10279": "minecraft:mossy_cobblestone_slab[type=bottom,waterlogged=true]", + "10280": "minecraft:mossy_cobblestone_slab[type=bottom,waterlogged=false]", + "10281": "minecraft:mossy_cobblestone_slab[type=double,waterlogged=true]", + "10282": "minecraft:mossy_cobblestone_slab[type=double,waterlogged=false]", + "10283": "minecraft:end_stone_brick_slab[type=top,waterlogged=true]", + "10284": "minecraft:end_stone_brick_slab[type=top,waterlogged=false]", + "10285": "minecraft:end_stone_brick_slab[type=bottom,waterlogged=true]", + "10286": "minecraft:end_stone_brick_slab[type=bottom,waterlogged=false]", + "10287": "minecraft:end_stone_brick_slab[type=double,waterlogged=true]", + "10288": "minecraft:end_stone_brick_slab[type=double,waterlogged=false]", + "10289": "minecraft:smooth_sandstone_slab[type=top,waterlogged=true]", + "10290": "minecraft:smooth_sandstone_slab[type=top,waterlogged=false]", + "10291": "minecraft:smooth_sandstone_slab[type=bottom,waterlogged=true]", + "10292": "minecraft:smooth_sandstone_slab[type=bottom,waterlogged=false]", + "10293": "minecraft:smooth_sandstone_slab[type=double,waterlogged=true]", + "10294": "minecraft:smooth_sandstone_slab[type=double,waterlogged=false]", + "10295": "minecraft:smooth_quartz_slab[type=top,waterlogged=true]", + "10296": "minecraft:smooth_quartz_slab[type=top,waterlogged=false]", + "10297": "minecraft:smooth_quartz_slab[type=bottom,waterlogged=true]", + "10298": "minecraft:smooth_quartz_slab[type=bottom,waterlogged=false]", + "10299": "minecraft:smooth_quartz_slab[type=double,waterlogged=true]", + "10300": "minecraft:smooth_quartz_slab[type=double,waterlogged=false]", + "10301": "minecraft:granite_slab[type=top,waterlogged=true]", + "10302": "minecraft:granite_slab[type=top,waterlogged=false]", + "10303": "minecraft:granite_slab[type=bottom,waterlogged=true]", + "10304": "minecraft:granite_slab[type=bottom,waterlogged=false]", + "10305": "minecraft:granite_slab[type=double,waterlogged=true]", + "10306": "minecraft:granite_slab[type=double,waterlogged=false]", + "10307": "minecraft:andesite_slab[type=top,waterlogged=true]", + "10308": "minecraft:andesite_slab[type=top,waterlogged=false]", + "10309": "minecraft:andesite_slab[type=bottom,waterlogged=true]", + "10310": "minecraft:andesite_slab[type=bottom,waterlogged=false]", + "10311": "minecraft:andesite_slab[type=double,waterlogged=true]", + "10312": "minecraft:andesite_slab[type=double,waterlogged=false]", + "10313": "minecraft:red_nether_brick_slab[type=top,waterlogged=true]", + "10314": "minecraft:red_nether_brick_slab[type=top,waterlogged=false]", + "10315": "minecraft:red_nether_brick_slab[type=bottom,waterlogged=true]", + "10316": "minecraft:red_nether_brick_slab[type=bottom,waterlogged=false]", + "10317": "minecraft:red_nether_brick_slab[type=double,waterlogged=true]", + "10318": "minecraft:red_nether_brick_slab[type=double,waterlogged=false]", + "10319": "minecraft:polished_andesite_slab[type=top,waterlogged=true]", + "10320": "minecraft:polished_andesite_slab[type=top,waterlogged=false]", + "10321": "minecraft:polished_andesite_slab[type=bottom,waterlogged=true]", + "10322": "minecraft:polished_andesite_slab[type=bottom,waterlogged=false]", + "10323": "minecraft:polished_andesite_slab[type=double,waterlogged=true]", + "10324": "minecraft:polished_andesite_slab[type=double,waterlogged=false]", + "10325": "minecraft:diorite_slab[type=top,waterlogged=true]", + "10326": "minecraft:diorite_slab[type=top,waterlogged=false]", + "10327": "minecraft:diorite_slab[type=bottom,waterlogged=true]", + "10328": "minecraft:diorite_slab[type=bottom,waterlogged=false]", + "10329": "minecraft:diorite_slab[type=double,waterlogged=true]", + "10330": "minecraft:diorite_slab[type=double,waterlogged=false]", + "10331": "minecraft:brick_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=true]", + "10332": "minecraft:brick_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=false]", + "10333": "minecraft:brick_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=true]", + "10334": "minecraft:brick_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=false]", + "10335": "minecraft:brick_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=true]", + "10336": "minecraft:brick_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=false]", + "10337": "minecraft:brick_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=true]", + "10338": "minecraft:brick_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=false]", + "10339": "minecraft:brick_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=true]", + "10340": "minecraft:brick_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=false]", + "10341": "minecraft:brick_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=true]", + "10342": "minecraft:brick_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=false]", + "10343": "minecraft:brick_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=true]", + "10344": "minecraft:brick_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=false]", + "10345": "minecraft:brick_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=true]", + "10346": "minecraft:brick_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=false]", + "10347": "minecraft:brick_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=true]", + "10348": "minecraft:brick_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=false]", + "10349": "minecraft:brick_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=true]", + "10350": "minecraft:brick_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=false]", + "10351": "minecraft:brick_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=true]", + "10352": "minecraft:brick_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=false]", + "10353": "minecraft:brick_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=true]", + "10354": "minecraft:brick_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=false]", + "10355": "minecraft:brick_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=true]", + "10356": "minecraft:brick_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=false]", + "10357": "minecraft:brick_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=true]", + "10358": "minecraft:brick_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=false]", + "10359": "minecraft:brick_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=true]", + "10360": "minecraft:brick_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=false]", + "10361": "minecraft:brick_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=true]", + "10362": "minecraft:brick_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=false]", + "10363": "minecraft:brick_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=true]", + "10364": "minecraft:brick_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=false]", + "10365": "minecraft:brick_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=true]", + "10366": "minecraft:brick_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=false]", + "10367": "minecraft:brick_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=true]", + "10368": "minecraft:brick_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=false]", + "10369": "minecraft:brick_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=true]", + "10370": "minecraft:brick_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=false]", + "10371": "minecraft:brick_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=true]", + "10372": "minecraft:brick_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=false]", + "10373": "minecraft:brick_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=true]", + "10374": "minecraft:brick_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=false]", + "10375": "minecraft:brick_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=true]", + "10376": "minecraft:brick_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=false]", + "10377": "minecraft:brick_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=true]", + "10378": "minecraft:brick_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=false]", + "10379": "minecraft:brick_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=true]", + "10380": "minecraft:brick_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=false]", + "10381": "minecraft:brick_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=true]", + "10382": "minecraft:brick_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=false]", + "10383": "minecraft:brick_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=true]", + "10384": "minecraft:brick_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=false]", + "10385": "minecraft:brick_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=true]", + "10386": "minecraft:brick_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=false]", + "10387": "minecraft:brick_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=true]", + "10388": "minecraft:brick_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=false]", + "10389": "minecraft:brick_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=true]", + "10390": "minecraft:brick_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=false]", + "10391": "minecraft:brick_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=true]", + "10392": "minecraft:brick_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=false]", + "10393": "minecraft:brick_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=true]", + "10394": "minecraft:brick_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=false]", + "10395": "minecraft:prismarine_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=true]", + "10396": "minecraft:prismarine_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=false]", + "10397": "minecraft:prismarine_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=true]", + "10398": "minecraft:prismarine_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=false]", + "10399": "minecraft:prismarine_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=true]", + "10400": "minecraft:prismarine_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=false]", + "10401": "minecraft:prismarine_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=true]", + "10402": "minecraft:prismarine_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=false]", + "10403": "minecraft:prismarine_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=true]", + "10404": "minecraft:prismarine_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=false]", + "10405": "minecraft:prismarine_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=true]", + "10406": "minecraft:prismarine_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=false]", + "10407": "minecraft:prismarine_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=true]", + "10408": "minecraft:prismarine_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=false]", + "10409": "minecraft:prismarine_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=true]", + "10410": "minecraft:prismarine_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=false]", + "10411": "minecraft:prismarine_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=true]", + "10412": "minecraft:prismarine_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=false]", + "10413": "minecraft:prismarine_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=true]", + "10414": "minecraft:prismarine_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=false]", + "10415": "minecraft:prismarine_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=true]", + "10416": "minecraft:prismarine_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=false]", + "10417": "minecraft:prismarine_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=true]", + "10418": "minecraft:prismarine_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=false]", + "10419": "minecraft:prismarine_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=true]", + "10420": "minecraft:prismarine_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=false]", + "10421": "minecraft:prismarine_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=true]", + "10422": "minecraft:prismarine_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=false]", + "10423": "minecraft:prismarine_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=true]", + "10424": "minecraft:prismarine_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=false]", + "10425": "minecraft:prismarine_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=true]", + "10426": "minecraft:prismarine_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=false]", + "10427": "minecraft:prismarine_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=true]", + "10428": "minecraft:prismarine_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=false]", + "10429": "minecraft:prismarine_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=true]", + "10430": "minecraft:prismarine_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=false]", + "10431": "minecraft:prismarine_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=true]", + "10432": "minecraft:prismarine_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=false]", + "10433": "minecraft:prismarine_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=true]", + "10434": "minecraft:prismarine_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=false]", + "10435": "minecraft:prismarine_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=true]", + "10436": "minecraft:prismarine_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=false]", + "10437": "minecraft:prismarine_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=true]", + "10438": "minecraft:prismarine_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=false]", + "10439": "minecraft:prismarine_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=true]", + "10440": "minecraft:prismarine_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=false]", + "10441": "minecraft:prismarine_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=true]", + "10442": "minecraft:prismarine_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=false]", + "10443": "minecraft:prismarine_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=true]", + "10444": "minecraft:prismarine_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=false]", + "10445": "minecraft:prismarine_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=true]", + "10446": "minecraft:prismarine_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=false]", + "10447": "minecraft:prismarine_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=true]", + "10448": "minecraft:prismarine_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=false]", + "10449": "minecraft:prismarine_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=true]", + "10450": "minecraft:prismarine_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=false]", + "10451": "minecraft:prismarine_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=true]", + "10452": "minecraft:prismarine_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=false]", + "10453": "minecraft:prismarine_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=true]", + "10454": "minecraft:prismarine_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=false]", + "10455": "minecraft:prismarine_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=true]", + "10456": "minecraft:prismarine_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=false]", + "10457": "minecraft:prismarine_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=true]", + "10458": "minecraft:prismarine_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=false]", + "10459": "minecraft:red_sandstone_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=true]", + "10460": "minecraft:red_sandstone_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=false]", + "10461": "minecraft:red_sandstone_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=true]", + "10462": "minecraft:red_sandstone_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=false]", + "10463": "minecraft:red_sandstone_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=true]", + "10464": "minecraft:red_sandstone_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=false]", + "10465": "minecraft:red_sandstone_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=true]", + "10466": "minecraft:red_sandstone_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=false]", + "10467": "minecraft:red_sandstone_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=true]", + "10468": "minecraft:red_sandstone_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=false]", + "10469": "minecraft:red_sandstone_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=true]", + "10470": "minecraft:red_sandstone_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=false]", + "10471": "minecraft:red_sandstone_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=true]", + "10472": "minecraft:red_sandstone_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=false]", + "10473": "minecraft:red_sandstone_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=true]", + "10474": "minecraft:red_sandstone_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=false]", + "10475": "minecraft:red_sandstone_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=true]", + "10476": "minecraft:red_sandstone_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=false]", + "10477": "minecraft:red_sandstone_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=true]", + "10478": "minecraft:red_sandstone_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=false]", + "10479": "minecraft:red_sandstone_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=true]", + "10480": "minecraft:red_sandstone_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=false]", + "10481": "minecraft:red_sandstone_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=true]", + "10482": "minecraft:red_sandstone_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=false]", + "10483": "minecraft:red_sandstone_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=true]", + "10484": "minecraft:red_sandstone_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=false]", + "10485": "minecraft:red_sandstone_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=true]", + "10486": "minecraft:red_sandstone_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=false]", + "10487": "minecraft:red_sandstone_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=true]", + "10488": "minecraft:red_sandstone_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=false]", + "10489": "minecraft:red_sandstone_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=true]", + "10490": "minecraft:red_sandstone_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=false]", + "10491": "minecraft:red_sandstone_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=true]", + "10492": "minecraft:red_sandstone_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=false]", + "10493": "minecraft:red_sandstone_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=true]", + "10494": "minecraft:red_sandstone_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=false]", + "10495": "minecraft:red_sandstone_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=true]", + "10496": "minecraft:red_sandstone_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=false]", + "10497": "minecraft:red_sandstone_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=true]", + "10498": "minecraft:red_sandstone_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=false]", + "10499": "minecraft:red_sandstone_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=true]", + "10500": "minecraft:red_sandstone_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=false]", + "10501": "minecraft:red_sandstone_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=true]", + "10502": "minecraft:red_sandstone_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=false]", + "10503": "minecraft:red_sandstone_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=true]", + "10504": "minecraft:red_sandstone_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=false]", + "10505": "minecraft:red_sandstone_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=true]", + "10506": "minecraft:red_sandstone_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=false]", + "10507": "minecraft:red_sandstone_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=true]", + "10508": "minecraft:red_sandstone_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=false]", + "10509": "minecraft:red_sandstone_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=true]", + "10510": "minecraft:red_sandstone_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=false]", + "10511": "minecraft:red_sandstone_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=true]", + "10512": "minecraft:red_sandstone_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=false]", + "10513": "minecraft:red_sandstone_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=true]", + "10514": "minecraft:red_sandstone_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=false]", + "10515": "minecraft:red_sandstone_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=true]", + "10516": "minecraft:red_sandstone_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=false]", + "10517": "minecraft:red_sandstone_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=true]", + "10518": "minecraft:red_sandstone_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=false]", + "10519": "minecraft:red_sandstone_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=true]", + "10520": "minecraft:red_sandstone_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=false]", + "10521": "minecraft:red_sandstone_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=true]", + "10522": "minecraft:red_sandstone_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=false]", + "10523": "minecraft:mossy_stone_brick_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=true]", + "10524": "minecraft:mossy_stone_brick_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=false]", + "10525": "minecraft:mossy_stone_brick_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=true]", + "10526": "minecraft:mossy_stone_brick_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=false]", + "10527": "minecraft:mossy_stone_brick_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=true]", + "10528": "minecraft:mossy_stone_brick_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=false]", + "10529": "minecraft:mossy_stone_brick_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=true]", + "10530": "minecraft:mossy_stone_brick_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=false]", + "10531": "minecraft:mossy_stone_brick_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=true]", + "10532": "minecraft:mossy_stone_brick_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=false]", + "10533": "minecraft:mossy_stone_brick_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=true]", + "10534": "minecraft:mossy_stone_brick_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=false]", + "10535": "minecraft:mossy_stone_brick_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=true]", + "10536": "minecraft:mossy_stone_brick_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=false]", + "10537": "minecraft:mossy_stone_brick_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=true]", + "10538": "minecraft:mossy_stone_brick_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=false]", + "10539": "minecraft:mossy_stone_brick_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=true]", + "10540": "minecraft:mossy_stone_brick_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=false]", + "10541": "minecraft:mossy_stone_brick_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=true]", + "10542": "minecraft:mossy_stone_brick_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=false]", + "10543": "minecraft:mossy_stone_brick_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=true]", + "10544": "minecraft:mossy_stone_brick_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=false]", + "10545": "minecraft:mossy_stone_brick_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=true]", + "10546": "minecraft:mossy_stone_brick_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=false]", + "10547": "minecraft:mossy_stone_brick_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=true]", + "10548": "minecraft:mossy_stone_brick_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=false]", + "10549": "minecraft:mossy_stone_brick_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=true]", + "10550": "minecraft:mossy_stone_brick_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=false]", + "10551": "minecraft:mossy_stone_brick_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=true]", + "10552": "minecraft:mossy_stone_brick_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=false]", + "10553": "minecraft:mossy_stone_brick_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=true]", + "10554": "minecraft:mossy_stone_brick_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=false]", + "10555": "minecraft:mossy_stone_brick_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=true]", + "10556": "minecraft:mossy_stone_brick_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=false]", + "10557": "minecraft:mossy_stone_brick_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=true]", + "10558": "minecraft:mossy_stone_brick_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=false]", + "10559": "minecraft:mossy_stone_brick_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=true]", + "10560": "minecraft:mossy_stone_brick_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=false]", + "10561": "minecraft:mossy_stone_brick_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=true]", + "10562": "minecraft:mossy_stone_brick_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=false]", + "10563": "minecraft:mossy_stone_brick_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=true]", + "10564": "minecraft:mossy_stone_brick_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=false]", + "10565": "minecraft:mossy_stone_brick_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=true]", + "10566": "minecraft:mossy_stone_brick_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=false]", + "10567": "minecraft:mossy_stone_brick_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=true]", + "10568": "minecraft:mossy_stone_brick_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=false]", + "10569": "minecraft:mossy_stone_brick_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=true]", + "10570": "minecraft:mossy_stone_brick_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=false]", + "10571": "minecraft:mossy_stone_brick_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=true]", + "10572": "minecraft:mossy_stone_brick_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=false]", + "10573": "minecraft:mossy_stone_brick_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=true]", + "10574": "minecraft:mossy_stone_brick_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=false]", + "10575": "minecraft:mossy_stone_brick_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=true]", + "10576": "minecraft:mossy_stone_brick_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=false]", + "10577": "minecraft:mossy_stone_brick_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=true]", + "10578": "minecraft:mossy_stone_brick_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=false]", + "10579": "minecraft:mossy_stone_brick_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=true]", + "10580": "minecraft:mossy_stone_brick_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=false]", + "10581": "minecraft:mossy_stone_brick_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=true]", + "10582": "minecraft:mossy_stone_brick_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=false]", + "10583": "minecraft:mossy_stone_brick_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=true]", + "10584": "minecraft:mossy_stone_brick_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=false]", + "10585": "minecraft:mossy_stone_brick_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=true]", + "10586": "minecraft:mossy_stone_brick_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=false]", + "10587": "minecraft:granite_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=true]", + "10588": "minecraft:granite_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=false]", + "10589": "minecraft:granite_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=true]", + "10590": "minecraft:granite_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=false]", + "10591": "minecraft:granite_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=true]", + "10592": "minecraft:granite_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=false]", + "10593": "minecraft:granite_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=true]", + "10594": "minecraft:granite_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=false]", + "10595": "minecraft:granite_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=true]", + "10596": "minecraft:granite_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=false]", + "10597": "minecraft:granite_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=true]", + "10598": "minecraft:granite_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=false]", + "10599": "minecraft:granite_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=true]", + "10600": "minecraft:granite_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=false]", + "10601": "minecraft:granite_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=true]", + "10602": "minecraft:granite_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=false]", + "10603": "minecraft:granite_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=true]", + "10604": "minecraft:granite_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=false]", + "10605": "minecraft:granite_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=true]", + "10606": "minecraft:granite_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=false]", + "10607": "minecraft:granite_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=true]", + "10608": "minecraft:granite_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=false]", + "10609": "minecraft:granite_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=true]", + "10610": "minecraft:granite_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=false]", + "10611": "minecraft:granite_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=true]", + "10612": "minecraft:granite_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=false]", + "10613": "minecraft:granite_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=true]", + "10614": "minecraft:granite_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=false]", + "10615": "minecraft:granite_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=true]", + "10616": "minecraft:granite_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=false]", + "10617": "minecraft:granite_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=true]", + "10618": "minecraft:granite_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=false]", + "10619": "minecraft:granite_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=true]", + "10620": "minecraft:granite_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=false]", + "10621": "minecraft:granite_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=true]", + "10622": "minecraft:granite_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=false]", + "10623": "minecraft:granite_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=true]", + "10624": "minecraft:granite_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=false]", + "10625": "minecraft:granite_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=true]", + "10626": "minecraft:granite_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=false]", + "10627": "minecraft:granite_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=true]", + "10628": "minecraft:granite_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=false]", + "10629": "minecraft:granite_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=true]", + "10630": "minecraft:granite_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=false]", + "10631": "minecraft:granite_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=true]", + "10632": "minecraft:granite_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=false]", + "10633": "minecraft:granite_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=true]", + "10634": "minecraft:granite_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=false]", + "10635": "minecraft:granite_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=true]", + "10636": "minecraft:granite_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=false]", + "10637": "minecraft:granite_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=true]", + "10638": "minecraft:granite_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=false]", + "10639": "minecraft:granite_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=true]", + "10640": "minecraft:granite_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=false]", + "10641": "minecraft:granite_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=true]", + "10642": "minecraft:granite_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=false]", + "10643": "minecraft:granite_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=true]", + "10644": "minecraft:granite_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=false]", + "10645": "minecraft:granite_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=true]", + "10646": "minecraft:granite_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=false]", + "10647": "minecraft:granite_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=true]", + "10648": "minecraft:granite_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=false]", + "10649": "minecraft:granite_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=true]", + "10650": "minecraft:granite_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=false]", + "10651": "minecraft:stone_brick_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=true]", + "10652": "minecraft:stone_brick_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=false]", + "10653": "minecraft:stone_brick_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=true]", + "10654": "minecraft:stone_brick_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=false]", + "10655": "minecraft:stone_brick_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=true]", + "10656": "minecraft:stone_brick_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=false]", + "10657": "minecraft:stone_brick_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=true]", + "10658": "minecraft:stone_brick_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=false]", + "10659": "minecraft:stone_brick_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=true]", + "10660": "minecraft:stone_brick_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=false]", + "10661": "minecraft:stone_brick_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=true]", + "10662": "minecraft:stone_brick_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=false]", + "10663": "minecraft:stone_brick_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=true]", + "10664": "minecraft:stone_brick_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=false]", + "10665": "minecraft:stone_brick_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=true]", + "10666": "minecraft:stone_brick_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=false]", + "10667": "minecraft:stone_brick_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=true]", + "10668": "minecraft:stone_brick_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=false]", + "10669": "minecraft:stone_brick_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=true]", + "10670": "minecraft:stone_brick_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=false]", + "10671": "minecraft:stone_brick_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=true]", + "10672": "minecraft:stone_brick_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=false]", + "10673": "minecraft:stone_brick_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=true]", + "10674": "minecraft:stone_brick_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=false]", + "10675": "minecraft:stone_brick_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=true]", + "10676": "minecraft:stone_brick_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=false]", + "10677": "minecraft:stone_brick_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=true]", + "10678": "minecraft:stone_brick_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=false]", + "10679": "minecraft:stone_brick_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=true]", + "10680": "minecraft:stone_brick_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=false]", + "10681": "minecraft:stone_brick_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=true]", + "10682": "minecraft:stone_brick_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=false]", + "10683": "minecraft:stone_brick_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=true]", + "10684": "minecraft:stone_brick_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=false]", + "10685": "minecraft:stone_brick_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=true]", + "10686": "minecraft:stone_brick_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=false]", + "10687": "minecraft:stone_brick_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=true]", + "10688": "minecraft:stone_brick_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=false]", + "10689": "minecraft:stone_brick_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=true]", + "10690": "minecraft:stone_brick_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=false]", + "10691": "minecraft:stone_brick_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=true]", + "10692": "minecraft:stone_brick_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=false]", + "10693": "minecraft:stone_brick_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=true]", + "10694": "minecraft:stone_brick_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=false]", + "10695": "minecraft:stone_brick_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=true]", + "10696": "minecraft:stone_brick_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=false]", + "10697": "minecraft:stone_brick_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=true]", + "10698": "minecraft:stone_brick_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=false]", + "10699": "minecraft:stone_brick_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=true]", + "10700": "minecraft:stone_brick_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=false]", + "10701": "minecraft:stone_brick_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=true]", + "10702": "minecraft:stone_brick_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=false]", + "10703": "minecraft:stone_brick_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=true]", + "10704": "minecraft:stone_brick_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=false]", + "10705": "minecraft:stone_brick_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=true]", + "10706": "minecraft:stone_brick_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=false]", + "10707": "minecraft:stone_brick_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=true]", + "10708": "minecraft:stone_brick_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=false]", + "10709": "minecraft:stone_brick_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=true]", + "10710": "minecraft:stone_brick_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=false]", + "10711": "minecraft:stone_brick_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=true]", + "10712": "minecraft:stone_brick_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=false]", + "10713": "minecraft:stone_brick_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=true]", + "10714": "minecraft:stone_brick_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=false]", + "10715": "minecraft:nether_brick_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=true]", + "10716": "minecraft:nether_brick_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=false]", + "10717": "minecraft:nether_brick_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=true]", + "10718": "minecraft:nether_brick_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=false]", + "10719": "minecraft:nether_brick_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=true]", + "10720": "minecraft:nether_brick_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=false]", + "10721": "minecraft:nether_brick_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=true]", + "10722": "minecraft:nether_brick_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=false]", + "10723": "minecraft:nether_brick_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=true]", + "10724": "minecraft:nether_brick_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=false]", + "10725": "minecraft:nether_brick_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=true]", + "10726": "minecraft:nether_brick_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=false]", + "10727": "minecraft:nether_brick_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=true]", + "10728": "minecraft:nether_brick_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=false]", + "10729": "minecraft:nether_brick_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=true]", + "10730": "minecraft:nether_brick_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=false]", + "10731": "minecraft:nether_brick_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=true]", + "10732": "minecraft:nether_brick_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=false]", + "10733": "minecraft:nether_brick_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=true]", + "10734": "minecraft:nether_brick_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=false]", + "10735": "minecraft:nether_brick_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=true]", + "10736": "minecraft:nether_brick_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=false]", + "10737": "minecraft:nether_brick_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=true]", + "10738": "minecraft:nether_brick_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=false]", + "10739": "minecraft:nether_brick_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=true]", + "10740": "minecraft:nether_brick_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=false]", + "10741": "minecraft:nether_brick_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=true]", + "10742": "minecraft:nether_brick_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=false]", + "10743": "minecraft:nether_brick_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=true]", + "10744": "minecraft:nether_brick_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=false]", + "10745": "minecraft:nether_brick_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=true]", + "10746": "minecraft:nether_brick_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=false]", + "10747": "minecraft:nether_brick_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=true]", + "10748": "minecraft:nether_brick_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=false]", + "10749": "minecraft:nether_brick_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=true]", + "10750": "minecraft:nether_brick_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=false]", + "10751": "minecraft:nether_brick_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=true]", + "10752": "minecraft:nether_brick_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=false]", + "10753": "minecraft:nether_brick_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=true]", + "10754": "minecraft:nether_brick_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=false]", + "10755": "minecraft:nether_brick_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=true]", + "10756": "minecraft:nether_brick_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=false]", + "10757": "minecraft:nether_brick_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=true]", + "10758": "minecraft:nether_brick_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=false]", + "10759": "minecraft:nether_brick_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=true]", + "10760": "minecraft:nether_brick_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=false]", + "10761": "minecraft:nether_brick_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=true]", + "10762": "minecraft:nether_brick_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=false]", + "10763": "minecraft:nether_brick_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=true]", + "10764": "minecraft:nether_brick_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=false]", + "10765": "minecraft:nether_brick_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=true]", + "10766": "minecraft:nether_brick_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=false]", + "10767": "minecraft:nether_brick_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=true]", + "10768": "minecraft:nether_brick_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=false]", + "10769": "minecraft:nether_brick_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=true]", + "10770": "minecraft:nether_brick_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=false]", + "10771": "minecraft:nether_brick_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=true]", + "10772": "minecraft:nether_brick_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=false]", + "10773": "minecraft:nether_brick_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=true]", + "10774": "minecraft:nether_brick_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=false]", + "10775": "minecraft:nether_brick_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=true]", + "10776": "minecraft:nether_brick_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=false]", + "10777": "minecraft:nether_brick_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=true]", + "10778": "minecraft:nether_brick_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=false]", + "10779": "minecraft:andesite_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=true]", + "10780": "minecraft:andesite_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=false]", + "10781": "minecraft:andesite_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=true]", + "10782": "minecraft:andesite_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=false]", + "10783": "minecraft:andesite_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=true]", + "10784": "minecraft:andesite_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=false]", + "10785": "minecraft:andesite_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=true]", + "10786": "minecraft:andesite_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=false]", + "10787": "minecraft:andesite_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=true]", + "10788": "minecraft:andesite_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=false]", + "10789": "minecraft:andesite_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=true]", + "10790": "minecraft:andesite_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=false]", + "10791": "minecraft:andesite_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=true]", + "10792": "minecraft:andesite_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=false]", + "10793": "minecraft:andesite_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=true]", + "10794": "minecraft:andesite_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=false]", + "10795": "minecraft:andesite_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=true]", + "10796": "minecraft:andesite_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=false]", + "10797": "minecraft:andesite_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=true]", + "10798": "minecraft:andesite_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=false]", + "10799": "minecraft:andesite_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=true]", + "10800": "minecraft:andesite_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=false]", + "10801": "minecraft:andesite_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=true]", + "10802": "minecraft:andesite_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=false]", + "10803": "minecraft:andesite_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=true]", + "10804": "minecraft:andesite_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=false]", + "10805": "minecraft:andesite_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=true]", + "10806": "minecraft:andesite_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=false]", + "10807": "minecraft:andesite_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=true]", + "10808": "minecraft:andesite_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=false]", + "10809": "minecraft:andesite_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=true]", + "10810": "minecraft:andesite_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=false]", + "10811": "minecraft:andesite_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=true]", + "10812": "minecraft:andesite_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=false]", + "10813": "minecraft:andesite_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=true]", + "10814": "minecraft:andesite_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=false]", + "10815": "minecraft:andesite_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=true]", + "10816": "minecraft:andesite_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=false]", + "10817": "minecraft:andesite_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=true]", + "10818": "minecraft:andesite_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=false]", + "10819": "minecraft:andesite_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=true]", + "10820": "minecraft:andesite_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=false]", + "10821": "minecraft:andesite_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=true]", + "10822": "minecraft:andesite_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=false]", + "10823": "minecraft:andesite_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=true]", + "10824": "minecraft:andesite_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=false]", + "10825": "minecraft:andesite_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=true]", + "10826": "minecraft:andesite_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=false]", + "10827": "minecraft:andesite_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=true]", + "10828": "minecraft:andesite_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=false]", + "10829": "minecraft:andesite_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=true]", + "10830": "minecraft:andesite_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=false]", + "10831": "minecraft:andesite_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=true]", + "10832": "minecraft:andesite_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=false]", + "10833": "minecraft:andesite_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=true]", + "10834": "minecraft:andesite_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=false]", + "10835": "minecraft:andesite_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=true]", + "10836": "minecraft:andesite_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=false]", + "10837": "minecraft:andesite_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=true]", + "10838": "minecraft:andesite_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=false]", + "10839": "minecraft:andesite_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=true]", + "10840": "minecraft:andesite_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=false]", + "10841": "minecraft:andesite_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=true]", + "10842": "minecraft:andesite_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=false]", + "10843": "minecraft:red_nether_brick_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=true]", + "10844": "minecraft:red_nether_brick_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=false]", + "10845": "minecraft:red_nether_brick_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=true]", + "10846": "minecraft:red_nether_brick_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=false]", + "10847": "minecraft:red_nether_brick_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=true]", + "10848": "minecraft:red_nether_brick_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=false]", + "10849": "minecraft:red_nether_brick_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=true]", + "10850": "minecraft:red_nether_brick_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=false]", + "10851": "minecraft:red_nether_brick_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=true]", + "10852": "minecraft:red_nether_brick_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=false]", + "10853": "minecraft:red_nether_brick_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=true]", + "10854": "minecraft:red_nether_brick_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=false]", + "10855": "minecraft:red_nether_brick_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=true]", + "10856": "minecraft:red_nether_brick_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=false]", + "10857": "minecraft:red_nether_brick_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=true]", + "10858": "minecraft:red_nether_brick_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=false]", + "10859": "minecraft:red_nether_brick_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=true]", + "10860": "minecraft:red_nether_brick_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=false]", + "10861": "minecraft:red_nether_brick_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=true]", + "10862": "minecraft:red_nether_brick_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=false]", + "10863": "minecraft:red_nether_brick_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=true]", + "10864": "minecraft:red_nether_brick_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=false]", + "10865": "minecraft:red_nether_brick_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=true]", + "10866": "minecraft:red_nether_brick_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=false]", + "10867": "minecraft:red_nether_brick_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=true]", + "10868": "minecraft:red_nether_brick_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=false]", + "10869": "minecraft:red_nether_brick_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=true]", + "10870": "minecraft:red_nether_brick_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=false]", + "10871": "minecraft:red_nether_brick_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=true]", + "10872": "minecraft:red_nether_brick_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=false]", + "10873": "minecraft:red_nether_brick_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=true]", + "10874": "minecraft:red_nether_brick_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=false]", + "10875": "minecraft:red_nether_brick_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=true]", + "10876": "minecraft:red_nether_brick_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=false]", + "10877": "minecraft:red_nether_brick_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=true]", + "10878": "minecraft:red_nether_brick_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=false]", + "10879": "minecraft:red_nether_brick_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=true]", + "10880": "minecraft:red_nether_brick_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=false]", + "10881": "minecraft:red_nether_brick_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=true]", + "10882": "minecraft:red_nether_brick_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=false]", + "10883": "minecraft:red_nether_brick_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=true]", + "10884": "minecraft:red_nether_brick_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=false]", + "10885": "minecraft:red_nether_brick_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=true]", + "10886": "minecraft:red_nether_brick_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=false]", + "10887": "minecraft:red_nether_brick_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=true]", + "10888": "minecraft:red_nether_brick_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=false]", + "10889": "minecraft:red_nether_brick_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=true]", + "10890": "minecraft:red_nether_brick_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=false]", + "10891": "minecraft:red_nether_brick_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=true]", + "10892": "minecraft:red_nether_brick_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=false]", + "10893": "minecraft:red_nether_brick_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=true]", + "10894": "minecraft:red_nether_brick_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=false]", + "10895": "minecraft:red_nether_brick_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=true]", + "10896": "minecraft:red_nether_brick_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=false]", + "10897": "minecraft:red_nether_brick_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=true]", + "10898": "minecraft:red_nether_brick_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=false]", + "10899": "minecraft:red_nether_brick_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=true]", + "10900": "minecraft:red_nether_brick_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=false]", + "10901": "minecraft:red_nether_brick_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=true]", + "10902": "minecraft:red_nether_brick_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=false]", + "10903": "minecraft:red_nether_brick_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=true]", + "10904": "minecraft:red_nether_brick_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=false]", + "10905": "minecraft:red_nether_brick_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=true]", + "10906": "minecraft:red_nether_brick_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=false]", + "10907": "minecraft:sandstone_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=true]", + "10908": "minecraft:sandstone_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=false]", + "10909": "minecraft:sandstone_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=true]", + "10910": "minecraft:sandstone_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=false]", + "10911": "minecraft:sandstone_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=true]", + "10912": "minecraft:sandstone_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=false]", + "10913": "minecraft:sandstone_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=true]", + "10914": "minecraft:sandstone_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=false]", + "10915": "minecraft:sandstone_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=true]", + "10916": "minecraft:sandstone_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=false]", + "10917": "minecraft:sandstone_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=true]", + "10918": "minecraft:sandstone_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=false]", + "10919": "minecraft:sandstone_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=true]", + "10920": "minecraft:sandstone_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=false]", + "10921": "minecraft:sandstone_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=true]", + "10922": "minecraft:sandstone_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=false]", + "10923": "minecraft:sandstone_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=true]", + "10924": "minecraft:sandstone_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=false]", + "10925": "minecraft:sandstone_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=true]", + "10926": "minecraft:sandstone_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=false]", + "10927": "minecraft:sandstone_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=true]", + "10928": "minecraft:sandstone_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=false]", + "10929": "minecraft:sandstone_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=true]", + "10930": "minecraft:sandstone_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=false]", + "10931": "minecraft:sandstone_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=true]", + "10932": "minecraft:sandstone_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=false]", + "10933": "minecraft:sandstone_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=true]", + "10934": "minecraft:sandstone_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=false]", + "10935": "minecraft:sandstone_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=true]", + "10936": "minecraft:sandstone_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=false]", + "10937": "minecraft:sandstone_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=true]", + "10938": "minecraft:sandstone_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=false]", + "10939": "minecraft:sandstone_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=true]", + "10940": "minecraft:sandstone_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=false]", + "10941": "minecraft:sandstone_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=true]", + "10942": "minecraft:sandstone_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=false]", + "10943": "minecraft:sandstone_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=true]", + "10944": "minecraft:sandstone_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=false]", + "10945": "minecraft:sandstone_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=true]", + "10946": "minecraft:sandstone_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=false]", + "10947": "minecraft:sandstone_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=true]", + "10948": "minecraft:sandstone_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=false]", + "10949": "minecraft:sandstone_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=true]", + "10950": "minecraft:sandstone_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=false]", + "10951": "minecraft:sandstone_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=true]", + "10952": "minecraft:sandstone_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=false]", + "10953": "minecraft:sandstone_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=true]", + "10954": "minecraft:sandstone_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=false]", + "10955": "minecraft:sandstone_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=true]", + "10956": "minecraft:sandstone_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=false]", + "10957": "minecraft:sandstone_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=true]", + "10958": "minecraft:sandstone_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=false]", + "10959": "minecraft:sandstone_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=true]", + "10960": "minecraft:sandstone_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=false]", + "10961": "minecraft:sandstone_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=true]", + "10962": "minecraft:sandstone_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=false]", + "10963": "minecraft:sandstone_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=true]", + "10964": "minecraft:sandstone_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=false]", + "10965": "minecraft:sandstone_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=true]", + "10966": "minecraft:sandstone_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=false]", + "10967": "minecraft:sandstone_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=true]", + "10968": "minecraft:sandstone_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=false]", + "10969": "minecraft:sandstone_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=true]", + "10970": "minecraft:sandstone_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=false]", + "10971": "minecraft:end_stone_brick_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=true]", + "10972": "minecraft:end_stone_brick_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=false]", + "10973": "minecraft:end_stone_brick_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=true]", + "10974": "minecraft:end_stone_brick_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=false]", + "10975": "minecraft:end_stone_brick_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=true]", + "10976": "minecraft:end_stone_brick_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=false]", + "10977": "minecraft:end_stone_brick_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=true]", + "10978": "minecraft:end_stone_brick_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=false]", + "10979": "minecraft:end_stone_brick_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=true]", + "10980": "minecraft:end_stone_brick_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=false]", + "10981": "minecraft:end_stone_brick_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=true]", + "10982": "minecraft:end_stone_brick_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=false]", + "10983": "minecraft:end_stone_brick_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=true]", + "10984": "minecraft:end_stone_brick_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=false]", + "10985": "minecraft:end_stone_brick_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=true]", + "10986": "minecraft:end_stone_brick_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=false]", + "10987": "minecraft:end_stone_brick_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=true]", + "10988": "minecraft:end_stone_brick_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=false]", + "10989": "minecraft:end_stone_brick_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=true]", + "10990": "minecraft:end_stone_brick_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=false]", + "10991": "minecraft:end_stone_brick_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=true]", + "10992": "minecraft:end_stone_brick_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=false]", + "10993": "minecraft:end_stone_brick_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=true]", + "10994": "minecraft:end_stone_brick_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=false]", + "10995": "minecraft:end_stone_brick_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=true]", + "10996": "minecraft:end_stone_brick_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=false]", + "10997": "minecraft:end_stone_brick_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=true]", + "10998": "minecraft:end_stone_brick_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=false]", + "10999": "minecraft:end_stone_brick_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=true]", + "11000": "minecraft:end_stone_brick_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=false]", + "11001": "minecraft:end_stone_brick_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=true]", + "11002": "minecraft:end_stone_brick_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=false]", + "11003": "minecraft:end_stone_brick_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=true]", + "11004": "minecraft:end_stone_brick_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=false]", + "11005": "minecraft:end_stone_brick_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=true]", + "11006": "minecraft:end_stone_brick_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=false]", + "11007": "minecraft:end_stone_brick_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=true]", + "11008": "minecraft:end_stone_brick_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=false]", + "11009": "minecraft:end_stone_brick_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=true]", + "11010": "minecraft:end_stone_brick_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=false]", + "11011": "minecraft:end_stone_brick_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=true]", + "11012": "minecraft:end_stone_brick_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=false]", + "11013": "minecraft:end_stone_brick_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=true]", + "11014": "minecraft:end_stone_brick_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=false]", + "11015": "minecraft:end_stone_brick_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=true]", + "11016": "minecraft:end_stone_brick_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=false]", + "11017": "minecraft:end_stone_brick_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=true]", + "11018": "minecraft:end_stone_brick_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=false]", + "11019": "minecraft:end_stone_brick_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=true]", + "11020": "minecraft:end_stone_brick_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=false]", + "11021": "minecraft:end_stone_brick_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=true]", + "11022": "minecraft:end_stone_brick_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=false]", + "11023": "minecraft:end_stone_brick_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=true]", + "11024": "minecraft:end_stone_brick_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=false]", + "11025": "minecraft:end_stone_brick_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=true]", + "11026": "minecraft:end_stone_brick_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=false]", + "11027": "minecraft:end_stone_brick_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=true]", + "11028": "minecraft:end_stone_brick_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=false]", + "11029": "minecraft:end_stone_brick_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=true]", + "11030": "minecraft:end_stone_brick_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=false]", + "11031": "minecraft:end_stone_brick_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=true]", + "11032": "minecraft:end_stone_brick_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=false]", + "11033": "minecraft:end_stone_brick_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=true]", + "11034": "minecraft:end_stone_brick_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=false]", + "11035": "minecraft:diorite_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=true]", + "11036": "minecraft:diorite_wall[east=true,north=true,south=true,up=true,waterlogged=true,west=false]", + "11037": "minecraft:diorite_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=true]", + "11038": "minecraft:diorite_wall[east=true,north=true,south=true,up=true,waterlogged=false,west=false]", + "11039": "minecraft:diorite_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=true]", + "11040": "minecraft:diorite_wall[east=true,north=true,south=true,up=false,waterlogged=true,west=false]", + "11041": "minecraft:diorite_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=true]", + "11042": "minecraft:diorite_wall[east=true,north=true,south=true,up=false,waterlogged=false,west=false]", + "11043": "minecraft:diorite_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=true]", + "11044": "minecraft:diorite_wall[east=true,north=true,south=false,up=true,waterlogged=true,west=false]", + "11045": "minecraft:diorite_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=true]", + "11046": "minecraft:diorite_wall[east=true,north=true,south=false,up=true,waterlogged=false,west=false]", + "11047": "minecraft:diorite_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=true]", + "11048": "minecraft:diorite_wall[east=true,north=true,south=false,up=false,waterlogged=true,west=false]", + "11049": "minecraft:diorite_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=true]", + "11050": "minecraft:diorite_wall[east=true,north=true,south=false,up=false,waterlogged=false,west=false]", + "11051": "minecraft:diorite_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=true]", + "11052": "minecraft:diorite_wall[east=true,north=false,south=true,up=true,waterlogged=true,west=false]", + "11053": "minecraft:diorite_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=true]", + "11054": "minecraft:diorite_wall[east=true,north=false,south=true,up=true,waterlogged=false,west=false]", + "11055": "minecraft:diorite_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=true]", + "11056": "minecraft:diorite_wall[east=true,north=false,south=true,up=false,waterlogged=true,west=false]", + "11057": "minecraft:diorite_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=true]", + "11058": "minecraft:diorite_wall[east=true,north=false,south=true,up=false,waterlogged=false,west=false]", + "11059": "minecraft:diorite_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=true]", + "11060": "minecraft:diorite_wall[east=true,north=false,south=false,up=true,waterlogged=true,west=false]", + "11061": "minecraft:diorite_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=true]", + "11062": "minecraft:diorite_wall[east=true,north=false,south=false,up=true,waterlogged=false,west=false]", + "11063": "minecraft:diorite_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=true]", + "11064": "minecraft:diorite_wall[east=true,north=false,south=false,up=false,waterlogged=true,west=false]", + "11065": "minecraft:diorite_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=true]", + "11066": "minecraft:diorite_wall[east=true,north=false,south=false,up=false,waterlogged=false,west=false]", + "11067": "minecraft:diorite_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=true]", + "11068": "minecraft:diorite_wall[east=false,north=true,south=true,up=true,waterlogged=true,west=false]", + "11069": "minecraft:diorite_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=true]", + "11070": "minecraft:diorite_wall[east=false,north=true,south=true,up=true,waterlogged=false,west=false]", + "11071": "minecraft:diorite_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=true]", + "11072": "minecraft:diorite_wall[east=false,north=true,south=true,up=false,waterlogged=true,west=false]", + "11073": "minecraft:diorite_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=true]", + "11074": "minecraft:diorite_wall[east=false,north=true,south=true,up=false,waterlogged=false,west=false]", + "11075": "minecraft:diorite_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=true]", + "11076": "minecraft:diorite_wall[east=false,north=true,south=false,up=true,waterlogged=true,west=false]", + "11077": "minecraft:diorite_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=true]", + "11078": "minecraft:diorite_wall[east=false,north=true,south=false,up=true,waterlogged=false,west=false]", + "11079": "minecraft:diorite_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=true]", + "11080": "minecraft:diorite_wall[east=false,north=true,south=false,up=false,waterlogged=true,west=false]", + "11081": "minecraft:diorite_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=true]", + "11082": "minecraft:diorite_wall[east=false,north=true,south=false,up=false,waterlogged=false,west=false]", + "11083": "minecraft:diorite_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=true]", + "11084": "minecraft:diorite_wall[east=false,north=false,south=true,up=true,waterlogged=true,west=false]", + "11085": "minecraft:diorite_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=true]", + "11086": "minecraft:diorite_wall[east=false,north=false,south=true,up=true,waterlogged=false,west=false]", + "11087": "minecraft:diorite_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=true]", + "11088": "minecraft:diorite_wall[east=false,north=false,south=true,up=false,waterlogged=true,west=false]", + "11089": "minecraft:diorite_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=true]", + "11090": "minecraft:diorite_wall[east=false,north=false,south=true,up=false,waterlogged=false,west=false]", + "11091": "minecraft:diorite_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=true]", + "11092": "minecraft:diorite_wall[east=false,north=false,south=false,up=true,waterlogged=true,west=false]", + "11093": "minecraft:diorite_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=true]", + "11094": "minecraft:diorite_wall[east=false,north=false,south=false,up=true,waterlogged=false,west=false]", + "11095": "minecraft:diorite_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=true]", + "11096": "minecraft:diorite_wall[east=false,north=false,south=false,up=false,waterlogged=true,west=false]", + "11097": "minecraft:diorite_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=true]", + "11098": "minecraft:diorite_wall[east=false,north=false,south=false,up=false,waterlogged=false,west=false]", + "11099": "minecraft:scaffolding[bottom=true,distance=0,waterlogged=true]", + "11100": "minecraft:scaffolding[bottom=true,distance=0,waterlogged=false]", + "11101": "minecraft:scaffolding[bottom=true,distance=1,waterlogged=true]", + "11102": "minecraft:scaffolding[bottom=true,distance=1,waterlogged=false]", + "11103": "minecraft:scaffolding[bottom=true,distance=2,waterlogged=true]", + "11104": "minecraft:scaffolding[bottom=true,distance=2,waterlogged=false]", + "11105": "minecraft:scaffolding[bottom=true,distance=3,waterlogged=true]", + "11106": "minecraft:scaffolding[bottom=true,distance=3,waterlogged=false]", + "11107": "minecraft:scaffolding[bottom=true,distance=4,waterlogged=true]", + "11108": "minecraft:scaffolding[bottom=true,distance=4,waterlogged=false]", + "11109": "minecraft:scaffolding[bottom=true,distance=5,waterlogged=true]", + "11110": "minecraft:scaffolding[bottom=true,distance=5,waterlogged=false]", + "11111": "minecraft:scaffolding[bottom=true,distance=6,waterlogged=true]", + "11112": "minecraft:scaffolding[bottom=true,distance=6,waterlogged=false]", + "11113": "minecraft:scaffolding[bottom=true,distance=7,waterlogged=true]", + "11114": "minecraft:scaffolding[bottom=true,distance=7,waterlogged=false]", + "11115": "minecraft:scaffolding[bottom=false,distance=0,waterlogged=true]", + "11116": "minecraft:scaffolding[bottom=false,distance=0,waterlogged=false]", + "11117": "minecraft:scaffolding[bottom=false,distance=1,waterlogged=true]", + "11118": "minecraft:scaffolding[bottom=false,distance=1,waterlogged=false]", + "11119": "minecraft:scaffolding[bottom=false,distance=2,waterlogged=true]", + "11120": "minecraft:scaffolding[bottom=false,distance=2,waterlogged=false]", + "11121": "minecraft:scaffolding[bottom=false,distance=3,waterlogged=true]", + "11122": "minecraft:scaffolding[bottom=false,distance=3,waterlogged=false]", + "11123": "minecraft:scaffolding[bottom=false,distance=4,waterlogged=true]", + "11124": "minecraft:scaffolding[bottom=false,distance=4,waterlogged=false]", + "11125": "minecraft:scaffolding[bottom=false,distance=5,waterlogged=true]", + "11126": "minecraft:scaffolding[bottom=false,distance=5,waterlogged=false]", + "11127": "minecraft:scaffolding[bottom=false,distance=6,waterlogged=true]", + "11128": "minecraft:scaffolding[bottom=false,distance=6,waterlogged=false]", + "11129": "minecraft:scaffolding[bottom=false,distance=7,waterlogged=true]", + "11130": "minecraft:scaffolding[bottom=false,distance=7,waterlogged=false]", + "11131": "minecraft:loom[facing=north]", + "11132": "minecraft:loom[facing=south]", + "11133": "minecraft:loom[facing=west]", + "11134": "minecraft:loom[facing=east]", + "11135": "minecraft:barrel[facing=north,open=true]", + "11136": "minecraft:barrel[facing=north,open=false]", + "11137": "minecraft:barrel[facing=east,open=true]", + "11138": "minecraft:barrel[facing=east,open=false]", + "11139": "minecraft:barrel[facing=south,open=true]", + "11140": "minecraft:barrel[facing=south,open=false]", + "11141": "minecraft:barrel[facing=west,open=true]", + "11142": "minecraft:barrel[facing=west,open=false]", + "11143": "minecraft:barrel[facing=up,open=true]", + "11144": "minecraft:barrel[facing=up,open=false]", + "11145": "minecraft:barrel[facing=down,open=true]", + "11146": "minecraft:barrel[facing=down,open=false]", + "11147": "minecraft:smoker[facing=north,lit=true]", + "11148": "minecraft:smoker[facing=north,lit=false]", + "11149": "minecraft:smoker[facing=south,lit=true]", + "11150": "minecraft:smoker[facing=south,lit=false]", + "11151": "minecraft:smoker[facing=west,lit=true]", + "11152": "minecraft:smoker[facing=west,lit=false]", + "11153": "minecraft:smoker[facing=east,lit=true]", + "11154": "minecraft:smoker[facing=east,lit=false]", + "11155": "minecraft:blast_furnace[facing=north,lit=true]", + "11156": "minecraft:blast_furnace[facing=north,lit=false]", + "11157": "minecraft:blast_furnace[facing=south,lit=true]", + "11158": "minecraft:blast_furnace[facing=south,lit=false]", + "11159": "minecraft:blast_furnace[facing=west,lit=true]", + "11160": "minecraft:blast_furnace[facing=west,lit=false]", + "11161": "minecraft:blast_furnace[facing=east,lit=true]", + "11162": "minecraft:blast_furnace[facing=east,lit=false]", + "11163": "minecraft:cartography_table", + "11164": "minecraft:fletching_table", + "11165": "minecraft:grindstone[face=floor,facing=north]", + "11166": "minecraft:grindstone[face=floor,facing=south]", + "11167": "minecraft:grindstone[face=floor,facing=west]", + "11168": "minecraft:grindstone[face=floor,facing=east]", + "11169": "minecraft:grindstone[face=wall,facing=north]", + "11170": "minecraft:grindstone[face=wall,facing=south]", + "11171": "minecraft:grindstone[face=wall,facing=west]", + "11172": "minecraft:grindstone[face=wall,facing=east]", + "11173": "minecraft:grindstone[face=ceiling,facing=north]", + "11174": "minecraft:grindstone[face=ceiling,facing=south]", + "11175": "minecraft:grindstone[face=ceiling,facing=west]", + "11176": "minecraft:grindstone[face=ceiling,facing=east]", + "11177": "minecraft:lectern[facing=north,has_book=true,powered=true]", + "11178": "minecraft:lectern[facing=north,has_book=true,powered=false]", + "11179": "minecraft:lectern[facing=north,has_book=false,powered=true]", + "11180": "minecraft:lectern[facing=north,has_book=false,powered=false]", + "11181": "minecraft:lectern[facing=south,has_book=true,powered=true]", + "11182": "minecraft:lectern[facing=south,has_book=true,powered=false]", + "11183": "minecraft:lectern[facing=south,has_book=false,powered=true]", + "11184": "minecraft:lectern[facing=south,has_book=false,powered=false]", + "11185": "minecraft:lectern[facing=west,has_book=true,powered=true]", + "11186": "minecraft:lectern[facing=west,has_book=true,powered=false]", + "11187": "minecraft:lectern[facing=west,has_book=false,powered=true]", + "11188": "minecraft:lectern[facing=west,has_book=false,powered=false]", + "11189": "minecraft:lectern[facing=east,has_book=true,powered=true]", + "11190": "minecraft:lectern[facing=east,has_book=true,powered=false]", + "11191": "minecraft:lectern[facing=east,has_book=false,powered=true]", + "11192": "minecraft:lectern[facing=east,has_book=false,powered=false]", + "11193": "minecraft:smithing_table", + "11194": "minecraft:stonecutter[facing=north]", + "11195": "minecraft:stonecutter[facing=south]", + "11196": "minecraft:stonecutter[facing=west]", + "11197": "minecraft:stonecutter[facing=east]", + "11198": "minecraft:bell[attachment=floor,facing=north]", + "11199": "minecraft:bell[attachment=floor,facing=south]", + "11200": "minecraft:bell[attachment=floor,facing=west]", + "11201": "minecraft:bell[attachment=floor,facing=east]", + "11202": "minecraft:bell[attachment=ceiling,facing=north]", + "11203": "minecraft:bell[attachment=ceiling,facing=south]", + "11204": "minecraft:bell[attachment=ceiling,facing=west]", + "11205": "minecraft:bell[attachment=ceiling,facing=east]", + "11206": "minecraft:bell[attachment=single_wall,facing=north]", + "11207": "minecraft:bell[attachment=single_wall,facing=south]", + "11208": "minecraft:bell[attachment=single_wall,facing=west]", + "11209": "minecraft:bell[attachment=single_wall,facing=east]", + "11210": "minecraft:bell[attachment=double_wall,facing=north]", + "11211": "minecraft:bell[attachment=double_wall,facing=south]", + "11212": "minecraft:bell[attachment=double_wall,facing=west]", + "11213": "minecraft:bell[attachment=double_wall,facing=east]", + "11214": "minecraft:lantern[hanging=true]", + "11215": "minecraft:lantern[hanging=false]", + "11216": "minecraft:campfire[facing=north,lit=true,signal_fire=true,waterlogged=true]", + "11217": "minecraft:campfire[facing=north,lit=true,signal_fire=true,waterlogged=false]", + "11218": "minecraft:campfire[facing=north,lit=true,signal_fire=false,waterlogged=true]", + "11219": "minecraft:campfire[facing=north,lit=true,signal_fire=false,waterlogged=false]", + "11220": "minecraft:campfire[facing=north,lit=false,signal_fire=true,waterlogged=true]", + "11221": "minecraft:campfire[facing=north,lit=false,signal_fire=true,waterlogged=false]", + "11222": "minecraft:campfire[facing=north,lit=false,signal_fire=false,waterlogged=true]", + "11223": "minecraft:campfire[facing=north,lit=false,signal_fire=false,waterlogged=false]", + "11224": "minecraft:campfire[facing=south,lit=true,signal_fire=true,waterlogged=true]", + "11225": "minecraft:campfire[facing=south,lit=true,signal_fire=true,waterlogged=false]", + "11226": "minecraft:campfire[facing=south,lit=true,signal_fire=false,waterlogged=true]", + "11227": "minecraft:campfire[facing=south,lit=true,signal_fire=false,waterlogged=false]", + "11228": "minecraft:campfire[facing=south,lit=false,signal_fire=true,waterlogged=true]", + "11229": "minecraft:campfire[facing=south,lit=false,signal_fire=true,waterlogged=false]", + "11230": "minecraft:campfire[facing=south,lit=false,signal_fire=false,waterlogged=true]", + "11231": "minecraft:campfire[facing=south,lit=false,signal_fire=false,waterlogged=false]", + "11232": "minecraft:campfire[facing=west,lit=true,signal_fire=true,waterlogged=true]", + "11233": "minecraft:campfire[facing=west,lit=true,signal_fire=true,waterlogged=false]", + "11234": "minecraft:campfire[facing=west,lit=true,signal_fire=false,waterlogged=true]", + "11235": "minecraft:campfire[facing=west,lit=true,signal_fire=false,waterlogged=false]", + "11236": "minecraft:campfire[facing=west,lit=false,signal_fire=true,waterlogged=true]", + "11237": "minecraft:campfire[facing=west,lit=false,signal_fire=true,waterlogged=false]", + "11238": "minecraft:campfire[facing=west,lit=false,signal_fire=false,waterlogged=true]", + "11239": "minecraft:campfire[facing=west,lit=false,signal_fire=false,waterlogged=false]", + "11240": "minecraft:campfire[facing=east,lit=true,signal_fire=true,waterlogged=true]", + "11241": "minecraft:campfire[facing=east,lit=true,signal_fire=true,waterlogged=false]", + "11242": "minecraft:campfire[facing=east,lit=true,signal_fire=false,waterlogged=true]", + "11243": "minecraft:campfire[facing=east,lit=true,signal_fire=false,waterlogged=false]", + "11244": "minecraft:campfire[facing=east,lit=false,signal_fire=true,waterlogged=true]", + "11245": "minecraft:campfire[facing=east,lit=false,signal_fire=true,waterlogged=false]", + "11246": "minecraft:campfire[facing=east,lit=false,signal_fire=false,waterlogged=true]", + "11247": "minecraft:campfire[facing=east,lit=false,signal_fire=false,waterlogged=false]", + "11248": "minecraft:sweet_berry_bush[age=0]", + "11249": "minecraft:sweet_berry_bush[age=1]", + "11250": "minecraft:sweet_berry_bush[age=2]", + "11251": "minecraft:sweet_berry_bush[age=3]", + "11252": "minecraft:structure_block[mode=save]", + "11253": "minecraft:structure_block[mode=load]", + "11254": "minecraft:structure_block[mode=corner]", + "11255": "minecraft:structure_block[mode=data]", + "11256": "minecraft:jigsaw[facing=north]", + "11257": "minecraft:jigsaw[facing=east]", + "11258": "minecraft:jigsaw[facing=south]", + "11259": "minecraft:jigsaw[facing=west]", + "11260": "minecraft:jigsaw[facing=up]", + "11261": "minecraft:jigsaw[facing=down]", + "11262": "minecraft:composter[level=0]", + "11263": "minecraft:composter[level=1]", + "11264": "minecraft:composter[level=2]", + "11265": "minecraft:composter[level=3]", + "11266": "minecraft:composter[level=4]", + "11267": "minecraft:composter[level=5]", + "11268": "minecraft:composter[level=6]", + "11269": "minecraft:composter[level=7]", + "11270": "minecraft:composter[level=8]" + }, + "blocks": { + "0": "air", + "1": "stone", + "2": "granite", + "3": "polished_granite", + "4": "diorite", + "5": "polished_diorite", + "6": "andesite", + "7": "polished_andesite", + "8": "grass_block", + "9": "dirt", + "10": "coarse_dirt", + "11": "podzol", + "12": "cobblestone", + "13": "oak_planks", + "14": "spruce_planks", + "15": "birch_planks", + "16": "jungle_planks", + "17": "acacia_planks", + "18": "dark_oak_planks", + "19": "oak_sapling", + "20": "spruce_sapling", + "21": "birch_sapling", + "22": "jungle_sapling", + "23": "acacia_sapling", + "24": "dark_oak_sapling", + "25": "bedrock", + "26": "water", + "27": "lava", + "28": "sand", + "29": "red_sand", + "30": "gravel", + "31": "gold_ore", + "32": "iron_ore", + "33": "coal_ore", + "34": "oak_log", + "35": "spruce_log", + "36": "birch_log", + "37": "jungle_log", + "38": "acacia_log", + "39": "dark_oak_log", + "40": "stripped_spruce_log", + "41": "stripped_birch_log", + "42": "stripped_jungle_log", + "43": "stripped_acacia_log", + "44": "stripped_dark_oak_log", + "45": "stripped_oak_log", + "46": "oak_wood", + "47": "spruce_wood", + "48": "birch_wood", + "49": "jungle_wood", + "50": "acacia_wood", + "51": "dark_oak_wood", + "52": "stripped_oak_wood", + "53": "stripped_spruce_wood", + "54": "stripped_birch_wood", + "55": "stripped_jungle_wood", + "56": "stripped_acacia_wood", + "57": "stripped_dark_oak_wood", + "58": "oak_leaves", + "59": "spruce_leaves", + "60": "birch_leaves", + "61": "jungle_leaves", + "62": "acacia_leaves", + "63": "dark_oak_leaves", + "64": "sponge", + "65": "wet_sponge", + "66": "glass", + "67": "lapis_ore", + "68": "lapis_block", + "69": "dispenser", + "70": "sandstone", + "71": "chiseled_sandstone", + "72": "cut_sandstone", + "73": "note_block", + "74": "white_bed", + "75": "orange_bed", + "76": "magenta_bed", + "77": "light_blue_bed", + "78": "yellow_bed", + "79": "lime_bed", + "80": "pink_bed", + "81": "gray_bed", + "82": "light_gray_bed", + "83": "cyan_bed", + "84": "purple_bed", + "85": "blue_bed", + "86": "brown_bed", + "87": "green_bed", + "88": "red_bed", + "89": "black_bed", + "90": "powered_rail", + "91": "detector_rail", + "92": "sticky_piston", + "93": "cobweb", + "94": "grass", + "95": "fern", + "96": "dead_bush", + "97": "seagrass", + "98": "tall_seagrass", + "99": "piston", + "100": "piston_head", + "101": "white_wool", + "102": "orange_wool", + "103": "magenta_wool", + "104": "light_blue_wool", + "105": "yellow_wool", + "106": "lime_wool", + "107": "pink_wool", + "108": "gray_wool", + "109": "light_gray_wool", + "110": "cyan_wool", + "111": "purple_wool", + "112": "blue_wool", + "113": "brown_wool", + "114": "green_wool", + "115": "red_wool", + "116": "black_wool", + "117": "moving_piston", + "118": "dandelion", + "119": "poppy", + "120": "blue_orchid", + "121": "allium", + "122": "azure_bluet", + "123": "red_tulip", + "124": "orange_tulip", + "125": "white_tulip", + "126": "pink_tulip", + "127": "oxeye_daisy", + "128": "cornflower", + "129": "wither_rose", + "130": "lily_of_the_valley", + "131": "brown_mushroom", + "132": "red_mushroom", + "133": "gold_block", + "134": "iron_block", + "135": "bricks", + "136": "tnt", + "137": "bookshelf", + "138": "mossy_cobblestone", + "139": "obsidian", + "140": "torch", + "141": "wall_torch", + "142": "fire", + "143": "spawner", + "144": "oak_stairs", + "145": "chest", + "146": "redstone_wire", + "147": "diamond_ore", + "148": "diamond_block", + "149": "crafting_table", + "150": "wheat", + "151": "farmland", + "152": "furnace", + "153": "oak_sign", + "154": "spruce_sign", + "155": "birch_sign", + "156": "acacia_sign", + "157": "jungle_sign", + "158": "dark_oak_sign", + "159": "oak_door", + "160": "ladder", + "161": "rail", + "162": "cobblestone_stairs", + "163": "oak_wall_sign", + "164": "spruce_wall_sign", + "165": "birch_wall_sign", + "166": "acacia_wall_sign", + "167": "jungle_wall_sign", + "168": "dark_oak_wall_sign", + "169": "lever", + "170": "stone_pressure_plate", + "171": "iron_door", + "172": "oak_pressure_plate", + "173": "spruce_pressure_plate", + "174": "birch_pressure_plate", + "175": "jungle_pressure_plate", + "176": "acacia_pressure_plate", + "177": "dark_oak_pressure_plate", + "178": "redstone_ore", + "179": "redstone_torch", + "180": "redstone_wall_torch", + "181": "stone_button", + "182": "snow", + "183": "ice", + "184": "snow_block", + "185": "cactus", + "186": "clay", + "187": "sugar_cane", + "188": "jukebox", + "189": "oak_fence", + "190": "pumpkin", + "191": "netherrack", + "192": "soul_sand", + "193": "glowstone", + "194": "nether_portal", + "195": "carved_pumpkin", + "196": "jack_o_lantern", + "197": "cake", + "198": "repeater", + "199": "white_stained_glass", + "200": "orange_stained_glass", + "201": "magenta_stained_glass", + "202": "light_blue_stained_glass", + "203": "yellow_stained_glass", + "204": "lime_stained_glass", + "205": "pink_stained_glass", + "206": "gray_stained_glass", + "207": "light_gray_stained_glass", + "208": "cyan_stained_glass", + "209": "purple_stained_glass", + "210": "blue_stained_glass", + "211": "brown_stained_glass", + "212": "green_stained_glass", + "213": "red_stained_glass", + "214": "black_stained_glass", + "215": "oak_trapdoor", + "216": "spruce_trapdoor", + "217": "birch_trapdoor", + "218": "jungle_trapdoor", + "219": "acacia_trapdoor", + "220": "dark_oak_trapdoor", + "221": "stone_bricks", + "222": "mossy_stone_bricks", + "223": "cracked_stone_bricks", + "224": "chiseled_stone_bricks", + "225": "infested_stone", + "226": "infested_cobblestone", + "227": "infested_stone_bricks", + "228": "infested_mossy_stone_bricks", + "229": "infested_cracked_stone_bricks", + "230": "infested_chiseled_stone_bricks", + "231": "brown_mushroom_block", + "232": "red_mushroom_block", + "233": "mushroom_stem", + "234": "iron_bars", + "235": "glass_pane", + "236": "melon", + "237": "attached_pumpkin_stem", + "238": "attached_melon_stem", + "239": "pumpkin_stem", + "240": "melon_stem", + "241": "vine", + "242": "oak_fence_gate", + "243": "brick_stairs", + "244": "stone_brick_stairs", + "245": "mycelium", + "246": "lily_pad", + "247": "nether_bricks", + "248": "nether_brick_fence", + "249": "nether_brick_stairs", + "250": "nether_wart", + "251": "enchanting_table", + "252": "brewing_stand", + "253": "cauldron", + "254": "end_portal", + "255": "end_portal_frame", + "256": "end_stone", + "257": "dragon_egg", + "258": "redstone_lamp", + "259": "cocoa", + "260": "sandstone_stairs", + "261": "emerald_ore", + "262": "ender_chest", + "263": "tripwire_hook", + "264": "tripwire", + "265": "emerald_block", + "266": "spruce_stairs", + "267": "birch_stairs", + "268": "jungle_stairs", + "269": "command_block", + "270": "beacon", + "271": "cobblestone_wall", + "272": "mossy_cobblestone_wall", + "273": "flower_pot", + "274": "potted_oak_sapling", + "275": "potted_spruce_sapling", + "276": "potted_birch_sapling", + "277": "potted_jungle_sapling", + "278": "potted_acacia_sapling", + "279": "potted_dark_oak_sapling", + "280": "potted_fern", + "281": "potted_dandelion", + "282": "potted_poppy", + "283": "potted_blue_orchid", + "284": "potted_allium", + "285": "potted_azure_bluet", + "286": "potted_red_tulip", + "287": "potted_orange_tulip", + "288": "potted_white_tulip", + "289": "potted_pink_tulip", + "290": "potted_oxeye_daisy", + "291": "potted_cornflower", + "292": "potted_lily_of_the_valley", + "293": "potted_wither_rose", + "294": "potted_red_mushroom", + "295": "potted_brown_mushroom", + "296": "potted_dead_bush", + "297": "potted_cactus", + "298": "carrots", + "299": "potatoes", + "300": "oak_button", + "301": "spruce_button", + "302": "birch_button", + "303": "jungle_button", + "304": "acacia_button", + "305": "dark_oak_button", + "306": "skeleton_skull", + "307": "skeleton_wall_skull", + "308": "wither_skeleton_skull", + "309": "wither_skeleton_wall_skull", + "310": "zombie_head", + "311": "zombie_wall_head", + "312": "player_head", + "313": "player_wall_head", + "314": "creeper_head", + "315": "creeper_wall_head", + "316": "dragon_head", + "317": "dragon_wall_head", + "318": "anvil", + "319": "chipped_anvil", + "320": "damaged_anvil", + "321": "trapped_chest", + "322": "light_weighted_pressure_plate", + "323": "heavy_weighted_pressure_plate", + "324": "comparator", + "325": "daylight_detector", + "326": "redstone_block", + "327": "nether_quartz_ore", + "328": "hopper", + "329": "quartz_block", + "330": "chiseled_quartz_block", + "331": "quartz_pillar", + "332": "quartz_stairs", + "333": "activator_rail", + "334": "dropper", + "335": "white_terracotta", + "336": "orange_terracotta", + "337": "magenta_terracotta", + "338": "light_blue_terracotta", + "339": "yellow_terracotta", + "340": "lime_terracotta", + "341": "pink_terracotta", + "342": "gray_terracotta", + "343": "light_gray_terracotta", + "344": "cyan_terracotta", + "345": "purple_terracotta", + "346": "blue_terracotta", + "347": "brown_terracotta", + "348": "green_terracotta", + "349": "red_terracotta", + "350": "black_terracotta", + "351": "white_stained_glass_pane", + "352": "orange_stained_glass_pane", + "353": "magenta_stained_glass_pane", + "354": "light_blue_stained_glass_pane", + "355": "yellow_stained_glass_pane", + "356": "lime_stained_glass_pane", + "357": "pink_stained_glass_pane", + "358": "gray_stained_glass_pane", + "359": "light_gray_stained_glass_pane", + "360": "cyan_stained_glass_pane", + "361": "purple_stained_glass_pane", + "362": "blue_stained_glass_pane", + "363": "brown_stained_glass_pane", + "364": "green_stained_glass_pane", + "365": "red_stained_glass_pane", + "366": "black_stained_glass_pane", + "367": "acacia_stairs", + "368": "dark_oak_stairs", + "369": "slime_block", + "370": "barrier", + "371": "iron_trapdoor", + "372": "prismarine", + "373": "prismarine_bricks", + "374": "dark_prismarine", + "375": "prismarine_stairs", + "376": "prismarine_brick_stairs", + "377": "dark_prismarine_stairs", + "378": "prismarine_slab", + "379": "prismarine_brick_slab", + "380": "dark_prismarine_slab", + "381": "sea_lantern", + "382": "hay_block", + "383": "white_carpet", + "384": "orange_carpet", + "385": "magenta_carpet", + "386": "light_blue_carpet", + "387": "yellow_carpet", + "388": "lime_carpet", + "389": "pink_carpet", + "390": "gray_carpet", + "391": "light_gray_carpet", + "392": "cyan_carpet", + "393": "purple_carpet", + "394": "blue_carpet", + "395": "brown_carpet", + "396": "green_carpet", + "397": "red_carpet", + "398": "black_carpet", + "399": "terracotta", + "400": "coal_block", + "401": "packed_ice", + "402": "sunflower", + "403": "lilac", + "404": "rose_bush", + "405": "peony", + "406": "tall_grass", + "407": "large_fern", + "408": "white_banner", + "409": "orange_banner", + "410": "magenta_banner", + "411": "light_blue_banner", + "412": "yellow_banner", + "413": "lime_banner", + "414": "pink_banner", + "415": "gray_banner", + "416": "light_gray_banner", + "417": "cyan_banner", + "418": "purple_banner", + "419": "blue_banner", + "420": "brown_banner", + "421": "green_banner", + "422": "red_banner", + "423": "black_banner", + "424": "white_wall_banner", + "425": "orange_wall_banner", + "426": "magenta_wall_banner", + "427": "light_blue_wall_banner", + "428": "yellow_wall_banner", + "429": "lime_wall_banner", + "430": "pink_wall_banner", + "431": "gray_wall_banner", + "432": "light_gray_wall_banner", + "433": "cyan_wall_banner", + "434": "purple_wall_banner", + "435": "blue_wall_banner", + "436": "brown_wall_banner", + "437": "green_wall_banner", + "438": "red_wall_banner", + "439": "black_wall_banner", + "440": "red_sandstone", + "441": "chiseled_red_sandstone", + "442": "cut_red_sandstone", + "443": "red_sandstone_stairs", + "444": "oak_slab", + "445": "spruce_slab", + "446": "birch_slab", + "447": "jungle_slab", + "448": "acacia_slab", + "449": "dark_oak_slab", + "450": "stone_slab", + "451": "smooth_stone_slab", + "452": "sandstone_slab", + "453": "cut_sandstone_slab", + "454": "petrified_oak_slab", + "455": "cobblestone_slab", + "456": "brick_slab", + "457": "stone_brick_slab", + "458": "nether_brick_slab", + "459": "quartz_slab", + "460": "red_sandstone_slab", + "461": "cut_red_sandstone_slab", + "462": "purpur_slab", + "463": "smooth_stone", + "464": "smooth_sandstone", + "465": "smooth_quartz", + "466": "smooth_red_sandstone", + "467": "spruce_fence_gate", + "468": "birch_fence_gate", + "469": "jungle_fence_gate", + "470": "acacia_fence_gate", + "471": "dark_oak_fence_gate", + "472": "spruce_fence", + "473": "birch_fence", + "474": "jungle_fence", + "475": "acacia_fence", + "476": "dark_oak_fence", + "477": "spruce_door", + "478": "birch_door", + "479": "jungle_door", + "480": "acacia_door", + "481": "dark_oak_door", + "482": "end_rod", + "483": "chorus_plant", + "484": "chorus_flower", + "485": "purpur_block", + "486": "purpur_pillar", + "487": "purpur_stairs", + "488": "end_stone_bricks", + "489": "beetroots", + "490": "grass_path", + "491": "end_gateway", + "492": "repeating_command_block", + "493": "chain_command_block", + "494": "frosted_ice", + "495": "magma_block", + "496": "nether_wart_block", + "497": "red_nether_bricks", + "498": "bone_block", + "499": "structure_void", + "500": "observer", + "501": "shulker_box", + "502": "white_shulker_box", + "503": "orange_shulker_box", + "504": "magenta_shulker_box", + "505": "light_blue_shulker_box", + "506": "yellow_shulker_box", + "507": "lime_shulker_box", + "508": "pink_shulker_box", + "509": "gray_shulker_box", + "510": "light_gray_shulker_box", + "511": "cyan_shulker_box", + "512": "purple_shulker_box", + "513": "blue_shulker_box", + "514": "brown_shulker_box", + "515": "green_shulker_box", + "516": "red_shulker_box", + "517": "black_shulker_box", + "518": "white_glazed_terracotta", + "519": "orange_glazed_terracotta", + "520": "magenta_glazed_terracotta", + "521": "light_blue_glazed_terracotta", + "522": "yellow_glazed_terracotta", + "523": "lime_glazed_terracotta", + "524": "pink_glazed_terracotta", + "525": "gray_glazed_terracotta", + "526": "light_gray_glazed_terracotta", + "527": "cyan_glazed_terracotta", + "528": "purple_glazed_terracotta", + "529": "blue_glazed_terracotta", + "530": "brown_glazed_terracotta", + "531": "green_glazed_terracotta", + "532": "red_glazed_terracotta", + "533": "black_glazed_terracotta", + "534": "white_concrete", + "535": "orange_concrete", + "536": "magenta_concrete", + "537": "light_blue_concrete", + "538": "yellow_concrete", + "539": "lime_concrete", + "540": "pink_concrete", + "541": "gray_concrete", + "542": "light_gray_concrete", + "543": "cyan_concrete", + "544": "purple_concrete", + "545": "blue_concrete", + "546": "brown_concrete", + "547": "green_concrete", + "548": "red_concrete", + "549": "black_concrete", + "550": "white_concrete_powder", + "551": "orange_concrete_powder", + "552": "magenta_concrete_powder", + "553": "light_blue_concrete_powder", + "554": "yellow_concrete_powder", + "555": "lime_concrete_powder", + "556": "pink_concrete_powder", + "557": "gray_concrete_powder", + "558": "light_gray_concrete_powder", + "559": "cyan_concrete_powder", + "560": "purple_concrete_powder", + "561": "blue_concrete_powder", + "562": "brown_concrete_powder", + "563": "green_concrete_powder", + "564": "red_concrete_powder", + "565": "black_concrete_powder", + "566": "kelp", + "567": "kelp_plant", + "568": "dried_kelp_block", + "569": "turtle_egg", + "570": "dead_tube_coral_block", + "571": "dead_brain_coral_block", + "572": "dead_bubble_coral_block", + "573": "dead_fire_coral_block", + "574": "dead_horn_coral_block", + "575": "tube_coral_block", + "576": "brain_coral_block", + "577": "bubble_coral_block", + "578": "fire_coral_block", + "579": "horn_coral_block", + "580": "dead_tube_coral", + "581": "dead_brain_coral", + "582": "dead_bubble_coral", + "583": "dead_fire_coral", + "584": "dead_horn_coral", + "585": "tube_coral", + "586": "brain_coral", + "587": "bubble_coral", + "588": "fire_coral", + "589": "horn_coral", + "590": "dead_tube_coral_fan", + "591": "dead_brain_coral_fan", + "592": "dead_bubble_coral_fan", + "593": "dead_fire_coral_fan", + "594": "dead_horn_coral_fan", + "595": "tube_coral_fan", + "596": "brain_coral_fan", + "597": "bubble_coral_fan", + "598": "fire_coral_fan", + "599": "horn_coral_fan", + "600": "dead_tube_coral_wall_fan", + "601": "dead_brain_coral_wall_fan", + "602": "dead_bubble_coral_wall_fan", + "603": "dead_fire_coral_wall_fan", + "604": "dead_horn_coral_wall_fan", + "605": "tube_coral_wall_fan", + "606": "brain_coral_wall_fan", + "607": "bubble_coral_wall_fan", + "608": "fire_coral_wall_fan", + "609": "horn_coral_wall_fan", + "610": "sea_pickle", + "611": "blue_ice", + "612": "conduit", + "613": "bamboo_sapling", + "614": "bamboo", + "615": "potted_bamboo", + "616": "void_air", + "617": "cave_air", + "618": "bubble_column", + "619": "polished_granite_stairs", + "620": "smooth_red_sandstone_stairs", + "621": "mossy_stone_brick_stairs", + "622": "polished_diorite_stairs", + "623": "mossy_cobblestone_stairs", + "624": "end_stone_brick_stairs", + "625": "stone_stairs", + "626": "smooth_sandstone_stairs", + "627": "smooth_quartz_stairs", + "628": "granite_stairs", + "629": "andesite_stairs", + "630": "red_nether_brick_stairs", + "631": "polished_andesite_stairs", + "632": "diorite_stairs", + "633": "polished_granite_slab", + "634": "smooth_red_sandstone_slab", + "635": "mossy_stone_brick_slab", + "636": "polished_diorite_slab", + "637": "mossy_cobblestone_slab", + "638": "end_stone_brick_slab", + "639": "smooth_sandstone_slab", + "640": "smooth_quartz_slab", + "641": "granite_slab", + "642": "andesite_slab", + "643": "red_nether_brick_slab", + "644": "polished_andesite_slab", + "645": "diorite_slab", + "646": "brick_wall", + "647": "prismarine_wall", + "648": "red_sandstone_wall", + "649": "mossy_stone_brick_wall", + "650": "granite_wall", + "651": "stone_brick_wall", + "652": "nether_brick_wall", + "653": "andesite_wall", + "654": "red_nether_brick_wall", + "655": "sandstone_wall", + "656": "end_stone_brick_wall", + "657": "diorite_wall", + "658": "scaffolding", + "659": "loom", + "660": "barrel", + "661": "smoker", + "662": "blast_furnace", + "663": "cartography_table", + "664": "fletching_table", + "665": "grindstone", + "666": "lectern", + "667": "smithing_table", + "668": "stonecutter", + "669": "bell", + "670": "lantern", + "671": "campfire", + "672": "sweet_berry_bush", + "673": "structure_block", + "674": "jigsaw", + "675": "composter" + }, + "items": { + "0": "minecraft:air", + "1": "minecraft:stone", + "2": "minecraft:granite", + "3": "minecraft:polished_granite", + "4": "minecraft:diorite", + "5": "minecraft:polished_diorite", + "6": "minecraft:andesite", + "7": "minecraft:polished_andesite", + "8": "minecraft:grass_block", + "9": "minecraft:dirt", + "10": "minecraft:coarse_dirt", + "11": "minecraft:podzol", + "12": "minecraft:cobblestone", + "13": "minecraft:oak_planks", + "14": "minecraft:spruce_planks", + "15": "minecraft:birch_planks", + "16": "minecraft:jungle_planks", + "17": "minecraft:acacia_planks", + "18": "minecraft:dark_oak_planks", + "19": "minecraft:oak_sapling", + "20": "minecraft:spruce_sapling", + "21": "minecraft:birch_sapling", + "22": "minecraft:jungle_sapling", + "23": "minecraft:acacia_sapling", + "24": "minecraft:dark_oak_sapling", + "25": "minecraft:bedrock", + "26": "minecraft:sand", + "27": "minecraft:red_sand", + "28": "minecraft:gravel", + "29": "minecraft:gold_ore", + "30": "minecraft:iron_ore", + "31": "minecraft:coal_ore", + "32": "minecraft:oak_log", + "33": "minecraft:spruce_log", + "34": "minecraft:birch_log", + "35": "minecraft:jungle_log", + "36": "minecraft:acacia_log", + "37": "minecraft:dark_oak_log", + "38": "minecraft:stripped_oak_log", + "39": "minecraft:stripped_spruce_log", + "40": "minecraft:stripped_birch_log", + "41": "minecraft:stripped_jungle_log", + "42": "minecraft:stripped_acacia_log", + "43": "minecraft:stripped_dark_oak_log", + "44": "minecraft:stripped_oak_wood", + "45": "minecraft:stripped_spruce_wood", + "46": "minecraft:stripped_birch_wood", + "47": "minecraft:stripped_jungle_wood", + "48": "minecraft:stripped_acacia_wood", + "49": "minecraft:stripped_dark_oak_wood", + "50": "minecraft:oak_wood", + "51": "minecraft:spruce_wood", + "52": "minecraft:birch_wood", + "53": "minecraft:jungle_wood", + "54": "minecraft:acacia_wood", + "55": "minecraft:dark_oak_wood", + "56": "minecraft:oak_leaves", + "57": "minecraft:spruce_leaves", + "58": "minecraft:birch_leaves", + "59": "minecraft:jungle_leaves", + "60": "minecraft:acacia_leaves", + "61": "minecraft:dark_oak_leaves", + "62": "minecraft:sponge", + "63": "minecraft:wet_sponge", + "64": "minecraft:glass", + "65": "minecraft:lapis_ore", + "66": "minecraft:lapis_block", + "67": "minecraft:dispenser", + "68": "minecraft:sandstone", + "69": "minecraft:chiseled_sandstone", + "70": "minecraft:cut_sandstone", + "71": "minecraft:note_block", + "72": "minecraft:powered_rail", + "73": "minecraft:detector_rail", + "74": "minecraft:sticky_piston", + "75": "minecraft:cobweb", + "76": "minecraft:grass", + "77": "minecraft:fern", + "78": "minecraft:dead_bush", + "79": "minecraft:seagrass", + "80": "minecraft:sea_pickle", + "81": "minecraft:piston", + "82": "minecraft:white_wool", + "83": "minecraft:orange_wool", + "84": "minecraft:magenta_wool", + "85": "minecraft:light_blue_wool", + "86": "minecraft:yellow_wool", + "87": "minecraft:lime_wool", + "88": "minecraft:pink_wool", + "89": "minecraft:gray_wool", + "90": "minecraft:light_gray_wool", + "91": "minecraft:cyan_wool", + "92": "minecraft:purple_wool", + "93": "minecraft:blue_wool", + "94": "minecraft:brown_wool", + "95": "minecraft:green_wool", + "96": "minecraft:red_wool", + "97": "minecraft:black_wool", + "98": "minecraft:dandelion", + "99": "minecraft:poppy", + "100": "minecraft:blue_orchid", + "101": "minecraft:allium", + "102": "minecraft:azure_bluet", + "103": "minecraft:red_tulip", + "104": "minecraft:orange_tulip", + "105": "minecraft:white_tulip", + "106": "minecraft:pink_tulip", + "107": "minecraft:oxeye_daisy", + "108": "minecraft:cornflower", + "109": "minecraft:lily_of_the_valley", + "110": "minecraft:wither_rose", + "111": "minecraft:brown_mushroom", + "112": "minecraft:red_mushroom", + "113": "minecraft:gold_block", + "114": "minecraft:iron_block", + "115": "minecraft:oak_slab", + "116": "minecraft:spruce_slab", + "117": "minecraft:birch_slab", + "118": "minecraft:jungle_slab", + "119": "minecraft:acacia_slab", + "120": "minecraft:dark_oak_slab", + "121": "minecraft:stone_slab", + "122": "minecraft:smooth_stone_slab", + "123": "minecraft:sandstone_slab", + "124": "minecraft:cut_sandstone_slab", + "125": "minecraft:petrified_oak_slab", + "126": "minecraft:cobblestone_slab", + "127": "minecraft:brick_slab", + "128": "minecraft:stone_brick_slab", + "129": "minecraft:nether_brick_slab", + "130": "minecraft:quartz_slab", + "131": "minecraft:red_sandstone_slab", + "132": "minecraft:cut_red_sandstone_slab", + "133": "minecraft:purpur_slab", + "134": "minecraft:prismarine_slab", + "135": "minecraft:prismarine_brick_slab", + "136": "minecraft:dark_prismarine_slab", + "137": "minecraft:smooth_quartz", + "138": "minecraft:smooth_red_sandstone", + "139": "minecraft:smooth_sandstone", + "140": "minecraft:smooth_stone", + "141": "minecraft:bricks", + "142": "minecraft:tnt", + "143": "minecraft:bookshelf", + "144": "minecraft:mossy_cobblestone", + "145": "minecraft:obsidian", + "146": "minecraft:torch", + "147": "minecraft:end_rod", + "148": "minecraft:chorus_plant", + "149": "minecraft:chorus_flower", + "150": "minecraft:purpur_block", + "151": "minecraft:purpur_pillar", + "152": "minecraft:purpur_stairs", + "153": "minecraft:spawner", + "154": "minecraft:oak_stairs", + "155": "minecraft:chest", + "156": "minecraft:diamond_ore", + "157": "minecraft:diamond_block", + "158": "minecraft:crafting_table", + "159": "minecraft:farmland", + "160": "minecraft:furnace", + "161": "minecraft:ladder", + "162": "minecraft:rail", + "163": "minecraft:cobblestone_stairs", + "164": "minecraft:lever", + "165": "minecraft:stone_pressure_plate", + "166": "minecraft:oak_pressure_plate", + "167": "minecraft:spruce_pressure_plate", + "168": "minecraft:birch_pressure_plate", + "169": "minecraft:jungle_pressure_plate", + "170": "minecraft:acacia_pressure_plate", + "171": "minecraft:dark_oak_pressure_plate", + "172": "minecraft:redstone_ore", + "173": "minecraft:redstone_torch", + "174": "minecraft:stone_button", + "175": "minecraft:snow", + "176": "minecraft:ice", + "177": "minecraft:snow_block", + "178": "minecraft:cactus", + "179": "minecraft:clay", + "180": "minecraft:jukebox", + "181": "minecraft:oak_fence", + "182": "minecraft:spruce_fence", + "183": "minecraft:birch_fence", + "184": "minecraft:jungle_fence", + "185": "minecraft:acacia_fence", + "186": "minecraft:dark_oak_fence", + "187": "minecraft:pumpkin", + "188": "minecraft:carved_pumpkin", + "189": "minecraft:netherrack", + "190": "minecraft:soul_sand", + "191": "minecraft:glowstone", + "192": "minecraft:jack_o_lantern", + "193": "minecraft:oak_trapdoor", + "194": "minecraft:spruce_trapdoor", + "195": "minecraft:birch_trapdoor", + "196": "minecraft:jungle_trapdoor", + "197": "minecraft:acacia_trapdoor", + "198": "minecraft:dark_oak_trapdoor", + "199": "minecraft:infested_stone", + "200": "minecraft:infested_cobblestone", + "201": "minecraft:infested_stone_bricks", + "202": "minecraft:infested_mossy_stone_bricks", + "203": "minecraft:infested_cracked_stone_bricks", + "204": "minecraft:infested_chiseled_stone_bricks", + "205": "minecraft:stone_bricks", + "206": "minecraft:mossy_stone_bricks", + "207": "minecraft:cracked_stone_bricks", + "208": "minecraft:chiseled_stone_bricks", + "209": "minecraft:brown_mushroom_block", + "210": "minecraft:red_mushroom_block", + "211": "minecraft:mushroom_stem", + "212": "minecraft:iron_bars", + "213": "minecraft:glass_pane", + "214": "minecraft:melon", + "215": "minecraft:vine", + "216": "minecraft:oak_fence_gate", + "217": "minecraft:spruce_fence_gate", + "218": "minecraft:birch_fence_gate", + "219": "minecraft:jungle_fence_gate", + "220": "minecraft:acacia_fence_gate", + "221": "minecraft:dark_oak_fence_gate", + "222": "minecraft:brick_stairs", + "223": "minecraft:stone_brick_stairs", + "224": "minecraft:mycelium", + "225": "minecraft:lily_pad", + "226": "minecraft:nether_bricks", + "227": "minecraft:nether_brick_fence", + "228": "minecraft:nether_brick_stairs", + "229": "minecraft:enchanting_table", + "230": "minecraft:end_portal_frame", + "231": "minecraft:end_stone", + "232": "minecraft:end_stone_bricks", + "233": "minecraft:dragon_egg", + "234": "minecraft:redstone_lamp", + "235": "minecraft:sandstone_stairs", + "236": "minecraft:emerald_ore", + "237": "minecraft:ender_chest", + "238": "minecraft:tripwire_hook", + "239": "minecraft:emerald_block", + "240": "minecraft:spruce_stairs", + "241": "minecraft:birch_stairs", + "242": "minecraft:jungle_stairs", + "243": "minecraft:command_block", + "244": "minecraft:beacon", + "245": "minecraft:cobblestone_wall", + "246": "minecraft:mossy_cobblestone_wall", + "247": "minecraft:brick_wall", + "248": "minecraft:prismarine_wall", + "249": "minecraft:red_sandstone_wall", + "250": "minecraft:mossy_stone_brick_wall", + "251": "minecraft:granite_wall", + "252": "minecraft:stone_brick_wall", + "253": "minecraft:nether_brick_wall", + "254": "minecraft:andesite_wall", + "255": "minecraft:red_nether_brick_wall", + "256": "minecraft:sandstone_wall", + "257": "minecraft:end_stone_brick_wall", + "258": "minecraft:diorite_wall", + "259": "minecraft:oak_button", + "260": "minecraft:spruce_button", + "261": "minecraft:birch_button", + "262": "minecraft:jungle_button", + "263": "minecraft:acacia_button", + "264": "minecraft:dark_oak_button", + "265": "minecraft:anvil", + "266": "minecraft:chipped_anvil", + "267": "minecraft:damaged_anvil", + "268": "minecraft:trapped_chest", + "269": "minecraft:light_weighted_pressure_plate", + "270": "minecraft:heavy_weighted_pressure_plate", + "271": "minecraft:daylight_detector", + "272": "minecraft:redstone_block", + "273": "minecraft:nether_quartz_ore", + "274": "minecraft:hopper", + "275": "minecraft:chiseled_quartz_block", + "276": "minecraft:quartz_block", + "277": "minecraft:quartz_pillar", + "278": "minecraft:quartz_stairs", + "279": "minecraft:activator_rail", + "280": "minecraft:dropper", + "281": "minecraft:white_terracotta", + "282": "minecraft:orange_terracotta", + "283": "minecraft:magenta_terracotta", + "284": "minecraft:light_blue_terracotta", + "285": "minecraft:yellow_terracotta", + "286": "minecraft:lime_terracotta", + "287": "minecraft:pink_terracotta", + "288": "minecraft:gray_terracotta", + "289": "minecraft:light_gray_terracotta", + "290": "minecraft:cyan_terracotta", + "291": "minecraft:purple_terracotta", + "292": "minecraft:blue_terracotta", + "293": "minecraft:brown_terracotta", + "294": "minecraft:green_terracotta", + "295": "minecraft:red_terracotta", + "296": "minecraft:black_terracotta", + "297": "minecraft:barrier", + "298": "minecraft:iron_trapdoor", + "299": "minecraft:hay_block", + "300": "minecraft:white_carpet", + "301": "minecraft:orange_carpet", + "302": "minecraft:magenta_carpet", + "303": "minecraft:light_blue_carpet", + "304": "minecraft:yellow_carpet", + "305": "minecraft:lime_carpet", + "306": "minecraft:pink_carpet", + "307": "minecraft:gray_carpet", + "308": "minecraft:light_gray_carpet", + "309": "minecraft:cyan_carpet", + "310": "minecraft:purple_carpet", + "311": "minecraft:blue_carpet", + "312": "minecraft:brown_carpet", + "313": "minecraft:green_carpet", + "314": "minecraft:red_carpet", + "315": "minecraft:black_carpet", + "316": "minecraft:terracotta", + "317": "minecraft:coal_block", + "318": "minecraft:packed_ice", + "319": "minecraft:acacia_stairs", + "320": "minecraft:dark_oak_stairs", + "321": "minecraft:slime_block", + "322": "minecraft:grass_path", + "323": "minecraft:sunflower", + "324": "minecraft:lilac", + "325": "minecraft:rose_bush", + "326": "minecraft:peony", + "327": "minecraft:tall_grass", + "328": "minecraft:large_fern", + "329": "minecraft:white_stained_glass", + "330": "minecraft:orange_stained_glass", + "331": "minecraft:magenta_stained_glass", + "332": "minecraft:light_blue_stained_glass", + "333": "minecraft:yellow_stained_glass", + "334": "minecraft:lime_stained_glass", + "335": "minecraft:pink_stained_glass", + "336": "minecraft:gray_stained_glass", + "337": "minecraft:light_gray_stained_glass", + "338": "minecraft:cyan_stained_glass", + "339": "minecraft:purple_stained_glass", + "340": "minecraft:blue_stained_glass", + "341": "minecraft:brown_stained_glass", + "342": "minecraft:green_stained_glass", + "343": "minecraft:red_stained_glass", + "344": "minecraft:black_stained_glass", + "345": "minecraft:white_stained_glass_pane", + "346": "minecraft:orange_stained_glass_pane", + "347": "minecraft:magenta_stained_glass_pane", + "348": "minecraft:light_blue_stained_glass_pane", + "349": "minecraft:yellow_stained_glass_pane", + "350": "minecraft:lime_stained_glass_pane", + "351": "minecraft:pink_stained_glass_pane", + "352": "minecraft:gray_stained_glass_pane", + "353": "minecraft:light_gray_stained_glass_pane", + "354": "minecraft:cyan_stained_glass_pane", + "355": "minecraft:purple_stained_glass_pane", + "356": "minecraft:blue_stained_glass_pane", + "357": "minecraft:brown_stained_glass_pane", + "358": "minecraft:green_stained_glass_pane", + "359": "minecraft:red_stained_glass_pane", + "360": "minecraft:black_stained_glass_pane", + "361": "minecraft:prismarine", + "362": "minecraft:prismarine_bricks", + "363": "minecraft:dark_prismarine", + "364": "minecraft:prismarine_stairs", + "365": "minecraft:prismarine_brick_stairs", + "366": "minecraft:dark_prismarine_stairs", + "367": "minecraft:sea_lantern", + "368": "minecraft:red_sandstone", + "369": "minecraft:chiseled_red_sandstone", + "370": "minecraft:cut_red_sandstone", + "371": "minecraft:red_sandstone_stairs", + "372": "minecraft:repeating_command_block", + "373": "minecraft:chain_command_block", + "374": "minecraft:magma_block", + "375": "minecraft:nether_wart_block", + "376": "minecraft:red_nether_bricks", + "377": "minecraft:bone_block", + "378": "minecraft:structure_void", + "379": "minecraft:observer", + "380": "minecraft:shulker_box", + "381": "minecraft:white_shulker_box", + "382": "minecraft:orange_shulker_box", + "383": "minecraft:magenta_shulker_box", + "384": "minecraft:light_blue_shulker_box", + "385": "minecraft:yellow_shulker_box", + "386": "minecraft:lime_shulker_box", + "387": "minecraft:pink_shulker_box", + "388": "minecraft:gray_shulker_box", + "389": "minecraft:light_gray_shulker_box", + "390": "minecraft:cyan_shulker_box", + "391": "minecraft:purple_shulker_box", + "392": "minecraft:blue_shulker_box", + "393": "minecraft:brown_shulker_box", + "394": "minecraft:green_shulker_box", + "395": "minecraft:red_shulker_box", + "396": "minecraft:black_shulker_box", + "397": "minecraft:white_glazed_terracotta", + "398": "minecraft:orange_glazed_terracotta", + "399": "minecraft:magenta_glazed_terracotta", + "400": "minecraft:light_blue_glazed_terracotta", + "401": "minecraft:yellow_glazed_terracotta", + "402": "minecraft:lime_glazed_terracotta", + "403": "minecraft:pink_glazed_terracotta", + "404": "minecraft:gray_glazed_terracotta", + "405": "minecraft:light_gray_glazed_terracotta", + "406": "minecraft:cyan_glazed_terracotta", + "407": "minecraft:purple_glazed_terracotta", + "408": "minecraft:blue_glazed_terracotta", + "409": "minecraft:brown_glazed_terracotta", + "410": "minecraft:green_glazed_terracotta", + "411": "minecraft:red_glazed_terracotta", + "412": "minecraft:black_glazed_terracotta", + "413": "minecraft:white_concrete", + "414": "minecraft:orange_concrete", + "415": "minecraft:magenta_concrete", + "416": "minecraft:light_blue_concrete", + "417": "minecraft:yellow_concrete", + "418": "minecraft:lime_concrete", + "419": "minecraft:pink_concrete", + "420": "minecraft:gray_concrete", + "421": "minecraft:light_gray_concrete", + "422": "minecraft:cyan_concrete", + "423": "minecraft:purple_concrete", + "424": "minecraft:blue_concrete", + "425": "minecraft:brown_concrete", + "426": "minecraft:green_concrete", + "427": "minecraft:red_concrete", + "428": "minecraft:black_concrete", + "429": "minecraft:white_concrete_powder", + "430": "minecraft:orange_concrete_powder", + "431": "minecraft:magenta_concrete_powder", + "432": "minecraft:light_blue_concrete_powder", + "433": "minecraft:yellow_concrete_powder", + "434": "minecraft:lime_concrete_powder", + "435": "minecraft:pink_concrete_powder", + "436": "minecraft:gray_concrete_powder", + "437": "minecraft:light_gray_concrete_powder", + "438": "minecraft:cyan_concrete_powder", + "439": "minecraft:purple_concrete_powder", + "440": "minecraft:blue_concrete_powder", + "441": "minecraft:brown_concrete_powder", + "442": "minecraft:green_concrete_powder", + "443": "minecraft:red_concrete_powder", + "444": "minecraft:black_concrete_powder", + "445": "minecraft:turtle_egg", + "446": "minecraft:dead_tube_coral_block", + "447": "minecraft:dead_brain_coral_block", + "448": "minecraft:dead_bubble_coral_block", + "449": "minecraft:dead_fire_coral_block", + "450": "minecraft:dead_horn_coral_block", + "451": "minecraft:tube_coral_block", + "452": "minecraft:brain_coral_block", + "453": "minecraft:bubble_coral_block", + "454": "minecraft:fire_coral_block", + "455": "minecraft:horn_coral_block", + "456": "minecraft:tube_coral", + "457": "minecraft:brain_coral", + "458": "minecraft:bubble_coral", + "459": "minecraft:fire_coral", + "460": "minecraft:horn_coral", + "461": "minecraft:dead_brain_coral", + "462": "minecraft:dead_bubble_coral", + "463": "minecraft:dead_fire_coral", + "464": "minecraft:dead_horn_coral", + "465": "minecraft:dead_tube_coral", + "466": "minecraft:tube_coral_fan", + "467": "minecraft:brain_coral_fan", + "468": "minecraft:bubble_coral_fan", + "469": "minecraft:fire_coral_fan", + "470": "minecraft:horn_coral_fan", + "471": "minecraft:dead_tube_coral_fan", + "472": "minecraft:dead_brain_coral_fan", + "473": "minecraft:dead_bubble_coral_fan", + "474": "minecraft:dead_fire_coral_fan", + "475": "minecraft:dead_horn_coral_fan", + "476": "minecraft:blue_ice", + "477": "minecraft:conduit", + "478": "minecraft:polished_granite_stairs", + "479": "minecraft:smooth_red_sandstone_stairs", + "480": "minecraft:mossy_stone_brick_stairs", + "481": "minecraft:polished_diorite_stairs", + "482": "minecraft:mossy_cobblestone_stairs", + "483": "minecraft:end_stone_brick_stairs", + "484": "minecraft:stone_stairs", + "485": "minecraft:smooth_sandstone_stairs", + "486": "minecraft:smooth_quartz_stairs", + "487": "minecraft:granite_stairs", + "488": "minecraft:andesite_stairs", + "489": "minecraft:red_nether_brick_stairs", + "490": "minecraft:polished_andesite_stairs", + "491": "minecraft:diorite_stairs", + "492": "minecraft:polished_granite_slab", + "493": "minecraft:smooth_red_sandstone_slab", + "494": "minecraft:mossy_stone_brick_slab", + "495": "minecraft:polished_diorite_slab", + "496": "minecraft:mossy_cobblestone_slab", + "497": "minecraft:end_stone_brick_slab", + "498": "minecraft:smooth_sandstone_slab", + "499": "minecraft:smooth_quartz_slab", + "500": "minecraft:granite_slab", + "501": "minecraft:andesite_slab", + "502": "minecraft:red_nether_brick_slab", + "503": "minecraft:polished_andesite_slab", + "504": "minecraft:diorite_slab", + "505": "minecraft:scaffolding", + "506": "minecraft:iron_door", + "507": "minecraft:oak_door", + "508": "minecraft:spruce_door", + "509": "minecraft:birch_door", + "510": "minecraft:jungle_door", + "511": "minecraft:acacia_door", + "512": "minecraft:dark_oak_door", + "513": "minecraft:repeater", + "514": "minecraft:comparator", + "515": "minecraft:structure_block", + "516": "minecraft:jigsaw", + "517": "minecraft:composter", + "518": "minecraft:turtle_helmet", + "519": "minecraft:scute", + "520": "minecraft:iron_shovel", + "521": "minecraft:iron_pickaxe", + "522": "minecraft:iron_axe", + "523": "minecraft:flint_and_steel", + "524": "minecraft:apple", + "525": "minecraft:bow", + "526": "minecraft:arrow", + "527": "minecraft:coal", + "528": "minecraft:charcoal", + "529": "minecraft:diamond", + "530": "minecraft:iron_ingot", + "531": "minecraft:gold_ingot", + "532": "minecraft:iron_sword", + "533": "minecraft:wooden_sword", + "534": "minecraft:wooden_shovel", + "535": "minecraft:wooden_pickaxe", + "536": "minecraft:wooden_axe", + "537": "minecraft:stone_sword", + "538": "minecraft:stone_shovel", + "539": "minecraft:stone_pickaxe", + "540": "minecraft:stone_axe", + "541": "minecraft:diamond_sword", + "542": "minecraft:diamond_shovel", + "543": "minecraft:diamond_pickaxe", + "544": "minecraft:diamond_axe", + "545": "minecraft:stick", + "546": "minecraft:bowl", + "547": "minecraft:mushroom_stew", + "548": "minecraft:golden_sword", + "549": "minecraft:golden_shovel", + "550": "minecraft:golden_pickaxe", + "551": "minecraft:golden_axe", + "552": "minecraft:string", + "553": "minecraft:feather", + "554": "minecraft:gunpowder", + "555": "minecraft:wooden_hoe", + "556": "minecraft:stone_hoe", + "557": "minecraft:iron_hoe", + "558": "minecraft:diamond_hoe", + "559": "minecraft:golden_hoe", + "560": "minecraft:wheat_seeds", + "561": "minecraft:wheat", + "562": "minecraft:bread", + "563": "minecraft:leather_helmet", + "564": "minecraft:leather_chestplate", + "565": "minecraft:leather_leggings", + "566": "minecraft:leather_boots", + "567": "minecraft:chainmail_helmet", + "568": "minecraft:chainmail_chestplate", + "569": "minecraft:chainmail_leggings", + "570": "minecraft:chainmail_boots", + "571": "minecraft:iron_helmet", + "572": "minecraft:iron_chestplate", + "573": "minecraft:iron_leggings", + "574": "minecraft:iron_boots", + "575": "minecraft:diamond_helmet", + "576": "minecraft:diamond_chestplate", + "577": "minecraft:diamond_leggings", + "578": "minecraft:diamond_boots", + "579": "minecraft:golden_helmet", + "580": "minecraft:golden_chestplate", + "581": "minecraft:golden_leggings", + "582": "minecraft:golden_boots", + "583": "minecraft:flint", + "584": "minecraft:porkchop", + "585": "minecraft:cooked_porkchop", + "586": "minecraft:painting", + "587": "minecraft:golden_apple", + "588": "minecraft:enchanted_golden_apple", + "589": "minecraft:oak_sign", + "590": "minecraft:spruce_sign", + "591": "minecraft:birch_sign", + "592": "minecraft:jungle_sign", + "593": "minecraft:acacia_sign", + "594": "minecraft:dark_oak_sign", + "595": "minecraft:bucket", + "596": "minecraft:water_bucket", + "597": "minecraft:lava_bucket", + "598": "minecraft:minecart", + "599": "minecraft:saddle", + "600": "minecraft:redstone", + "601": "minecraft:snowball", + "602": "minecraft:oak_boat", + "603": "minecraft:leather", + "604": "minecraft:milk_bucket", + "605": "minecraft:pufferfish_bucket", + "606": "minecraft:salmon_bucket", + "607": "minecraft:cod_bucket", + "608": "minecraft:tropical_fish_bucket", + "609": "minecraft:brick", + "610": "minecraft:clay_ball", + "611": "minecraft:sugar_cane", + "612": "minecraft:kelp", + "613": "minecraft:dried_kelp_block", + "614": "minecraft:bamboo", + "615": "minecraft:paper", + "616": "minecraft:book", + "617": "minecraft:slime_ball", + "618": "minecraft:chest_minecart", + "619": "minecraft:furnace_minecart", + "620": "minecraft:egg", + "621": "minecraft:compass", + "622": "minecraft:fishing_rod", + "623": "minecraft:clock", + "624": "minecraft:glowstone_dust", + "625": "minecraft:cod", + "626": "minecraft:salmon", + "627": "minecraft:tropical_fish", + "628": "minecraft:pufferfish", + "629": "minecraft:cooked_cod", + "630": "minecraft:cooked_salmon", + "631": "minecraft:ink_sac", + "632": "minecraft:red_dye", + "633": "minecraft:green_dye", + "634": "minecraft:cocoa_beans", + "635": "minecraft:lapis_lazuli", + "636": "minecraft:purple_dye", + "637": "minecraft:cyan_dye", + "638": "minecraft:light_gray_dye", + "639": "minecraft:gray_dye", + "640": "minecraft:pink_dye", + "641": "minecraft:lime_dye", + "642": "minecraft:yellow_dye", + "643": "minecraft:light_blue_dye", + "644": "minecraft:magenta_dye", + "645": "minecraft:orange_dye", + "646": "minecraft:bone_meal", + "647": "minecraft:blue_dye", + "648": "minecraft:brown_dye", + "649": "minecraft:black_dye", + "650": "minecraft:white_dye", + "651": "minecraft:bone", + "652": "minecraft:sugar", + "653": "minecraft:cake", + "654": "minecraft:white_bed", + "655": "minecraft:orange_bed", + "656": "minecraft:magenta_bed", + "657": "minecraft:light_blue_bed", + "658": "minecraft:yellow_bed", + "659": "minecraft:lime_bed", + "660": "minecraft:pink_bed", + "661": "minecraft:gray_bed", + "662": "minecraft:light_gray_bed", + "663": "minecraft:cyan_bed", + "664": "minecraft:purple_bed", + "665": "minecraft:blue_bed", + "666": "minecraft:brown_bed", + "667": "minecraft:green_bed", + "668": "minecraft:red_bed", + "669": "minecraft:black_bed", + "670": "minecraft:cookie", + "671": "minecraft:filled_map", + "672": "minecraft:shears", + "673": "minecraft:melon_slice", + "674": "minecraft:dried_kelp", + "675": "minecraft:pumpkin_seeds", + "676": "minecraft:melon_seeds", + "677": "minecraft:beef", + "678": "minecraft:cooked_beef", + "679": "minecraft:chicken", + "680": "minecraft:cooked_chicken", + "681": "minecraft:rotten_flesh", + "682": "minecraft:ender_pearl", + "683": "minecraft:blaze_rod", + "684": "minecraft:ghast_tear", + "685": "minecraft:gold_nugget", + "686": "minecraft:nether_wart", + "687": "minecraft:potion", + "688": "minecraft:glass_bottle", + "689": "minecraft:spider_eye", + "690": "minecraft:fermented_spider_eye", + "691": "minecraft:blaze_powder", + "692": "minecraft:magma_cream", + "693": "minecraft:brewing_stand", + "694": "minecraft:cauldron", + "695": "minecraft:ender_eye", + "696": "minecraft:glistering_melon_slice", + "697": "minecraft:bat_spawn_egg", + "698": "minecraft:blaze_spawn_egg", + "699": "minecraft:cat_spawn_egg", + "700": "minecraft:cave_spider_spawn_egg", + "701": "minecraft:chicken_spawn_egg", + "702": "minecraft:cod_spawn_egg", + "703": "minecraft:cow_spawn_egg", + "704": "minecraft:creeper_spawn_egg", + "705": "minecraft:dolphin_spawn_egg", + "706": "minecraft:donkey_spawn_egg", + "707": "minecraft:drowned_spawn_egg", + "708": "minecraft:elder_guardian_spawn_egg", + "709": "minecraft:enderman_spawn_egg", + "710": "minecraft:endermite_spawn_egg", + "711": "minecraft:evoker_spawn_egg", + "712": "minecraft:fox_spawn_egg", + "713": "minecraft:ghast_spawn_egg", + "714": "minecraft:guardian_spawn_egg", + "715": "minecraft:horse_spawn_egg", + "716": "minecraft:husk_spawn_egg", + "717": "minecraft:llama_spawn_egg", + "718": "minecraft:magma_cube_spawn_egg", + "719": "minecraft:mooshroom_spawn_egg", + "720": "minecraft:mule_spawn_egg", + "721": "minecraft:ocelot_spawn_egg", + "722": "minecraft:panda_spawn_egg", + "723": "minecraft:parrot_spawn_egg", + "724": "minecraft:phantom_spawn_egg", + "725": "minecraft:pig_spawn_egg", + "726": "minecraft:pillager_spawn_egg", + "727": "minecraft:polar_bear_spawn_egg", + "728": "minecraft:pufferfish_spawn_egg", + "729": "minecraft:rabbit_spawn_egg", + "730": "minecraft:ravager_spawn_egg", + "731": "minecraft:salmon_spawn_egg", + "732": "minecraft:sheep_spawn_egg", + "733": "minecraft:shulker_spawn_egg", + "734": "minecraft:silverfish_spawn_egg", + "735": "minecraft:skeleton_spawn_egg", + "736": "minecraft:skeleton_horse_spawn_egg", + "737": "minecraft:slime_spawn_egg", + "738": "minecraft:spider_spawn_egg", + "739": "minecraft:squid_spawn_egg", + "740": "minecraft:stray_spawn_egg", + "741": "minecraft:trader_llama_spawn_egg", + "742": "minecraft:tropical_fish_spawn_egg", + "743": "minecraft:turtle_spawn_egg", + "744": "minecraft:vex_spawn_egg", + "745": "minecraft:villager_spawn_egg", + "746": "minecraft:vindicator_spawn_egg", + "747": "minecraft:wandering_trader_spawn_egg", + "748": "minecraft:witch_spawn_egg", + "749": "minecraft:wither_skeleton_spawn_egg", + "750": "minecraft:wolf_spawn_egg", + "751": "minecraft:zombie_spawn_egg", + "752": "minecraft:zombie_horse_spawn_egg", + "753": "minecraft:zombie_pigman_spawn_egg", + "754": "minecraft:zombie_villager_spawn_egg", + "755": "minecraft:experience_bottle", + "756": "minecraft:fire_charge", + "757": "minecraft:writable_book", + "758": "minecraft:written_book", + "759": "minecraft:emerald", + "760": "minecraft:item_frame", + "761": "minecraft:flower_pot", + "762": "minecraft:carrot", + "763": "minecraft:potato", + "764": "minecraft:baked_potato", + "765": "minecraft:poisonous_potato", + "766": "minecraft:map", + "767": "minecraft:golden_carrot", + "768": "minecraft:skeleton_skull", + "769": "minecraft:wither_skeleton_skull", + "770": "minecraft:player_head", + "771": "minecraft:zombie_head", + "772": "minecraft:creeper_head", + "773": "minecraft:dragon_head", + "774": "minecraft:carrot_on_a_stick", + "775": "minecraft:nether_star", + "776": "minecraft:pumpkin_pie", + "777": "minecraft:firework_rocket", + "778": "minecraft:firework_star", + "779": "minecraft:enchanted_book", + "780": "minecraft:nether_brick", + "781": "minecraft:quartz", + "782": "minecraft:tnt_minecart", + "783": "minecraft:hopper_minecart", + "784": "minecraft:prismarine_shard", + "785": "minecraft:prismarine_crystals", + "786": "minecraft:rabbit", + "787": "minecraft:cooked_rabbit", + "788": "minecraft:rabbit_stew", + "789": "minecraft:rabbit_foot", + "790": "minecraft:rabbit_hide", + "791": "minecraft:armor_stand", + "792": "minecraft:iron_horse_armor", + "793": "minecraft:golden_horse_armor", + "794": "minecraft:diamond_horse_armor", + "795": "minecraft:leather_horse_armor", + "796": "minecraft:lead", + "797": "minecraft:name_tag", + "798": "minecraft:command_block_minecart", + "799": "minecraft:mutton", + "800": "minecraft:cooked_mutton", + "801": "minecraft:white_banner", + "802": "minecraft:orange_banner", + "803": "minecraft:magenta_banner", + "804": "minecraft:light_blue_banner", + "805": "minecraft:yellow_banner", + "806": "minecraft:lime_banner", + "807": "minecraft:pink_banner", + "808": "minecraft:gray_banner", + "809": "minecraft:light_gray_banner", + "810": "minecraft:cyan_banner", + "811": "minecraft:purple_banner", + "812": "minecraft:blue_banner", + "813": "minecraft:brown_banner", + "814": "minecraft:green_banner", + "815": "minecraft:red_banner", + "816": "minecraft:black_banner", + "817": "minecraft:end_crystal", + "818": "minecraft:chorus_fruit", + "819": "minecraft:popped_chorus_fruit", + "820": "minecraft:beetroot", + "821": "minecraft:beetroot_seeds", + "822": "minecraft:beetroot_soup", + "823": "minecraft:dragon_breath", + "824": "minecraft:splash_potion", + "825": "minecraft:spectral_arrow", + "826": "minecraft:tipped_arrow", + "827": "minecraft:lingering_potion", + "828": "minecraft:shield", + "829": "minecraft:elytra", + "830": "minecraft:spruce_boat", + "831": "minecraft:birch_boat", + "832": "minecraft:jungle_boat", + "833": "minecraft:acacia_boat", + "834": "minecraft:dark_oak_boat", + "835": "minecraft:totem_of_undying", + "836": "minecraft:shulker_shell", + "837": "minecraft:iron_nugget", + "838": "minecraft:knowledge_book", + "839": "minecraft:debug_stick", + "840": "minecraft:music_disc_13", + "841": "minecraft:music_disc_cat", + "842": "minecraft:music_disc_blocks", + "843": "minecraft:music_disc_chirp", + "844": "minecraft:music_disc_far", + "845": "minecraft:music_disc_mall", + "846": "minecraft:music_disc_mellohi", + "847": "minecraft:music_disc_stal", + "848": "minecraft:music_disc_strad", + "849": "minecraft:music_disc_ward", + "850": "minecraft:music_disc_11", + "851": "minecraft:music_disc_wait", + "852": "minecraft:trident", + "853": "minecraft:phantom_membrane", + "854": "minecraft:nautilus_shell", + "855": "minecraft:heart_of_the_sea", + "856": "minecraft:crossbow", + "857": "minecraft:suspicious_stew", + "858": "minecraft:loom", + "859": "minecraft:flower_banner_pattern", + "860": "minecraft:creeper_banner_pattern", + "861": "minecraft:skull_banner_pattern", + "862": "minecraft:mojang_banner_pattern", + "863": "minecraft:globe_banner_pattern", + "864": "minecraft:barrel", + "865": "minecraft:smoker", + "866": "minecraft:blast_furnace", + "867": "minecraft:cartography_table", + "868": "minecraft:fletching_table", + "869": "minecraft:grindstone", + "870": "minecraft:lectern", + "871": "minecraft:smithing_table", + "872": "minecraft:stonecutter", + "873": "minecraft:bell", + "874": "minecraft:lantern", + "875": "minecraft:sweet_berries", + "876": "minecraft:campfire", + "877": "minecraft:red_key", + "878": "minecraft:blue_key", + "879": "minecraft:yellow_key", + "880": "minecraft:3d" + }, + "sounds": [ + "ambient.cave", + "ambient.underwater.enter", + "ambient.underwater.exit", + "ambient.underwater.loop", + "ambient.underwater.loop.additions", + "ambient.underwater.loop.additions.rare", + "ambient.underwater.loop.additions.ultra_rare", + "block.anvil.break", + "block.anvil.destroy", + "block.anvil.fall", + "block.anvil.hit", + "block.anvil.land", + "block.anvil.place", + "block.anvil.step", + "block.anvil.use", + "item.armor.equip_chain", + "item.armor.equip_diamond", + "item.armor.equip_elytra", + "item.armor.equip_generic", + "item.armor.equip_gold", + "item.armor.equip_iron", + "item.armor.equip_leather", + "item.armor.equip_turtle", + "entity.armor_stand.break", + "entity.armor_stand.fall", + "entity.armor_stand.hit", + "entity.armor_stand.place", + "entity.arrow.hit", + "entity.arrow.hit_player", + "entity.arrow.shoot", + "item.axe.strip", + "block.bamboo.break", + "block.bamboo.fall", + "block.bamboo.hit", + "block.bamboo.place", + "block.bamboo.step", + "block.bamboo_sapling.break", + "block.bamboo_sapling.hit", + "block.bamboo_sapling.place", + "block.barrel.close", + "block.barrel.open", + "entity.bat.ambient", + "entity.bat.death", + "entity.bat.hurt", + "entity.bat.loop", + "entity.bat.takeoff", + "block.beacon.activate", + "block.beacon.ambient", + "block.beacon.deactivate", + "block.beacon.power_select", + "block.bell.use", + "block.bell.resonate", + "entity.blaze.ambient", + "entity.blaze.burn", + "entity.blaze.death", + "entity.blaze.hurt", + "entity.blaze.shoot", + "entity.boat.paddle_land", + "entity.boat.paddle_water", + "item.book.page_turn", + "item.book.put", + "entity.fishing_bobber.retrieve", + "entity.fishing_bobber.splash", + "entity.fishing_bobber.throw", + "block.blastfurnace.fire_crackle", + "item.bottle.empty", + "item.bottle.fill", + "item.bottle.fill_dragonbreath", + "block.brewing_stand.brew", + "block.bubble_column.bubble_pop", + "block.bubble_column.upwards_ambient", + "block.bubble_column.upwards_inside", + "block.bubble_column.whirlpool_ambient", + "block.bubble_column.whirlpool_inside", + "item.bucket.empty", + "item.bucket.empty_fish", + "item.bucket.empty_lava", + "item.bucket.fill", + "item.bucket.fill_fish", + "item.bucket.fill_lava", + "block.campfire.crackle", + "entity.cat.ambient", + "entity.cat.stray_ambient", + "entity.cat.death", + "entity.cat.eat", + "entity.cat.hiss", + "entity.cat.beg_for_food", + "entity.cat.hurt", + "entity.cat.purr", + "entity.cat.purreow", + "block.chest.close", + "block.chest.locked", + "block.chest.open", + "entity.chicken.ambient", + "entity.chicken.death", + "entity.chicken.egg", + "entity.chicken.hurt", + "entity.chicken.step", + "block.chorus_flower.death", + "block.chorus_flower.grow", + "item.chorus_fruit.teleport", + "block.wool.break", + "block.wool.fall", + "block.wool.hit", + "block.wool.place", + "block.wool.step", + "entity.cod.ambient", + "entity.cod.death", + "entity.cod.flop", + "entity.cod.hurt", + "block.comparator.click", + "block.composter.empty", + "block.composter.fill", + "block.composter.fill_success", + "block.composter.ready", + "block.conduit.activate", + "block.conduit.ambient", + "block.conduit.ambient.short", + "block.conduit.attack.target", + "block.conduit.deactivate", + "entity.cow.ambient", + "entity.cow.death", + "entity.cow.hurt", + "entity.cow.milk", + "entity.cow.step", + "entity.creeper.death", + "entity.creeper.hurt", + "entity.creeper.primed", + "block.crop.break", + "item.crop.plant", + "item.crossbow.hit", + "item.crossbow.loading_end", + "item.crossbow.loading_middle", + "item.crossbow.loading_start", + "item.crossbow.quick_charge_1", + "item.crossbow.quick_charge_2", + "item.crossbow.quick_charge_3", + "item.crossbow.shoot", + "block.dispenser.dispense", + "block.dispenser.fail", + "block.dispenser.launch", + "entity.dolphin.ambient", + "entity.dolphin.ambient_water", + "entity.dolphin.attack", + "entity.dolphin.death", + "entity.dolphin.eat", + "entity.dolphin.hurt", + "entity.dolphin.jump", + "entity.dolphin.play", + "entity.dolphin.splash", + "entity.dolphin.swim", + "entity.donkey.ambient", + "entity.donkey.angry", + "entity.donkey.chest", + "entity.donkey.death", + "entity.donkey.hurt", + "entity.drowned.ambient", + "entity.drowned.ambient_water", + "entity.drowned.death", + "entity.drowned.death_water", + "entity.drowned.hurt", + "entity.drowned.hurt_water", + "entity.drowned.shoot", + "entity.drowned.step", + "entity.drowned.swim", + "entity.egg.throw", + "entity.elder_guardian.ambient", + "entity.elder_guardian.ambient_land", + "entity.elder_guardian.curse", + "entity.elder_guardian.death", + "entity.elder_guardian.death_land", + "entity.elder_guardian.flop", + "entity.elder_guardian.hurt", + "entity.elder_guardian.hurt_land", + "item.elytra.flying", + "block.enchantment_table.use", + "block.ender_chest.close", + "block.ender_chest.open", + "entity.ender_dragon.ambient", + "entity.ender_dragon.death", + "entity.dragon_fireball.explode", + "entity.ender_dragon.flap", + "entity.ender_dragon.growl", + "entity.ender_dragon.hurt", + "entity.ender_dragon.shoot", + "entity.ender_eye.death", + "entity.ender_eye.launch", + "entity.enderman.ambient", + "entity.enderman.death", + "entity.enderman.hurt", + "entity.enderman.scream", + "entity.enderman.stare", + "entity.enderman.teleport", + "entity.endermite.ambient", + "entity.endermite.death", + "entity.endermite.hurt", + "entity.endermite.step", + "entity.ender_pearl.throw", + "block.end_gateway.spawn", + "block.end_portal_frame.fill", + "block.end_portal.spawn", + "entity.evoker.ambient", + "entity.evoker.cast_spell", + "entity.evoker.celebrate", + "entity.evoker.death", + "entity.evoker_fangs.attack", + "entity.evoker.hurt", + "entity.evoker.prepare_attack", + "entity.evoker.prepare_summon", + "entity.evoker.prepare_wololo", + "entity.experience_bottle.throw", + "entity.experience_orb.pickup", + "block.fence_gate.close", + "block.fence_gate.open", + "item.firecharge.use", + "entity.firework_rocket.blast", + "entity.firework_rocket.blast_far", + "entity.firework_rocket.large_blast", + "entity.firework_rocket.large_blast_far", + "entity.firework_rocket.launch", + "entity.firework_rocket.shoot", + "entity.firework_rocket.twinkle", + "entity.firework_rocket.twinkle_far", + "block.fire.ambient", + "block.fire.extinguish", + "entity.fish.swim", + "item.flintandsteel.use", + "entity.fox.aggro", + "entity.fox.ambient", + "entity.fox.bite", + "entity.fox.death", + "entity.fox.eat", + "entity.fox.hurt", + "entity.fox.screech", + "entity.fox.sleep", + "entity.fox.sniff", + "entity.fox.spit", + "block.furnace.fire_crackle", + "entity.generic.big_fall", + "entity.generic.burn", + "entity.generic.death", + "entity.generic.drink", + "entity.generic.eat", + "entity.generic.explode", + "entity.generic.extinguish_fire", + "entity.generic.hurt", + "entity.generic.small_fall", + "entity.generic.splash", + "entity.generic.swim", + "entity.ghast.ambient", + "entity.ghast.death", + "entity.ghast.hurt", + "entity.ghast.scream", + "entity.ghast.shoot", + "entity.ghast.warn", + "block.glass.break", + "block.glass.fall", + "block.glass.hit", + "block.glass.place", + "block.glass.step", + "block.grass.break", + "block.grass.fall", + "block.grass.hit", + "block.grass.place", + "block.grass.step", + "block.wet_grass.break", + "block.wet_grass.fall", + "block.wet_grass.hit", + "block.wet_grass.place", + "block.wet_grass.step", + "block.coral_block.break", + "block.coral_block.fall", + "block.coral_block.hit", + "block.coral_block.place", + "block.coral_block.step", + "block.gravel.break", + "block.gravel.fall", + "block.gravel.hit", + "block.gravel.place", + "block.gravel.step", + "block.grindstone.use", + "entity.guardian.ambient", + "entity.guardian.ambient_land", + "entity.guardian.attack", + "entity.guardian.death", + "entity.guardian.death_land", + "entity.guardian.flop", + "entity.guardian.hurt", + "entity.guardian.hurt_land", + "item.hoe.till", + "entity.horse.ambient", + "entity.horse.angry", + "entity.horse.armor", + "entity.horse.breathe", + "entity.horse.death", + "entity.horse.eat", + "entity.horse.gallop", + "entity.horse.hurt", + "entity.horse.jump", + "entity.horse.land", + "entity.horse.saddle", + "entity.horse.step", + "entity.horse.step_wood", + "entity.hostile.big_fall", + "entity.hostile.death", + "entity.hostile.hurt", + "entity.hostile.small_fall", + "entity.hostile.splash", + "entity.hostile.swim", + "entity.husk.ambient", + "entity.husk.converted_to_zombie", + "entity.husk.death", + "entity.husk.hurt", + "entity.husk.step", + "entity.ravager.ambient", + "entity.ravager.attack", + "entity.ravager.celebrate", + "entity.ravager.death", + "entity.ravager.hurt", + "entity.ravager.step", + "entity.ravager.stunned", + "entity.ravager.roar", + "entity.illusioner.ambient", + "entity.illusioner.cast_spell", + "entity.illusioner.death", + "entity.illusioner.hurt", + "entity.illusioner.mirror_move", + "entity.illusioner.prepare_blindness", + "entity.illusioner.prepare_mirror", + "block.iron_door.close", + "block.iron_door.open", + "entity.iron_golem.attack", + "entity.iron_golem.death", + "entity.iron_golem.hurt", + "entity.iron_golem.step", + "block.iron_trapdoor.close", + "block.iron_trapdoor.open", + "entity.item_frame.add_item", + "entity.item_frame.break", + "entity.item_frame.place", + "entity.item_frame.remove_item", + "entity.item_frame.rotate_item", + "entity.item.break", + "entity.item.pickup", + "block.ladder.break", + "block.ladder.fall", + "block.ladder.hit", + "block.ladder.place", + "block.ladder.step", + "block.lantern.break", + "block.lantern.fall", + "block.lantern.hit", + "block.lantern.place", + "block.lantern.step", + "block.lava.ambient", + "block.lava.extinguish", + "block.lava.pop", + "entity.leash_knot.break", + "entity.leash_knot.place", + "block.lever.click", + "entity.lightning_bolt.impact", + "entity.lightning_bolt.thunder", + "entity.lingering_potion.throw", + "entity.llama.ambient", + "entity.llama.angry", + "entity.llama.chest", + "entity.llama.death", + "entity.llama.eat", + "entity.llama.hurt", + "entity.llama.spit", + "entity.llama.step", + "entity.llama.swag", + "entity.magma_cube.death", + "entity.magma_cube.hurt", + "entity.magma_cube.jump", + "entity.magma_cube.squish", + "block.metal.break", + "block.metal.fall", + "block.metal.hit", + "block.metal.place", + "block.metal_pressure_plate.click_off", + "block.metal_pressure_plate.click_on", + "block.metal.step", + "entity.minecart.inside", + "entity.minecart.riding", + "entity.mooshroom.convert", + "entity.mooshroom.eat", + "entity.mooshroom.milk", + "entity.mooshroom.suspicious_milk", + "entity.mooshroom.shear", + "entity.mule.ambient", + "entity.mule.chest", + "entity.mule.death", + "entity.mule.hurt", + "music.creative", + "music.credits", + "music.dragon", + "music.end", + "music.game", + "music.menu", + "music.nether", + "music.under_water", + "block.nether_wart.break", + "item.nether_wart.plant", + "block.note_block.basedrum", + "block.note_block.bass", + "block.note_block.bell", + "block.note_block.chime", + "block.note_block.flute", + "block.note_block.guitar", + "block.note_block.harp", + "block.note_block.hat", + "block.note_block.pling", + "block.note_block.snare", + "block.note_block.xylophone", + "block.note_block.iron_xylophone", + "block.note_block.cow_bell", + "block.note_block.didgeridoo", + "block.note_block.bit", + "block.note_block.banjo", + "entity.ocelot.hurt", + "entity.ocelot.ambient", + "entity.ocelot.death", + "entity.painting.break", + "entity.painting.place", + "entity.panda.pre_sneeze", + "entity.panda.sneeze", + "entity.panda.ambient", + "entity.panda.death", + "entity.panda.eat", + "entity.panda.step", + "entity.panda.cant_breed", + "entity.panda.aggressive_ambient", + "entity.panda.worried_ambient", + "entity.panda.hurt", + "entity.panda.bite", + "entity.parrot.ambient", + "entity.parrot.death", + "entity.parrot.eat", + "entity.parrot.fly", + "entity.parrot.hurt", + "entity.parrot.imitate.blaze", + "entity.parrot.imitate.creeper", + "entity.parrot.imitate.drowned", + "entity.parrot.imitate.elder_guardian", + "entity.parrot.imitate.ender_dragon", + "entity.parrot.imitate.enderman", + "entity.parrot.imitate.endermite", + "entity.parrot.imitate.evoker", + "entity.parrot.imitate.ghast", + "entity.parrot.imitate.guardian", + "entity.parrot.imitate.husk", + "entity.parrot.imitate.illusioner", + "entity.parrot.imitate.magma_cube", + "entity.parrot.imitate.panda", + "entity.parrot.imitate.phantom", + "entity.parrot.imitate.pillager", + "entity.parrot.imitate.polar_bear", + "entity.parrot.imitate.ravager", + "entity.parrot.imitate.shulker", + "entity.parrot.imitate.silverfish", + "entity.parrot.imitate.skeleton", + "entity.parrot.imitate.slime", + "entity.parrot.imitate.spider", + "entity.parrot.imitate.stray", + "entity.parrot.imitate.vex", + "entity.parrot.imitate.vindicator", + "entity.parrot.imitate.witch", + "entity.parrot.imitate.wither", + "entity.parrot.imitate.wither_skeleton", + "entity.parrot.imitate.wolf", + "entity.parrot.imitate.zombie", + "entity.parrot.imitate.zombie_pigman", + "entity.parrot.imitate.zombie_villager", + "entity.parrot.step", + "entity.phantom.ambient", + "entity.phantom.bite", + "entity.phantom.death", + "entity.phantom.flap", + "entity.phantom.hurt", + "entity.phantom.swoop", + "entity.pig.ambient", + "entity.pig.death", + "entity.pig.hurt", + "entity.pig.saddle", + "entity.pig.step", + "entity.pillager.ambient", + "entity.pillager.celebrate", + "entity.pillager.death", + "entity.pillager.hurt", + "block.piston.contract", + "block.piston.extend", + "entity.player.attack.crit", + "entity.player.attack.knockback", + "entity.player.attack.nodamage", + "entity.player.attack.strong", + "entity.player.attack.sweep", + "entity.player.attack.weak", + "entity.player.big_fall", + "entity.player.breath", + "entity.player.burp", + "entity.player.death", + "entity.player.hurt", + "entity.player.hurt_drown", + "entity.player.hurt_on_fire", + "entity.player.hurt_sweet_berry_bush", + "entity.player.levelup", + "entity.player.small_fall", + "entity.player.splash", + "entity.player.splash.high_speed", + "entity.player.swim", + "entity.polar_bear.ambient", + "entity.polar_bear.ambient_baby", + "entity.polar_bear.death", + "entity.polar_bear.hurt", + "entity.polar_bear.step", + "entity.polar_bear.warning", + "block.portal.ambient", + "block.portal.travel", + "block.portal.trigger", + "entity.puffer_fish.ambient", + "entity.puffer_fish.blow_out", + "entity.puffer_fish.blow_up", + "entity.puffer_fish.death", + "entity.puffer_fish.flop", + "entity.puffer_fish.hurt", + "entity.puffer_fish.sting", + "block.pumpkin.carve", + "entity.rabbit.ambient", + "entity.rabbit.attack", + "entity.rabbit.death", + "entity.rabbit.hurt", + "entity.rabbit.jump", + "event.raid.horn", + "music_disc.11", + "music_disc.13", + "music_disc.blocks", + "music_disc.cat", + "music_disc.chirp", + "music_disc.far", + "music_disc.mall", + "music_disc.mellohi", + "music_disc.stal", + "music_disc.strad", + "music_disc.wait", + "music_disc.ward", + "block.redstone_torch.burnout", + "entity.salmon.ambient", + "entity.salmon.death", + "entity.salmon.flop", + "entity.salmon.hurt", + "block.sand.break", + "block.sand.fall", + "block.sand.hit", + "block.sand.place", + "block.sand.step", + "block.scaffolding.break", + "block.scaffolding.fall", + "block.scaffolding.hit", + "block.scaffolding.place", + "block.scaffolding.step", + "entity.sheep.ambient", + "entity.sheep.death", + "entity.sheep.hurt", + "entity.sheep.shear", + "entity.sheep.step", + "item.shield.block", + "item.shield.break", + "item.shovel.flatten", + "entity.shulker.ambient", + "block.shulker_box.close", + "block.shulker_box.open", + "entity.shulker_bullet.hit", + "entity.shulker_bullet.hurt", + "entity.shulker.close", + "entity.shulker.death", + "entity.shulker.hurt", + "entity.shulker.hurt_closed", + "entity.shulker.open", + "entity.shulker.shoot", + "entity.shulker.teleport", + "entity.silverfish.ambient", + "entity.silverfish.death", + "entity.silverfish.hurt", + "entity.silverfish.step", + "entity.skeleton.ambient", + "entity.skeleton.death", + "entity.skeleton_horse.ambient", + "entity.skeleton_horse.death", + "entity.skeleton_horse.hurt", + "entity.skeleton_horse.swim", + "entity.skeleton_horse.ambient_water", + "entity.skeleton_horse.gallop_water", + "entity.skeleton_horse.jump_water", + "entity.skeleton_horse.step_water", + "entity.skeleton.hurt", + "entity.skeleton.shoot", + "entity.skeleton.step", + "entity.slime.attack", + "entity.slime.death", + "entity.slime.hurt", + "entity.slime.jump", + "entity.slime.squish", + "block.slime_block.break", + "block.slime_block.fall", + "block.slime_block.hit", + "block.slime_block.place", + "block.slime_block.step", + "entity.magma_cube.death_small", + "entity.magma_cube.hurt_small", + "entity.magma_cube.squish_small", + "entity.slime.death_small", + "entity.slime.hurt_small", + "entity.slime.jump_small", + "entity.slime.squish_small", + "block.smoker.smoke", + "entity.snowball.throw", + "block.snow.break", + "block.snow.fall", + "entity.snow_golem.ambient", + "entity.snow_golem.death", + "entity.snow_golem.hurt", + "entity.snow_golem.shoot", + "block.snow.hit", + "block.snow.place", + "block.snow.step", + "entity.spider.ambient", + "entity.spider.death", + "entity.spider.hurt", + "entity.spider.step", + "entity.splash_potion.break", + "entity.splash_potion.throw", + "entity.squid.ambient", + "entity.squid.death", + "entity.squid.hurt", + "entity.squid.squirt", + "block.stone.break", + "block.stone_button.click_off", + "block.stone_button.click_on", + "block.stone.fall", + "block.stone.hit", + "block.stone.place", + "block.stone_pressure_plate.click_off", + "block.stone_pressure_plate.click_on", + "block.stone.step", + "entity.stray.ambient", + "entity.stray.death", + "entity.stray.hurt", + "entity.stray.step", + "block.sweet_berry_bush.break", + "block.sweet_berry_bush.place", + "item.sweet_berries.pick_from_bush", + "enchant.thorns.hit", + "entity.tnt.primed", + "item.totem.use", + "item.trident.hit", + "item.trident.hit_ground", + "item.trident.return", + "item.trident.riptide_1", + "item.trident.riptide_2", + "item.trident.riptide_3", + "item.trident.throw", + "item.trident.thunder", + "block.tripwire.attach", + "block.tripwire.click_off", + "block.tripwire.click_on", + "block.tripwire.detach", + "entity.tropical_fish.ambient", + "entity.tropical_fish.death", + "entity.tropical_fish.flop", + "entity.tropical_fish.hurt", + "entity.turtle.ambient_land", + "entity.turtle.death", + "entity.turtle.death_baby", + "entity.turtle.egg_break", + "entity.turtle.egg_crack", + "entity.turtle.egg_hatch", + "entity.turtle.hurt", + "entity.turtle.hurt_baby", + "entity.turtle.lay_egg", + "entity.turtle.shamble", + "entity.turtle.shamble_baby", + "entity.turtle.swim", + "ui.button.click", + "ui.loom.select_pattern", + "ui.loom.take_result", + "ui.cartography_table.take_result", + "ui.stonecutter.take_result", + "ui.stonecutter.select_recipe", + "ui.toast.challenge_complete", + "ui.toast.in", + "ui.toast.out", + "entity.vex.ambient", + "entity.vex.charge", + "entity.vex.death", + "entity.vex.hurt", + "entity.villager.ambient", + "entity.villager.celebrate", + "entity.villager.death", + "entity.villager.hurt", + "entity.villager.no", + "entity.villager.trade", + "entity.villager.yes", + "entity.villager.work_armorer", + "entity.villager.work_butcher", + "entity.villager.work_cartographer", + "entity.villager.work_cleric", + "entity.villager.work_farmer", + "entity.villager.work_fisherman", + "entity.villager.work_fletcher", + "entity.villager.work_leatherworker", + "entity.villager.work_librarian", + "entity.villager.work_mason", + "entity.villager.work_shepherd", + "entity.villager.work_toolsmith", + "entity.villager.work_weaponsmith", + "entity.vindicator.ambient", + "entity.vindicator.celebrate", + "entity.vindicator.death", + "entity.vindicator.hurt", + "block.lily_pad.place", + "entity.wandering_trader.ambient", + "entity.wandering_trader.death", + "entity.wandering_trader.disappeared", + "entity.wandering_trader.drink_milk", + "entity.wandering_trader.drink_potion", + "entity.wandering_trader.hurt", + "entity.wandering_trader.no", + "entity.wandering_trader.reappeared", + "entity.wandering_trader.trade", + "entity.wandering_trader.yes", + "block.water.ambient", + "weather.rain", + "weather.rain.above", + "entity.witch.ambient", + "entity.witch.celebrate", + "entity.witch.death", + "entity.witch.drink", + "entity.witch.hurt", + "entity.witch.throw", + "entity.wither.ambient", + "entity.wither.break_block", + "entity.wither.death", + "entity.wither.hurt", + "entity.wither.shoot", + "entity.wither_skeleton.ambient", + "entity.wither_skeleton.death", + "entity.wither_skeleton.hurt", + "entity.wither_skeleton.step", + "entity.wither.spawn", + "entity.wolf.ambient", + "entity.wolf.death", + "entity.wolf.growl", + "entity.wolf.howl", + "entity.wolf.hurt", + "entity.wolf.pant", + "entity.wolf.shake", + "entity.wolf.step", + "entity.wolf.whine", + "block.wooden_door.close", + "block.wooden_door.open", + "block.wooden_trapdoor.close", + "block.wooden_trapdoor.open", + "block.wood.break", + "block.wooden_button.click_off", + "block.wooden_button.click_on", + "block.wood.fall", + "block.wood.hit", + "block.wood.place", + "block.wooden_pressure_plate.click_off", + "block.wooden_pressure_plate.click_on", + "block.wood.step", + "entity.zombie.ambient", + "entity.zombie.attack_wooden_door", + "entity.zombie.attack_iron_door", + "entity.zombie.break_wooden_door", + "entity.zombie.converted_to_drowned", + "entity.zombie.death", + "entity.zombie.destroy_egg", + "entity.zombie_horse.ambient", + "entity.zombie_horse.death", + "entity.zombie_horse.hurt", + "entity.zombie.hurt", + "entity.zombie.infect", + "entity.zombie_pigman.ambient", + "entity.zombie_pigman.angry", + "entity.zombie_pigman.death", + "entity.zombie_pigman.hurt", + "entity.zombie.step", + "entity.zombie_villager.ambient", + "entity.zombie_villager.converted", + "entity.zombie_villager.cure", + "entity.zombie_villager.death", + "entity.zombie_villager.hurt", + "entity.zombie_villager.step", + "awesome_intro" + ], + "statistics": [ + "minecraft.leave_game", + "minecraft.play_one_minute", + "minecraft.time_since_death", + "minecraft.time_since_rest", + "minecraft.sneak_time", + "minecraft.walk_one_cm", + "minecraft.crouch_one_cm", + "minecraft.sprint_one_cm", + "minecraft.walk_on_water_one_cm", + "minecraft.fall_one_cm", + "minecraft.climb_one_cm", + "minecraft.fly_one_cm", + "minecraft.walk_under_water_one_cm", + "minecraft.minecart_one_cm", + "minecraft.boat_one_cm", + "minecraft.pig_one_cm", + "minecraft.horse_one_cm", + "minecraft.aviate_one_cm", + "minecraft.swim_one_cm", + "minecraft.jump", + "minecraft.drop", + "minecraft.damage_dealt", + "minecraft.damage_dealt_absorbed", + "minecraft.damage_dealt_resisted", + "minecraft.damage_taken", + "minecraft.damage_blocked_by_shield", + "minecraft.damage_absorbed", + "minecraft.damage_resisted", + "minecraft.deaths", + "minecraft.mob_kills", + "minecraft.animals_bred", + "minecraft.player_kills", + "minecraft.fish_caught", + "minecraft.talked_to_villager", + "minecraft.traded_with_villager", + "minecraft.eat_cake_slice", + "minecraft.fill_cauldron", + "minecraft.use_cauldron", + "minecraft.clean_armor", + "minecraft.clean_banner", + "minecraft.clean_shulker_box", + "minecraft.interact_with_brewingstand", + "minecraft.interact_with_beacon", + "minecraft.inspect_dropper", + "minecraft.inspect_hopper", + "minecraft.inspect_dispenser", + "minecraft.play_noteblock", + "minecraft.tune_noteblock", + "minecraft.pot_flower", + "minecraft.trigger_trapped_chest", + "minecraft.open_enderchest", + "minecraft.enchant_item", + "minecraft.play_record", + "minecraft.interact_with_furnace", + "minecraft.interact_with_crafting_table", + "minecraft.open_chest", + "minecraft.sleep_in_bed", + "minecraft.open_shulker_box", + "minecraft.open_barrel", + "minecraft.interact_with_blast_furnace", + "minecraft.interact_with_smoker", + "minecraft.interact_with_lectern", + "minecraft.interact_with_campfire" + ], + "particles": [ + "ambient_entity_effect", + "angry_villager", + "barrier", + "block", + "bubble", + "cloud", + "crit", + "damage_indicator", + "dragon_breath", + "dripping_lava", + "falling_lava", + "landing_lava", + "dripping_water", + "falling_water", + "dust", + "effect", + "elder_guardian", + "enchanted_hit", + "enchant", + "end_rod", + "entity_effect", + "explosion_emitter", + "explosion", + "falling_dust", + "firework", + "fishing", + "flame", + "flash", + "happy_villager", + "composter", + "heart", + "instant_effect", + "item", + "item_slime", + "item_snowball", + "large_smoke", + "lava", + "mycelium", + "note", + "poof", + "portal", + "rain", + "smoke", + "sneeze", + "spit", + "squid_ink", + "sweep_attack", + "totem_of_undying", + "underwater", + "splash", + "witch", + "bubble_pop", + "current_down", + "bubble_column_up", + "nautilus", + "dolphin", + "campfire_cosy_smoke", + "campfire_signal_smoke" + ] +} \ No newline at end of file