diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c285fd76..edb1a8fb 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -194,4 +194,4 @@ jobs: uses: AButler/upload-release-assets@v3.0 with: files: build/jpackage/*.${{ matrix.type }} - repo-token: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file + repo-token: ${{ secrets.GITHUB_TOKEN }} diff --git a/README.md b/README.md index f8b4c4cf..4b1236b2 100644 --- a/README.md +++ b/README.md @@ -39,6 +39,8 @@ The wiki can be found [here](https://github.com/Querz/mcaselector/wiki). +Fork documentation: [ReplaceBlocks Builder, syntax, compatibility, and safety](docs/REPLACE_BLOCKS.md). + ## Video Tutorials For people who prefer watching a video to understand how the MCA Selector works, there some very good tutorials on YouTube explaining the basics: diff --git a/build.gradle b/build.gradle index a5221320..b6be0975 100644 --- a/build.gradle +++ b/build.gradle @@ -114,8 +114,9 @@ shadowJar { ) from 'LICENSE' } - +// Allow a user-local JDK view to provide JavaFX jmods without modifying the installed JDK. runtime { + javaHome = project.findProperty('runtime.jdkHome') ?: System.getenv('JAVA_HOME') options = ['--strip-debug', '--compress', 'zip-6', '--no-header-files', '--no-man-pages'] modules = [ 'java.base', @@ -195,4 +196,4 @@ static minCss(i, o) throws IOException { catch (Exception ex) { ex.printStackTrace() } -} \ No newline at end of file +} diff --git a/docs/REPLACE_BLOCKS.md b/docs/REPLACE_BLOCKS.md new file mode 100644 index 00000000..e2ed4a5f --- /dev/null +++ b/docs/REPLACE_BLOCKS.md @@ -0,0 +1,43 @@ +# ReplaceBlocks + +ReplaceBlocks changes matching blocks in selected chunks. It is destructive: close Minecraft, make a backup, and test unfamiliar rules on a copied world first. + +## Builder and advanced text + +The Builder generates the same text format used by the existing advanced field. Builder rules can be edited as text, and valid advanced rules can be reopened in the Builder when their controls are representable. Advanced state or tile SNBT that has no dedicated control is preserved as fallback text. + +Common source forms: + +- `literal(minecraft:stone)` matches that block ID exactly. +- `regex(minecraft:.*_log)` intentionally uses a Java regular expression. +- `{Name:"minecraft:stone",Properties:{...}}` is an exact stored block-state match. +- `props({Name:"minecraft:oak_stairs",Properties:{facing:"north"}})` matches the named block and only the listed properties. +- `tile(source)` and `no_tile(source)` require or exclude a block entity at the source position. +- `y(-64..64, source)` restricts the source Y coordinate; either bound may be omitted. +- `biome(minecraft:plains;minecraft:forest, source)` restricts modern 1.18+ biome cells. + +Targets may be a block ID, block-state SNBT, or a target followed by block-entity SNBT, for example `minecraft:barrel;{id:"minecraft:barrel"}`. Multiple rules are comma-separated. + +Legacy bare or quoted sources remain Java regular expressions for compatibility. Prefer `literal(...)` or `regex(...)` in new rules so intent is explicit. + +## Catalogue compatibility + +The Builder bundles block-state catalogues for Java 1.18.2, 1.20.6, 1.21.9, 1.21.11, and 26.2. The newest catalogue is selected by default; selection remains manual. Catalogues supply suggestions and property values only, and the displayed Java/DataVersion label identifies the active catalogue. + +An empty Builder switches catalogue immediately. A non-empty Builder asks first: Cancel keeps the old catalogue and all current work, while Confirm selects the new catalogue and fully resets fields, properties, Extra NBT, Y/biome filters, rules, selections, generated text, validation, and open popups. + +A syntactically valid future or modded resource ID remains accepted even when it is absent from the active catalogue; the Builder shows a non-blocking warning and provides no property suggestions for it. Target warnings are stronger because an unsupported target ID can produce a world that Minecraft cannot load as intended. + +Built-in and custom presets remain versionless ReplaceBlocks text. Switching catalogue clears the current preset selection and Builder content but never deletes saved presets. Applying a custom preset still appends valid rules; an exact source or target ID outside the active catalogue produces a non-blocking advisory, while regex sources are not guessed. + +The catalogue is not world-version detection and does not guarantee that an ID exists in the target world. MCA Selector does not rename or migrate block IDs between Minecraft versions. Verify renamed/removed IDs yourself. + +## Preview and execution safety + +Preview is non-mutating. It reports affected chunks/sections, per-rule matches, overlaps, block-entity changes, unsupported chunks, and errors. Preview counts are the recommended check before execution, but they do not replace a backup. + +Replacing air can complete missing sections and greatly increase world size. Replacing blocks that carry block entities can remove or rewrite their data. Modern execution invalidates affected lighting and heightmaps; existing adjacent chunks may also be marked for relighting. + +Tile, Y, and biome conditions fail closed on unsupported pre-1.18 formats. If a ReplaceBlocks-only operation fails in any chunk, MCA Selector aborts saving that region and logs the failing chunk coordinate. Mixed legacy field changes preserve the historical per-chunk behavior. + +After a risky change, load only a copied world in the intended Minecraft version, save/reload it, and inspect the game log for chunk, palette, block-entity, lighting, or heightmap errors. diff --git a/src/main/java/net/querz/mcaselector/Main.java b/src/main/java/net/querz/mcaselector/Main.java index 293f57af..106864a2 100644 --- a/src/main/java/net/querz/mcaselector/Main.java +++ b/src/main/java/net/querz/mcaselector/Main.java @@ -26,6 +26,7 @@ public static void main(String[] args) throws ExecutionException, InterruptedExc Logging.setLogDir(Config.BASE_LOG_DIR); Logging.updateThreadContext(); + Logging.installUncaughtExceptionHandler(); Logger LOGGER = LogManager.getLogger(Main.class); VersionHandler.init(); diff --git a/src/main/java/net/querz/mcaselector/changer/Field.java b/src/main/java/net/querz/mcaselector/changer/Field.java index ba840534..325cf2ea 100644 --- a/src/main/java/net/querz/mcaselector/changer/Field.java +++ b/src/main/java/net/querz/mcaselector/changer/Field.java @@ -62,4 +62,13 @@ public boolean parseNewValue(String s) { public abstract void change(ChunkData root); public abstract void force(ChunkData root); + + public boolean applyWithResult(ChunkData root, boolean force) { + if (force) { + force(root); + } else { + change(root); + } + return true; + } } diff --git a/src/main/java/net/querz/mcaselector/changer/fields/ReplaceBlocksField.java b/src/main/java/net/querz/mcaselector/changer/fields/ReplaceBlocksField.java index b207a3eb..d188b6cc 100644 --- a/src/main/java/net/querz/mcaselector/changer/fields/ReplaceBlocksField.java +++ b/src/main/java/net/querz/mcaselector/changer/fields/ReplaceBlocksField.java @@ -5,199 +5,88 @@ import net.querz.mcaselector.io.mca.ChunkData; import net.querz.mcaselector.version.ChunkFilter; import net.querz.mcaselector.version.VersionHandler; -import net.querz.mcaselector.version.mapping.registry.BlockRegistry; -import net.querz.nbt.CompoundTag; -import net.querz.nbt.io.snbt.ParseException; -import net.querz.nbt.io.snbt.SNBTParser; -import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.Map; -public class ReplaceBlocksField extends Field> { +public class ReplaceBlocksField extends Field> { public ReplaceBlocksField() { super(FieldType.REPLACE_BLOCKS); } @Override - public boolean parseNewValue(String s) { - - // format: [,,...] - // from format: minecraft: - // - // '' - // to format: minecraft: - // - // '' - // - // ; - - Map newValue = new HashMap<>(); - - String trimmed = s.trim(); - - while (!trimmed.isEmpty()) { - String[] fromTo = trimmed.split("=", 2); - if (fromTo.length != 2) { - return super.parseNewValue(s); - } - - String from = fromTo[0].trim(); - if (from.startsWith("'") && from.endsWith("'") && from.length() > 2) { - from = from.substring(1, from.length() - 1); - } else if (!from.startsWith("minecraft:")) { - from = "minecraft:" + from; - if (!BlockRegistry.isValidName(from)) { - return super.parseNewValue(s); - } - } - - String to = fromTo[1].trim(); - int read = 0; - CompoundTag toState = null; - String toName = null; - if (to.startsWith("{")) { - // block state - try { - SNBTParser parser = new SNBTParser(to); - toState = (CompoundTag) parser.parse(true); - read += parser.getReadChars() - 1; - } catch (ParseException ex) { - return super.parseNewValue(s); - } - } else if (to.startsWith("'")) { - // quoted - int i = 1; - while (i < to.length() && to.charAt(i) != '\'') { - i++; - } - toName = to.substring(1, Math.max(i, to.length())); - if (!toName.endsWith("'")) { - return super.parseNewValue(s); - } - toName = toName.substring(0, toName.length() - 1); - if (toName.isEmpty()) { - return super.parseNewValue(s); - } - read += i + 1; - } else { - // minecraft block - // read everything until , or ; - int i = 0; - while (i < to.length()) { - if (to.charAt(i) == ',' || to.charAt(i) == ';') { - break; - } - i++; - } - toName = to.substring(0, i); - if (!toName.startsWith("minecraft:")) { - toName = "minecraft:" + toName; - } - if (!BlockRegistry.isValidName(toName)) { - return super.parseNewValue(s); - } - read += i; - } - - to = to.substring(read).trim(); - - CompoundTag toTile = null; - if (to.startsWith(";")) { - to = to.substring(1).trim(); - if (to.isEmpty()) { - return super.parseNewValue(s); - } - try { - SNBTParser parser = new SNBTParser(to); - toTile = (CompoundTag) parser.parse(true); - int readTile = parser.getReadChars(); - to = to.substring(readTile - 1); - } catch (ParseException ex) { - return super.parseNewValue(s); - } - } - - ChunkFilter.BlockReplaceData data; - if (toName != null && toTile != null) { - data = new ChunkFilter.BlockReplaceData(toName, toTile); - } else if (toName != null) { - data = new ChunkFilter.BlockReplaceData(toName); - } else if (toState != null && toTile != null) { - data = new ChunkFilter.BlockReplaceData(toState, toTile); - } else if (toState != null) { - data = new ChunkFilter.BlockReplaceData(toState); - } else { - return super.parseNewValue(s); - } - newValue.put(from, data); - - to = to.trim(); - - if (to.startsWith(",")) { - trimmed = to.substring(1).trim(); - } else if (!to.isEmpty()) { - return super.parseNewValue(s); - } else { - break; - } + public boolean parseNewValue(String value) { + ReplaceBlocksParser.Result result = ReplaceBlocksParser.parse(value); + if (!(result instanceof ReplaceBlocksParser.Success success)) { + return super.parseNewValue(value); } - - if (newValue.isEmpty()) { - return super.parseNewValue(s); + Map replacements = new LinkedHashMap<>(); + for (ReplaceBlocksParser.ParsedRule rule : success.rules()) { + replacements.put(rule.source(), rule.target()); } - - setNewValue(newValue); + if (replacements.isEmpty()) { + return super.parseNewValue(value); + } + setNewValue(replacements); return true; } @Override - public Map getOldValue(ChunkData data) { + public Map getOldValue(ChunkData data) { return null; } @Override public void change(ChunkData data) { - VersionHandler.getImpl(data, ChunkFilter.Blocks.class).replaceBlocks(data, getNewValue()); + applyReplacement(data); + } + + private boolean applyReplacement(ChunkData data) { + if (!VersionHandler.getImpl(data, ChunkFilter.Blocks.class).replaceBlocks(data, getNewValue())) { + return false; + } + VersionHandler.getImpl(data, ChunkFilter.LightPopulated.class).setLightPopulated(data, (byte) 0); ChunkFilter.Heightmap heightmap = VersionHandler.getImpl(data, ChunkFilter.Heightmap.class); heightmap.worldSurface(data); heightmap.oceanFloor(data); heightmap.motionBlocking(data); heightmap.motionBlockingNoLeaves(data); + return true; } @Override public void force(ChunkData data) { - change(data); + applyReplacement(data); + } + + @Override + public boolean applyWithResult(ChunkData data, boolean force) { + return applyReplacement(data); } @Override public String toString() { - return getType().toString() + " = \"" + valueToString() + "\""; + return getType().toString() + " = \"" + escapeString(valueToString()) + "\""; } @Override public String valueToString() { StringBuilder sb = new StringBuilder(); boolean first = true; - for (Map.Entry entry : getNewValue().entrySet()) { + for (Map.Entry entry : getNewValue().entrySet()) { if (first) { first = false; } else { sb.append(", "); } - String from = entry.getKey(); - if (!from.startsWith("minecraft:")) { - sb.append("'").append(from).append("'"); - } else { - sb.append(entry.getKey()); - } + sb.append(entry.getKey()); sb.append("="); - sb.append(escapeString(entry.getValue().toString())); + sb.append(entry.getValue()); } return sb.toString(); } - private String escapeString(String s) { - return s.replace("\\", "\\\\").replace("\"", "\\\""); + private String escapeString(String value) { + return value.replace("\\", "\\\\").replace("\"", "\\\""); } } diff --git a/src/main/java/net/querz/mcaselector/changer/fields/ReplaceBlocksParser.java b/src/main/java/net/querz/mcaselector/changer/fields/ReplaceBlocksParser.java new file mode 100644 index 00000000..e946b38c --- /dev/null +++ b/src/main/java/net/querz/mcaselector/changer/fields/ReplaceBlocksParser.java @@ -0,0 +1,400 @@ +package net.querz.mcaselector.changer.fields; + +import net.querz.mcaselector.version.ChunkFilter; +import net.querz.mcaselector.version.mapping.registry.BiomeRegistry; +import net.querz.nbt.CompoundTag; +import net.querz.nbt.Tag; +import net.querz.nbt.io.snbt.ParseException; +import net.querz.nbt.io.snbt.SNBTParser; +import java.util.ArrayList; +import java.util.List; +import java.util.regex.Pattern; +import java.util.regex.PatternSyntaxException; + +/** + * Parser for the complete ReplaceBlocks value grammar. Catalog membership is intentionally not + * part of this class: parsing must accept syntactically valid future and modded resource IDs. + */ +public final class ReplaceBlocksParser { + + private static final Pattern RESOURCE_LOCATION = Pattern.compile("[a-z0-9_.-]+:[a-z0-9_./-]+"); + + private ReplaceBlocksParser() {} + + public static Result parse(String value) { + if (value == null || value.trim().isEmpty()) { + return failure(ErrorCode.EMPTY_VALUE, 0, ""); + } + + List rules = new ArrayList<>(); + String remaining = value.trim(); + int offset = value.indexOf(remaining); + while (!remaining.isEmpty()) { + SourceReadResult source; + try { + source = readSource(remaining); + } catch (PatternSyntaxException ex) { + return failure(ErrorCode.INVALID_REGEX, offset, remaining); + } + if (source == null) { + return failure(ErrorCode.INVALID_SOURCE, offset, remaining); + } + String targetText = remaining.substring(source.read()).trim(); + int targetOffset = offset + source.read() + leadingWhitespace(remaining.substring(source.read())); + if (!targetText.startsWith("=")) { + return failure(ErrorCode.MISSING_EQUALS, targetOffset, targetText); + } + + TargetReadResult target; + try { + target = readTarget(targetText.substring(1).trim()); + } catch (InvalidTileSyntaxException ex) { + return failure(ErrorCode.INVALID_TILE, targetOffset + 1, targetText); + } + if (target == null) { + return failure(ErrorCode.INVALID_TARGET, targetOffset + 1, targetText); + } + rules.add(new ParsedRule(source.source(), target.target())); + + String tail = target.tail().trim(); + if (tail.isEmpty()) { + break; + } + if (!tail.startsWith(",")) { + return failure(ErrorCode.TRAILING_INPUT, targetOffset + targetText.length() - tail.length(), tail); + } + remaining = tail.substring(1).trim(); + offset = value.length() - remaining.length(); + } + return new Success(rules); + } + + public static String normalizeResourceLocation(String raw) { + if (raw == null) { + return null; + } + String name = raw.trim(); + if (name.isEmpty()) { + return null; + } + if (!name.contains(":")) { + name = "minecraft:" + name; + } + return RESOURCE_LOCATION.matcher(name).matches() ? name : null; + } + + private static TargetReadResult readTarget(String raw) { + if (raw.isEmpty()) { + return null; + } + int read; + CompoundTag state = null; + String name = null; + if (raw.startsWith("{")) { + try { + SNBTParser parser = new SNBTParser(raw); + Tag parsed = parser.parse(true); + if (!(parsed instanceof CompoundTag compound) || compound.getString("Name") == null) { + return null; + } + state = compound; + read = parser.getReadChars() - 1; + } catch (ParseException | RuntimeException ex) { + return null; + } + } else if (raw.startsWith("'")) { + int end = raw.indexOf('\'', 1); + if (end <= 1) { + return null; + } + name = raw.substring(1, end); + read = end + 1; + } else { + int end = 0; + while (end < raw.length() && raw.charAt(end) != ',' && raw.charAt(end) != ';') { + end++; + } + name = normalizeResourceLocation(raw.substring(0, end)); + if (name == null) { + return null; + } + read = end; + } + + String tail = raw.substring(read).trim(); + CompoundTag tile = null; + if (tail.startsWith(";")) { + String tileText = tail.substring(1).trim(); + if (tileText.isEmpty()) { + throw new InvalidTileSyntaxException(); + } + try { + SNBTParser parser = new SNBTParser(tileText); + Tag parsed = parser.parse(true); + if (!(parsed instanceof CompoundTag compound)) { + throw new InvalidTileSyntaxException(); + } + tile = compound; + tail = tileText.substring(parser.getReadChars() - 1).trim(); + } catch (ParseException | RuntimeException ex) { + throw new InvalidTileSyntaxException(); + } + } + + ChunkFilter.BlockReplaceData target; + if (name != null) { + target = tile == null ? new ChunkFilter.BlockReplaceData(name) : new ChunkFilter.BlockReplaceData(name, tile); + } else { + target = tile == null ? new ChunkFilter.BlockReplaceData(state) : new ChunkFilter.BlockReplaceData(state, tile); + } + return new TargetReadResult(target, tail); + } + + private static SourceReadResult readSource(String raw) { + if (raw.startsWith("{")) { + CompoundTag state = parseStateSelector(raw); + if (state == null) { + return null; + } + try { + SNBTParser parser = new SNBTParser(raw); + parser.parse(true); + return new SourceReadResult(new ChunkFilter.BlockReplaceSource(state), parser.getReadChars() - 1); + } catch (ParseException | RuntimeException ex) { + return null; + } + } + if (startsWithSourceWrapper(raw)) { + return readWrappedSource(raw); + } + int equals = raw.indexOf('='); + if (equals < 0) { + return null; + } + String source = raw.substring(0, equals).trim(); + if (source.startsWith("'") && source.endsWith("'") && source.length() > 2) { + source = source.substring(1, source.length() - 1); + } else if (!source.startsWith("minecraft:")) { + source = normalizeResourceLocation(source); + if (source == null) { + return null; + } + } + return source.isEmpty() ? null : new SourceReadResult(new ChunkFilter.BlockReplaceSource(source), equals); + } + + private static boolean startsWithSourceWrapper(String raw) { + return raw.startsWith("literal(") || raw.startsWith("regex(") || raw.startsWith("props(") + || raw.startsWith("tile(") || raw.startsWith("no_tile(") || raw.startsWith("y(") || raw.startsWith("biome("); + } + + private static SourceReadResult readWrappedSource(String raw) { + if (raw.startsWith("biome(")) { + return readBiomeWrapper(raw); + } + if (raw.startsWith("y(")) { + return readYRangeWrapper(raw); + } + if (raw.startsWith("tile(")) { + return readTileModeWrapper(raw, "tile(", ChunkFilter.BlockReplaceTileEntityMode.REQUIRE_TILE_ENTITY); + } + if (raw.startsWith("no_tile(")) { + return readTileModeWrapper(raw, "no_tile(", ChunkFilter.BlockReplaceTileEntityMode.EXCLUDE_TILE_ENTITY); + } + if (raw.startsWith("literal(")) { + return readNameWrapper(raw, "literal(", true); + } + if (raw.startsWith("regex(")) { + return readNameWrapper(raw, "regex(", false); + } + if (raw.startsWith("props(")) { + int end = findWrapperEnd(raw, "props(".length()); + if (end < 0) { + return null; + } + CompoundTag state = parseStateSelector(unwrapWrapperArgument(raw.substring("props(".length(), end))); + if (state == null || state.getCompoundTag("Properties") == null || state.getCompoundTag("Properties").isEmpty()) { + return null; + } + return new SourceReadResult(ChunkFilter.BlockReplaceSource.selectedProperties(state), end + 1); + } + return null; + } + + private static SourceReadResult readTileModeWrapper(String raw, String prefix, ChunkFilter.BlockReplaceTileEntityMode mode) { + int end = findWrapperEnd(raw, prefix.length()); + if (end < 0) { + return null; + } + SourceReadResult source = readSourceExpression(unwrapWrapperArgument(raw.substring(prefix.length(), end))); + return source == null ? null : new SourceReadResult(source.source().withTileEntityMode(mode), end + 1); + } + + private static SourceReadResult readYRangeWrapper(String raw) { + int end = findWrapperEnd(raw, "y(".length()); + if (end < 0) { + return null; + } + String argument = raw.substring("y(".length(), end).trim(); + int comma = argument.indexOf(','); + if (comma < 0) { + return null; + } + YRange range = parseYRange(argument.substring(0, comma)); + SourceReadResult source = range == null ? null : readSourceExpression(argument.substring(comma + 1)); + return source == null ? null : new SourceReadResult(source.source().withYRange(range.minY(), range.maxY()), end + 1); + } + + private static SourceReadResult readBiomeWrapper(String raw) { + int end = findWrapperEnd(raw, "biome(".length()); + if (end < 0) { + return null; + } + String argument = raw.substring("biome(".length(), end).trim(); + int comma = argument.indexOf(','); + if (comma < 0) { + return null; + } + List biomes = parseBiomeList(argument.substring(0, comma)); + SourceReadResult source = biomes == null ? null : readSourceExpression(argument.substring(comma + 1)); + return source == null ? null : new SourceReadResult(source.source().withBiomes(biomes), end + 1); + } + + private static SourceReadResult readSourceExpression(String raw) { + String source = raw.trim(); + if (source.isEmpty()) { + return null; + } + SourceReadResult result = readSource(source + "=minecraft:stone"); + return result == null || result.read() != source.length() ? null : result; + } + + private static SourceReadResult readNameWrapper(String raw, String prefix, boolean literal) { + int end = findWrapperEnd(raw, prefix.length()); + if (end < 0) { + return null; + } + String argument = unwrapWrapperArgument(raw.substring(prefix.length(), end)); + if (argument.isEmpty()) { + return null; + } + if (literal) { + String name = normalizeResourceLocation(argument); + return name == null ? null : new SourceReadResult(ChunkFilter.BlockReplaceSource.literalName(name), end + 1); + } + return new SourceReadResult(ChunkFilter.BlockReplaceSource.regexName(argument), end + 1); + } + + private static YRange parseYRange(String raw) { + String[] parts = raw.trim().split("\\.\\.", -1); + if (parts.length != 2 || parts[0].trim().isEmpty() && parts[1].trim().isEmpty()) { + return null; + } + try { + Integer minY = parts[0].trim().isEmpty() ? null : Integer.parseInt(parts[0].trim()); + Integer maxY = parts[1].trim().isEmpty() ? null : Integer.parseInt(parts[1].trim()); + return minY != null && maxY != null && minY > maxY ? null : new YRange(minY, maxY); + } catch (NumberFormatException ex) { + return null; + } + } + + private static List parseBiomeList(String raw) { + String[] parts = raw.trim().split(";", -1); + List biomes = new ArrayList<>(parts.length); + for (String part : parts) { + String biome = normalizeResourceLocation(part); + if (biome == null || biome.startsWith("minecraft:") && !BiomeRegistry.isValidName(biome)) { + return null; + } + biomes.add(biome); + } + return biomes.isEmpty() ? null : biomes; + } + + private static CompoundTag parseStateSelector(String raw) { + try { + SNBTParser parser = new SNBTParser(raw); + Tag parsed = parser.parse(true); + return parsed instanceof CompoundTag state && state.getString("Name") != null ? state : null; + } catch (ParseException | RuntimeException ex) { + return null; + } + } + + private static int findWrapperEnd(String raw, int start) { + boolean singleQuoted = false; + boolean doubleQuoted = false; + boolean escaped = false; + int nestedParens = 0; + for (int i = start; i < raw.length(); i++) { + char c = raw.charAt(i); + if (escaped) { + escaped = false; + continue; + } + if (doubleQuoted && c == '\\') { + escaped = true; + continue; + } + if (c == '\'' && !doubleQuoted) { + singleQuoted = !singleQuoted; + } else if (c == '"' && !singleQuoted) { + doubleQuoted = !doubleQuoted; + } else if (c == '(' && !singleQuoted && !doubleQuoted) { + nestedParens++; + } else if (c == ')' && !singleQuoted && !doubleQuoted) { + if (nestedParens == 0) { + return i; + } + nestedParens--; + } + } + return -1; + } + + private static String unwrapWrapperArgument(String argument) { + String trimmed = argument.trim(); + return trimmed.length() >= 2 && trimmed.startsWith("'") && trimmed.endsWith("'") + ? trimmed.substring(1, trimmed.length() - 1) + : trimmed; + } + + private static int leadingWhitespace(String value) { + int index = 0; + while (index < value.length() && Character.isWhitespace(value.charAt(index))) { + index++; + } + return index; + } + + private static Failure failure(ErrorCode code, int offset, String token) { + return new Failure(new ParseError(code, Math.max(0, offset), token)); + } + + public sealed interface Result permits Success, Failure {} + + public record Success(List rules) implements Result { + public Success { + rules = List.copyOf(rules); + } + } + + public record Failure(ParseError error) implements Result {} + + public record ParsedRule(ChunkFilter.BlockReplaceSource source, ChunkFilter.BlockReplaceData target) {} + + public record ParseError(ErrorCode code, int offset, String token) {} + + public enum ErrorCode { + EMPTY_VALUE, INVALID_SOURCE, INVALID_REGEX, MISSING_EQUALS, INVALID_TARGET, INVALID_TILE, TRAILING_INPUT + } + + private record SourceReadResult(ChunkFilter.BlockReplaceSource source, int read) {} + + private record TargetReadResult(ChunkFilter.BlockReplaceData target, String tail) {} + + private static final class InvalidTileSyntaxException extends RuntimeException {} + + private record YRange(Integer minY, Integer maxY) {} +} diff --git a/src/main/java/net/querz/mcaselector/config/Config.java b/src/main/java/net/querz/mcaselector/config/Config.java index 4494a6c5..3d9a4f08 100644 --- a/src/main/java/net/querz/mcaselector/config/Config.java +++ b/src/main/java/net/querz/mcaselector/config/Config.java @@ -145,10 +145,16 @@ protected String save(Gson gson) { } protected void save(Gson gson, File file) { + saveWithResult(gson, file); + } + + protected boolean saveWithResult(Gson gson, File file) { try { Files.writeString(file.toPath(), save(gson)); - } catch (IOException ex) { + return true; + } catch (IOException | RuntimeException ex) { LOGGER.warn("error writing config file {}", file, ex); + return false; } } diff --git a/src/main/java/net/querz/mcaselector/config/GlobalConfig.java b/src/main/java/net/querz/mcaselector/config/GlobalConfig.java index 4174476d..790e639c 100644 --- a/src/main/java/net/querz/mcaselector/config/GlobalConfig.java +++ b/src/main/java/net/querz/mcaselector/config/GlobalConfig.java @@ -64,6 +64,7 @@ public class GlobalConfig extends Config { private final RecentFiles recentFilterScripts = new RecentFiles(); private final RecentFiles recentChangeScripts = new RecentFiles(); private final RecentFiles recentOverlayScripts = new RecentFiles(); + private final List replaceBlocksUserPresets = new ArrayList<>(); private TempScript filterScript = new TempScript(null, false, ""); private TempScript changeScript = new TempScript(null, false, ""); private TempScript overlayScript = new TempScript(null, false, ""); @@ -239,6 +240,10 @@ public RecentFiles getRecentOverlayScripts() { return recentOverlayScripts; } + public List getReplaceBlocksUserPresets() { + return replaceBlocksUserPresets; + } + public void addRecentOverlayScript(File file) { recentOverlayScripts.addRecentFile(file); } @@ -277,7 +282,11 @@ public void setStructureIcons(Object2BooleanRBTreeMap structureIcons) { @Override public void save() { - save(gsonInstance, BASE_CONFIG_FILE); + saveWithResult(); + } + + public boolean saveWithResult() { + return saveWithResult(gsonInstance, BASE_CONFIG_FILE); } public static GlobalConfig load() { @@ -359,4 +368,6 @@ public GlobalConfig copyForSettings() { } public record TempScript(File file, boolean saved, String text) {} + + public record ReplaceBlocksUserPreset(String name, String value) {} } diff --git a/src/main/java/net/querz/mcaselector/io/job/FieldChanger.java b/src/main/java/net/querz/mcaselector/io/job/FieldChanger.java index 788bb954..9a236ba0 100644 --- a/src/main/java/net/querz/mcaselector/io/job/FieldChanger.java +++ b/src/main/java/net/querz/mcaselector/io/job/FieldChanger.java @@ -1,19 +1,27 @@ package net.querz.mcaselector.io.job; import net.querz.mcaselector.changer.Field; +import net.querz.mcaselector.changer.FieldType; import net.querz.mcaselector.config.ConfigProvider; import net.querz.mcaselector.io.JobHandler; import net.querz.mcaselector.io.RegionDirectories; import net.querz.mcaselector.io.WorldDirectories; import net.querz.mcaselector.io.mca.Region; +import net.querz.mcaselector.selection.Selection; +import net.querz.mcaselector.text.Translation; import net.querz.mcaselector.util.point.Point2i; import net.querz.mcaselector.util.progress.Progress; import net.querz.mcaselector.util.progress.Timer; -import net.querz.mcaselector.selection.Selection; -import net.querz.mcaselector.text.Translation; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.HashSet; import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.Consumer; public final class FieldChanger { @@ -23,9 +31,18 @@ public final class FieldChanger { private FieldChanger() {} public static void changeNBTFields(List> fields, boolean force, Selection selection, Progress progressChannel, boolean headless) { - WorldDirectories wd = ConfigProvider.WORLD.getWorldDirs(); - RegionDirectories[] rd = wd.listRegions(selection); - if (rd == null || rd.length == 0) { + changeNBTFields(ConfigProvider.WORLD.getWorldDirs(), fields, force, selection, progressChannel, headless); + } + + static void changeNBTFields(WorldDirectories world, List> fields, boolean force, Selection selection, + Progress progressChannel, boolean headless) { + boolean hasReplaceBlocks = fields.stream().anyMatch(field -> field.getType() == FieldType.REPLACE_BLOCKS); + boolean replaceBlocksOnly = fields.size() == 1 && hasReplaceBlocks; + RegionDirectories[] primaryRegions = world.listRegions(selection); + if (replaceBlocksOnly) { + primaryRegions = Arrays.stream(primaryRegions).filter(dirs -> dirs.getRegion() != null).toArray(RegionDirectories[]::new); + } + if (primaryRegions.length == 0) { if (headless) { progressChannel.done("no files"); } else { @@ -34,17 +51,123 @@ public static void changeNBTFields(List> fields, boolean force, Selecti return; } + RegionDirectories[] relightCandidates = hasReplaceBlocks + ? listRelightCandidateRegions(world, selection) + : new RegionDirectories[0]; + JobHandler.clearQueues(); + progressChannel.setMax(primaryRegions.length + relightCandidates.length); + progressChannel.updateProgress(primaryRegions[0].getLocationAsFileName(), 0); + + PrimaryStageCoordinator coordinator = new PrimaryStageCoordinator(primaryRegions.length, + changedChunks -> startRelightStage(relightCandidates, changedChunks, progressChannel)); + for (RegionDirectories dirs : primaryRegions) { + JobHandler.addJob(new MCAFieldChangeProcessJob(dirs, fields, force, selection, replaceBlocksOnly, + progressChannel, coordinator)); + } + } + + private static RegionDirectories[] listRelightCandidateRegions(WorldDirectories world, Selection selection) { + Selection candidateSelection = selection == null ? null : expandSelectionByOne(selection.getTrueSelection(world)); + return Arrays.stream(world.listRegions(candidateSelection)) + .filter(dirs -> dirs.getRegion() != null) + .toArray(RegionDirectories[]::new); + } + + private static void startRelightStage(RegionDirectories[] candidates, Set changedChunks, + Progress progressChannel) { + if (progressChannel.taskCancelled()) { + return; + } + Map> targetsByRegion = groupByRegion(getAdjacentRelightChunks(changedChunks)); + for (RegionDirectories dirs : candidates) { + Set targets = targetsByRegion.get(dirs.getLocation()); + if (targets == null || targets.isEmpty()) { + progressChannel.incrementProgress(dirs.getLocationAsFileName()); + continue; + } + JobHandler.addJob(new MCARelightProcessJob(dirs, targets, progressChannel)); + } + } - progressChannel.setMax(rd.length); - progressChannel.updateProgress(rd[0].getLocationAsFileName(), 0); + static Selection expandSelectionByOne(Selection selection) { + Selection expanded = new Selection(); + for (var entry : selection) { + Point2i region = new Point2i(entry.getLongKey()); + if (entry.getValue() == null) { + for (int index = 0; index < 1024; index++) { + addSquare(expanded, new Point2i(index).add(region.regionToChunk())); + } + } else { + for (int index : entry.getValue()) { + addSquare(expanded, new Point2i(index).add(region.regionToChunk())); + } + } + } + return expanded; + } - Consumer errorHandler = t -> progressChannel.incrementProgress("error"); + static Set getAdjacentRelightChunks(Set changedChunks) { + Set adjacent = new HashSet<>(); + for (Point2i center : changedChunks) { + for (int x = -1; x <= 1; x++) { + for (int z = -1; z <= 1; z++) { + adjacent.add(center.add(x, z)); + } + } + } + adjacent.removeAll(changedChunks); + return adjacent; + } - for (RegionDirectories r : rd) { - MCAFieldChangeProcessJob job = new MCAFieldChangeProcessJob(r, fields, force, selection, progressChannel); - job.errorHandler = errorHandler; - JobHandler.addJob(job); + static Map> groupByRegion(Set chunks) { + Map> grouped = new HashMap<>(); + for (Point2i chunk : chunks) { + grouped.computeIfAbsent(chunk.chunkToRegion(), ignored -> new HashSet<>()).add(chunk); + } + return grouped; + } + + private static void addSquare(Selection selection, Point2i center) { + for (int x = -1; x <= 1; x++) { + for (int z = -1; z <= 1; z++) { + selection.addChunk(center.add(x, z)); + } + } + } + + static final class PrimaryStageCoordinator { + + private int remaining; + private boolean cancelled; + private final Set savedChangedChunks = new HashSet<>(); + private final Consumer> onComplete; + + PrimaryStageCoordinator(int remaining, Consumer> onComplete) { + this.remaining = remaining; + this.onComplete = onComplete; + } + + synchronized void primaryCompleted(Set changedChunks, boolean regionSaved) { + if (regionSaved) { + savedChangedChunks.addAll(changedChunks); + } + finishOne(); + } + + synchronized void primaryCancelled() { + cancelled = true; + finishOne(); + } + + private void finishOne() { + if (remaining <= 0) { + return; + } + remaining--; + if (remaining == 0 && !cancelled) { + onComplete.accept(Set.copyOf(savedChangedChunks)); + } } } @@ -54,63 +177,239 @@ public static class MCAFieldChangeProcessJob extends ProcessDataJob { private final List> fields; private final boolean force; private final Selection selection; + private final boolean regionOnly; + private final PrimaryStageCoordinator coordinator; + private final AtomicBoolean terminal = new AtomicBoolean(); - private MCAFieldChangeProcessJob(RegionDirectories dirs, List> fields, boolean force, Selection selection, Progress progressChannel) { + private MCAFieldChangeProcessJob(RegionDirectories dirs, List> fields, boolean force, Selection selection, + boolean regionOnly, Progress progressChannel, PrimaryStageCoordinator coordinator) { super(dirs, PRIORITY_LOW); this.fields = fields; this.force = force; this.selection = selection; + this.regionOnly = regionOnly; this.progressChannel = progressChannel; + this.coordinator = coordinator; + errorHandler = this::failUnexpectedly; } @Override public boolean execute() { - if (selection != null) { - Point2i location = getRegionDirectories().getLocation(); - if (!selection.isAnyChunkInRegionSelected(location)) { - LOGGER.debug("will not apply nbt changes to {}", getRegionDirectories().getLocationAsFileName()); - progressChannel.incrementProgress(getRegionDirectories().getLocationAsFileName()); + if (progressChannel.taskCancelled()) { + completeCancelled(); + return true; + } + if (selection != null && !selection.isAnyChunkInRegionSelected(getRegionDirectories().getLocation())) { + LOGGER.debug("will not apply nbt changes to {}", getRegionDirectories().getLocationAsFileName()); + completePrimary(Set.of(), false); + return true; + } + + try { + Region region = regionOnly + ? Region.loadRegionFile(getRegionDirectories()) + : Region.loadRegion(getRegionDirectories()); + Region.FieldChangeResult result = region.applyFieldChangesTracked(fields, force, selection, + progressChannel::taskCancelled); + if (result.cancelled()) { + completeCancelled(); + return true; + } + if (!result.dirty()) { + completePrimary(Set.of(), false); return true; } + + JobHandler.executeSaveData(new MCAFieldChangeSaveJob(getRegionDirectories(), region, regionOnly, + result.replaceBlocksChangedChunks(), progressChannel, coordinator)); + return false; + } catch (Exception ex) { + LOGGER.warn("error changing fields in {}", getRegionDirectories().getLocationAsFileName(), ex); + completePrimary(Set.of(), false); + return true; } + } - //load MCAFile + @Override + public void cancel() { + progressChannel.cancelTask(); + completeCancelled(); + } + + private void failUnexpectedly(Throwable throwable) { + LOGGER.warn("unexpected error changing fields in {}", getRegionDirectories().getLocationAsFileName(), throwable); + done(); + completePrimary(Set.of(), false); + } + + private void completePrimary(Set changedChunks, boolean regionSaved) { + if (terminal.compareAndSet(false, true)) { + coordinator.primaryCompleted(changedChunks, regionSaved); + progressChannel.incrementProgress(getRegionDirectories().getLocationAsFileName()); + } + } + + private void completeCancelled() { + if (terminal.compareAndSet(false, true)) { + coordinator.primaryCancelled(); + } + } + } + + public static class MCAFieldChangeSaveJob extends SaveDataJob { + + private final boolean regionOnly; + private final Set changedChunks; + private final Progress progressChannel; + private final PrimaryStageCoordinator coordinator; + private final AtomicBoolean terminal = new AtomicBoolean(); + + private MCAFieldChangeSaveJob(RegionDirectories dirs, Region region, boolean regionOnly, + Set changedChunks, Progress progressChannel, PrimaryStageCoordinator coordinator) { + super(dirs, region); + this.regionOnly = regionOnly; + this.changedChunks = changedChunks; + this.progressChannel = progressChannel; + this.coordinator = coordinator; + errorHandler = this::failUnexpectedly; + } + + @Override + public void execute() { + Timer timer = new Timer(); + boolean regionSaved = false; try { - Region region = Region.loadRegion(getRegionDirectories()); + regionSaved = getData().saveRegionWithTempFile(); + if (!regionOnly) { + getData().savePoiWithTempFile(); + getData().saveEntitiesWithTempFile(); + } + } catch (Exception ex) { + LOGGER.warn("failed to save changed fields for {}", getRegionDirectories().getLocationAsFileName(), ex); + } finally { + completePrimary(regionSaved); + LOGGER.debug("took {} to save data for {}", timer, getRegionDirectories().getLocationAsFileName()); + } + } + + @Override + public void cancel() { + if (terminal.compareAndSet(false, true)) { + progressChannel.cancelTask(); + coordinator.primaryCancelled(); + } + } + + private void failUnexpectedly(Throwable throwable) { + LOGGER.warn("unexpected error saving changed fields for {}", getRegionDirectories().getLocationAsFileName(), throwable); + completePrimary(false); + } + + private void completePrimary(boolean regionSaved) { + if (terminal.compareAndSet(false, true)) { + coordinator.primaryCompleted(changedChunks, regionSaved); + progressChannel.incrementProgress(getRegionDirectories().getLocationAsFileName()); + } + } + } + + private static class MCARelightProcessJob extends ProcessDataJob { + + private final Set targets; + private final Progress progressChannel; + private final AtomicBoolean terminal = new AtomicBoolean(); - region.applyFieldChanges(fields, force, selection); + private MCARelightProcessJob(RegionDirectories dirs, Set targets, Progress progressChannel) { + super(dirs, PRIORITY_LOW); + this.targets = targets; + this.progressChannel = progressChannel; + errorHandler = this::failUnexpectedly; + } - MCAFieldChangeSaveJob job = new MCAFieldChangeSaveJob(getRegionDirectories(), region, progressChannel); - job.errorHandler = errorHandler; - JobHandler.executeSaveData(job); + @Override + public boolean execute() { + if (progressChannel.taskCancelled()) { + terminal.set(true); + return true; + } + try { + Region region = Region.loadRegionFile(getRegionDirectories()); + Region.RelightResult result = region.relightChunks(targets, progressChannel::taskCancelled); + if (result.cancelled()) { + terminal.set(true); + return true; + } + if (!result.dirty()) { + complete(); + return true; + } + JobHandler.executeSaveData(new MCARelightSaveJob(getRegionDirectories(), region, progressChannel)); return false; } catch (Exception ex) { + LOGGER.warn("failed to prepare relight data for {}", getRegionDirectories().getLocationAsFileName(), ex); + complete(); + return true; + } + } + + @Override + public void cancel() { + if (terminal.compareAndSet(false, true)) { + progressChannel.cancelTask(); + } + } + + private void failUnexpectedly(Throwable throwable) { + LOGGER.warn("unexpected error preparing relight data for {}", getRegionDirectories().getLocationAsFileName(), throwable); + done(); + complete(); + } + + private void complete() { + if (terminal.compareAndSet(false, true)) { progressChannel.incrementProgress(getRegionDirectories().getLocationAsFileName()); - LOGGER.warn("error changing fields in {}", getRegionDirectories().getLocationAsFileName(), ex); } - return true; } } - public static class MCAFieldChangeSaveJob extends SaveDataJob { + private static class MCARelightSaveJob extends SaveDataJob { private final Progress progressChannel; + private final AtomicBoolean terminal = new AtomicBoolean(); - private MCAFieldChangeSaveJob(RegionDirectories file, Region region, Progress progressChannel) { - super(file, region); + private MCARelightSaveJob(RegionDirectories dirs, Region region, Progress progressChannel) { + super(dirs, region); this.progressChannel = progressChannel; + errorHandler = this::failUnexpectedly; } @Override public void execute() { - Timer t = new Timer(); try { - getData().saveWithTempFiles(); + getData().saveRegionWithTempFile(); } catch (Exception ex) { - LOGGER.warn("failed to save changed fields for {}", getRegionDirectories().getLocationAsFileName(), ex); + LOGGER.warn("failed to save relight data for {}", getRegionDirectories().getLocationAsFileName(), ex); + } finally { + complete(); + } + } + + @Override + public void cancel() { + if (terminal.compareAndSet(false, true)) { + progressChannel.cancelTask(); + } + } + + private void failUnexpectedly(Throwable throwable) { + LOGGER.warn("unexpected error saving relight data for {}", getRegionDirectories().getLocationAsFileName(), throwable); + complete(); + } + + private void complete() { + if (terminal.compareAndSet(false, true)) { + progressChannel.incrementProgress(getRegionDirectories().getLocationAsFileName()); } - progressChannel.incrementProgress(getRegionDirectories().getLocationAsFileName()); - LOGGER.debug("took {} to save data for {}", t, getRegionDirectories().getLocationAsFileName()); } } } diff --git a/src/main/java/net/querz/mcaselector/io/job/ReplaceBlocksPreviewer.java b/src/main/java/net/querz/mcaselector/io/job/ReplaceBlocksPreviewer.java new file mode 100644 index 00000000..41d304ab --- /dev/null +++ b/src/main/java/net/querz/mcaselector/io/job/ReplaceBlocksPreviewer.java @@ -0,0 +1,293 @@ +package net.querz.mcaselector.io.job; + +import net.querz.mcaselector.changer.fields.ReplaceBlocksField; +import net.querz.mcaselector.config.ConfigProvider; +import net.querz.mcaselector.io.RegionDirectories; +import net.querz.mcaselector.io.WorldDirectories; +import net.querz.mcaselector.io.mca.ChunkData; +import net.querz.mcaselector.io.mca.Region; +import net.querz.mcaselector.io.mca.RegionChunk; +import net.querz.mcaselector.selection.Selection; +import net.querz.mcaselector.util.point.Point2i; +import net.querz.mcaselector.util.progress.Progress; +import net.querz.mcaselector.version.ChunkFilter; +import net.querz.mcaselector.version.VersionHandler; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Set; + +public final class ReplaceBlocksPreviewer { + + private ReplaceBlocksPreviewer() {} + + public static Result preview(ReplaceBlocksField field, Selection selection, Progress progressChannel) { + Result result = new Result(); + if (field == null || !field.needsChange()) { + progressChannel.done("no ReplaceBlocks field"); + return result; + } + + result.initializeRules(field.getNewValue()); + result.replaceAir = field.getNewValue().keySet().stream().anyMatch(ChunkFilter.BlockReplaceSource::matchesAir); + field.getNewValue().values().forEach(v -> { + if (v.getTile() != null) { + result.replaceWithTileEntity = true; + } + }); + + WorldDirectories wd = ConfigProvider.WORLD.getWorldDirs(); + RegionDirectories[] regionDirectories = wd.listRegions(selection); + if (regionDirectories == null || regionDirectories.length == 0) { + progressChannel.done("no files"); + return result; + } + + progressChannel.setMax(regionDirectories.length); + for (RegionDirectories dirs : regionDirectories) { + if (progressChannel.taskCancelled()) { + break; + } + result.scannedRegions++; + try { + Region region = Region.loadRegion(dirs); + scanRegion(region, dirs.getLocation(), field, selection, result, progressChannel); + } catch (Exception ex) { + result.errorRegions++; + result.addError(dirs.getLocationAsFileName() + ": " + ex.getMessage()); + } + progressChannel.incrementProgress(dirs.getLocationAsFileName()); + } + result.finish(selection); + progressChannel.done("done"); + return result; + } + + private static void scanRegion(Region region, Point2i regionLocation, ReplaceBlocksField field, Selection selection, + Result result, Progress progressChannel) { + Point2i firstChunk = regionLocation.regionToChunk(); + for (int x = 0; x < 32; x++) { + for (int z = 0; z < 32; z++) { + if (progressChannel.taskCancelled()) { + return; + } + Point2i chunkLocation = firstChunk.add(x, z); + if (selection != null && !selection.isChunkSelected(chunkLocation)) { + continue; + } + ChunkData chunkData = region.getChunkDataAt(chunkLocation, selection == null || selection.isChunkSelected(chunkLocation)); + RegionChunk regionChunk = chunkData.region(); + if (regionChunk == null || regionChunk.isEmpty() || regionChunk.getData() == null) { + continue; + } + result.scannedChunks++; + try { + ChunkFilter.BlockReplacePreviewData preview = VersionHandler + .getImpl(chunkData, ChunkFilter.Blocks.class) + .previewReplaceBlocks(chunkData, field.getNewValue()); + if (!preview.isSupported()) { + result.unsupportedChunks++; + continue; + } + result.addChunk(chunkLocation, preview); + } catch (Exception ex) { + result.errorChunks++; + result.addError(chunkLocation + ": " + ex.getMessage()); + } + } + } + } + + public static class Result { + + private long scannedRegions; + private long scannedChunks; + private long affectedChunks; + private long affectedSections; + private long matchedBlocks; + private long lightSections; + private long completedAirSections; + private long tileEntityAdditions; + private long tileEntityRemovals; + private long tileEntityUpdates; + private long overlappingBlocks; + private long unsupportedChunks; + private long errorChunks; + private long errorRegions; + private int potentialAdjacentRelightChunks; + private boolean replaceAir; + private boolean replaceWithTileEntity; + private final List errors = new ArrayList<>(5); + private final List rules = new ArrayList<>(); + private final Set affectedChunkLocations = new HashSet<>(); + + private void initializeRules(Map replace) { + int index = 1; + for (Map.Entry entry : replace.entrySet()) { + rules.add(new RulePreview(index++, entry.getKey(), entry.getValue())); + } + } + + void addChunk(Point2i chunkLocation, ChunkFilter.BlockReplacePreviewData preview) { + if (preview.getBlocks() > 0) { + affectedChunks++; + affectedChunkLocations.add(chunkLocation); + affectedSections += preview.getSections(); + matchedBlocks += preview.getBlocks(); + } + for (ChunkFilter.BlockReplaceRulePreviewData rule : preview.getRules()) { + int index = rule.getIndex() - 1; + if (index >= 0 && index < rules.size()) { + rules.get(index).addBlocks(rule.getBlocks()); + } + } + overlappingBlocks += preview.getOverlappingBlocks(); + lightSections += preview.getLightSections(); + completedAirSections += preview.getCompletedAirSections(); + tileEntityAdditions += preview.getTileEntityAdditions(); + tileEntityRemovals += preview.getTileEntityRemovals(); + tileEntityUpdates += preview.getTileEntityUpdates(); + } + + void finish(Selection selection) { + if (selection == null || affectedChunkLocations.isEmpty()) { + return; + } + Set adjacent = FieldChanger.getAdjacentRelightChunks(affectedChunkLocations); + adjacent.removeIf(selection::isChunkSelected); + potentialAdjacentRelightChunks = adjacent.size(); + } + + private void addError(String message) { + if (errors.size() < 5) { + errors.add(message); + } + } + + public long getScannedRegions() { + return scannedRegions; + } + + public long getScannedChunks() { + return scannedChunks; + } + + public long getAffectedChunks() { + return affectedChunks; + } + + public long getAffectedSections() { + return affectedSections; + } + + public long getMatchedBlocks() { + return matchedBlocks; + } + + public long getLightSections() { + return lightSections; + } + + public long getCompletedAirSections() { + return completedAirSections; + } + + public long getTileEntityAdditions() { + return tileEntityAdditions; + } + + public long getTileEntityRemovals() { + return tileEntityRemovals; + } + + public long getTileEntityUpdates() { + return tileEntityUpdates; + } + + public long getOverlappingBlocks() { + return overlappingBlocks; + } + + public long getUnsupportedChunks() { + return unsupportedChunks; + } + + public long getErrorChunks() { + return errorChunks; + } + + public long getErrorRegions() { + return errorRegions; + } + + public int getPotentialAdjacentRelightChunks() { + return potentialAdjacentRelightChunks; + } + + public boolean replacesAir() { + return replaceAir; + } + + public boolean replacesWithTileEntity() { + return replaceWithTileEntity; + } + + public List getErrors() { + return errors; + } + + public List getRules() { + return Collections.unmodifiableList(rules); + } + } + + public static class RulePreview { + + private final int index; + private final String sourceMode; + private final String sourceText; + private final String targetText; + private long blocks; + + private RulePreview(int index, ChunkFilter.BlockReplaceSource source, ChunkFilter.BlockReplaceData target) { + this.index = index; + String mode = source.getType().name().toLowerCase(Locale.ROOT).replace('_', '-'); + if (source.getTileEntityMode() != ChunkFilter.BlockReplaceTileEntityMode.ANY) { + mode += "/" + source.getTileEntityMode().name().toLowerCase(Locale.ROOT).replace('_', '-'); + } + if (source.hasBiomeRestriction()) { + mode += "/biome"; + } + sourceMode = mode; + sourceText = source.toString(); + targetText = target.toString(); + } + + private void addBlocks(long blocks) { + this.blocks += blocks; + } + + public int getIndex() { + return index; + } + + public String getSourceMode() { + return sourceMode; + } + + public String getSourceText() { + return sourceText; + } + + public String getTargetText() { + return targetText; + } + + public long getBlocks() { + return blocks; + } + } +} diff --git a/src/main/java/net/querz/mcaselector/io/mca/ChunkData.java b/src/main/java/net/querz/mcaselector/io/mca/ChunkData.java index 77c3d4b0..51fd38c4 100644 --- a/src/main/java/net/querz/mcaselector/io/mca/ChunkData.java +++ b/src/main/java/net/querz/mcaselector/io/mca/ChunkData.java @@ -1,6 +1,7 @@ package net.querz.mcaselector.io.mca; import net.querz.mcaselector.changer.Field; +import net.querz.mcaselector.changer.FieldType; import net.querz.mcaselector.util.point.Point2i; import net.querz.mcaselector.util.point.Point3i; import net.querz.mcaselector.overlay.Overlay; @@ -53,15 +54,24 @@ public boolean relocate(Point3i offset) { } public void applyFieldChanges(List> fields, boolean force) { + applyFieldChangesTracked(fields, force); + } + + public FieldChangeResult applyFieldChangesTracked(List> fields, boolean force) { + boolean changed = false; + boolean replaceBlocksChanged = false; for (Field field : fields) { - if (force) { - field.force(this); - } else { - field.change(this); + boolean fieldChanged = field.applyWithResult(this, force); + changed |= fieldChanged; + if (field.getType() == FieldType.REPLACE_BLOCKS) { + replaceBlocksChanged |= fieldChanged; } } + return new FieldChangeResult(changed, replaceBlocksChanged); } + public record FieldChangeResult(boolean changed, boolean replaceBlocksChanged) {} + public int parseData(Overlay parser) { return parser.parseValue(this); } diff --git a/src/main/java/net/querz/mcaselector/io/mca/Region.java b/src/main/java/net/querz/mcaselector/io/mca/Region.java index 97352694..640584d3 100644 --- a/src/main/java/net/querz/mcaselector/io/mca/Region.java +++ b/src/main/java/net/querz/mcaselector/io/mca/Region.java @@ -1,6 +1,7 @@ package net.querz.mcaselector.io.mca; import net.querz.mcaselector.changer.Field; +import net.querz.mcaselector.changer.FieldType; import net.querz.mcaselector.filter.Filter; import net.querz.mcaselector.io.RegionDirectories; import net.querz.mcaselector.util.point.Point2i; @@ -9,11 +10,16 @@ import net.querz.mcaselector.util.range.Range; import net.querz.mcaselector.selection.ChunkSet; import net.querz.mcaselector.selection.Selection; +import net.querz.mcaselector.version.ChunkFilter; +import net.querz.mcaselector.version.VersionHandler; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import java.io.File; import java.io.IOException; +import java.util.HashSet; import java.util.List; +import java.util.Set; +import java.util.function.BooleanSupplier; // holds data for chunks, poi and entities public class Region { @@ -44,6 +50,16 @@ public static Region loadRegion(RegionDirectories dirs) throws IOException { return r; } + public static Region loadRegionFile(RegionDirectories dirs) throws IOException { + Region r = new Region(); + if (dirs.getRegion() != null) { + r.loadRegion(dirs.getRegion()); + } + r.location = dirs.getLocation(); + r.directories = dirs; + return r; + } + public static Region loadRegionHeaders(RegionDirectories dirs) throws IOException { Region r = new Region(); if (dirs.getRegion() != null && dirs.getRegion().length() >= 8192) { @@ -226,6 +242,22 @@ public void saveWithTempFiles(RegionDirectories dest) throws IOException { } } + public boolean saveRegionWithTempFile() throws IOException { + return region != null && region.saveWithTempFile(); + } + + public void savePoiWithTempFile() throws IOException { + if (poi != null) { + poi.saveWithTempFile(); + } + } + + public void saveEntitiesWithTempFile() throws IOException { + if (entities != null) { + entities.saveWithTempFile(); + } + } + public void deFragment() throws IOException { if (region != null) { region.deFragment(); @@ -366,24 +398,92 @@ public ChunkSet getFilteredChunks(Filter filter, Selection selection) { } public void applyFieldChanges(List> fields, boolean force, Selection selection) { + applyFieldChangesTracked(fields, force, selection, () -> false); + } + + public FieldChangeResult applyFieldChangesTracked(List> fields, boolean force, Selection selection, + BooleanSupplier cancelled) { Timer t = new Timer(); boolean selected = false; + boolean dirty = false; + boolean preserveLegacySave = fields.stream().anyMatch(field -> field.getType() != FieldType.REPLACE_BLOCKS); + Set replaceBlocksChangedChunks = new HashSet<>(); for (int x = 0; x < 32; x++) { for (int z = 0; z < 32; z++) { + if (cancelled.getAsBoolean()) { + return new FieldChangeResult(dirty, Set.copyOf(replaceBlocksChangedChunks), true); + } Point2i absoluteLocation = location.regionToChunk().add(x, z); if (selection == null || (selected = selection.isChunkSelected(absoluteLocation))) { + dirty |= preserveLegacySave; ChunkData chunkData = getChunkDataAt(absoluteLocation, selected); try { - chunkData.applyFieldChanges(fields, force); + ChunkData.FieldChangeResult result = chunkData.applyFieldChangesTracked(fields, force); + dirty |= result.changed(); + if (result.replaceBlocksChanged()) { + replaceBlocksChangedChunks.add(absoluteLocation); + } } catch (Exception ex) { + if (!preserveLegacySave) { + throw new FieldChangeException(absoluteLocation, ex); + } LOGGER.warn("failed to apply field changes to chunk {}: {}", absoluteLocation, ex.getMessage()); } } } } LOGGER.debug("took {} to apply field changes to region {}", t, location); + return new FieldChangeResult(dirty, Set.copyOf(replaceBlocksChangedChunks), false); + } + + public RelightResult relightChunks(Set chunks, BooleanSupplier cancelled) { + boolean dirty = false; + if (region == null) { + return new RelightResult(false, false); + } + for (Point2i chunkLocation : chunks) { + if (cancelled.getAsBoolean()) { + return new RelightResult(dirty, true); + } + if (!chunkLocation.chunkToRegion().equals(location)) { + continue; + } + RegionChunk regionChunk = region.getChunkAt(chunkLocation); + if (regionChunk == null || regionChunk.isEmpty()) { + continue; + } + ChunkData chunkData = new ChunkData(chunkLocation, regionChunk, null, null, false); + try { + ChunkFilter.LightPopulated light = VersionHandler.getImpl(chunkData, ChunkFilter.LightPopulated.class); + var lightPopulated = light.getLightPopulated(chunkData); + if (lightPopulated != null && lightPopulated.asByte() != 0) { + light.setLightPopulated(chunkData, (byte) 0); + dirty = true; + } + } catch (Exception ex) { + LOGGER.warn("failed to mark chunk {} for relighting: {}", chunkLocation, ex.getMessage()); + } + } + return new RelightResult(dirty, false); } + public record FieldChangeResult(boolean dirty, Set replaceBlocksChangedChunks, boolean cancelled) {} + + public static final class FieldChangeException extends RuntimeException { + private final Point2i chunk; + + private FieldChangeException(Point2i chunk, Throwable cause) { + super("failed to apply ReplaceBlocks changes to chunk " + chunk, cause); + this.chunk = chunk; + } + + public Point2i chunk() { + return chunk; + } + } + + public record RelightResult(boolean dirty, boolean cancelled) {} + public void mergeInto(Region region, Point3i offset, boolean overwrite, ChunkSet sourceChunks, ChunkSet targetChunks, List ranges) { if (this.region != null) { this.region.mergeChunksInto(region.region, offset, overwrite, sourceChunks, targetChunks, ranges); diff --git a/src/main/java/net/querz/mcaselector/logging/Logging.java b/src/main/java/net/querz/mcaselector/logging/Logging.java index 1bf02b2d..8670b1e4 100644 --- a/src/main/java/net/querz/mcaselector/logging/Logging.java +++ b/src/main/java/net/querz/mcaselector/logging/Logging.java @@ -7,6 +7,8 @@ import org.apache.logging.log4j.core.config.Configuration; import org.apache.logging.log4j.core.config.LoggerConfig; import java.io.File; +import java.io.PrintStream; +import java.util.function.BiConsumer; public final class Logging { @@ -44,6 +46,27 @@ public static void setLogDir(File dir) { System.setProperty("logDir", dir.getAbsolutePath()); } + public static void installUncaughtExceptionHandler() { + org.apache.logging.log4j.Logger logger = LogManager.getLogger(Logging.class); + Thread.setDefaultUncaughtExceptionHandler(createUncaughtExceptionHandler( + (threadName, throwable) -> logger.fatal("uncaught exception in thread {}", threadName, throwable), + System.err + )); + } + + static Thread.UncaughtExceptionHandler createUncaughtExceptionHandler( + BiConsumer log, + PrintStream standardError + ) { + return (thread, throwable) -> { + try { + log.accept(thread.getName(), throwable); + } finally { + throwable.printStackTrace(standardError); + } + }; + } + private static Level fromString(String level) { return switch (level) { case TRACE -> Level.TRACE; diff --git a/src/main/java/net/querz/mcaselector/text/Translation.java b/src/main/java/net/querz/mcaselector/text/Translation.java index 6ae90cf8..7869fe00 100644 --- a/src/main/java/net/querz/mcaselector/text/Translation.java +++ b/src/main/java/net/querz/mcaselector/text/Translation.java @@ -184,6 +184,111 @@ public enum Translation { DIALOG_CHANGE_NBT_CONFIRMATION_HEADER_SHORT("dialog.change_nbt_confirmation.header_short"), DIALOG_CHANGE_NBT_TAB_QUERY("dialog.change_nbt.tab_query"), DIALOG_CHANGE_NBT_TAB_SCRIPT("dialog.change_nbt.tab_script"), + DIALOG_REPLACE_BLOCKS_BUILDER_BUTTON("dialog.replace_blocks.builder.button"), + DIALOG_REPLACE_BLOCKS_BUILDER_TITLE("dialog.replace_blocks.builder.title"), + DIALOG_REPLACE_BLOCKS_BUILDER_FROM("dialog.replace_blocks.builder.from"), + DIALOG_REPLACE_BLOCKS_BUILDER_TO("dialog.replace_blocks.builder.to"), + DIALOG_REPLACE_BLOCKS_BUILDER_ADD_RULE("dialog.replace_blocks.builder.add_rule"), + DIALOG_REPLACE_BLOCKS_BUILDER_DELETE_RULE("dialog.replace_blocks.builder.delete_rule"), + DIALOG_REPLACE_BLOCKS_BUILDER_RULES("dialog.replace_blocks.builder.rules"), + DIALOG_REPLACE_BLOCKS_BUILDER_RULES_EMPTY("dialog.replace_blocks.builder.rules.empty"), + DIALOG_REPLACE_BLOCKS_BUILDER_RESULT("dialog.replace_blocks.builder.result"), + DIALOG_REPLACE_BLOCKS_BUILDER_INVALID("dialog.replace_blocks.builder.invalid"), + DIALOG_REPLACE_BLOCKS_BUILDER_DUPLICATE("dialog.replace_blocks.builder.duplicate"), + DIALOG_REPLACE_BLOCKS_BUILDER_EMPTY("dialog.replace_blocks.builder.empty"), + DIALOG_REPLACE_BLOCKS_BUILDER_ADVANCED("dialog.replace_blocks.builder.advanced"), + DIALOG_REPLACE_BLOCKS_BUILDER_TILE_SOURCE_ANY("dialog.replace_blocks.builder.tile_source.any"), + DIALOG_REPLACE_BLOCKS_BUILDER_TILE_SOURCE_REQUIRE("dialog.replace_blocks.builder.tile_source.require"), + DIALOG_REPLACE_BLOCKS_BUILDER_TILE_SOURCE_EXCLUDE("dialog.replace_blocks.builder.tile_source.exclude"), + DIALOG_REPLACE_BLOCKS_BUILDER_Y_MIN("dialog.replace_blocks.builder.y_min"), + DIALOG_REPLACE_BLOCKS_BUILDER_Y_MAX("dialog.replace_blocks.builder.y_max"), + DIALOG_REPLACE_BLOCKS_BUILDER_BIOME("dialog.replace_blocks.builder.biome"), + DIALOG_REPLACE_BLOCKS_BUILDER_BIOME_PROMPT("dialog.replace_blocks.builder.biome.prompt"), + DIALOG_REPLACE_BLOCKS_BUILDER_SOURCE_CONSTRAINTS("dialog.replace_blocks.builder.source_constraints"), + DIALOG_REPLACE_BLOCKS_BUILDER_CATALOG("dialog.replace_blocks.builder.catalog"), + DIALOG_REPLACE_BLOCKS_BUILDER_CATALOG_SWITCH_TITLE("dialog.replace_blocks.builder.catalog_switch.title"), + DIALOG_REPLACE_BLOCKS_BUILDER_CATALOG_SWITCH_MESSAGE("dialog.replace_blocks.builder.catalog_switch.message"), + DIALOG_REPLACE_BLOCKS_BUILDER_CATALOG_NOTE("dialog.replace_blocks.builder.catalog.note"), + DIALOG_REPLACE_BLOCKS_BUILDER_CATALOG_SOURCE_UNKNOWN("dialog.replace_blocks.builder.catalog.source_unknown"), + DIALOG_REPLACE_BLOCKS_BUILDER_CATALOG_TARGET_UNKNOWN("dialog.replace_blocks.builder.catalog.target_unknown"), + DIALOG_REPLACE_BLOCKS_BUILDER_PRESET("dialog.replace_blocks.builder.preset"), + DIALOG_REPLACE_BLOCKS_BUILDER_PRESET_PROMPT("dialog.replace_blocks.builder.preset.prompt"), + DIALOG_REPLACE_BLOCKS_BUILDER_PRESET_APPLY("dialog.replace_blocks.builder.preset.apply"), + DIALOG_REPLACE_BLOCKS_BUILDER_PRESET_SAVE("dialog.replace_blocks.builder.preset.save"), + DIALOG_REPLACE_BLOCKS_BUILDER_PRESET_DELETE("dialog.replace_blocks.builder.preset.delete"), + DIALOG_REPLACE_BLOCKS_BUILDER_PRESET_TITLE("dialog.replace_blocks.builder.preset.title"), + DIALOG_REPLACE_BLOCKS_BUILDER_PRESET_SAVE_TITLE("dialog.replace_blocks.builder.preset.save.title"), + DIALOG_REPLACE_BLOCKS_BUILDER_PRESET_SAVE_HEADER("dialog.replace_blocks.builder.preset.save.header"), + DIALOG_REPLACE_BLOCKS_BUILDER_PRESET_SAVE_NAME("dialog.replace_blocks.builder.preset.save.name"), + DIALOG_REPLACE_BLOCKS_BUILDER_PRESET_NAME_EMPTY("dialog.replace_blocks.builder.preset.name_empty"), + DIALOG_REPLACE_BLOCKS_BUILDER_PRESET_BUILTIN_LOCKED("dialog.replace_blocks.builder.preset.builtin_locked"), + DIALOG_REPLACE_BLOCKS_BUILDER_PRESET_OVERWRITE_CONFIRM("dialog.replace_blocks.builder.preset.overwrite_confirm"), + DIALOG_REPLACE_BLOCKS_BUILDER_PRESET_DELETE_CONFIRM("dialog.replace_blocks.builder.preset.delete_confirm"), + DIALOG_REPLACE_BLOCKS_BUILDER_PRESET_REPLACE_CONFIRM("dialog.replace_blocks.builder.preset.replace_confirm"), + DIALOG_REPLACE_BLOCKS_BUILDER_PRESET_SAVED("dialog.replace_blocks.builder.preset.saved"), + DIALOG_REPLACE_BLOCKS_BUILDER_PRESET_PERSIST_FAILED("dialog.replace_blocks.builder.preset.persist_failed"), + DIALOG_REPLACE_BLOCKS_BUILDER_PRESET_ALREADY_FILLED("dialog.replace_blocks.builder.preset.already_filled"), + DIALOG_REPLACE_BLOCKS_BUILDER_DISCARD_TITLE("dialog.replace_blocks.builder.discard.title"), + DIALOG_REPLACE_BLOCKS_BUILDER_DISCARD_HEADER("dialog.replace_blocks.builder.discard.header"), + DIALOG_REPLACE_BLOCKS_BUILDER_DISCARD_ACTION("dialog.replace_blocks.builder.discard.action"), + DIALOG_REPLACE_BLOCKS_BUILDER_CONTINUE_EDITING_ACTION("dialog.replace_blocks.builder.continue_editing.action"), + DIALOG_REPLACE_BLOCKS_BUILDER_PRESET_AIR_TO_STONE("dialog.replace_blocks.builder.preset.air_to_stone"), + DIALOG_REPLACE_BLOCKS_BUILDER_PRESET_FLUIDS_TO_AIR("dialog.replace_blocks.builder.preset.fluids_to_air"), + DIALOG_REPLACE_BLOCKS_BUILDER_PRESET_LOGS_LEAVES_TO_AIR("dialog.replace_blocks.builder.preset.logs_leaves_to_air"), + DIALOG_REPLACE_BLOCKS_BUILDER_PRESET_ORES_TO_STONE("dialog.replace_blocks.builder.preset.ores_to_stone"), + DIALOG_REPLACE_BLOCKS_BUILDER_PRESET_CONTAINERS_TO_AIR("dialog.replace_blocks.builder.preset.containers_to_air"), + DIALOG_REPLACE_BLOCKS_BUILDER_PRESET_WARNING_AIR("dialog.replace_blocks.builder.preset.warning_air"), + DIALOG_REPLACE_BLOCKS_BUILDER_PRESET_WARNING_CONTAINERS("dialog.replace_blocks.builder.preset.warning_containers"), + DIALOG_REPLACE_BLOCKS_BUILDER_EDIT_RULE("dialog.replace_blocks.builder.edit_rule"), + DIALOG_REPLACE_BLOCKS_BUILDER_PROPERTY_ALL("dialog.replace_blocks.builder.property.all"), + DIALOG_REPLACE_BLOCKS_BUILDER_HELP_BUTTON("dialog.replace_blocks.builder.help.button"), + DIALOG_REPLACE_BLOCKS_BUILDER_HELP_TITLE("dialog.replace_blocks.builder.help.title"), + DIALOG_REPLACE_BLOCKS_BUILDER_HELP_NBT_TITLE("dialog.replace_blocks.builder.help.nbt.title"), + DIALOG_REPLACE_BLOCKS_BUILDER_HELP_NBT_INTRO("dialog.replace_blocks.builder.help.nbt.intro"), + DIALOG_REPLACE_BLOCKS_BUILDER_HELP_NBT_ANY("dialog.replace_blocks.builder.help.nbt.any"), + DIALOG_REPLACE_BLOCKS_BUILDER_HELP_NBT_PRESENT("dialog.replace_blocks.builder.help.nbt.present"), + DIALOG_REPLACE_BLOCKS_BUILDER_HELP_NBT_ABSENT("dialog.replace_blocks.builder.help.nbt.absent"), + DIALOG_REPLACE_BLOCKS_BUILDER_HELP_NBT_NOTE("dialog.replace_blocks.builder.help.nbt.note"), + DIALOG_REPLACE_BLOCKS_BUILDER_HELP_BIOME_TITLE("dialog.replace_blocks.builder.help.biome.title"), + DIALOG_REPLACE_BLOCKS_BUILDER_HELP_BIOME_INTRO("dialog.replace_blocks.builder.help.biome.intro"), + DIALOG_REPLACE_BLOCKS_BUILDER_HELP_BIOME_SYNTAX("dialog.replace_blocks.builder.help.biome.syntax"), + DIALOG_REPLACE_BLOCKS_PREVIEW_BUTTON("dialog.replace_blocks.preview.button"), + DIALOG_REPLACE_BLOCKS_PREVIEW_TITLE("dialog.replace_blocks.preview.title"), + DIALOG_REPLACE_BLOCKS_PREVIEW_NO_FIELD("dialog.replace_blocks.preview.no_field"), + DIALOG_REPLACE_BLOCKS_PREVIEW_RESULT("dialog.replace_blocks.preview.result"), + DIALOG_REPLACE_BLOCKS_PREVIEW_RULES("dialog.replace_blocks.preview.rules"), + DIALOG_REPLACE_BLOCKS_PREVIEW_RULE("dialog.replace_blocks.preview.rule"), + DIALOG_REPLACE_BLOCKS_PREVIEW_WARNING_AIR("dialog.replace_blocks.preview.warning_air"), + DIALOG_REPLACE_BLOCKS_PREVIEW_WARNING_OVERLAP("dialog.replace_blocks.preview.warning_overlap"), + DIALOG_REPLACE_BLOCKS_PREVIEW_WARNING_TILE("dialog.replace_blocks.preview.warning_tile"), + DIALOG_REPLACE_BLOCKS_PREVIEW_WARNING_LIGHT("dialog.replace_blocks.preview.warning_light"), + DIALOG_REPLACE_BLOCKS_PREVIEW_WARNING_ADJACENT_RELIGHT("dialog.replace_blocks.preview.warning_adjacent_relight"), + DIALOG_REPLACE_BLOCKS_PREVIEW_WARNING_HEIGHTMAPS("dialog.replace_blocks.preview.warning_heightmaps"), + DIALOG_REPLACE_BLOCKS_PREVIEW_WARNING_UNSUPPORTED("dialog.replace_blocks.preview.warning_unsupported"), + DIALOG_REPLACE_BLOCKS_PREVIEW_WARNING_ERRORS("dialog.replace_blocks.preview.warning_errors"), + DIALOG_REPLACE_BLOCKS_VALIDATION_SOURCE_EMPTY("dialog.replace_blocks.validation.source_empty"), + DIALOG_REPLACE_BLOCKS_VALIDATION_TARGET_EMPTY("dialog.replace_blocks.validation.target_empty"), + DIALOG_REPLACE_BLOCKS_VALIDATION_SOURCE_UNKNOWN("dialog.replace_blocks.validation.source_unknown"), + DIALOG_REPLACE_BLOCKS_VALIDATION_TARGET_UNKNOWN("dialog.replace_blocks.validation.target_unknown"), + DIALOG_REPLACE_BLOCKS_VALIDATION_SOURCE_FORMAT("dialog.replace_blocks.validation.source_format"), + DIALOG_REPLACE_BLOCKS_VALIDATION_TARGET_FORMAT("dialog.replace_blocks.validation.target_format"), + DIALOG_REPLACE_BLOCKS_VALIDATION_MISSING_EQUALS("dialog.replace_blocks.validation.missing_equals"), + DIALOG_REPLACE_BLOCKS_VALIDATION_SOURCE_STATE_SNBT("dialog.replace_blocks.validation.source_state_snbt"), + DIALOG_REPLACE_BLOCKS_VALIDATION_STATE_SNBT("dialog.replace_blocks.validation.state_snbt"), + DIALOG_REPLACE_BLOCKS_VALIDATION_TILE_EMPTY("dialog.replace_blocks.validation.tile_empty"), + DIALOG_REPLACE_BLOCKS_VALIDATION_TILE_SNBT("dialog.replace_blocks.validation.tile_snbt"), + DIALOG_REPLACE_BLOCKS_VALIDATION_TRAILING("dialog.replace_blocks.validation.trailing"), + DIALOG_REPLACE_BLOCKS_VALIDATION_TARGET_QUOTE("dialog.replace_blocks.validation.target_quote"), + DIALOG_REPLACE_BLOCKS_VALIDATION_QUOTED_TARGET_AMBIGUOUS("dialog.replace_blocks.validation.quoted_target_ambiguous"), + DIALOG_REPLACE_BLOCKS_VALIDATION_SOURCE_REGEX("dialog.replace_blocks.validation.source_regex"), + DIALOG_REPLACE_BLOCKS_VALIDATION_SOURCE_MODE_WRAPPER("dialog.replace_blocks.validation.source_mode_wrapper"), + DIALOG_REPLACE_BLOCKS_VALIDATION_SOURCE_LITERAL("dialog.replace_blocks.validation.source_literal"), + DIALOG_REPLACE_BLOCKS_VALIDATION_SOURCE_REGEX_SYNTAX("dialog.replace_blocks.validation.source_regex_syntax"), + DIALOG_REPLACE_BLOCKS_VALIDATION_SOURCE_PROPS("dialog.replace_blocks.validation.source_props"), + DIALOG_REPLACE_BLOCKS_VALIDATION_SOURCE_Y_RANGE("dialog.replace_blocks.validation.source_y_range"), + DIALOG_REPLACE_BLOCKS_VALIDATION_SOURCE_BIOME("dialog.replace_blocks.validation.source_biome"), + DIALOG_CHANGE_NBT_QUERY_INVALID("dialog.change_nbt.query_invalid"), + DIALOG_CHANGE_NBT_REPLACE_BLOCKS_QUERY_QUOTE("dialog.change_nbt.replace_blocks_query_quote"), DIALOG_EDIT_NBT_TITLE("dialog.edit_nbt.title"), DIALOG_EDIT_NBT_PLACEHOLDER_LOADING("dialog.edit_nbt.placeholder.loading"), DIALOG_EDIT_NBT_PLACEHOLDER_NO_CHUNK_DATA("dialog.edit_nbt.placeholder.no_chunk_data"), @@ -217,6 +322,7 @@ public enum Translation { DIALOG_PROGRESS_TITLE_EXPORTING_FILTERED_CHUNKS("dialog.progress.title.exporting_filtered_chunks"), DIALOG_PROGRESS_TITLE_SELECTING_FILTERED_CHUNKS("dialog.progress.title.selecting_filtered_chunks"), DIALOG_PROGRESS_TITLE_CHANGING_NBT_DATA("dialog.progress.title.changing_nbt_data"), + DIALOG_PROGRESS_TITLE_PREVIEW_REPLACE_BLOCKS("dialog.progress.title.preview_replace_blocks"), DIALOG_PROGRESS_TITLE_SAVING_CHUNK("dialog.progress.title.saving_chunk"), DIALOG_PROGRESS_TITLE_RUNNING_BEFORE("dialog.progress.title.running_before"), DIALOG_PROGRESS_TITLE_RUNNING_AFTER("dialog.progress.title.running_after"), diff --git a/src/main/java/net/querz/mcaselector/ui/ProgressTask.java b/src/main/java/net/querz/mcaselector/ui/ProgressTask.java index b66b7fae..0be18811 100644 --- a/src/main/java/net/querz/mcaselector/ui/ProgressTask.java +++ b/src/main/java/net/querz/mcaselector/ui/ProgressTask.java @@ -15,7 +15,7 @@ public abstract class ProgressTask extends Task implements Progress { private final StringProperty infoProperty = new SimpleStringProperty(Translation.DIALOG_PROGRESS_RUNNING.toString()); private Runnable onFinish; private boolean locked = false; - private boolean cancelled = false; + private volatile boolean cancelled = false; public ProgressTask() {} diff --git a/src/main/java/net/querz/mcaselector/ui/dialog/CancellableProgressDialog.java b/src/main/java/net/querz/mcaselector/ui/dialog/CancellableProgressDialog.java index b3914249..ecacd78b 100644 --- a/src/main/java/net/querz/mcaselector/ui/dialog/CancellableProgressDialog.java +++ b/src/main/java/net/querz/mcaselector/ui/dialog/CancellableProgressDialog.java @@ -1,6 +1,7 @@ package net.querz.mcaselector.ui.dialog; import javafx.application.Platform; +import javafx.concurrent.Worker; import javafx.scene.control.Button; import javafx.scene.layout.HBox; import javafx.stage.Stage; @@ -10,10 +11,21 @@ public class CancellableProgressDialog extends ProgressDialog { + enum CancellationScope { + GLOBAL_JOBS, + CURRENT_TASK + } + private boolean cancelled = false; + private final CancellationScope cancellationScope; public CancellableProgressDialog(Translation title, Stage primaryStage) { + this(title, primaryStage, CancellationScope.GLOBAL_JOBS); + } + + CancellableProgressDialog(Translation title, Stage primaryStage, CancellationScope cancellationScope) { super(title, primaryStage); + this.cancellationScope = cancellationScope; HBox cancelBox = new HBox(); cancelBox.getStyleClass().add("cancel-box"); @@ -26,12 +38,35 @@ public CancellableProgressDialog(Translation title, Stage primaryStage) { cancelled = true; getCurrentTask().setLocked(true); getCurrentTask().setIndeterminate(Translation.DIALOG_PROGRESS_CANCELLING.toString()); - JobHandler.cancelAllJobsAndFlushAsync(() -> Platform.runLater(() -> { - getCurrentTask().cancelTask(); - getCurrentTask().done(Translation.DIALOG_PROGRESS_DONE.toString()); + getCurrentTask().cancelTask(); + cancellationAction( + cancellationScope, + () -> JobHandler.cancelAllJobsAndFlushAsync(() -> Platform.runLater(() -> { + getCurrentTask().done(Translation.DIALOG_PROGRESS_DONE.toString()); + close(); + })), + this::closeWhenCurrentTaskFinishes + ).run(); + }); + } + + static Runnable cancellationAction(CancellationScope scope, Runnable globalCancellation, Runnable currentTaskCancellation) { + return scope == CancellationScope.GLOBAL_JOBS ? globalCancellation : currentTaskCancellation; + } + + private void closeWhenCurrentTaskFinishes() { + getCurrentTask().stateProperty().addListener((observable, oldState, newState) -> { + if (isTerminal(newState)) { close(); - })); + } }); + if (isTerminal(getCurrentTask().getState())) { + close(); + } + } + + private boolean isTerminal(Worker.State state) { + return state == Worker.State.SUCCEEDED || state == Worker.State.CANCELLED || state == Worker.State.FAILED; } public boolean cancelled() { diff --git a/src/main/java/net/querz/mcaselector/ui/dialog/ChangeNBTDialog.java b/src/main/java/net/querz/mcaselector/ui/dialog/ChangeNBTDialog.java index d942f150..0488cfe2 100644 --- a/src/main/java/net/querz/mcaselector/ui/dialog/ChangeNBTDialog.java +++ b/src/main/java/net/querz/mcaselector/ui/dialog/ChangeNBTDialog.java @@ -1,14 +1,17 @@ package net.querz.mcaselector.ui.dialog; import javafx.application.Platform; +import javafx.animation.PauseTransition; import javafx.css.PseudoClass; import javafx.geometry.Pos; import javafx.scene.Node; import javafx.scene.control.*; import javafx.scene.layout.HBox; +import javafx.scene.layout.Priority; import javafx.scene.layout.VBox; import javafx.stage.Stage; import javafx.stage.StageStyle; +import javafx.util.Duration; import net.querz.mcaselector.changer.ChangeParser; import net.querz.mcaselector.changer.Field; import net.querz.mcaselector.changer.FieldType; @@ -27,6 +30,7 @@ import net.querz.mcaselector.ui.UIFactory; import net.querz.mcaselector.ui.component.PersistentDialogProperties; import net.querz.mcaselector.util.validation.BeforeAfterCallback; +import net.querz.mcaselector.version.mapping.blockstate.BlockStateCatalog; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import java.io.File; @@ -39,6 +43,7 @@ public class ChangeNBTDialog extends Dialog implements PersistentDialogProperties { private static final Logger LOGGER = LogManager.getLogger(ChangeNBTDialog.class); + private static final Duration REPLACE_BLOCKS_VALIDATION_DELAY = Duration.millis(500); private static final String initScript = """ import net.querz.mcaselector.io.mca.ChunkData; @@ -59,13 +64,19 @@ void after() { private final List> fields = new ArrayList<>(); private final TabPane tabs = new TabPane(); private final TextField changeQuery = new TextField(); + private final Label changeQueryValidation = new Label(); private final RadioButton change = UIFactory.radio(Translation.DIALOG_CHANGE_NBT_CHANGE); private final RadioButton force = UIFactory.radio(Translation.DIALOG_CHANGE_NBT_FORCE); private final CheckBox selectionOnly = UIFactory.checkbox(Translation.DIALOG_CHANGE_NBT_SELECTION_ONLY); + private final Stage primaryStage; + private final TileMap tileMap; private static final CodeEditor codeEditor = new CodeEditor(initScript); private static int lastSelectedTab; public ChangeNBTDialog(TileMap tileMap, Stage primaryStage) { + this.primaryStage = primaryStage; + this.tileMap = tileMap; + BlockCatalogPreloader.preload(); titleProperty().bind(Translation.DIALOG_CHANGE_NBT_TITLE.getProperty()); initStyle(StageStyle.UTILITY); @@ -73,6 +84,7 @@ public ChangeNBTDialog(TileMap tileMap, Stage primaryStage) { setResizable(true); getDialogPane().getStyleClass().add("change-nbt-dialog-pane"); + getDialogPane().setPrefSize(760, 520); setResultConverter(p -> { ConfigProvider.GLOBAL.setChangeScript(codeEditor.getSource()); @@ -128,7 +140,8 @@ public ChangeNBTDialog(TileMap tileMap, Stage primaryStage) { ScrollPane scrollPane = new ScrollPane(); scrollPane.setContent(fieldView); - fieldView.prefWidthProperty().bind(scrollPane.widthProperty()); + scrollPane.setFitToWidth(true); + scrollPane.setHbarPolicy(ScrollPane.ScrollBarPolicy.NEVER); VBox actionBox = new VBox(); change.setTooltip(UIFactory.tooltip(Translation.DIALOG_CHANGE_NBT_CHANGE_TOOLTIP)); @@ -147,19 +160,23 @@ public ChangeNBTDialog(TileMap tileMap, Stage primaryStage) { try { List> f = cp.parse(); fieldView.updateFields(f); + clearChangeQueryValidation(); } catch (Exception ex) { LOGGER.warn("failed to parse change query from: {}, error: {}", changeQuery.getText(), ex.getMessage()); fieldView.updateFields(Collections.emptyList()); + showChangeQueryValidation(describeChangeQueryError(text, ex)); } changeQuery.setText(text); changeQuery.positionCaret(caret); }); + changeQueryValidation.getStyleClass().add("change-query-validation"); + clearChangeQueryValidation(); HBox selectionBox = new HBox(); selectionBox.getChildren().addAll(actionBox, optionBox); VBox mainBox = new VBox(); - mainBox.getChildren().addAll(scrollPane, new Separator(), changeQuery); + mainBox.getChildren().addAll(scrollPane, new Separator(), changeQuery, changeQueryValidation); Tab mainTab = UIFactory.tab(Translation.DIALOG_CHANGE_NBT_TAB_QUERY); mainTab.setContent(mainBox); @@ -181,6 +198,38 @@ public ChangeNBTDialog(TileMap tileMap, Stage primaryStage) { Platform.runLater(() -> tabs.getSelectionModel().select(lastSelectedTab)); } + static final class BlockCatalogPreloader { + + private BlockCatalogPreloader() {} + + static Thread preload() { + Thread loader = new Thread(BlockStateCatalog::available, "replace-blocks-catalog-preload"); + loader.setDaemon(true); + loader.start(); + return loader; + } + } + + private void showChangeQueryValidation(String message) { + changeQueryValidation.setText(message); + changeQueryValidation.setManaged(true); + changeQueryValidation.setVisible(true); + } + + private void clearChangeQueryValidation() { + changeQueryValidation.setText(""); + changeQueryValidation.setManaged(false); + changeQueryValidation.setVisible(false); + } + + private String describeChangeQueryError(String text, Exception ex) { + if (ReplaceBlocksDiagnostics.needsQueryQuoteHint(text)) { + return Translation.DIALOG_CHANGE_NBT_REPLACE_BLOCKS_QUERY_QUOTE.toString(); + } + String message = ex.getMessage() == null ? "" : ex.getMessage(); + return Translation.DIALOG_CHANGE_NBT_QUERY_INVALID.format(message); + } + private void readSingleChunkAsync(TileMap tileMap, FieldView fieldView) { new Thread(() -> { Selection selection = tileMap.getSelection(); @@ -241,12 +290,17 @@ public void updateFields(List> fields) { } } - private class FieldCell extends HBox { + private class FieldCell extends VBox { private final Field value; private final TextField textField; + private final Label validation = new Label(); + private final PauseTransition replaceBlocksValidationDelay; private static final PseudoClass valid = PseudoClass.getPseudoClass("valid"); + private static final PseudoClass invalid = PseudoClass.getPseudoClass("invalid"); + private static final PseudoClass error = PseudoClass.getPseudoClass("error"); + private static final PseudoClass warning = PseudoClass.getPseudoClass("warning"); private static final PseudoClass even = PseudoClass.getPseudoClass("even"); private static final PseudoClass odd = PseudoClass.getPseudoClass("odd"); @@ -260,15 +314,34 @@ public FieldCell(Field value, int index) { this.value = value; textField = new TextField(); textField.getStyleClass().add("field-cell-text"); - getChildren().addAll(new Label(value.getType().toString()), textField); + HBox input = new HBox(); + input.getStyleClass().add("field-cell-input"); + input.getChildren().addAll(new Label(value.getType().toString()), textField); + if (value.getType() == FieldType.REPLACE_BLOCKS) { + Button builder = UIFactory.button(Translation.DIALOG_REPLACE_BLOCKS_BUILDER_BUTTON); + builder.setOnAction(e -> new ReplaceBlocksRuleBuilderDialog(primaryStage, tileMap, selectionOnly.isSelected(), textField.getText()).showAndWait().ifPresent(textField::setText)); + input.getChildren().add(builder); + } + validation.getStyleClass().add("field-cell-validation"); + clearFieldValidation(); + getChildren().addAll(input, validation); + replaceBlocksValidationDelay = value.getType() == FieldType.REPLACE_BLOCKS + ? new PauseTransition(REPLACE_BLOCKS_VALIDATION_DELAY) + : null; textField.textProperty().addListener((a, o, n) -> onInput(n)); textField.setAlignment(Pos.CENTER); - textField.prefWidthProperty().bind(prefWidthProperty()); + textField.setMaxWidth(Double.MAX_VALUE); + HBox.setHgrow(textField, Priority.ALWAYS); } private void onInput(String newValue) { - boolean result = value.parseNewValue(newValue); - textField.pseudoClassStateChanged(valid, result); + boolean result = parseNewValue(newValue); + if (value.getType() == FieldType.REPLACE_BLOCKS) { + scheduleReplaceBlocksValidation(newValue, result); + } else { + clearFieldValidation(); + showFieldInputState(newValue, result); + } StringBuilder sb = new StringBuilder(); boolean first = true; @@ -286,6 +359,68 @@ private void onInput(String newValue) { } else { changeQuery.setText(null); } + clearChangeQueryValidation(); + } + + private void scheduleReplaceBlocksValidation(String newValue, boolean result) { + clearFieldInputState(); + clearFieldValidation(); + if (replaceBlocksValidationDelay == null) { + return; + } + replaceBlocksValidationDelay.stop(); + if (newValue == null || newValue.isBlank()) { + return; + } + replaceBlocksValidationDelay.setOnFinished(e -> { + if (!Objects.equals(textField.getText(), newValue)) { + return; + } + showFieldInputState(newValue, result); + showFieldDiagnostic(ReplaceBlocksDiagnostics.diagnoseValue(newValue, result)); + }); + replaceBlocksValidationDelay.playFromStart(); + } + + private void showFieldInputState(String newValue, boolean result) { + textField.pseudoClassStateChanged(valid, result && newValue != null && !newValue.isBlank()); + textField.pseudoClassStateChanged(invalid, !result && newValue != null && !newValue.isBlank()); + } + + private void clearFieldInputState() { + textField.pseudoClassStateChanged(valid, false); + textField.pseudoClassStateChanged(invalid, false); + } + + private boolean parseNewValue(String newValue) { + try { + return value.parseNewValue(newValue); + } catch (Exception ex) { + LOGGER.warn("failed to parse {} value from: {}, error: {}", value.getType(), newValue, ex.getMessage()); + value.setNewValueRaw(null); + return false; + } + } + + private void showFieldDiagnostic(ReplaceBlocksDiagnostics.Diagnostic diagnostic) { + validation.pseudoClassStateChanged(error, false); + validation.pseudoClassStateChanged(warning, false); + if (diagnostic.isNone()) { + clearFieldValidation(); + return; + } + validation.setText(diagnostic.message()); + validation.setManaged(true); + validation.setVisible(true); + validation.pseudoClassStateChanged(diagnostic.isError() ? error : warning, true); + } + + private void clearFieldValidation() { + validation.setText(""); + validation.setManaged(false); + validation.setVisible(false); + validation.pseudoClassStateChanged(error, false); + validation.pseudoClassStateChanged(warning, false); } } diff --git a/src/main/java/net/querz/mcaselector/ui/dialog/ReplaceBlocksAutocomplete.java b/src/main/java/net/querz/mcaselector/ui/dialog/ReplaceBlocksAutocomplete.java new file mode 100644 index 00000000..c43a0e5c --- /dev/null +++ b/src/main/java/net/querz/mcaselector/ui/dialog/ReplaceBlocksAutocomplete.java @@ -0,0 +1,358 @@ +package net.querz.mcaselector.ui.dialog; + +import javafx.application.Platform; +import javafx.beans.InvalidationListener; +import javafx.event.EventHandler; +import javafx.geometry.Bounds; +import javafx.scene.Node; +import javafx.scene.Scene; +import javafx.scene.control.ComboBox; +import javafx.scene.control.ComboBoxBase; +import javafx.scene.control.IndexedCell; +import javafx.scene.control.ListView; +import javafx.scene.control.Skin; +import javafx.scene.control.skin.ComboBoxListViewSkin; +import javafx.scene.control.skin.VirtualFlow; +import javafx.scene.input.KeyCode; +import javafx.scene.input.KeyEvent; +import javafx.css.PseudoClass; +import javafx.stage.Window; +import java.util.List; +import java.util.Locale; +import java.util.Objects; + +final class ReplaceBlocksAutocomplete { + + private static final PseudoClass HIGHLIGHTED = PseudoClass.getPseudoClass("autocomplete-highlighted"); + private static final String HIGHLIGHT_INDEX = "replace-blocks-autocomplete-highlight-index"; + + private ReplaceBlocksAutocomplete() {} + + static boolean isPopupKey(KeyCode code) { + return code == KeyCode.UP || code == KeyCode.DOWN || code == KeyCode.PAGE_UP + || code == KeyCode.PAGE_DOWN || code == KeyCode.ENTER || code == KeyCode.TAB; + } + + record HorizontalPopupBounds(double x, double width) {} + + static HorizontalPopupBounds constrainHorizontalBounds(double popupX, double popupWidth, + double comboX, double comboWidth, double ownerX, double ownerWidth, double margin) { + double safeMargin = Math.max(0, margin); + double safeLeft = ownerX + safeMargin; + double safeRight = ownerX + ownerWidth - safeMargin; + if (safeRight <= safeLeft) { + return new HorizontalPopupBounds(safeLeft, 0); + } + + double width = Math.min(Math.max(popupWidth, comboWidth), safeRight - safeLeft); + double x = popupX; + boolean comboFits = comboX >= safeLeft && comboX + comboWidth <= safeRight; + if (comboFits) { + x = comboX; + width = Math.min(width, safeRight - comboX); + } else { + x = Math.max(safeLeft, safeRight - width); + } + x = Math.max(safeLeft, Math.min(x, safeRight - width)); + return new HorizontalPopupBounds(x, width); + } + + static int selectionTarget(KeyCode code, int selectedIndex, int itemCount, int visibleRows) { + if (itemCount <= 0) { + return -1; + } + int current = selectedIndex < 0 ? 0 : selectedIndex; + return switch (code) { + case UP -> Math.max(0, selectedIndex < 0 ? itemCount - 1 : current - 1); + case DOWN -> Math.min(itemCount - 1, selectedIndex < 0 ? 0 : current + 1); + case PAGE_UP -> Math.max(0, current - Math.max(1, visibleRows - 1)); + case PAGE_DOWN -> Math.min(itemCount - 1, current + Math.max(1, visibleRows - 1)); + default -> -1; + }; + } + + static boolean focusSuggestion(ComboBox comboBox, int index) { + ListView popup = popupContent(comboBox); + if (popup == null || index < -1 || index >= popup.getItems().size()) { + return false; + } + popup.getSelectionModel().clearSelection(); + popup.getFocusModel().focus(-1); + applyHighlight(popup, index); + if (index < 0) { + return true; + } + VisibleRange range = visibleRange(popup); + if (range == null || needsReveal(index, range.first(), range.last())) { + popup.scrollTo(index); + Platform.runLater(() -> { + if (Objects.equals(popup.getProperties().get(HIGHLIGHT_INDEX), index)) { + applyHighlight(popup, index); + } + }); + } + return true; + } + + static int visibleRowCount(ComboBox comboBox, int fallback) { + ListView popup = popupContent(comboBox); + VisibleRange range = popup == null ? null : visibleRange(popup); + return range == null ? Math.max(1, fallback) : pageSize(range.first(), range.last(), fallback); + } + + private static VisibleRange visibleRange(ListView popup) { + if (!(popup.lookup(".virtual-flow") instanceof VirtualFlow flow)) { + return null; + } + IndexedCell first = flow.getFirstVisibleCell(); + IndexedCell last = flow.getLastVisibleCell(); + if (first == null || last == null) { + return null; + } + int firstFullyVisible = first.getIndex(); + int lastFullyVisible = last.getIndex(); + Bounds viewportBounds = flow.getBoundsInLocal(); + Bounds firstBounds = flow.sceneToLocal(first.localToScene(first.getBoundsInLocal())); + Bounds lastBounds = flow.sceneToLocal(last.localToScene(last.getBoundsInLocal())); + if (!isCellFullyVisible(firstBounds, viewportBounds)) { + firstFullyVisible++; + } + if (!isCellFullyVisible(lastBounds, viewportBounds)) { + lastFullyVisible--; + } + return new VisibleRange(firstFullyVisible, lastFullyVisible); + } + + static boolean needsReveal(int target, int firstVisible, int lastVisible) { + return target < firstVisible || target > lastVisible; + } + + static int pageSize(int firstVisible, int lastVisible, int fallback) { + int visible = lastVisible - firstVisible + 1; + return visible > 0 ? visible : Math.max(1, fallback); + } + + static boolean isCellFullyVisible(Bounds cellBounds, Bounds viewportBounds) { + return cellBounds.getMinY() >= viewportBounds.getMinY() - 0.5 + && cellBounds.getMaxY() <= viewportBounds.getMaxY() + 0.5; + } + + static List suggestions(List names, String query, boolean allowEmpty) { + String text = query == null ? "" : query.trim().toLowerCase(Locale.ROOT); + if (text.isEmpty()) { + return allowEmpty ? List.copyOf(names) : List.of(); + } + return names.stream().filter(name -> matches(name, text)).toList(); + } + + private static boolean matches(String name, String query) { + if (name.contains(query)) { + return true; + } + int namespace = name.indexOf(':'); + return namespace >= 0 && name.substring(namespace + 1).contains(query); + } + + static boolean isArrowTarget(Object target) { + Node node = target instanceof Node n ? n : null; + while (node != null) { + if (node.getStyleClass().contains("arrow-button")) { + return true; + } + node = node.getParent(); + } + return false; + } + + static boolean isCellHighlighted(int cellIndex, int highlightIndex, boolean empty) { + return !empty && cellIndex == highlightIndex; + } + + static boolean shouldClearExplicitCatalog(boolean explicitCatalog, boolean showing, String editorText) { + return explicitCatalog && !showing && (editorText == null || editorText.isBlank()); + } + + static void clearEmptyExplicitCatalog(ComboBox comboBox) { + String editorText = comboBox.getEditor() == null ? null : comboBox.getEditor().getText(); + if (!shouldClearExplicitCatalog(true, comboBox.isShowing(), editorText)) { + return; + } + comboBox.getItems().clear(); + comboBox.getSelectionModel().clearSelection(); + comboBox.setValue(null); + } + + static void clearHighlight(ComboBox comboBox) { + ListView popup = popupContent(comboBox); + if (popup != null) { + applyHighlight(popup, -1); + } + } + + private static void applyHighlight(ListView popup, int index) { + popup.getProperties().put(HIGHLIGHT_INDEX, index); + for (Node node : popup.lookupAll(".list-cell")) { + if (node instanceof IndexedCell cell) { + cell.pseudoClassStateChanged(HIGHLIGHTED, + isCellHighlighted(cell.getIndex(), index, cell.isEmpty())); + } + } + } + + static void installPopupKeyFilter(ComboBox comboBox, EventHandler handler) { + PopupPositionTracker positionTracker = new PopupPositionTracker(comboBox); + comboBox.addEventHandler(ComboBoxBase.ON_SHOWN, event -> { + focusSuggestion(comboBox, -1); + positionTracker.attach(); + }); + comboBox.addEventHandler(ComboBoxBase.ON_HIDDEN, event -> positionTracker.detach()); + comboBox.skinProperty().addListener((observable, oldSkin, newSkin) -> installPopupKeyFilter(newSkin, handler)); + installPopupKeyFilter(comboBox.getSkin(), handler); + } + + static void configure(ComboBox comboBox) { + comboBox.skinProperty().addListener((observable, oldSkin, newSkin) -> configure(newSkin)); + configure(comboBox.getSkin()); + } + + private static void configure(Skin skin) { + if (skin instanceof ComboBoxListViewSkin comboBoxSkin + && comboBoxSkin.getPopupContent() instanceof ListView popup + && !popup.getStyleClass().contains("replace-blocks-builder-dropdown")) { + popup.getStyleClass().add("replace-blocks-builder-dropdown"); + } + } + + private static void installPopupKeyFilter(Skin skin, EventHandler handler) { + if (skin instanceof ComboBoxListViewSkin comboBoxSkin + && comboBoxSkin.getPopupContent() instanceof ListView popup) { + popup.sceneProperty().addListener((observable, oldScene, newScene) -> { + if (oldScene != null) oldScene.removeEventFilter(KeyEvent.KEY_PRESSED, handler); + if (newScene != null) newScene.addEventFilter(KeyEvent.KEY_PRESSED, handler); + }); + Scene scene = popup.getScene(); + if (scene != null) scene.addEventFilter(KeyEvent.KEY_PRESSED, handler); + } + } + + private static ListView popupContent(ComboBox comboBox) { + if (comboBox != null && comboBox.getSkin() instanceof ComboBoxListViewSkin skin + && skin.getPopupContent() instanceof ListView popup) { + return popup; + } + return null; + } + + private static final class PopupPositionTracker { + private static final double EPSILON = 0.5; + private static final double WINDOW_MARGIN = 4; + private static final int MAX_STABILIZATION_PASSES = 4; + private final ComboBox comboBox; + private final InvalidationListener geometryListener = observable -> stabilize(); + private ListView popupContent; + private Window popupWindow; + private Window ownerWindow; + private boolean stabilizing; + private boolean stabilizationPending; + + private PopupPositionTracker(ComboBox comboBox) { + this.comboBox = comboBox; + } + + private void attach() { + detach(); + popupContent = popupContent(comboBox); + if (popupContent == null || popupContent.getScene() == null) { + popupContent = null; + return; + } + popupWindow = popupContent.getScene().getWindow(); + if (popupWindow == null) { + popupContent = null; + return; + } + ownerWindow = comboBox.getScene() == null ? null : comboBox.getScene().getWindow(); + popupContent.heightProperty().addListener(geometryListener); + popupContent.widthProperty().addListener(geometryListener); + popupWindow.heightProperty().addListener(geometryListener); + popupWindow.widthProperty().addListener(geometryListener); + popupWindow.xProperty().addListener(geometryListener); + popupWindow.yProperty().addListener(geometryListener); + if (ownerWindow != null) { + ownerWindow.xProperty().addListener(geometryListener); + ownerWindow.yProperty().addListener(geometryListener); + ownerWindow.widthProperty().addListener(geometryListener); + } + stabilize(); + } + + private void detach() { + if (popupContent != null) popupContent.heightProperty().removeListener(geometryListener); + if (popupContent != null) popupContent.widthProperty().removeListener(geometryListener); + if (popupWindow != null) { + popupWindow.heightProperty().removeListener(geometryListener); + popupWindow.widthProperty().removeListener(geometryListener); + popupWindow.xProperty().removeListener(geometryListener); + popupWindow.yProperty().removeListener(geometryListener); + } + if (ownerWindow != null) { + ownerWindow.xProperty().removeListener(geometryListener); + ownerWindow.yProperty().removeListener(geometryListener); + ownerWindow.widthProperty().removeListener(geometryListener); + } + popupContent = null; + popupWindow = null; + ownerWindow = null; + stabilizationPending = false; + } + + private void stabilize() { + if (stabilizing) { + stabilizationPending = true; + return; + } + int remainingPasses = MAX_STABILIZATION_PASSES; + do { + stabilizationPending = false; + if (popupWindow == null || popupContent == null || !comboBox.isShowing()) return; + Bounds comboBounds = comboBox.localToScreen(comboBox.getBoundsInLocal()); + if (comboBounds == null) return; + stabilizeHorizontal(comboBounds); + Bounds popupBounds = popupContent.localToScreen(popupContent.getLayoutBounds()); + if (popupBounds == null) continue; + double correction = popupBounds.getCenterY() < comboBounds.getCenterY() + ? comboBounds.getMinY() - popupBounds.getMaxY() + : comboBounds.getMaxY() - popupBounds.getMinY(); + if (Math.abs(correction) <= EPSILON) continue; + stabilizing = true; + try { + popupWindow.setY(popupWindow.getY() + correction); + } finally { + stabilizing = false; + } + } while (stabilizationPending && --remainingPasses > 0); + } + + private void stabilizeHorizontal(Bounds comboBounds) { + if (ownerWindow == null || ownerWindow.getWidth() <= 0 || popupWindow.getWidth() <= 0) return; + HorizontalPopupBounds constrained = constrainHorizontalBounds( + popupWindow.getX(), popupWindow.getWidth(), comboBounds.getMinX(), comboBounds.getWidth(), + ownerWindow.getX(), ownerWindow.getWidth(), WINDOW_MARGIN); + if (Math.abs(constrained.width() - popupWindow.getWidth()) <= EPSILON + && Math.abs(constrained.x() - popupWindow.getX()) <= EPSILON) return; + stabilizing = true; + try { + if (Math.abs(constrained.width() - popupWindow.getWidth()) > EPSILON) { + popupWindow.setWidth(constrained.width()); + } + if (Math.abs(constrained.x() - popupWindow.getX()) > EPSILON) { + popupWindow.setX(constrained.x()); + } + } finally { + stabilizing = false; + } + } + } + + private record VisibleRange(int first, int last) {} +} diff --git a/src/main/java/net/querz/mcaselector/ui/dialog/ReplaceBlocksBlockInput.java b/src/main/java/net/querz/mcaselector/ui/dialog/ReplaceBlocksBlockInput.java new file mode 100644 index 00000000..e07e9bc8 --- /dev/null +++ b/src/main/java/net/querz/mcaselector/ui/dialog/ReplaceBlocksBlockInput.java @@ -0,0 +1,41 @@ +package net.querz.mcaselector.ui.dialog; + +import javafx.scene.layout.VBox; +import net.querz.mcaselector.text.Translation; +import net.querz.mcaselector.version.mapping.blockstate.BlockStateCatalog; + +abstract class ReplaceBlocksBlockInput extends VBox { + + protected final boolean source; + private BlockStateCatalog catalog; + + protected ReplaceBlocksBlockInput(boolean source, BlockStateCatalog catalog) { + this.source = source; + this.catalog = catalog; + } + + protected final void setCatalog(BlockStateCatalog catalog) { + this.catalog = catalog; + } + + protected final ReplaceBlocksDiagnostics.Diagnostic catalogDiagnostic(String text) { + if (text.startsWith("{") || source && isSourceExpression(text)) { + return ReplaceBlocksDiagnostics.none(); + } + ReplaceBlocksDiagnostics.NameResult normalized = ReplaceBlocksDiagnostics.normalizeBuilderName(text, source); + if (normalized.name() == null || catalog.containsBlock(normalized.name())) { + return ReplaceBlocksDiagnostics.none(); + } + Translation message = source + ? Translation.DIALOG_REPLACE_BLOCKS_BUILDER_CATALOG_SOURCE_UNKNOWN + : Translation.DIALOG_REPLACE_BLOCKS_BUILDER_CATALOG_TARGET_UNKNOWN; + return new ReplaceBlocksDiagnostics.Diagnostic(ReplaceBlocksDiagnostics.Severity.WARNING, + message.format(normalized.name(), catalog.version())); + } + + private boolean isSourceExpression(String value) { + return value.startsWith("literal(") || value.startsWith("regex(") || value.startsWith("props(") + || value.startsWith("tile(") || value.startsWith("no_tile(") + || value.startsWith("y(") || value.startsWith("biome("); + } +} diff --git a/src/main/java/net/querz/mcaselector/ui/dialog/ReplaceBlocksCatalogModel.java b/src/main/java/net/querz/mcaselector/ui/dialog/ReplaceBlocksCatalogModel.java new file mode 100644 index 00000000..a75525b0 --- /dev/null +++ b/src/main/java/net/querz/mcaselector/ui/dialog/ReplaceBlocksCatalogModel.java @@ -0,0 +1,57 @@ +package net.querz.mcaselector.ui.dialog; + +import net.querz.mcaselector.version.mapping.blockstate.BlockStateCatalog; +import java.util.Comparator; +import java.util.List; + +final class ReplaceBlocksCatalogModel { + + private final List catalogs; + private BlockStateCatalog selected; + + ReplaceBlocksCatalogModel(List catalogs) { + this.catalogs = catalogs.stream() + .sorted(Comparator.comparingInt(BlockStateCatalog::dataVersion)) + .toList(); + this.selected = this.catalogs.isEmpty() ? BlockStateCatalog.latestJava() : this.catalogs.getLast(); + } + + List catalogs() { + return catalogs; + } + + BlockStateCatalog selected() { + return selected; + } + + boolean select(String version) { + for (BlockStateCatalog catalog : catalogs) { + if (catalog.version().equals(version)) { + selected = catalog; + return true; + } + } + return false; + } + + Compatibility compatibility(String name, boolean source) { + if (selected.containsBlock(name)) { + return Compatibility.KNOWN; + } + return source ? Compatibility.UNKNOWN_SOURCE : Compatibility.UNKNOWN_TARGET; + } + + String label(BlockStateCatalog catalog) { + return "Java " + catalog.version() + " (DataVersion " + catalog.dataVersion() + ")"; + } + + String shortLabel(BlockStateCatalog catalog) { + return "Java " + catalog.version(); + } + + enum Compatibility { + KNOWN, + UNKNOWN_SOURCE, + UNKNOWN_TARGET + } +} diff --git a/src/main/java/net/querz/mcaselector/ui/dialog/ReplaceBlocksDiagnostics.java b/src/main/java/net/querz/mcaselector/ui/dialog/ReplaceBlocksDiagnostics.java new file mode 100644 index 00000000..c963c95f --- /dev/null +++ b/src/main/java/net/querz/mcaselector/ui/dialog/ReplaceBlocksDiagnostics.java @@ -0,0 +1,173 @@ +package net.querz.mcaselector.ui.dialog; + +import net.querz.mcaselector.changer.fields.ReplaceBlocksField; +import net.querz.mcaselector.changer.fields.ReplaceBlocksParser; +import net.querz.mcaselector.text.Translation; +import net.querz.mcaselector.version.ChunkFilter; +import net.querz.mcaselector.version.mapping.registry.BlockRegistry; +import net.querz.nbt.CompoundTag; +import net.querz.nbt.NBTUtil; +import net.querz.nbt.Tag; +import net.querz.nbt.io.snbt.ParseException; +import net.querz.nbt.io.snbt.SNBTParser; +import java.util.regex.Pattern; + +final class ReplaceBlocksDiagnostics { + + private static final Pattern REGEX_META = Pattern.compile("[\\\\.^$|?*+()\\[\\]{}]"); + + private ReplaceBlocksDiagnostics() {} + + static NameResult normalizeBuilderName(String raw, boolean source) { + if (raw == null || raw.trim().isEmpty()) { + return new NameResult(null, error(source + ? Translation.DIALOG_REPLACE_BLOCKS_VALIDATION_SOURCE_EMPTY.toString() + : Translation.DIALOG_REPLACE_BLOCKS_VALIDATION_TARGET_EMPTY.toString())); + } + String name = ReplaceBlocksParser.normalizeResourceLocation(stripOuterSingleQuotes(raw.trim())); + if (name != null) { + return new NameResult(name, none()); + } + return new NameResult(null, error(source + ? Translation.DIALOG_REPLACE_BLOCKS_VALIDATION_SOURCE_FORMAT.toString() + : Translation.DIALOG_REPLACE_BLOCKS_VALIDATION_TARGET_FORMAT.toString())); + } + + static NameResult normalizeBuilderValue(String raw, boolean source) { + if (raw == null || raw.trim().isEmpty()) { + return normalizeBuilderName(raw, source); + } + String value = raw.trim(); + if (!value.startsWith("{")) { + return normalizeBuilderName(raw, source); + } + try { + SNBTParser parser = new SNBTParser(value); + Tag parsed = parser.parse(true); + if (!(parsed instanceof CompoundTag state) || state.getString("Name") == null) { + return invalidState(source); + } + return new NameResult(NBTUtil.toSNBT(state), none()); + } catch (ParseException | RuntimeException ex) { + return invalidState(source); + } + } + + private static NameResult invalidState(boolean source) { + return new NameResult(null, error(source + ? Translation.DIALOG_REPLACE_BLOCKS_VALIDATION_SOURCE_STATE_SNBT.toString() + : Translation.DIALOG_REPLACE_BLOCKS_VALIDATION_STATE_SNBT.toString())); + } + + static boolean parseReplaceBlocksValue(ReplaceBlocksField field, String value) { + try { + return field.parseNewValue(value); + } catch (RuntimeException ex) { + field.setNewValue(null); + return false; + } + } + + static Diagnostic builderInvalid() { + return error(Translation.DIALOG_REPLACE_BLOCKS_BUILDER_INVALID.toString()); + } + + static Diagnostic builderDuplicate() { + return error(Translation.DIALOG_REPLACE_BLOCKS_BUILDER_DUPLICATE.toString()); + } + + static Diagnostic diagnoseValue(String raw, boolean parserAccepted) { + if (raw == null || raw.trim().isEmpty()) { + return none(); + } + ReplaceBlocksParser.Result result = ReplaceBlocksParser.parse(raw); + if (result instanceof ReplaceBlocksParser.Failure failure) { + return parserError(failure.error()); + } + if (!parserAccepted) { + return builderInvalid(); + } + for (ReplaceBlocksParser.ParsedRule rule : ((ReplaceBlocksParser.Success) result).rules()) { + ChunkFilter.BlockReplaceSource source = rule.source(); + if (source.getType() == ChunkFilter.BlockReplaceSourceType.LEGACY_REGEX_NAME + && (REGEX_META.matcher(source.getName()).find() + || source.getName().startsWith("minecraft:") && !BlockRegistry.isValidName(source.getName()))) { + return warning(Translation.DIALOG_REPLACE_BLOCKS_VALIDATION_SOURCE_REGEX.format(source.getName())); + } + } + return none(); + } + + private static Diagnostic parserError(ReplaceBlocksParser.ParseError error) { + return switch (error.code()) { + case MISSING_EQUALS -> error(Translation.DIALOG_REPLACE_BLOCKS_VALIDATION_MISSING_EQUALS.toString()); + case INVALID_REGEX -> error(Translation.DIALOG_REPLACE_BLOCKS_VALIDATION_SOURCE_REGEX_SYNTAX.toString()); + case INVALID_TILE -> error(Translation.DIALOG_REPLACE_BLOCKS_VALIDATION_TILE_SNBT.toString()); + case TRAILING_INPUT -> error(Translation.DIALOG_REPLACE_BLOCKS_VALIDATION_TRAILING.toString()); + case INVALID_TARGET -> error(Translation.DIALOG_REPLACE_BLOCKS_VALIDATION_TARGET_FORMAT.toString()); + case EMPTY_VALUE -> none(); + default -> error(Translation.DIALOG_REPLACE_BLOCKS_VALIDATION_SOURCE_MODE_WRAPPER.toString()); + }; + } + + static boolean needsQueryQuoteHint(String query) { + if (query == null) { + return false; + } + String fieldName = "ReplaceBlocks"; + int fieldIndex = query.indexOf(fieldName); + if (fieldIndex < 0) { + return false; + } + int equalsIndex = query.indexOf('=', fieldIndex + fieldName.length()); + if (equalsIndex < 0) { + return false; + } + int valueStart = equalsIndex + 1; + while (valueStart < query.length() && Character.isWhitespace(query.charAt(valueStart))) { + valueStart++; + } + return valueStart < query.length() && query.charAt(valueStart) != '"'; + } + + private static String stripOuterSingleQuotes(String value) { + if (value.length() >= 2 && value.startsWith("'") && value.endsWith("'")) { + return value.substring(1, value.length() - 1); + } + return value; + } + + static Diagnostic none() { + return new Diagnostic(Severity.NONE, ""); + } + + private static Diagnostic error(String message) { + return new Diagnostic(Severity.ERROR, message); + } + + private static Diagnostic warning(String message) { + return new Diagnostic(Severity.WARNING, message); + } + + enum Severity { + NONE, + ERROR, + WARNING + } + + record Diagnostic(Severity severity, String message) { + boolean isNone() { + return severity == Severity.NONE; + } + + boolean isError() { + return severity == Severity.ERROR; + } + + boolean isWarning() { + return severity == Severity.WARNING; + } + } + + record NameResult(String name, Diagnostic diagnostic) {} +} diff --git a/src/main/java/net/querz/mcaselector/ui/dialog/ReplaceBlocksPresetRepository.java b/src/main/java/net/querz/mcaselector/ui/dialog/ReplaceBlocksPresetRepository.java new file mode 100644 index 00000000..f4e8b48d --- /dev/null +++ b/src/main/java/net/querz/mcaselector/ui/dialog/ReplaceBlocksPresetRepository.java @@ -0,0 +1,58 @@ +package net.querz.mcaselector.ui.dialog; + +import net.querz.mcaselector.config.GlobalConfig; +import java.util.ArrayList; +import java.util.List; +import java.util.function.BooleanSupplier; + +final class ReplaceBlocksPresetRepository { + + private final List presets; + private final BooleanSupplier writer; + + ReplaceBlocksPresetRepository(List presets, BooleanSupplier writer) { + this.presets = presets; + this.writer = writer; + } + + boolean save(String name, String value) { + List snapshot = new ArrayList<>(presets); + GlobalConfig.ReplaceBlocksUserPreset replacement = new GlobalConfig.ReplaceBlocksUserPreset(name, value); + int existing = find(name); + if (existing < 0) { + presets.add(replacement); + } else { + presets.set(existing, replacement); + } + return persistOrRollback(snapshot); + } + + boolean delete(String name) { + List snapshot = new ArrayList<>(presets); + presets.removeIf(preset -> preset != null && name.equals(preset.name())); + return persistOrRollback(snapshot); + } + + private int find(String name) { + for (int i = 0; i < presets.size(); i++) { + GlobalConfig.ReplaceBlocksUserPreset preset = presets.get(i); + if (preset != null && name.equals(preset.name())) { + return i; + } + } + return -1; + } + + private boolean persistOrRollback(List snapshot) { + try { + if (writer.getAsBoolean()) { + return true; + } + } catch (RuntimeException ignored) { + // The UI reports the failure after the in-memory state has been restored. + } + presets.clear(); + presets.addAll(snapshot); + return false; + } +} diff --git a/src/main/java/net/querz/mcaselector/ui/dialog/ReplaceBlocksPreviewFormatter.java b/src/main/java/net/querz/mcaselector/ui/dialog/ReplaceBlocksPreviewFormatter.java new file mode 100644 index 00000000..a4b778a2 --- /dev/null +++ b/src/main/java/net/querz/mcaselector/ui/dialog/ReplaceBlocksPreviewFormatter.java @@ -0,0 +1,59 @@ +package net.querz.mcaselector.ui.dialog; + +import net.querz.mcaselector.io.job.ReplaceBlocksPreviewer; +import net.querz.mcaselector.text.Translation; + +final class ReplaceBlocksPreviewFormatter { + + private ReplaceBlocksPreviewFormatter() {} + + static String format(ReplaceBlocksPreviewer.Result result) { + StringBuilder builder = new StringBuilder(Translation.DIALOG_REPLACE_BLOCKS_PREVIEW_RESULT.format( + result.getScannedRegions(), result.getScannedChunks(), result.getAffectedChunks(), + result.getAffectedSections(), result.getMatchedBlocks(), result.getTileEntityAdditions(), + result.getTileEntityRemovals(), result.getTileEntityUpdates())); + appendRules(builder, result); + if (result.getOverlappingBlocks() > 0) { + builder.append("\n\n").append(Translation.DIALOG_REPLACE_BLOCKS_PREVIEW_WARNING_OVERLAP.format(result.getOverlappingBlocks())); + } + if (result.replacesAir()) { + builder.append("\n\n").append(Translation.DIALOG_REPLACE_BLOCKS_PREVIEW_WARNING_AIR.format(result.getCompletedAirSections())); + } + if (result.replacesWithTileEntity() || result.getTileEntityAdditions() > 0 + || result.getTileEntityRemovals() > 0 || result.getTileEntityUpdates() > 0) { + builder.append("\n\n").append(Translation.DIALOG_REPLACE_BLOCKS_PREVIEW_WARNING_TILE.toString()); + } + if (result.getLightSections() > 0) { + builder.append("\n\n").append(Translation.DIALOG_REPLACE_BLOCKS_PREVIEW_WARNING_LIGHT.format(result.getLightSections())); + } + if (result.getPotentialAdjacentRelightChunks() > 0) { + builder.append("\n\n").append(Translation.DIALOG_REPLACE_BLOCKS_PREVIEW_WARNING_ADJACENT_RELIGHT.format( + result.getPotentialAdjacentRelightChunks())); + } + if (result.getAffectedChunks() > 0) { + builder.append("\n\n").append(Translation.DIALOG_REPLACE_BLOCKS_PREVIEW_WARNING_HEIGHTMAPS.format(result.getAffectedChunks())); + } + if (result.getUnsupportedChunks() > 0) { + builder.append("\n\n").append(Translation.DIALOG_REPLACE_BLOCKS_PREVIEW_WARNING_UNSUPPORTED.format(result.getUnsupportedChunks())); + } + if (result.getErrorChunks() > 0 || result.getErrorRegions() > 0) { + builder.append("\n\n").append(Translation.DIALOG_REPLACE_BLOCKS_PREVIEW_WARNING_ERRORS.format( + result.getErrorChunks(), result.getErrorRegions())); + for (String error : result.getErrors()) { + builder.append("\n").append(error); + } + } + return builder.toString(); + } + + private static void appendRules(StringBuilder builder, ReplaceBlocksPreviewer.Result result) { + if (result.getRules().isEmpty()) { + return; + } + builder.append("\n\n").append(Translation.DIALOG_REPLACE_BLOCKS_PREVIEW_RULES.toString()); + for (ReplaceBlocksPreviewer.RulePreview rule : result.getRules()) { + builder.append("\n").append(Translation.DIALOG_REPLACE_BLOCKS_PREVIEW_RULE.format( + rule.getIndex(), rule.getSourceMode(), rule.getSourceText(), rule.getTargetText(), rule.getBlocks())); + } + } +} diff --git a/src/main/java/net/querz/mcaselector/ui/dialog/ReplaceBlocksRuleBuilderDialog.java b/src/main/java/net/querz/mcaselector/ui/dialog/ReplaceBlocksRuleBuilderDialog.java new file mode 100644 index 00000000..24d9ce5c --- /dev/null +++ b/src/main/java/net/querz/mcaselector/ui/dialog/ReplaceBlocksRuleBuilderDialog.java @@ -0,0 +1,2598 @@ +package net.querz.mcaselector.ui.dialog; + +import javafx.application.Platform; +import javafx.beans.binding.Bindings; +import javafx.beans.property.BooleanProperty; +import javafx.beans.property.ReadOnlyStringWrapper; +import javafx.beans.property.SimpleBooleanProperty; +import javafx.collections.FXCollections; +import javafx.collections.ListChangeListener; +import javafx.collections.ObservableList; +import javafx.css.PseudoClass; +import javafx.event.ActionEvent; +import javafx.event.EventHandler; +import javafx.geometry.Insets; +import javafx.geometry.Bounds; +import javafx.geometry.Point2D; +import javafx.geometry.Pos; +import javafx.geometry.Rectangle2D; +import javafx.geometry.VPos; +import javafx.scene.Node; +import javafx.scene.control.*; +import javafx.scene.input.KeyCode; +import javafx.scene.input.KeyEvent; +import javafx.scene.input.MouseButton; +import javafx.scene.input.MouseEvent; +import javafx.scene.layout.ColumnConstraints; +import javafx.scene.layout.GridPane; +import javafx.scene.layout.HBox; +import javafx.scene.layout.Priority; +import javafx.scene.layout.Region; +import javafx.scene.layout.StackPane; +import javafx.scene.layout.VBox; +import javafx.scene.paint.Color; +import javafx.scene.shape.Rectangle; +import javafx.scene.text.Text; +import javafx.scene.text.TextFlow; +import javafx.stage.Stage; +import javafx.stage.StageStyle; +import javafx.stage.Window; +import javafx.stage.WindowEvent; +import net.querz.mcaselector.changer.fields.ReplaceBlocksField; +import net.querz.mcaselector.config.ConfigProvider; +import net.querz.mcaselector.config.GlobalConfig; +import net.querz.mcaselector.io.job.ReplaceBlocksPreviewer; +import net.querz.mcaselector.text.Translation; +import net.querz.mcaselector.tile.TileMap; +import net.querz.mcaselector.ui.UIFactory; +import net.querz.mcaselector.version.ChunkFilter; +import net.querz.mcaselector.version.mapping.blockstate.BlockStateCatalog; +import net.querz.mcaselector.version.mapping.registry.BiomeRegistry; +import net.querz.nbt.CompoundTag; +import net.querz.nbt.StringTag; +import net.querz.nbt.Tag; +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; +import java.util.concurrent.atomic.AtomicReference; +import java.util.regex.Pattern; +import java.util.stream.Collectors; + +public class ReplaceBlocksRuleBuilderDialog extends Dialog { + + private static final PseudoClass error = PseudoClass.getPseudoClass("error"); + private static final PseudoClass warning = PseudoClass.getPseudoClass("warning"); + private static final PseudoClass success = PseudoClass.getPseudoClass("success"); + private static final PseudoClass autocompleteHighlighted = PseudoClass.getPseudoClass("autocomplete-highlighted"); + private static final String AUTOCOMPLETE_HIGHLIGHT_INDEX = "replace-blocks-autocomplete-highlight-index"; + private static final String COMBO_BOX_ROWS_TO_MEASURE_WIDTH = "comboBoxRowsToMeasureWidth"; + private static final int AUTOCOMPLETE_ROWS_TO_MEASURE_WIDTH = 32; + private static final double EMPTY_RULES_HEIGHT = 160; + private static final double EMPTY_RESULT_HEIGHT = 40; + private static final double POPULATED_RESULT_MIN_HEIGHT = 52; + private static final double POPULATED_RESULT_PREF_HEIGHT = 68; + private static final double POPULATED_RESULT_MAX_HEIGHT = 92; + private static final ButtonType HELP = new ButtonType("", ButtonBar.ButtonData.LEFT); + private static final ButtonType PREVIEW = new ButtonType("", ButtonBar.ButtonData.LEFT); + private static final Color PROPERTY_CHOICE_TEXT = Color.web("#f2f2f2"); + private static final Pattern RESOURCE_LOCATION = Pattern.compile("[a-z0-9_.-]+:[a-z0-9_./-]+"); + + private final Stage primaryStage; + private final TileMap tileMap; + private final boolean selectionOnly; + private final EventHandler windowCloseFilter = this::handleWindowCloseRequest; + private final ReplaceBlocksCatalogModel catalogModel = new ReplaceBlocksCatalogModel(BlockStateCatalog.available()); + private BlockStateCatalog catalog = catalogModel.selected(); + private final ObservableList blockNames = FXCollections.observableArrayList(catalog.blockNames().stream().sorted().collect(Collectors.toList())); + private final ObservableList biomeCatalogNames = FXCollections.observableArrayList(BiomeRegistry.names().stream().sorted().collect(Collectors.toList())); + private final ReplaceBlocksPresetRepository presetRepository = new ReplaceBlocksPresetRepository( + ConfigProvider.GLOBAL.getReplaceBlocksUserPresets(), ConfigProvider.GLOBAL::saveWithResult); + private final BlockInput from = new BlockInput(true); + private final BlockInput to = new BlockInput(false); + private final ComboBox presets = new ComboBox<>(); + private final ObservableList presetItems = FXCollections.observableArrayList(); + private final TableView rules = new TableView<>(); + private final StackPane rulesArea = new StackPane(); + private final ObservableList ruleItems = FXCollections.observableArrayList(); + private final TextArea result = new TextArea(); + private final Label validation = new Label(); + private final StackPane contentLayer = new StackPane(); + private final Rectangle ruleMarquee = new Rectangle(); + private BuilderContentState initialBuilderContent; + private Node previewButton; + private Button savePreset; + private Button deletePreset; + private boolean applyingPreset; + private boolean allowNextDialogClose; + private Window builderWindow; + private boolean updatingCatalogSelector; + private Point2D ruleMarqueeAnchor; + private boolean ruleMarqueeAdditive; + private boolean ruleMarqueeDragging; + + public ReplaceBlocksRuleBuilderDialog(Stage primaryStage, String initialValue) { + this(primaryStage, null, true, initialValue); + } + + public ReplaceBlocksRuleBuilderDialog(Stage primaryStage, TileMap tileMap, boolean selectionOnly, String initialValue) { + this.primaryStage = primaryStage; + this.tileMap = tileMap; + this.selectionOnly = selectionOnly; + titleProperty().bind(Translation.DIALOG_REPLACE_BLOCKS_BUILDER_TITLE.getProperty()); + initStyle(StageStyle.UTILITY); + setResizable(true); + + getDialogPane().getStylesheets().addAll(primaryStage.getScene().getStylesheets()); + getDialogPane().getStylesheets().add(Objects.requireNonNull(ChangeNBTDialog.class.getClassLoader().getResource("style/component/change-nbt-dialog.css")).toExternalForm()); + getDialogPane().getStyleClass().add("replace-blocks-builder-pane"); + getDialogPane().getButtonTypes().addAll(HELP, PREVIEW, ButtonType.OK, ButtonType.CANCEL); + getDialogPane().setPrefSize(900, 650); + Node help = getDialogPane().lookupButton(HELP); + if (help instanceof Button button) { + button.textProperty().bind(Translation.DIALOG_REPLACE_BLOCKS_BUILDER_HELP_BUTTON.getProperty()); + button.addEventFilter(ActionEvent.ACTION, event -> { + showHelp(); + event.consume(); + }); + } + previewButton = getDialogPane().lookupButton(PREVIEW); + if (previewButton instanceof Button button) { + button.textProperty().bind(Translation.DIALOG_REPLACE_BLOCKS_PREVIEW_BUTTON.getProperty()); + button.addEventFilter(ActionEvent.ACTION, event -> { + previewReplaceBlocks(); + event.consume(); + }); + } + Node ok = getDialogPane().lookupButton(ButtonType.OK); + ok.setDisable(true); + ok.addEventFilter(ActionEvent.ACTION, event -> allowNextDialogClose = true); + getDialogPane().lookupButton(ButtonType.CANCEL) + .addEventFilter(ActionEvent.ACTION, this::handleCancelAction); + setPreviewDisabled(true); + + setResultConverter(p -> p == ButtonType.OK ? result.getText() : null); + setOnCloseRequest(event -> { + if (allowNextDialogClose) { + allowNextDialogClose = false; + } else if (!requestDiscardBuilder()) { + event.consume(); + } + }); + setOnShown(event -> { + builderWindow = getDialogPane().getScene().getWindow(); + builderWindow.addEventFilter(WindowEvent.WINDOW_CLOSE_REQUEST, windowCloseFilter); + }); + setOnHidden(event -> { + if (builderWindow != null) { + builderWindow.removeEventFilter(WindowEvent.WINDOW_CLOSE_REQUEST, windowCloseFilter); + builderWindow = null; + } + }); + + Button add = UIFactory.button(Translation.DIALOG_REPLACE_BLOCKS_BUILDER_ADD_RULE); + add.setOnAction(this::addRule); + VBox addActions = new VBox(); + addActions.getStyleClass().add("replace-blocks-builder-add-actions"); + Label addSpacer = new Label(" "); + addActions.getChildren().addAll(addSpacer, add); + + GridPane input = new GridPane(); + input.getStyleClass().add("replace-blocks-builder-input"); + input.setHgap(8); + input.setVgap(6); + input.getColumnConstraints().addAll(builderColumn(), builderColumn(), actionColumn()); + input.add(from, 0, 0); + input.add(to, 1, 0); + Node sourceConstraints = from.sourceConstraints(); + input.add(sourceConstraints, 0, 1, 2, 1); + input.add(addActions, 2, 0); + input.addEventFilter(KeyEvent.KEY_PRESSED, this::handleBuilderShortcut); + GridPane.setHgrow(from, Priority.ALWAYS); + GridPane.setHgrow(to, Priority.ALWAYS); + GridPane.setHgrow(sourceConstraints, Priority.ALWAYS); + GridPane.setValignment(addActions, VPos.TOP); + + presets.setItems(presetItems); + configureBuilderComboBox(presets); + presets.getStyleClass().add("replace-blocks-builder-preset-combo"); + presets.setCellFactory(v -> new PresetItemCell()); + presets.setButtonCell(new PresetItemCell()); + presets.setPrefWidth(360); + presets.setMaxWidth(420); + presets.promptTextProperty().bind(Translation.DIALOG_REPLACE_BLOCKS_BUILDER_PRESET_PROMPT.getProperty()); + refreshPresetItems(null); + Button applyPreset = UIFactory.button(Translation.DIALOG_REPLACE_BLOCKS_BUILDER_PRESET_APPLY); + applyPreset.getStyleClass().add("replace-blocks-builder-preset-action"); + applyPreset.disableProperty().bind(presets.valueProperty().isNull()); + applyPreset.setOnAction(this::applyPreset); + savePreset = UIFactory.button(Translation.DIALOG_REPLACE_BLOCKS_BUILDER_PRESET_SAVE); + savePreset.getStyleClass().add("replace-blocks-builder-preset-action"); + savePreset.setOnAction(this::savePreset); + deletePreset = UIFactory.button(Translation.DIALOG_REPLACE_BLOCKS_BUILDER_PRESET_DELETE); + deletePreset.getStyleClass().add("replace-blocks-builder-preset-action"); + deletePreset.setOnAction(this::deletePreset); + updatePresetButtons(); + presets.valueProperty().addListener((a, o, n) -> updatePresetButtons()); + GridPane presetInput = new GridPane(); + presetInput.getStyleClass().add("replace-blocks-builder-presets"); + presetInput.setHgap(8); + Label presetLabel = UIFactory.label(Translation.DIALOG_REPLACE_BLOCKS_BUILDER_PRESET); + presetInput.add(presetLabel, 0, 0); + presetInput.add(presets, 1, 0); + presetInput.add(applyPreset, 2, 0); + presetInput.add(savePreset, 3, 0); + presetInput.add(deletePreset, 4, 0); + + TableColumn fromColumn = new TableColumn<>(); + fromColumn.textProperty().bind(Translation.DIALOG_REPLACE_BLOCKS_BUILDER_FROM.getProperty()); + fromColumn.setCellValueFactory(c -> new ReadOnlyStringWrapper(c.getValue().from())); + fromColumn.setCellFactory(c -> new RuleCell()); + fromColumn.setSortable(false); + + TableColumn toColumn = new TableColumn<>(); + toColumn.textProperty().bind(Translation.DIALOG_REPLACE_BLOCKS_BUILDER_TO.getProperty()); + toColumn.setCellValueFactory(c -> new ReadOnlyStringWrapper(c.getValue().to())); + toColumn.setCellFactory(c -> new RuleCell()); + toColumn.setSortable(false); + + rules.setItems(ruleItems); + rules.getStyleClass().add("replace-blocks-builder-rules-table"); + Label emptyRules = new Label(Translation.DIALOG_REPLACE_BLOCKS_BUILDER_RULES_EMPTY.toString()); + emptyRules.setWrapText(true); + emptyRules.setMaxWidth(Double.MAX_VALUE); + emptyRules.setAlignment(Pos.CENTER); + emptyRules.getStyleClass().add("replace-blocks-builder-empty-placeholder"); + rules.setPlaceholder(emptyRules); + rules.getColumns().add(fromColumn); + rules.getColumns().add(toColumn); + rules.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE); + rules.getSelectionModel().getSelectedItems().addListener((ListChangeListener) change -> updatePresetButtons()); + rules.addEventFilter(KeyEvent.KEY_PRESSED, this::handleRulesKeyPressed); + rules.addEventFilter(MouseEvent.MOUSE_PRESSED, this::handleRulesMousePressed); + rules.addEventFilter(MouseEvent.MOUSE_DRAGGED, this::handleRulesMouseDragged); + rules.addEventFilter(MouseEvent.MOUSE_RELEASED, this::handleRulesMouseReleased); + rules.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY_FLEX_LAST_COLUMN); + rules.setMinHeight(150); + rules.setPrefHeight(220); + ruleItems.addListener((ListChangeListener) c -> updateRulesTableHeight()); + updateRulesTableHeight(); + + ruleMarquee.getStyleClass().add("replace-blocks-builder-rule-marquee"); + ruleMarquee.setManaged(false); + ruleMarquee.setMouseTransparent(true); + ruleMarquee.setVisible(false); + rulesArea.getChildren().setAll(rules); + rulesArea.getStyleClass().add("replace-blocks-builder-rules-area"); + + Button edit = UIFactory.button(Translation.DIALOG_REPLACE_BLOCKS_BUILDER_EDIT_RULE); + edit.disableProperty().bind(Bindings.size(rules.getSelectionModel().getSelectedItems()).isNotEqualTo(1)); + edit.setOnAction(this::editSelectedRule); + + Button delete = UIFactory.button(Translation.DIALOG_REPLACE_BLOCKS_BUILDER_DELETE_RULE); + delete.disableProperty().bind(Bindings.isEmpty(rules.getSelectionModel().getSelectedItems())); + delete.setOnAction(e -> deleteSelectedRules()); + HBox ruleActions = new HBox(6, edit, delete); + ruleActions.getStyleClass().add("replace-blocks-builder-rule-actions"); + + result.setEditable(false); + result.setFocusTraversable(false); + result.setWrapText(true); + result.getStyleClass().add("replace-blocks-builder-result"); + updateResultDisplayHeight(); + + validation.getStyleClass().add("replace-blocks-builder-validation"); + validation.setText(""); + + VBox content = new VBox(); + content.getStyleClass().add("replace-blocks-builder"); + content.setSpacing(10); + // DialogPane already supplies the same inset to the content region and button bar. + // Keep the Builder content at that baseline so the four native dialog buttons align + // with the controls above instead of receiving a second horizontal inset. + content.setPadding(new Insets(0)); + Label rulesLabel = UIFactory.label(Translation.DIALOG_REPLACE_BLOCKS_BUILDER_RULES); + Label resultLabel = UIFactory.label(Translation.DIALOG_REPLACE_BLOCKS_BUILDER_RESULT); + content.getChildren().addAll(createBuilderToolbar(presetInput), input, rulesLabel, rulesArea, ruleActions, resultLabel, result, validation); + VBox.setMargin(rulesLabel, new Insets(8, 0, 0, 0)); + VBox.setVgrow(rulesArea, Priority.ALWAYS); + contentLayer.getChildren().setAll(content, ruleMarquee); + getDialogPane().setContent(contentLayer); + + loadSimpleRules(initialValue); + updateResult(); + initialBuilderContent = builderContentState(); + } + + private static ColumnConstraints builderColumn() { + ColumnConstraints constraints = new ColumnConstraints(); + constraints.setMinWidth(300); + constraints.setPrefWidth(0); + constraints.setHgrow(Priority.ALWAYS); + constraints.setFillWidth(true); + return constraints; + } + + private static ColumnConstraints actionColumn() { + ColumnConstraints constraints = new ColumnConstraints(); + constraints.setHgrow(Priority.NEVER); + constraints.setFillWidth(false); + return constraints; + } + + private Node createCatalogControl() { + Label label = new Label(Translation.DIALOG_REPLACE_BLOCKS_BUILDER_CATALOG.toString()); + if (catalogModel.catalogs().size() <= 1) { + Label version = new Label(catalogModel.shortLabel(catalog)); + version.setTooltip(new Tooltip(catalogModel.label(catalog))); + version.getStyleClass().add("replace-blocks-builder-catalog-version"); + return wrapCatalogControl(new HBox(8, label, version)); + } + ComboBox selector = new ComboBox<>(FXCollections.observableArrayList(catalogModel.catalogs())); + selector.setConverter(new javafx.util.StringConverter<>() { + @Override public String toString(BlockStateCatalog value) { + return value == null ? "" : catalogModel.label(value); + } + @Override public BlockStateCatalog fromString(String value) { + return null; + } + }); + selector.setCellFactory(value -> new ListCell<>() { + @Override + protected void updateItem(BlockStateCatalog item, boolean empty) { + super.updateItem(item, empty); + setText(empty || item == null ? "" : catalogModel.label(item)); + setTooltip(empty || item == null ? null : new Tooltip(catalogModel.label(item))); + } + }); + selector.setButtonCell(new ListCell<>() { + @Override + protected void updateItem(BlockStateCatalog item, boolean empty) { + super.updateItem(item, empty); + setText(empty || item == null ? "" : catalogModel.shortLabel(item)); + setTooltip(empty || item == null ? null : new Tooltip(catalogModel.label(item))); + } + }); + selector.setValue(catalog); + selector.setTooltip(new Tooltip(catalogModel.label(catalog))); + configureBuilderComboBox(selector); + selector.valueProperty().addListener((observable, oldCatalog, newCatalog) -> { + requestCatalogSwitch(selector, oldCatalog, newCatalog); + if (selector.getValue() != null) { + selector.setTooltip(new Tooltip(catalogModel.label(selector.getValue()))); + } + }); + return wrapCatalogControl(new HBox(8, label, selector)); + } + + private Node createBuilderToolbar(GridPane presetInput) { + GridPane toolbar = new GridPane(); + toolbar.getStyleClass().add("replace-blocks-builder-toolbar"); + toolbar.setVgap(4); + toolbar.add(presetInput, 0, 0); + toolbar.add(createCatalogControl(), 0, 1); + GridPane.setHgrow(presetInput, Priority.ALWAYS); + return toolbar; + } + + private void requestCatalogSwitch(ComboBox selector, + BlockStateCatalog oldCatalog, BlockStateCatalog newCatalog) { + if (updatingCatalogSelector || newCatalog == null + || newCatalog.version().equals(catalog.version())) { + return; + } + if (hasBuilderContent()) { + setCatalogSelectorValue(selector, oldCatalog == null ? catalog : oldCatalog); + if (!confirmCatalogSwitch(newCatalog)) { + return; + } + setCatalogSelectorValue(selector, newCatalog); + } + if (!catalogModel.select(newCatalog.version())) { + return; + } + catalog = catalogModel.selected(); + blockNames.setAll(catalog.blockNames().stream().sorted().toList()); + from.catalogChanged(); + to.catalogChanged(); + resetBuilder(); + } + + private void setCatalogSelectorValue(ComboBox selector, + BlockStateCatalog value) { + updatingCatalogSelector = true; + try { + selector.setValue(value); + } finally { + updatingCatalogSelector = false; + } + } + + private boolean confirmCatalogSwitch(BlockStateCatalog newCatalog) { + String message = Translation.DIALOG_REPLACE_BLOCKS_BUILDER_CATALOG_SWITCH_MESSAGE.format( + catalogModel.label(catalog), catalogModel.label(newCatalog)); + Alert alert = new Alert(Alert.AlertType.CONFIRMATION, message, ButtonType.OK, ButtonType.CANCEL); + alert.initOwner(getDialogPane().getScene().getWindow()); + alert.titleProperty().bind(Translation.DIALOG_REPLACE_BLOCKS_BUILDER_CATALOG_SWITCH_TITLE.getProperty()); + alert.setHeaderText(null); + alert.getDialogPane().getStylesheets().addAll(primaryStage.getScene().getStylesheets()); + return alert.showAndWait().orElse(ButtonType.CANCEL) == ButtonType.OK; + } + + private void resetBuilder() { + presets.hide(); + presets.getSelectionModel().clearSelection(); + rules.getSelectionModel().clearSelection(); + ruleItems.clear(); + from.clear(); + to.clear(); + updateResult(); + } + + private static Node wrapCatalogControl(Node control) { + Label note = new Label(Translation.DIALOG_REPLACE_BLOCKS_BUILDER_CATALOG_NOTE.toString()); + note.getStyleClass().add("replace-blocks-builder-catalog-note"); + note.setMaxWidth(Double.MAX_VALUE); + note.setWrapText(true); + return new VBox(2, control, note); + } + + private void applyPreset(ActionEvent event) { + PresetItem preset = presets.getValue(); + if (preset == null) { + return; + } + applyingPreset = true; + try { + if (preset.custom()) { + List loaded = parsePresetRules(preset.value()); + if (loaded.isEmpty()) { + showDiagnostic(ReplaceBlocksDiagnostics.builderInvalid()); + return; + } + List appended = new ArrayList<>(); + for (ParsedPresetRule presetRule : loaded) { + Rule rule = presetRule.rule(); + if (!hasRule(rule.from(), rule.to())) { + ruleItems.add(rule); + appended.add(presetRule.parsed()); + } + } + updateResult(); + if (appended.isEmpty()) { + showDiagnostic(new ReplaceBlocksDiagnostics.Diagnostic( + ReplaceBlocksDiagnostics.Severity.ERROR, + Translation.DIALOG_REPLACE_BLOCKS_BUILDER_PRESET_ALREADY_FILLED.toString())); + } else { + ReplaceBlocksDiagnostics.Diagnostic compatibilityWarning = presetCompatibilityWarning(appended); + if (compatibilityWarning.isWarning()) { + showDiagnostic(compatibilityWarning); + } + } + return; + } + from.applyPreset(preset.source(), preset.tileMode()); + to.applyPreset(preset.target(), SourceTileMode.ANY); + if (preset.warning() == null) { + updateResult(); + } else { + showDiagnostic(new ReplaceBlocksDiagnostics.Diagnostic( + ReplaceBlocksDiagnostics.Severity.WARNING, + preset.warning().toString())); + } + from.focusInput(); + } finally { + applyingPreset = false; + } + } + + private ReplaceBlocksDiagnostics.Diagnostic presetCompatibilityWarning(List appended) { + String firstUnknownTarget = null; + String firstUnknownSource = null; + for (ParsedRule parsed : appended) { + String target = switch (parsed.target().getType()) { + case NAME, STATE -> parsed.target().getName(); + default -> null; + }; + if (firstUnknownTarget == null && target != null && !catalog.containsBlock(target)) { + firstUnknownTarget = target; + } + String source = switch (parsed.source().getType()) { + case LITERAL_NAME, SELECTED_PROPERTIES, EXACT_STATE -> parsed.source().getName(); + default -> null; + }; + if (firstUnknownSource == null && source != null && !catalog.containsBlock(source)) { + firstUnknownSource = source; + } + } + if (firstUnknownTarget != null) { + return presetCatalogWarning( + Translation.DIALOG_REPLACE_BLOCKS_BUILDER_CATALOG_TARGET_UNKNOWN, + firstUnknownTarget); + } + if (firstUnknownSource != null) { + return presetCatalogWarning( + Translation.DIALOG_REPLACE_BLOCKS_BUILDER_CATALOG_SOURCE_UNKNOWN, + firstUnknownSource); + } + return ReplaceBlocksDiagnostics.none(); + } + + private ReplaceBlocksDiagnostics.Diagnostic presetCatalogWarning(Translation message, String blockName) { + return new ReplaceBlocksDiagnostics.Diagnostic( + ReplaceBlocksDiagnostics.Severity.WARNING, + message.format(blockName, catalog.version())); + } + + private void savePreset(ActionEvent event) { + PresetValue presetValue = presetValue(); + if (presetValue.diagnostic().isError()) { + showDiagnostic(presetValue.diagnostic()); + return; + } + String value = presetValue.value(); + TextInputDialog dialog = new TextInputDialog(suggestPresetName()); + dialog.initOwner(getDialogPane().getScene().getWindow()); + dialog.titleProperty().bind(Translation.DIALOG_REPLACE_BLOCKS_BUILDER_PRESET_SAVE_TITLE.getProperty()); + dialog.headerTextProperty().bind(Translation.DIALOG_REPLACE_BLOCKS_BUILDER_PRESET_SAVE_HEADER.getProperty()); + dialog.contentTextProperty().bind(Translation.DIALOG_REPLACE_BLOCKS_BUILDER_PRESET_SAVE_NAME.getProperty()); + dialog.getDialogPane().getStylesheets().addAll(primaryStage.getScene().getStylesheets()); + Optional answer = dialog.showAndWait(); + if (answer.isEmpty()) { + return; + } + String name = answer.get().trim(); + if (name.isEmpty()) { + showPresetMessage(Alert.AlertType.WARNING, Translation.DIALOG_REPLACE_BLOCKS_BUILDER_PRESET_NAME_EMPTY.toString()); + return; + } + if (isBuiltinPresetName(name)) { + showPresetMessage(Alert.AlertType.WARNING, Translation.DIALOG_REPLACE_BLOCKS_BUILDER_PRESET_BUILTIN_LOCKED.toString()); + return; + } + int existing = findUserPreset(name); + if (existing >= 0 && !confirmPresetOverwrite(name)) { + return; + } + if (!presetRepository.save(name, value)) { + showPresetMessage(Alert.AlertType.ERROR, Translation.DIALOG_REPLACE_BLOCKS_BUILDER_PRESET_PERSIST_FAILED.toString()); + return; + } + refreshPresetItems(name); + showMessage(Translation.DIALOG_REPLACE_BLOCKS_BUILDER_PRESET_SAVED.format(name)); + } + + private void deletePreset(ActionEvent event) { + PresetItem preset = presets.getValue(); + if (preset == null || !preset.custom()) { + return; + } + if (!confirmPresetDelete(preset.name())) { + return; + } + if (!presetRepository.delete(preset.name())) { + showPresetMessage(Alert.AlertType.ERROR, Translation.DIALOG_REPLACE_BLOCKS_BUILDER_PRESET_PERSIST_FAILED.toString()); + return; + } + refreshPresetItems(null); + updatePresetButtons(); + } + + private void editSelectedRule(ActionEvent event) { + if (rules.getSelectionModel().getSelectedItems().size() != 1) { + return; + } + Rule selected = rules.getSelectionModel().getSelectedItem(); + if (selected == null) { + return; + } + ruleItems.remove(selected); + ParsedRule parsed = parseEditableRule(selected.from(), selected.to()); + if (parsed == null) { + from.applyPreset(selected.from(), SourceTileMode.ANY); + to.applyPreset(selected.to(), SourceTileMode.ANY); + } else { + from.applySource(parsed.source(), selected.from()); + to.applyTarget(parsed.target(), selected.to()); + } + updateResult(); + clearPresetSelectionAfterEdit(); + from.focusInput(); + } + + private void refreshPresetItems(String selectName) { + presetItems.clear(); + for (ReplaceBlocksPreset preset : ReplaceBlocksPreset.values()) { + presetItems.add(PresetItem.builtin(preset)); + } + for (GlobalConfig.ReplaceBlocksUserPreset preset : ConfigProvider.GLOBAL.getReplaceBlocksUserPresets()) { + if (preset != null && preset.name() != null && preset.value() != null) { + presetItems.add(PresetItem.custom(preset)); + } + } + if (selectName != null) { + presetItems.stream() + .filter(PresetItem::custom) + .filter(item -> item.name().equals(selectName)) + .findFirst() + .ifPresent(item -> presets.getSelectionModel().select(item)); + } + } + + private void updatePresetButtons() { + if (savePreset != null) { + savePreset.setDisable(presetValue().diagnostic().isError()); + } + if (deletePreset != null) { + PresetItem selected = presets.getValue(); + deletePreset.setDisable(selected == null || !selected.custom()); + } + } + + private PresetValue presetValue() { + List selected = List.copyOf(rules.getSelectionModel().getSelectedItems()); + if (!selected.isEmpty()) { + return validatedPresetValue(formatRulesValue(selected)); + } + + String value; + if (from.userInputPresentProperty().get() || to.userInputPresentProperty().get()) { + ValueResult fromName = from.value(); + if (fromName.diagnostic().isError()) { + return new PresetValue(null, fromName.diagnostic()); + } + ValueResult toName = to.value(); + if (toName.diagnostic().isError()) { + return new PresetValue(null, toName.diagnostic()); + } + value = formatFrom(fromName.value()) + "=" + formatTo(toName.value()); + } else { + value = result.getText() == null ? "" : result.getText().trim(); + } + if (value == null || value.isBlank()) { + return new PresetValue(null, ReplaceBlocksDiagnostics.builderInvalid()); + } + return validatedPresetValue(value); + } + + private PresetValue validatedPresetValue(String value) { + String normalized = normalizeRulesValue(value); + return normalized == null + ? new PresetValue(null, ReplaceBlocksDiagnostics.builderInvalid()) + : new PresetValue(normalized, ReplaceBlocksDiagnostics.none()); + } + + private String suggestPresetName() { + PresetItem selected = presets.getValue(); + return selected != null && selected.custom() ? selected.name() : ""; + } + + private boolean isBuiltinPresetName(String name) { + for (ReplaceBlocksPreset preset : ReplaceBlocksPreset.values()) { + if (preset.toString().equals(name)) { + return true; + } + } + return false; + } + + private int findUserPreset(String name) { + List userPresets = ConfigProvider.GLOBAL.getReplaceBlocksUserPresets(); + for (int i = 0; i < userPresets.size(); i++) { + GlobalConfig.ReplaceBlocksUserPreset preset = userPresets.get(i); + if (preset != null && name.equals(preset.name())) { + return i; + } + } + return -1; + } + + private boolean confirmPresetOverwrite(String name) { + return confirmPresetAction(Translation.DIALOG_REPLACE_BLOCKS_BUILDER_PRESET_OVERWRITE_CONFIRM.format(name)); + } + + private boolean confirmPresetDelete(String name) { + return confirmPresetAction(Translation.DIALOG_REPLACE_BLOCKS_BUILDER_PRESET_DELETE_CONFIRM.format(name)); + } + + private boolean confirmDiscardBuilder() { + ButtonType discard = new ButtonType( + Translation.DIALOG_REPLACE_BLOCKS_BUILDER_DISCARD_ACTION.toString(), + ButtonBar.ButtonData.OK_DONE); + ButtonType continueEditing = new ButtonType( + Translation.DIALOG_REPLACE_BLOCKS_BUILDER_CONTINUE_EDITING_ACTION.toString(), + ButtonBar.ButtonData.CANCEL_CLOSE); + Alert alert = new Alert(Alert.AlertType.CONFIRMATION, + Translation.DIALOG_REPLACE_BLOCKS_BUILDER_DISCARD_HEADER.toString(), + discard, continueEditing); + alert.initOwner(getDialogPane().getScene().getWindow()); + alert.titleProperty().bind(Translation.DIALOG_REPLACE_BLOCKS_BUILDER_DISCARD_TITLE.getProperty()); + alert.setHeaderText(null); + alert.getDialogPane().getStylesheets().addAll(primaryStage.getScene().getStylesheets()); + return alert.showAndWait().orElse(continueEditing) == discard; + } + + private boolean requestDiscardBuilder() { + return !isBuilderDirty() || confirmDiscardBuilder(); + } + + private void handleCancelAction(ActionEvent event) { + if (requestDiscardBuilder()) { + allowNextDialogClose = true; + } else { + event.consume(); + } + } + + private void handleWindowCloseRequest(WindowEvent event) { + if (requestDiscardBuilder()) { + allowNextDialogClose = true; + } else { + event.consume(); + } + } + + private boolean confirmPresetAction(String message) { + Alert alert = new Alert(Alert.AlertType.CONFIRMATION, message, ButtonType.OK, ButtonType.CANCEL); + alert.initOwner(getDialogPane().getScene().getWindow()); + alert.titleProperty().bind(Translation.DIALOG_REPLACE_BLOCKS_BUILDER_PRESET_TITLE.getProperty()); + alert.setHeaderText(null); + alert.getDialogPane().getStylesheets().addAll(primaryStage.getScene().getStylesheets()); + return alert.showAndWait().orElse(ButtonType.CANCEL) == ButtonType.OK; + } + + private void showPresetMessage(Alert.AlertType type, String message) { + Alert alert = new Alert(type, message, ButtonType.OK); + alert.initOwner(getDialogPane().getScene().getWindow()); + alert.titleProperty().bind(Translation.DIALOG_REPLACE_BLOCKS_BUILDER_PRESET_TITLE.getProperty()); + alert.setHeaderText(null); + alert.getDialogPane().getStylesheets().addAll(primaryStage.getScene().getStylesheets()); + alert.showAndWait(); + } + + private void showMessage(String message) { + validation.textProperty().unbind(); + validation.pseudoClassStateChanged(error, false); + validation.pseudoClassStateChanged(warning, false); + validation.pseudoClassStateChanged(success, true); + validation.setText(message); + } + + private void clearPresetSelectionAfterEdit() { + if (!applyingPreset) { + presets.getSelectionModel().clearSelection(); + } + updatePresetButtons(); + } + + private boolean hasBuilderContent() { + return !ruleItems.isEmpty() || from.hasMeaningfulContent() || to.hasMeaningfulContent(); + } + + private boolean isBuilderDirty() { + return initialBuilderContent != null && !initialBuilderContent.equals(builderContentState()); + } + + private BuilderContentState builderContentState() { + return new BuilderContentState(List.copyOf(ruleItems), from.contentState(), to.contentState()); + } + + private static String valueOrEmpty(String value) { + return value == null ? "" : value; + } + + private boolean isFilledRuleRow(Object target) { + Node node = target instanceof Node n ? n : null; + while (node != null && node != rules) { + if (node instanceof TableRow row) { + return !row.isEmpty(); + } + node = node.getParent(); + } + return false; + } + + private boolean isRuleTableDragArea(Object target) { + Node node = target instanceof Node n ? n : null; + boolean excluded = false; + while (node != null) { + if (node == rules) { + return canStartRuleMarquee(true, excluded); + } + if (node.getStyleClass().contains("column-header") + || node.getStyleClass().contains("column-header-background") + || node.getStyleClass().contains("scroll-bar")) { + excluded = true; + } + node = node.getParent(); + } + return canStartRuleMarquee(false, excluded); + } + + private void handleBuilderShortcut(KeyEvent event) { + if (isBuilderAddShortcut(event.getCode(), event.isControlDown())) { + addRule(null); + event.consume(); + } + } + + private void handleRulesKeyPressed(KeyEvent event) { + if (event.getCode() == KeyCode.DELETE && !rules.getSelectionModel().getSelectedItems().isEmpty()) { + deleteSelectedRules(); + event.consume(); + } else if (event.getCode() == KeyCode.ESCAPE && !rules.getSelectionModel().getSelectedItems().isEmpty()) { + rules.getSelectionModel().clearSelection(); + event.consume(); + } + } + + private void handleRulesMousePressed(MouseEvent event) { + if (event.getButton() != MouseButton.PRIMARY || !isRuleTableDragArea(event.getTarget())) { + return; + } + rules.requestFocus(); + ruleMarqueeAdditive = event.isControlDown(); + ruleMarqueeDragging = false; + if (!ruleMarqueeAdditive && !isFilledRuleRow(event.getTarget())) { + rules.getSelectionModel().clearSelection(); + } + ruleMarqueeAnchor = new Point2D(event.getX(), event.getY()); + } + + private void handleRulesMouseDragged(MouseEvent event) { + if (ruleMarqueeAnchor == null) { + return; + } + if (!ruleMarqueeDragging && !isRuleMarqueeDrag( + event.getX() - ruleMarqueeAnchor.getX(), event.getY() - ruleMarqueeAnchor.getY())) { + return; + } + if (!ruleMarqueeDragging) { + ruleMarqueeDragging = true; + if (!ruleMarqueeAdditive) { + rules.getSelectionModel().clearSelection(); + } + } + updateRuleMarquee(event.getX(), event.getY()); + event.consume(); + } + + private void handleRulesMouseReleased(MouseEvent event) { + if (ruleMarqueeAnchor == null) { + return; + } + if (!ruleMarqueeDragging) { + ruleMarqueeAnchor = null; + return; + } + applyRuleMarquee(); + ruleMarquee.setVisible(false); + ruleMarqueeAnchor = null; + ruleMarqueeDragging = false; + event.consume(); + } + + private void updateRuleMarquee(double x, double y) { + Point2D anchor = rulesToContent(ruleMarqueeAnchor); + Point2D current = rulesToContent(new Point2D(x, y)); + double minX = Math.min(anchor.getX(), current.getX()); + double minY = Math.min(anchor.getY(), current.getY()); + ruleMarquee.setX(minX); + ruleMarquee.setY(minY); + ruleMarquee.setWidth(Math.abs(current.getX() - anchor.getX())); + ruleMarquee.setHeight(Math.abs(current.getY() - anchor.getY())); + ruleMarquee.setVisible(ruleMarquee.getWidth() > 0 && ruleMarquee.getHeight() > 0); + } + + private void applyRuleMarquee() { + Point2D start = contentToRules(new Point2D(ruleMarquee.getX(), ruleMarquee.getY())); + Point2D end = contentToRules(new Point2D( + ruleMarquee.getX() + ruleMarquee.getWidth(), ruleMarquee.getY() + ruleMarquee.getHeight())); + Rectangle2D marquee = new Rectangle2D( + Math.min(start.getX(), end.getX()), Math.min(start.getY(), end.getY()), + Math.abs(end.getX() - start.getX()), Math.abs(end.getY() - start.getY())); + List selected = intersectingRuleIndices(marquee, visibleRuleBounds()); + if (!ruleMarqueeAdditive) { + rules.getSelectionModel().clearSelection(); + } + selected.forEach(index -> rules.getSelectionModel().select(index)); + } + + private Point2D rulesToContent(Point2D point) { + return contentLayer.sceneToLocal(rules.localToScene(point)); + } + + private Point2D contentToRules(Point2D point) { + return rules.sceneToLocal(contentLayer.localToScene(point)); + } + + private List visibleRuleBounds() { + return rules.lookupAll(".table-row-cell").stream() + .filter(TableRow.class::isInstance) + .map(node -> (TableRow) node) + .filter(row -> !row.isEmpty() && row.getIndex() >= 0) + .map(row -> { + Bounds bounds = row.localToScene(row.getBoundsInLocal()); + Point2D min = rules.sceneToLocal(bounds.getMinX(), bounds.getMinY()); + Point2D max = rules.sceneToLocal(bounds.getMaxX(), bounds.getMaxY()); + return new VisibleRuleBounds(row.getIndex(), new Rectangle2D(min.getX(), min.getY(), max.getX() - min.getX(), max.getY() - min.getY())); + }) + .toList(); + } + + private void previewReplaceBlocks() { + if (tileMap == null) { + showPreviewMessage(Translation.DIALOG_REPLACE_BLOCKS_PREVIEW_NO_FIELD.toString()); + return; + } + ReplaceBlocksField field = new ReplaceBlocksField(); + if (!ReplaceBlocksDiagnostics.parseReplaceBlocksValue(field, result.getText())) { + showPreviewMessage(Translation.DIALOG_REPLACE_BLOCKS_PREVIEW_NO_FIELD.toString()); + return; + } + AtomicReference previewResult = new AtomicReference<>(); + CancellableProgressDialog progress = new CancellableProgressDialog( + Translation.DIALOG_PROGRESS_TITLE_PREVIEW_REPLACE_BLOCKS, + primaryStage, + CancellableProgressDialog.CancellationScope.CURRENT_TASK); + progress.showProgressBar(t -> previewResult.set(ReplaceBlocksPreviewer.preview( + field, + selectionOnly ? tileMap.getSelection() : null, + t + ))); + if (!progress.cancelled() && previewResult.get() != null) { + showPreviewMessage(formatPreviewResult(previewResult.get())); + } + } + + private void setPreviewDisabled(boolean disabled) { + if (previewButton != null) { + previewButton.setDisable(disabled || tileMap == null); + } + } + + private void showPreviewMessage(String message) { + Alert alert = new Alert(Alert.AlertType.INFORMATION, message, ButtonType.OK); + alert.initOwner(getDialogPane().getScene().getWindow()); + alert.titleProperty().bind(Translation.DIALOG_REPLACE_BLOCKS_PREVIEW_TITLE.getProperty()); + alert.setHeaderText(null); + alert.getDialogPane().getStylesheets().addAll(primaryStage.getScene().getStylesheets()); + alert.showAndWait(); + } + + private String formatPreviewResult(ReplaceBlocksPreviewer.Result result) { + return ReplaceBlocksPreviewFormatter.format(result); + } + + private void updateRulesTableHeight() { + boolean empty = ruleItems.isEmpty(); + rules.setMaxHeight(empty ? EMPTY_RULES_HEIGHT : Double.MAX_VALUE); + rules.setPrefHeight(empty ? EMPTY_RULES_HEIGHT : 220); + VBox.setVgrow(rulesArea, empty ? Priority.NEVER : Priority.ALWAYS); + } + + private void updateResultDisplayHeight() { + if (ruleItems.isEmpty()) { + result.setPrefRowCount(1); + result.setMinHeight(EMPTY_RESULT_HEIGHT); + result.setPrefHeight(EMPTY_RESULT_HEIGHT); + result.setMaxHeight(EMPTY_RESULT_HEIGHT); + } else { + result.setPrefRowCount(2); + result.setMinHeight(POPULATED_RESULT_MIN_HEIGHT); + result.setPrefHeight(POPULATED_RESULT_PREF_HEIGHT); + result.setMaxHeight(POPULATED_RESULT_MAX_HEIGHT); + } + } + + private void addRule(ActionEvent event) { + ValueResult fromName = from.value(); + if (fromName.diagnostic().isError()) { + showDiagnostic(fromName.diagnostic()); + return; + } + ValueResult toName = to.value(); + if (toName.diagnostic().isError()) { + showDiagnostic(toName.diagnostic()); + return; + } + if (hasRule(fromName.value(), toName.value())) { + showDiagnostic(ReplaceBlocksDiagnostics.builderDuplicate()); + return; + } + ReplaceBlocksDiagnostics.Diagnostic compatibilityWarning = toName.diagnostic().isWarning() + ? toName.diagnostic() : fromName.diagnostic(); + ruleItems.add(new Rule(fromName.value(), toName.value())); + from.clear(); + to.clear(); + updateResult(); + if (compatibilityWarning.isWarning()) { + showDiagnostic(compatibilityWarning); + } + clearPresetSelectionAfterEdit(); + from.focusInput(); + } + + private void deleteSelectedRules() { + List selected = List.copyOf(rules.getSelectionModel().getSelectedItems()); + if (selected.isEmpty()) { + return; + } + ruleItems.removeAll(selected); + updateResult(); + clearPresetSelectionAfterEdit(); + } + + private boolean hasRule(String from, String to) { + ParsedRule candidate = parseEditableRule(from, to); + return candidate != null && ruleItems.stream() + .map(rule -> parseEditableRule(rule.from(), rule.to())) + .filter(Objects::nonNull) + .anyMatch(existing -> candidate.source().equals(existing.source())); + } + + static String formatRulesValue(List rules) { + return rules.stream() + .map(rule -> formatFrom(rule.from()) + "=" + formatTo(rule.to())) + .collect(Collectors.joining(", ")); + } + + static boolean isBuilderAddShortcut(KeyCode code, boolean controlDown) { + return controlDown && (code == KeyCode.ENTER || code == KeyCode.SEPARATOR); + } + + static boolean canStartRuleMarquee(boolean insideRulesTable, boolean excludedControl) { + return insideRulesTable && !excludedControl; + } + + static boolean isRuleMarqueeDrag(double deltaX, double deltaY) { + return Math.hypot(deltaX, deltaY) >= 3; + } + + static boolean isAutocompletePopupKey(KeyCode code) { + return ReplaceBlocksAutocomplete.isPopupKey(code); + } + + static int popupSelectionTarget(KeyCode code, int selectedIndex, int itemCount, int visibleRows) { + return ReplaceBlocksAutocomplete.selectionTarget(code, selectedIndex, itemCount, visibleRows); + } + + static boolean focusPopupSuggestion(ComboBox comboBox, int index) { + return ReplaceBlocksAutocomplete.focusSuggestion(comboBox, index); + } + + private static int popupVisibleRowCount(ComboBox comboBox, int fallback) { + return ReplaceBlocksAutocomplete.visibleRowCount(comboBox, fallback); + } + + static boolean popupNeedsReveal(int target, int firstVisible, int lastVisible) { + return ReplaceBlocksAutocomplete.needsReveal(target, firstVisible, lastVisible); + } + + static int popupPageSize(int firstVisible, int lastVisible, int fallback) { + return ReplaceBlocksAutocomplete.pageSize(firstVisible, lastVisible, fallback); + } + + static boolean isPopupCellFullyVisible(Bounds cellBounds, Bounds viewportBounds) { + return ReplaceBlocksAutocomplete.isCellFullyVisible(cellBounds, viewportBounds); + } + + static List suggestionsForQuery(List names, String query, boolean allowEmpty) { + return ReplaceBlocksAutocomplete.suggestions(names, query, allowEmpty); + } + + static boolean isComboBoxArrowTarget(Object target) { + return ReplaceBlocksAutocomplete.isArrowTarget(target); + } + + static boolean isAutocompleteCellHighlighted(int cellIndex, int highlightIndex, boolean empty) { + return ReplaceBlocksAutocomplete.isCellHighlighted(cellIndex, highlightIndex, empty); + } + + static boolean shouldClearExplicitCatalog(boolean explicitCatalog, boolean showing, String editorText) { + return ReplaceBlocksAutocomplete.shouldClearExplicitCatalog(explicitCatalog, showing, editorText); + } + + static void clearEmptyExplicitCatalog(ComboBox comboBox) { + ReplaceBlocksAutocomplete.clearEmptyExplicitCatalog(comboBox); + } + + private static void clearPopupSuggestionHighlight(ComboBox comboBox) { + ReplaceBlocksAutocomplete.clearHighlight(comboBox); + } + + static void installAutocompletePopupKeyFilter(ComboBox comboBox, EventHandler handler) { + ReplaceBlocksAutocomplete.installPopupKeyFilter(comboBox, handler); + } + + static void configureBuilderComboBox(ComboBox comboBox) { + ReplaceBlocksAutocomplete.configure(comboBox); + } + + private static void configureAutocompleteComboBox(ComboBox comboBox) { + comboBox.getProperties().put(COMBO_BOX_ROWS_TO_MEASURE_WIDTH, AUTOCOMPLETE_ROWS_TO_MEASURE_WIDTH); + configureBuilderComboBox(comboBox); + } + + static List intersectingRuleIndices(Rectangle2D marquee, List rows) { + if (marquee.getWidth() <= 0 || marquee.getHeight() <= 0) { + return List.of(); + } + return rows.stream() + .filter(row -> row.bounds().intersects(marquee)) + .map(VisibleRuleBounds::index) + .toList(); + } + + static String normalizeRule(String from, String to) { + return normalizeRulesValue(formatFrom(from) + "=" + formatTo(to)); + } + + static String normalizeRulesValue(String value) { + return ReplaceBlocksRuleBuilderModel.normalizeRulesValue(value); + } + + static ParsedRule parseEditableRule(String from, String to) { + ParsedRule parsed = parseSingleRule(formatFrom(from) + "=" + formatTo(to)); + return parsed == null ? parseSingleRule(from + "=" + to) : parsed; + } + + private static ParsedRule parseSingleRule(String value) { + Map rules = + ReplaceBlocksRuleBuilderModel.parseRules(value); + if (rules.isEmpty()) { + return null; + } + Map.Entry parsed = rules.entrySet().iterator().next(); + return new ParsedRule(parsed.getKey(), parsed.getValue()); + } + + static List parseSimpleRules(String initialValue) { + return parsePresetRules(initialValue).stream() + .map(ParsedPresetRule::rule) + .toList(); + } + + private static List parsePresetRules(String initialValue) { + if (initialValue == null || initialValue.isBlank()) { + return List.of(); + } + List parsed = new ArrayList<>(); + Map rules = + ReplaceBlocksRuleBuilderModel.parseRules(initialValue); + if (rules.isEmpty()) { + return List.of(); + } + for (Map.Entry rule : rules.entrySet()) { + parsed.add(new ParsedPresetRule( + new Rule(rule.getKey().toString(), rule.getValue().toString()), + new ParsedRule(rule.getKey(), rule.getValue()))); + } + return List.copyOf(parsed); + } + + private void loadSimpleRules(String initialValue) { + ruleItems.addAll(parseSimpleRules(initialValue)); + } + + private void updateResult() { + updateRulesTableHeight(); + updateResultDisplayHeight(); + if (ruleItems.isEmpty()) { + result.clear(); + validation.textProperty().unbind(); + validation.setText(""); + validation.pseudoClassStateChanged(error, false); + validation.pseudoClassStateChanged(warning, false); + validation.pseudoClassStateChanged(success, false); + getDialogPane().lookupButton(ButtonType.OK).setDisable(true); + setPreviewDisabled(true); + updatePresetButtons(); + return; + } + result.setText(formatRulesValue(ruleItems)); + ReplaceBlocksField field = new ReplaceBlocksField(); + boolean valid = ReplaceBlocksDiagnostics.parseReplaceBlocksValue(field, result.getText()); + getDialogPane().lookupButton(ButtonType.OK).setDisable(!valid); + setPreviewDisabled(!valid); + updatePresetButtons(); + showDiagnostic(ReplaceBlocksDiagnostics.diagnoseValue(result.getText(), valid)); + } + + private void showHelp() { + Dialog help = new Dialog<>(); + help.initOwner(getDialogPane().getScene().getWindow()); + help.initStyle(StageStyle.UTILITY); + help.setResizable(true); + help.titleProperty().bind(Translation.DIALOG_REPLACE_BLOCKS_BUILDER_HELP_TITLE.getProperty()); + help.getDialogPane().getButtonTypes().add(ButtonType.CLOSE); + help.getDialogPane().getStylesheets().addAll(primaryStage.getScene().getStylesheets()); + help.getDialogPane().getStylesheets().add(Objects.requireNonNull(ChangeNBTDialog.class.getClassLoader().getResource("style/component/change-nbt-dialog.css")).toExternalForm()); + help.getDialogPane().getStyleClass().add("replace-blocks-builder-help-pane"); + help.getDialogPane().setPrefSize(560, 380); + + VBox content = new VBox(8); + content.getStyleClass().add("replace-blocks-builder-help"); + content.setPadding(new Insets(8)); + content.getChildren().addAll( + helpLabel(Translation.DIALOG_REPLACE_BLOCKS_BUILDER_HELP_NBT_TITLE, "replace-blocks-builder-help-heading"), + helpLabel(Translation.DIALOG_REPLACE_BLOCKS_BUILDER_HELP_NBT_INTRO, "replace-blocks-builder-help-text"), + helpLabel(Translation.DIALOG_REPLACE_BLOCKS_BUILDER_HELP_NBT_ANY, "replace-blocks-builder-help-text"), + helpLabel(Translation.DIALOG_REPLACE_BLOCKS_BUILDER_HELP_NBT_PRESENT, "replace-blocks-builder-help-text"), + helpLabel(Translation.DIALOG_REPLACE_BLOCKS_BUILDER_HELP_NBT_ABSENT, "replace-blocks-builder-help-text"), + helpLabel(Translation.DIALOG_REPLACE_BLOCKS_BUILDER_HELP_NBT_NOTE, "replace-blocks-builder-help-text"), + helpLabel(Translation.DIALOG_REPLACE_BLOCKS_BUILDER_HELP_BIOME_TITLE, "replace-blocks-builder-help-heading"), + helpLabel(Translation.DIALOG_REPLACE_BLOCKS_BUILDER_HELP_BIOME_INTRO, "replace-blocks-builder-help-text"), + helpLabel(Translation.DIALOG_REPLACE_BLOCKS_BUILDER_HELP_BIOME_SYNTAX, "replace-blocks-builder-help-text"), + helpLabel(Translation.DIALOG_REPLACE_BLOCKS_BUILDER_ADVANCED, "replace-blocks-builder-help-text") + ); + + ScrollPane scroll = new ScrollPane(content); + scroll.setFitToWidth(true); + scroll.getStyleClass().add("replace-blocks-builder-help-scroll"); + help.getDialogPane().setContent(scroll); + help.showAndWait(); + } + + private static Label helpLabel(Translation translation, String styleClass) { + Label label = UIFactory.label(translation); + label.setWrapText(true); + label.getStyleClass().add(styleClass); + return label; + } + + private static String formatFrom(String name) { + if (name.startsWith("{") || name.startsWith("'") || isSourceModeExpression(name)) { + return name; + } + return "literal(" + formatWrapperArgument(name) + ")"; + } + + private static String formatTo(String name) { + if (name.startsWith("{") || name.startsWith("'")) { + return name; + } + if (name.startsWith("minecraft:")) { + return name; + } + return "{Name:\"" + name + "\"}"; + } + + private static boolean isSourceModeExpression(String value) { + return value.startsWith("literal(") || value.startsWith("regex(") || value.startsWith("props(") + || value.startsWith("tile(") || value.startsWith("no_tile(") || value.startsWith("y(") || value.startsWith("biome("); + } + + private static boolean isTileEntityModeExpression(String value) { + return value.startsWith("tile(") || value.startsWith("no_tile("); + } + + private static boolean isYRangeExpression(String value) { + return value.startsWith("y("); + } + + private static boolean isBiomeExpression(String value) { + return value.startsWith("biome("); + } + + private static String formatWrapperArgument(String value) { + if (!value.equals(value.trim()) || value.contains(")")) { + return "'" + value + "'"; + } + return value; + } + + static String biomeToken(String text, int caretPosition) { + if (text == null || text.isEmpty()) { + return ""; + } + int caret = Math.max(0, Math.min(caretPosition, text.length())); + int start = text.lastIndexOf(';', Math.max(0, caret - 1)) + 1; + int end = text.indexOf(';', caret); + if (end < 0) { + end = text.length(); + } + return text.substring(start, end).trim(); + } + + private void showDiagnostic(ReplaceBlocksDiagnostics.Diagnostic diagnostic) { + validation.textProperty().unbind(); + validation.pseudoClassStateChanged(error, false); + validation.pseudoClassStateChanged(warning, false); + validation.pseudoClassStateChanged(success, false); + if (diagnostic.isNone()) { + validation.setText(""); + return; + } + validation.setText(diagnostic.message()); + validation.pseudoClassStateChanged(diagnostic.isError() ? error : warning, true); + } + + private static String blockStateSNBT(String name, Map properties) { + StringBuilder builder = new StringBuilder("{Name:\"").append(name).append("\""); + if (!properties.isEmpty()) { + builder.append(",Properties:{"); + boolean first = true; + for (Map.Entry property : properties.entrySet()) { + if (!first) { + builder.append(","); + } + builder.append(property.getKey()).append(":\"").append(property.getValue()).append("\""); + first = false; + } + builder.append("}"); + } + builder.append("}"); + return builder.toString(); + } + + static Map editableStateProperties(CompoundTag state) { + if (state == null || state.getString("Name") == null) { + return null; + } + for (Map.Entry entry : state) { + if (!"Name".equals(entry.getKey()) && !"Properties".equals(entry.getKey())) { + return null; + } + } + CompoundTag properties = state.getCompoundTag("Properties"); + if (properties == null || properties.isEmpty()) { + return Map.of(); + } + Map values = new LinkedHashMap<>(); + for (Map.Entry property : properties) { + if (!(property.getValue() instanceof StringTag value)) { + return null; + } + values.put(property.getKey(), value.getValue()); + } + return values; + } + + private class BlockInput extends ReplaceBlocksBlockInput { + + private final ComboBox block = new ComboBox<>(); + private final ObservableList blockSuggestions = FXCollections.observableArrayList(); + private final ComboBox tileEntityMode = new ComboBox<>(); + private final TextField minY = new TextField(); + private final TextField maxY = new TextField(); + private final ComboBox biomeNames = new ComboBox<>(); + private final ObservableList biomeSuggestions = FXCollections.observableArrayList(); + private final GridPane properties = new GridPane(); + private final GridPane sourceConstraints = new GridPane(); + private final Map> propertyEditors = new LinkedHashMap<>(); + private final BooleanProperty userInputPresent = new SimpleBooleanProperty(false); + private boolean updatingItems; + private boolean updatingBiomeItems; + private boolean suppressSuggestions; + private boolean suppressBiomeSuggestions; + private int blockSuggestionRevision; + private int biomeSuggestionRevision; + private int blockSuggestionHighlight = -1; + private int biomeSuggestionHighlight = -1; + private boolean blockExplicitCatalog; + private boolean biomeExplicitCatalog; + + private BlockInput(boolean source) { + super(source, catalog); + getStyleClass().add("replace-blocks-builder-block"); + addEventFilter(KeyEvent.KEY_PRESSED, this::handleAutocompleteKeyPressed); + setMaxWidth(Double.MAX_VALUE); + setPrefWidth(0); + setSpacing(4); + + Label label = UIFactory.label(source + ? Translation.DIALOG_REPLACE_BLOCKS_BUILDER_FROM + : Translation.DIALOG_REPLACE_BLOCKS_BUILDER_TO); + + block.setEditable(true); + block.setMinWidth(0); + block.setMaxWidth(Double.MAX_VALUE); + block.setVisibleRowCount(12); + block.setItems(blockSuggestions); + configureAutocompleteComboBox(block); + block.setCellFactory(v -> new HighlightedBlockCell()); + installAutocompletePopupKeyFilter(block, this::handleKeyPressed); + block.addEventHandler(ComboBoxBase.ON_SHOWN, event -> blockSuggestionHighlight = -1); + block.addEventFilter(MouseEvent.MOUSE_PRESSED, this::handleBlockMousePressed); + block.setOnHidden(event -> scheduleBlockExplicitCatalogCleanup()); + block.getEditor().setAlignment(Pos.CENTER); + block.getEditor().setOnAction(ReplaceBlocksRuleBuilderDialog.this::addRule); + block.getEditor().textProperty().addListener((a, o, n) -> { + if (suppressSuggestions) { + return; + } + updateUserInputPresent(); + clearPresetSelectionAfterEdit(); + if (!updatingItems) { + rebuildProperties(n); + scheduleBlockSuggestions(n); + } + }); + + properties.getStyleClass().add("replace-blocks-builder-properties"); + properties.setHgap(6); + properties.setVgap(4); + setPropertiesVisible(false); + + getChildren().addAll(label, block, properties); + VBox.setVgrow(properties, Priority.NEVER); + if (source) { + sourceConstraints.getStyleClass().add("replace-blocks-builder-source-constraints"); + sourceConstraints.setHgap(8); + sourceConstraints.setVgap(4); + Label constraintsLabel = UIFactory.label(Translation.DIALOG_REPLACE_BLOCKS_BUILDER_SOURCE_CONSTRAINTS); + constraintsLabel.getStyleClass().add("replace-blocks-builder-source-constraints-title"); + sourceConstraints.add(constraintsLabel, 0, 0, 3, 1); + ColumnConstraints tileColumn = new ColumnConstraints(); + tileColumn.setMinWidth(180); + tileColumn.setPrefWidth(220); + ColumnConstraints yColumn = new ColumnConstraints(); + yColumn.setMinWidth(220); + yColumn.setPrefWidth(250); + ColumnConstraints biomeColumn = new ColumnConstraints(); + biomeColumn.setHgrow(Priority.ALWAYS); + biomeColumn.setFillWidth(true); + sourceConstraints.getColumnConstraints().addAll(tileColumn, yColumn, biomeColumn); + tileEntityMode.setItems(FXCollections.observableArrayList(SourceTileMode.values())); + configureBuilderComboBox(tileEntityMode); + tileEntityMode.setValue(SourceTileMode.ANY); + tileEntityMode.setMinWidth(0); + tileEntityMode.setMaxWidth(Double.MAX_VALUE); + tileEntityMode.valueProperty().addListener((a, o, n) -> clearPresetSelectionAfterEdit()); + GridPane yRange = new GridPane(); + yRange.getStyleClass().add("replace-blocks-builder-y-range"); + yRange.setHgap(6); + Label minLabel = UIFactory.label(Translation.DIALOG_REPLACE_BLOCKS_BUILDER_Y_MIN); + Label maxLabel = UIFactory.label(Translation.DIALOG_REPLACE_BLOCKS_BUILDER_Y_MAX); + minLabel.setMinWidth(Region.USE_PREF_SIZE); + maxLabel.setMinWidth(Region.USE_PREF_SIZE); + minY.promptTextProperty().bind(Translation.DIALOG_REPLACE_BLOCKS_BUILDER_Y_MIN.getProperty()); + maxY.promptTextProperty().bind(Translation.DIALOG_REPLACE_BLOCKS_BUILDER_Y_MAX.getProperty()); + minY.setMinWidth(0); + minY.setMaxWidth(Double.MAX_VALUE); + maxY.setMinWidth(0); + maxY.setMaxWidth(Double.MAX_VALUE); + minY.textProperty().addListener((a, o, n) -> { + updateUserInputPresent(); + clearPresetSelectionAfterEdit(); + }); + maxY.textProperty().addListener((a, o, n) -> { + updateUserInputPresent(); + clearPresetSelectionAfterEdit(); + }); + yRange.add(minLabel, 0, 0); + yRange.add(minY, 1, 0); + yRange.add(maxLabel, 2, 0); + yRange.add(maxY, 3, 0); + GridPane.setHgrow(minY, Priority.ALWAYS); + GridPane.setHgrow(maxY, Priority.ALWAYS); + GridPane biomeFilter = new GridPane(); + biomeFilter.getStyleClass().add("replace-blocks-builder-biome"); + biomeFilter.setHgap(6); + Label biomeLabel = UIFactory.label(Translation.DIALOG_REPLACE_BLOCKS_BUILDER_BIOME); + biomeNames.setEditable(true); + biomeNames.setMinWidth(0); + biomeNames.setMaxWidth(Double.MAX_VALUE); + biomeNames.setVisibleRowCount(12); + biomeNames.setItems(biomeSuggestions); + configureAutocompleteComboBox(biomeNames); + biomeNames.setCellFactory(v -> new HighlightedBiomeCell()); + installAutocompletePopupKeyFilter(biomeNames, this::handleBiomeKeyPressed); + biomeNames.addEventHandler(ComboBoxBase.ON_SHOWN, event -> biomeSuggestionHighlight = -1); + biomeNames.addEventFilter(MouseEvent.MOUSE_PRESSED, this::handleBiomeMousePressed); + biomeNames.setOnHidden(event -> scheduleBiomeExplicitCatalogCleanup()); + biomeNames.getEditor().promptTextProperty().bind(Translation.DIALOG_REPLACE_BLOCKS_BUILDER_BIOME_PROMPT.getProperty()); + biomeNames.getEditor().textProperty().addListener((a, o, n) -> { + if (suppressBiomeSuggestions) { + return; + } + updateUserInputPresent(); + clearPresetSelectionAfterEdit(); + if (!updatingBiomeItems) { + scheduleBiomeSuggestions(); + } + }); + biomeFilter.add(biomeLabel, 0, 0); + biomeFilter.add(biomeNames, 1, 0); + GridPane.setHgrow(biomeNames, Priority.ALWAYS); + sourceConstraints.add(tileEntityMode, 0, 1); + sourceConstraints.add(yRange, 1, 1); + sourceConstraints.add(biomeFilter, 2, 1); + GridPane.setHgrow(tileEntityMode, Priority.ALWAYS); + GridPane.setHgrow(yRange, Priority.ALWAYS); + } + updateBlockSuggestions(""); + updateBiomeSuggestions(); + rebuildProperties(""); + } + + private BooleanProperty userInputPresentProperty() { + return userInputPresent; + } + + private Node sourceConstraints() { + return sourceConstraints; + } + + private ValueResult value() { + String generated = generatedValue(); + if (generated == null) { + return new ValueResult(null, ReplaceBlocksDiagnostics.builderInvalid()); + } + ReplaceBlocksDiagnostics.Diagnostic catalogDiagnostic = catalogDiagnostic(); + if (!source && generated.contains(";")) { + ReplaceBlocksField field = new ReplaceBlocksField(); + boolean valid = ReplaceBlocksDiagnostics.parseReplaceBlocksValue(field, "minecraft:stone=" + generated); + return new ValueResult(generated, valid ? catalogDiagnostic : ReplaceBlocksDiagnostics.builderInvalid()); + } + if (source && isSourceModeExpression(generated)) { + ReplaceBlocksField field = new ReplaceBlocksField(); + boolean valid = ReplaceBlocksDiagnostics.parseReplaceBlocksValue(field, generated + "=minecraft:stone"); + return new ValueResult(generated, valid ? catalogDiagnostic : ReplaceBlocksDiagnostics.builderInvalid()); + } + ReplaceBlocksDiagnostics.NameResult normalized = ReplaceBlocksDiagnostics.normalizeBuilderValue(generated, source); + return new ValueResult(normalized.name(), normalized.diagnostic().isError() + ? normalized.diagnostic() : catalogDiagnostic); + } + + private ReplaceBlocksDiagnostics.Diagnostic catalogDiagnostic() { + return catalogDiagnostic(currentText()); + } + + private void catalogChanged() { + setCatalog(catalog); + } + + private boolean hasMeaningfulContent() { + return !currentText().isEmpty() + || source && tileEntityMode.getValue() != SourceTileMode.ANY + || minY.getText() != null && !minY.getText().isBlank() + || maxY.getText() != null && !maxY.getText().isBlank() + || biomeNames.getEditor().getText() != null && !biomeNames.getEditor().getText().isBlank() + || propertyEditors.values().stream() + .map(ComboBox::getValue) + .anyMatch(choice -> choice != null && !choice.all()); + } + + private BlockInputState contentState() { + List propertyStates = propertyEditors.entrySet().stream() + .map(entry -> new PropertyState(entry.getKey(), entry.getValue().getValue())) + .toList(); + return new BlockInputState( + valueOrEmpty(block.getEditor().getText()), + source ? tileEntityMode.getValue() : null, + source ? valueOrEmpty(minY.getText()) : "", + source ? valueOrEmpty(maxY.getText()) : "", + source ? valueOrEmpty(biomeNames.getEditor().getText()) : "", + propertyStates); + } + + private String generatedValue() { + String text = currentText(); + if (text.isEmpty()) { + return text; + } + if (text.startsWith("{") || source && isSourceModeExpression(text)) { + return source ? applySourceConditions(text) : text; + } + ReplaceBlocksDiagnostics.NameResult normalized = ReplaceBlocksDiagnostics.normalizeBuilderName(text, source); + if (normalized.diagnostic().isError()) { + return text; + } + String name = normalized.name(); + if (propertyEditors.isEmpty()) { + String value = source ? "literal(" + formatWrapperArgument(name) + ")" : name; + return source ? applySourceConditions(value) : value; + } + Map selectedProperties = new LinkedHashMap<>(); + for (Map.Entry> property : propertyEditors.entrySet()) { + PropertyChoice choice = property.getValue().getValue(); + if (choice == null) { + return null; + } + if (choice.all()) { + continue; + } + if (!catalog.isValidPropertyValue(name, property.getKey(), choice.value())) { + return null; + } + selectedProperties.put(property.getKey(), choice.value()); + } + String value; + if (selectedProperties.isEmpty()) { + value = source ? "literal(" + formatWrapperArgument(name) + ")" : name; + } else { + String blockState = blockStateSNBT(name, selectedProperties); + value = source ? "props(" + blockState + ")" : blockState; + } + return source ? applySourceConditions(value) : value; + } + + private String applySourceConditions(String value) { + return applySourceBiome(applySourceYRange(applySourceTileMode(value))); + } + + private String applySourceTileMode(String value) { + if (!source || value == null || value.isEmpty() || isTileEntityModeExpression(value)) { + return value; + } + return tileEntityMode.getValue().wrap(value); + } + + private String applySourceYRange(String value) { + if (!source || value == null || value.isEmpty() || isYRangeExpression(value)) { + return value; + } + String range = yRangeText(); + if (range == null) { + return value; + } + if (range.isEmpty()) { + return null; + } + return "y(" + range + ", " + value + ")"; + } + + private String yRangeText() { + String min = minY.getText() == null ? "" : minY.getText().trim(); + String max = maxY.getText() == null ? "" : maxY.getText().trim(); + if (min.isEmpty() && max.isEmpty()) { + return null; + } + try { + Integer minValue = min.isEmpty() ? null : Integer.parseInt(min); + Integer maxValue = max.isEmpty() ? null : Integer.parseInt(max); + if (minValue != null && maxValue != null && minValue > maxValue) { + return ""; + } + return min + ".." + max; + } catch (NumberFormatException ex) { + return ""; + } + } + + private String applySourceBiome(String value) { + if (!source || value == null || value.isEmpty() || isBiomeExpression(value)) { + return value; + } + String biomes = biomeText(); + if (biomes == null) { + return value; + } + if (biomes.isEmpty()) { + return null; + } + return "biome(" + biomes + ", " + value + ")"; + } + + private String biomeText() { + String raw = biomeNames.getEditor().getText() == null ? "" : biomeNames.getEditor().getText().trim(); + if (raw.isEmpty()) { + return null; + } + String[] parts = raw.split(";", -1); + List normalized = new ArrayList<>(parts.length); + for (String part : parts) { + String biome = part.trim(); + if (biome.isEmpty()) { + return ""; + } + if (!biome.contains(":")) { + biome = "minecraft:" + biome; + } + if (biome.startsWith("minecraft:") && !BiomeRegistry.isValidName(biome) + || !biome.startsWith("minecraft:") && !RESOURCE_LOCATION.matcher(biome).matches()) { + return ""; + } + normalized.add(biome); + } + return String.join(";", normalized); + } + + private void clear() { + suppressSuggestions = true; + suppressBiomeSuggestions = true; + try { + blockSuggestionRevision++; + biomeSuggestionRevision++; + blockExplicitCatalog = false; + biomeExplicitCatalog = false; + blockSuggestionHighlight = -1; + biomeSuggestionHighlight = -1; + block.hide(); + biomeNames.hide(); + tileEntityMode.hide(); + propertyEditors.values().forEach(ComboBox::hide); + clearPopupSuggestionHighlight(block); + clearPopupSuggestionHighlight(biomeNames); + block.setValue(null); + block.getSelectionModel().clearSelection(); + block.getEditor().clear(); + minY.clear(); + maxY.clear(); + biomeNames.setValue(null); + biomeNames.getSelectionModel().clearSelection(); + biomeNames.getEditor().clear(); + if (source) { + tileEntityMode.setValue(SourceTileMode.ANY); + } + propertyEditors.clear(); + properties.getChildren().clear(); + setPropertiesVisible(false); + updateBlockSuggestions(""); + updateBiomeSuggestions(); + userInputPresent.set(false); + } finally { + suppressSuggestions = false; + suppressBiomeSuggestions = false; + } + } + + private void applyPreset(String text, SourceTileMode sourceTileMode) { + suppressSuggestions = true; + try { + String value = text == null ? "" : text; + block.setValue(null); + block.getSelectionModel().clearSelection(); + block.getEditor().setText(value); + block.hide(); + updateBlockSuggestions(value); + rebuildProperties(value); + collapseEditorCaretToEnd(); + if (source) { + tileEntityMode.setValue(sourceTileMode == null ? SourceTileMode.ANY : sourceTileMode); + minY.clear(); + maxY.clear(); + clearBiomeInput(); + } + updateUserInputPresent(); + } finally { + suppressSuggestions = false; + } + } + + private void applySource(ChunkFilter.BlockReplaceSource source, String fallback) { + boolean applied = switch (source.getType()) { + case LITERAL_NAME -> applyEditableBlock(source.getName(), Map.of()); + case SELECTED_PROPERTIES -> { + Map selectedProperties = editableStateProperties(source.getState()); + yield selectedProperties != null && applyEditableBlock(source.getName(), selectedProperties); + } + case REGEX_NAME -> { + applyPreset("regex(" + formatWrapperArgument(source.getName()) + ")", SourceTileMode.fromTileEntityMode(source.getTileEntityMode())); + yield true; + } + default -> false; + }; + if (applied) { + applySourceConditions(source); + } else { + applyPreset(fallback, SourceTileMode.ANY); + } + } + + private void applyTarget(ChunkFilter.BlockReplaceData target, String fallback) { + boolean applied = switch (target.getType()) { + case NAME -> applyEditableBlock(target.getName(), Map.of()); + case STATE -> { + Map selectedProperties = editableStateProperties(target.getState()); + yield selectedProperties != null && applyEditableBlock(target.getName(), selectedProperties); + } + default -> false; + }; + if (!applied) { + applyPreset(fallback, SourceTileMode.ANY); + } + } + + private boolean applyEditableBlock(String name, Map selectedProperties) { + String blockName = BlockStateCatalog.normalizeName(name); + suppressSuggestions = true; + try { + block.setValue(null); + block.getSelectionModel().clearSelection(); + block.getEditor().setText(blockName); + block.hide(); + updateBlockSuggestions(blockName); + rebuildProperties(blockName); + if (!selectProperties(blockName, selectedProperties)) { + return false; + } + collapseEditorCaretToEnd(); + updateUserInputPresent(); + return true; + } finally { + suppressSuggestions = false; + } + } + + private boolean selectProperties(String blockName, Map selectedProperties) { + for (Map.Entry selected : selectedProperties.entrySet()) { + if (!catalog.isValidPropertyValue(blockName, selected.getKey(), selected.getValue())) { + return false; + } + ComboBox editor = propertyEditors.get(selected.getKey()); + if (editor == null) { + return false; + } + editor.setValue(PropertyChoice.value(selected.getValue())); + } + return true; + } + + private void applySourceConditions(ChunkFilter.BlockReplaceSource source) { + if (!this.source) { + return; + } + tileEntityMode.setValue(SourceTileMode.fromTileEntityMode(source.getTileEntityMode())); + minY.setText(source.getMinY() == null ? "" : Integer.toString(source.getMinY())); + maxY.setText(source.getMaxY() == null ? "" : Integer.toString(source.getMaxY())); + setBiomeText(source.getBiomes().stream().collect(Collectors.joining(";"))); + updateUserInputPresent(); + } + + private void focusInput() { + block.requestFocus(); + block.getEditor().requestFocus(); + } + + private String currentText() { + String text = block.getEditor().getText(); + return text == null ? "" : text.trim(); + } + + private void updateUserInputPresent() { + userInputPresent.set(!currentText().isEmpty() + || minY.getText() != null && !minY.getText().isBlank() + || maxY.getText() != null && !maxY.getText().isBlank() + || biomeNames.getEditor().getText() != null && !biomeNames.getEditor().getText().isBlank()); + updatePresetButtons(); + } + + private void updateBlockSuggestions(String query) { + blockExplicitCatalog = false; + updateBlockSuggestions(query, false); + } + + private void updateBlockSuggestions(String query, boolean allowEmpty) { + String text = query == null ? "" : query.trim().toLowerCase(Locale.ROOT); + blockSuggestionHighlight = -1; + clearPopupSuggestionHighlight(block); + updatingItems = true; + try { + block.hide(); + if (text.startsWith("{") || source && isSourceModeExpression(text)) { + blockSuggestions.clear(); + } else { + blockSuggestions.setAll(suggestionsForQuery(blockNames, text, allowEmpty)); + } + block.setVisibleRowCount(Math.max(1, Math.min(12, blockSuggestions.size()))); + } finally { + updatingItems = false; + } + } + + private void scheduleBlockSuggestions(String query) { + int revision = ++blockSuggestionRevision; + Platform.runLater(() -> { + if (revision == blockSuggestionRevision && !suppressSuggestions) { + updateBlockSuggestions(query); + showBlockSuggestions(query); + } + }); + } + + private void showBlockSuggestions(String query) { + if (suppressSuggestions) { + return; + } + String text = query == null ? "" : query.trim(); + if (text.isEmpty() || text.startsWith("{") || source && isSourceModeExpression(text) || block.getItems().isEmpty()) { + block.hide(); + return; + } + block.show(); + } + + private void updateBiomeSuggestions() { + biomeExplicitCatalog = false; + updateBiomeSuggestions(false); + } + + private void updateBiomeSuggestions(boolean allowEmpty) { + String query = currentBiomeQuery().toLowerCase(Locale.ROOT); + biomeSuggestionHighlight = -1; + clearPopupSuggestionHighlight(biomeNames); + updatingBiomeItems = true; + try { + biomeNames.hide(); + biomeSuggestions.setAll(suggestionsForQuery(biomeCatalogNames, query, allowEmpty)); + biomeNames.setVisibleRowCount(Math.max(1, Math.min(12, biomeSuggestions.size()))); + } finally { + updatingBiomeItems = false; + } + } + + private void scheduleBiomeSuggestions() { + int revision = ++biomeSuggestionRevision; + Platform.runLater(() -> { + if (revision == biomeSuggestionRevision && !suppressBiomeSuggestions) { + updateBiomeSuggestions(); + showBiomeSuggestions(); + } + }); + } + + private void showBiomeSuggestions() { + if (suppressBiomeSuggestions) { + return; + } + if (currentBiomeQuery().isEmpty() || biomeNames.getItems().isEmpty()) { + biomeNames.hide(); + return; + } + biomeNames.show(); + } + + private void handleAutocompleteKeyPressed(KeyEvent event) { + if (!isAutocompletePopupKey(event.getCode())) { + return; + } + if (block.isShowing()) { + handleKeyPressed(event); + } else if (source && biomeNames.isShowing()) { + handleBiomeKeyPressed(event); + } + } + + private void handleBlockMousePressed(MouseEvent event) { + if (event.getButton() == MouseButton.PRIMARY && !block.isShowing() + && currentText().isEmpty() && isComboBoxArrowTarget(event.getTarget())) { + blockExplicitCatalog = true; + updateBlockSuggestions("", true); + } + } + + private void handleBiomeMousePressed(MouseEvent event) { + String text = biomeNames.getEditor().getText(); + if (event.getButton() == MouseButton.PRIMARY && !biomeNames.isShowing() + && (text == null || text.isBlank()) && isComboBoxArrowTarget(event.getTarget())) { + biomeExplicitCatalog = true; + updateBiomeSuggestions(true); + } + } + + private void scheduleBlockExplicitCatalogCleanup() { + if (!blockExplicitCatalog) { + return; + } + Platform.runLater(() -> { + String text = block.getEditor().getText(); + if (shouldClearExplicitCatalog(blockExplicitCatalog, block.isShowing(), text)) { + blockExplicitCatalog = false; + blockSuggestionHighlight = -1; + clearPopupSuggestionHighlight(block); + clearEmptyExplicitCatalog(block); + block.setVisibleRowCount(1); + } else if (!block.isShowing() && text != null && !text.isBlank()) { + blockExplicitCatalog = false; + } + }); + } + + private void scheduleBiomeExplicitCatalogCleanup() { + if (!biomeExplicitCatalog) { + return; + } + Platform.runLater(() -> { + String text = biomeNames.getEditor().getText(); + if (shouldClearExplicitCatalog(biomeExplicitCatalog, biomeNames.isShowing(), text)) { + biomeExplicitCatalog = false; + biomeSuggestionHighlight = -1; + clearPopupSuggestionHighlight(biomeNames); + clearEmptyExplicitCatalog(biomeNames); + biomeNames.setVisibleRowCount(1); + } else if (!biomeNames.isShowing() && text != null && !text.isBlank()) { + biomeExplicitCatalog = false; + } + }); + } + + private void handleBiomeKeyPressed(KeyEvent event) { + if (biomeNames.isShowing()) { + if (event.getCode() == KeyCode.ENTER) { + String suggestion = selectedBiomeSuggestion(); + if (suggestion != null) { + completeBiomeSuggestion(suggestion); + event.consume(); + } + return; + } + if (moveBiomeSuggestionHighlight(event)) { + return; + } + } + if (event.getCode() == KeyCode.TAB && biomeNames.isShowing()) { + String suggestion = selectedBiomeSuggestion(); + if (suggestion != null) { + completeBiomeSuggestion(suggestion); + event.consume(); + } + } + } + + private String selectedBiomeSuggestion() { + if (biomeSuggestionHighlight >= 0 && biomeSuggestionHighlight < biomeNames.getItems().size()) { + return biomeNames.getItems().get(biomeSuggestionHighlight); + } + String selected = biomeNames.getSelectionModel().getSelectedItem(); + if (selected != null && biomeNames.getItems().contains(selected)) { + return selected; + } + return biomeNames.getItems().isEmpty() ? null : biomeNames.getItems().get(0); + } + + private boolean moveBiomeSuggestionHighlight(KeyEvent event) { + int visibleRows = popupVisibleRowCount(biomeNames, biomeNames.getVisibleRowCount()); + int target = popupSelectionTarget(event.getCode(), biomeSuggestionHighlight, + biomeNames.getItems().size(), visibleRows); + if (target < 0) { + return false; + } + biomeSuggestionHighlight = target; + focusPopupSuggestion(biomeNames, target); + event.consume(); + return true; + } + + private void completeBiomeSuggestion(String suggestion) { + TextField editor = biomeNames.getEditor(); + String text = editor.getText(); + if (text == null) { + text = ""; + } + int caret = Math.max(0, Math.min(editor.getCaretPosition(), text.length())); + int start = text.lastIndexOf(';', Math.max(0, caret - 1)) + 1; + int end = text.indexOf(';', caret); + if (end < 0) { + end = text.length(); + } + String completed = text.substring(0, start) + suggestion + text.substring(end); + int caretPosition = start + suggestion.length(); + + suppressBiomeSuggestions = true; + try { + biomeNames.setValue(null); + biomeNames.getSelectionModel().clearSelection(); + editor.setText(completed); + editor.selectRange(caretPosition, caretPosition); + updateUserInputPresent(); + updateBiomeSuggestions(); + biomeNames.hide(); + } finally { + suppressBiomeSuggestions = false; + } + } + + private String currentBiomeQuery() { + TextField editor = biomeNames.getEditor(); + return biomeToken(editor.getText(), editor.getCaretPosition()); + } + + private void clearBiomeInput() { + suppressBiomeSuggestions = true; + try { + biomeNames.setValue(null); + biomeNames.getSelectionModel().clearSelection(); + biomeNames.getEditor().clear(); + biomeNames.hide(); + } finally { + suppressBiomeSuggestions = false; + } + } + + private void setBiomeText(String value) { + suppressBiomeSuggestions = true; + try { + biomeNames.setValue(null); + biomeNames.getSelectionModel().clearSelection(); + biomeNames.getEditor().setText(value == null ? "" : value); + biomeNames.hide(); + updateBiomeSuggestions(); + } finally { + suppressBiomeSuggestions = false; + } + } + + private void handleKeyPressed(KeyEvent event) { + if (block.isShowing()) { + if (event.getCode() == KeyCode.ENTER) { + String suggestion = selectedSuggestion(); + if (suggestion != null) { + completeSuggestion(suggestion); + event.consume(); + } + return; + } + if (moveBlockSuggestionHighlight(event)) { + return; + } + } + if (event.getCode() == KeyCode.TAB && block.isShowing()) { + String suggestion = selectedSuggestion(); + if (suggestion != null) { + completeSuggestion(suggestion); + event.consume(); + } + } + } + + private String selectedSuggestion() { + if (blockSuggestionHighlight >= 0 && blockSuggestionHighlight < block.getItems().size()) { + return block.getItems().get(blockSuggestionHighlight); + } + String selected = block.getSelectionModel().getSelectedItem(); + if (selected != null && block.getItems().contains(selected)) { + return selected; + } + return block.getItems().isEmpty() ? null : block.getItems().get(0); + } + + private boolean moveBlockSuggestionHighlight(KeyEvent event) { + int visibleRows = popupVisibleRowCount(block, block.getVisibleRowCount()); + int target = popupSelectionTarget(event.getCode(), blockSuggestionHighlight, + block.getItems().size(), visibleRows); + if (target < 0) { + return false; + } + blockSuggestionHighlight = target; + focusPopupSuggestion(block, target); + event.consume(); + return true; + } + + private void completeSuggestion(String suggestion) { + commitEditorText(suggestion); + } + + private void commitEditorText(String text) { + suppressSuggestions = true; + try { + block.setValue(null); + block.getSelectionModel().clearSelection(); + block.getEditor().setText(text); + updateUserInputPresent(); + updateBlockSuggestions(text); + rebuildProperties(text); + block.hide(); + collapseEditorCaretToEnd(); + } finally { + suppressSuggestions = false; + } + } + + private void collapseEditorCaretToEnd() { + String text = block.getEditor().getText(); + if (text != null) { + block.getEditor().selectRange(text.length(), text.length()); + } + } + + private void rebuildProperties(String rawBlockName) { + propertyEditors.clear(); + properties.getChildren().clear(); + setPropertiesVisible(false); + + String text = rawBlockName == null ? "" : rawBlockName.trim(); + if (text.isEmpty() || text.startsWith("{") || source && isSourceModeExpression(text)) { + return; + } + + String blockName = BlockStateCatalog.normalizeName(text); + Map> catalogProperties = catalog.properties(blockName); + if (catalogProperties.isEmpty()) { + return; + } + + int row = 0; + for (Map.Entry> property : catalogProperties.entrySet()) { + Label name = new Label(property.getKey()); + ObservableList choices = FXCollections.observableArrayList(); + choices.add(PropertyChoice.allChoice()); + choices.addAll(property.getValue().stream().map(PropertyChoice::value).collect(Collectors.toList())); + ComboBox value = new ComboBox<>(choices); + configureBuilderComboBox(value); + value.setMinWidth(0); + value.setMaxWidth(Double.MAX_VALUE); + value.setCellFactory(v -> new PropertyChoiceCell()); + value.setButtonCell(new PropertyChoiceCell()); + value.setValue(PropertyChoice.allChoice()); + value.valueProperty().addListener((a, o, n) -> clearPresetSelectionAfterEdit()); + value.addEventFilter(MouseEvent.MOUSE_PRESSED, event -> { + if (!value.isShowing()) { + Platform.runLater(value::show); + } + }); + propertyEditors.put(property.getKey(), value); + properties.add(name, 0, row); + properties.add(value, 1, row); + GridPane.setHgrow(value, Priority.ALWAYS); + row++; + } + setPropertiesVisible(true); + } + + private void setPropertiesVisible(boolean visible) { + properties.setVisible(visible); + properties.setManaged(visible); + } + + private class HighlightedBlockCell extends ListCell { + + private HighlightedBlockCell() { + addEventFilter(MouseEvent.MOUSE_PRESSED, event -> { + if (!isEmpty() && getItem() != null) { + completeSuggestion(getItem()); + event.consume(); + } + }); + } + + @Override + protected void updateItem(String item, boolean empty) { + super.updateItem(item, empty); + pseudoClassStateChanged(autocompleteHighlighted, + isAutocompleteCellHighlighted(getIndex(), blockSuggestionHighlight, empty)); + if (empty || item == null) { + setText(null); + setGraphic(null); + return; + } + String query = currentText(); + if (query.isEmpty()) { + setText(item); + setGraphic(null); + return; + } + setText(null); + setGraphic(highlightedText(item, query)); + } + + private TextFlow highlightedText(String item, String query) { + TextFlow flow = new TextFlow(); + flow.getStyleClass().add("replace-blocks-builder-suggestion-text"); + String needle = query == null ? "" : query.trim().toLowerCase(Locale.ROOT); + if (needle.isEmpty()) { + flow.getChildren().add(text(item, false)); + return flow; + } + + String haystack = item.toLowerCase(Locale.ROOT); + int offset = 0; + int match; + while ((match = haystack.indexOf(needle, offset)) >= 0) { + if (match > offset) { + flow.getChildren().add(text(item.substring(offset, match), false)); + } + int end = match + needle.length(); + flow.getChildren().add(text(item.substring(match, end), true)); + offset = end; + } + if (offset < item.length()) { + flow.getChildren().add(text(item.substring(offset), false)); + } + if (flow.getChildren().isEmpty()) { + flow.getChildren().add(text(item, false)); + } + return flow; + } + + private Text text(String value, boolean highlight) { + Text text = new Text(value); + text.getStyleClass().add(highlight ? "replace-blocks-builder-suggestion-highlight" : "replace-blocks-builder-suggestion-normal"); + return text; + } + } + + private class HighlightedBiomeCell extends ListCell { + + private HighlightedBiomeCell() { + addEventFilter(MouseEvent.MOUSE_PRESSED, event -> { + if (!isEmpty() && getItem() != null) { + completeBiomeSuggestion(getItem()); + event.consume(); + } + }); + } + + @Override + protected void updateItem(String item, boolean empty) { + super.updateItem(item, empty); + pseudoClassStateChanged(autocompleteHighlighted, + isAutocompleteCellHighlighted(getIndex(), biomeSuggestionHighlight, empty)); + if (empty || item == null) { + setText(null); + setGraphic(null); + return; + } + String query = currentBiomeQuery(); + if (query.isEmpty()) { + setText(item); + setGraphic(null); + return; + } + setText(null); + setGraphic(highlightedText(item, query)); + } + + private TextFlow highlightedText(String item, String query) { + TextFlow flow = new TextFlow(); + flow.getStyleClass().add("replace-blocks-builder-suggestion-text"); + String needle = query == null ? "" : query.trim().toLowerCase(Locale.ROOT); + if (needle.isEmpty()) { + flow.getChildren().add(text(item, false)); + return flow; + } + + String haystack = item.toLowerCase(Locale.ROOT); + int offset = 0; + int match; + while ((match = haystack.indexOf(needle, offset)) >= 0) { + if (match > offset) { + flow.getChildren().add(text(item.substring(offset, match), false)); + } + int end = match + needle.length(); + flow.getChildren().add(text(item.substring(match, end), true)); + offset = end; + } + if (offset < item.length()) { + flow.getChildren().add(text(item.substring(offset), false)); + } + if (flow.getChildren().isEmpty()) { + flow.getChildren().add(text(item, false)); + } + return flow; + } + + private Text text(String value, boolean highlight) { + Text text = new Text(value); + text.getStyleClass().add(highlight ? "replace-blocks-builder-suggestion-highlight" : "replace-blocks-builder-suggestion-normal"); + return text; + } + } + } + + private record ValueResult(String value, ReplaceBlocksDiagnostics.Diagnostic diagnostic) {} + + private record PresetValue(String value, ReplaceBlocksDiagnostics.Diagnostic diagnostic) {} + + private record ParsedPresetRule(Rule rule, ParsedRule parsed) {} + + private record BuilderContentState(List rules, BlockInputState from, BlockInputState to) {} + + private record BlockInputState( + String text, + SourceTileMode tileMode, + String minY, + String maxY, + String biome, + List properties) {} + + private record PropertyState(String name, PropertyChoice choice) {} + + record ParsedRule(ChunkFilter.BlockReplaceSource source, ChunkFilter.BlockReplaceData target) {} + + record Rule(String from, String to) {} + + record VisibleRuleBounds(int index, Rectangle2D bounds) {} + + private static class RuleCell extends TableCell { + + @Override + protected void updateItem(String item, boolean empty) { + super.updateItem(item, empty); + if (empty || item == null || item.isEmpty()) { + setText(null); + setTooltip(null); + return; + } + setText(item); + setTooltip(new Tooltip(item)); + } + } + + private static class PresetItemCell extends ListCell { + + @Override + protected void updateItem(PresetItem item, boolean empty) { + super.updateItem(item, empty); + setText(null); + if (empty || item == null) { + setGraphic(null); + return; + } + Text text = new Text(item.toString()); + text.setFill(PROPERTY_CHOICE_TEXT); + setGraphic(text); + } + } + + private record PresetItem(ReplaceBlocksPreset builtin, GlobalConfig.ReplaceBlocksUserPreset userPreset) { + + private static PresetItem builtin(ReplaceBlocksPreset preset) { + return new PresetItem(preset, null); + } + + private static PresetItem custom(GlobalConfig.ReplaceBlocksUserPreset preset) { + return new PresetItem(null, preset); + } + + private boolean custom() { + return userPreset != null; + } + + private String name() { + return custom() ? userPreset.name() : builtin.toString(); + } + + private String value() { + return userPreset == null ? null : userPreset.value(); + } + + private String source() { + return builtin.source(); + } + + private String target() { + return builtin.target(); + } + + private SourceTileMode tileMode() { + return builtin.tileMode(); + } + + private Translation warning() { + return builtin.warning(); + } + + @Override + public String toString() { + return name(); + } + } + + private enum ReplaceBlocksPreset { + AIR_TO_STONE( + Translation.DIALOG_REPLACE_BLOCKS_BUILDER_PRESET_AIR_TO_STONE, + "minecraft:air", + "minecraft:stone", + SourceTileMode.ANY, + Translation.DIALOG_REPLACE_BLOCKS_BUILDER_PRESET_WARNING_AIR), + FLUIDS_TO_AIR( + Translation.DIALOG_REPLACE_BLOCKS_BUILDER_PRESET_FLUIDS_TO_AIR, + "regex(minecraft:(water|lava))", + "minecraft:air", + SourceTileMode.ANY, + null), + LOGS_LEAVES_TO_AIR( + Translation.DIALOG_REPLACE_BLOCKS_BUILDER_PRESET_LOGS_LEAVES_TO_AIR, + "regex(minecraft:.*_(log|wood|stem|hyphae|leaves))", + "minecraft:air", + SourceTileMode.ANY, + null), + ORES_TO_STONE( + Translation.DIALOG_REPLACE_BLOCKS_BUILDER_PRESET_ORES_TO_STONE, + "regex(minecraft:.*_ore)", + "minecraft:stone", + SourceTileMode.ANY, + null), + CONTAINERS_TO_AIR( + Translation.DIALOG_REPLACE_BLOCKS_BUILDER_PRESET_CONTAINERS_TO_AIR, + "regex(minecraft:.*(chest|barrel|furnace|smoker|hopper|dispenser|dropper|shulker_box))", + "minecraft:air", + SourceTileMode.REQUIRE, + Translation.DIALOG_REPLACE_BLOCKS_BUILDER_PRESET_WARNING_CONTAINERS); + + private final Translation label; + private final String source; + private final String target; + private final SourceTileMode tileMode; + private final Translation warning; + + ReplaceBlocksPreset(Translation label, String source, String target, SourceTileMode tileMode, Translation warning) { + this.label = label; + this.source = source; + this.target = target; + this.tileMode = tileMode; + this.warning = warning; + } + + private String source() { + return source; + } + + private String target() { + return target; + } + + private SourceTileMode tileMode() { + return tileMode; + } + + private Translation warning() { + return warning; + } + + @Override + public String toString() { + return label.toString(); + } + } + + private record PropertyChoice(String value, boolean all) { + + private static PropertyChoice allChoice() { + return new PropertyChoice(null, true); + } + + private static PropertyChoice value(String value) { + return new PropertyChoice(value, false); + } + + @Override + public String toString() { + return all ? Translation.DIALOG_REPLACE_BLOCKS_BUILDER_PROPERTY_ALL.toString() : value; + } + } + + private static class PropertyChoiceCell extends ListCell { + + @Override + protected void updateItem(PropertyChoice item, boolean empty) { + super.updateItem(item, empty); + setText(null); + if (empty || item == null) { + setGraphic(null); + return; + } + Text text = new Text(item.toString()); + text.setFill(PROPERTY_CHOICE_TEXT); + setGraphic(text); + } + } + + private enum SourceTileMode { + ANY(Translation.DIALOG_REPLACE_BLOCKS_BUILDER_TILE_SOURCE_ANY, null), + REQUIRE(Translation.DIALOG_REPLACE_BLOCKS_BUILDER_TILE_SOURCE_REQUIRE, "tile"), + EXCLUDE(Translation.DIALOG_REPLACE_BLOCKS_BUILDER_TILE_SOURCE_EXCLUDE, "no_tile"); + + private final Translation label; + private final String wrapper; + + SourceTileMode(Translation label, String wrapper) { + this.label = label; + this.wrapper = wrapper; + } + + private static SourceTileMode fromTileEntityMode(ChunkFilter.BlockReplaceTileEntityMode mode) { + return switch (mode) { + case REQUIRE_TILE_ENTITY -> REQUIRE; + case EXCLUDE_TILE_ENTITY -> EXCLUDE; + default -> ANY; + }; + } + + private String wrap(String value) { + return wrapper == null ? value : wrapper + "(" + value + ")"; + } + + @Override + public String toString() { + return label.toString(); + } + } +} diff --git a/src/main/java/net/querz/mcaselector/ui/dialog/ReplaceBlocksRuleBuilderModel.java b/src/main/java/net/querz/mcaselector/ui/dialog/ReplaceBlocksRuleBuilderModel.java new file mode 100644 index 00000000..49592d90 --- /dev/null +++ b/src/main/java/net/querz/mcaselector/ui/dialog/ReplaceBlocksRuleBuilderModel.java @@ -0,0 +1,34 @@ +package net.querz.mcaselector.ui.dialog; + +import net.querz.mcaselector.changer.fields.ReplaceBlocksField; +import net.querz.mcaselector.changer.fields.ReplaceBlocksParser; +import net.querz.mcaselector.version.ChunkFilter; +import java.util.LinkedHashMap; +import java.util.Map; + +final class ReplaceBlocksRuleBuilderModel { + + private ReplaceBlocksRuleBuilderModel() {} + + static Map parseRules(String value) { + ReplaceBlocksParser.Result result = ReplaceBlocksParser.parse(value); + if (!(result instanceof ReplaceBlocksParser.Success success)) { + return Map.of(); + } + Map rules = new LinkedHashMap<>(); + for (ReplaceBlocksParser.ParsedRule rule : success.rules()) { + rules.put(rule.source(), rule.target()); + } + return rules; + } + + static String normalizeRulesValue(String value) { + Map rules = parseRules(value); + if (rules.isEmpty()) { + return null; + } + ReplaceBlocksField field = new ReplaceBlocksField(); + field.setNewValue(rules); + return field.valueToString(); + } +} diff --git a/src/main/java/net/querz/mcaselector/version/ChunkFilter.java b/src/main/java/net/querz/mcaselector/version/ChunkFilter.java index 9e3d8563..c1bb2ef5 100644 --- a/src/main/java/net/querz/mcaselector/version/ChunkFilter.java +++ b/src/main/java/net/querz/mcaselector/version/ChunkFilter.java @@ -9,6 +9,7 @@ import net.querz.nbt.*; import java.util.*; import java.util.function.Function; +import java.util.regex.Pattern; public interface ChunkFilter { @@ -22,7 +23,10 @@ interface Biomes { interface Blocks { boolean matchBlockNames(ChunkData data, Collection names); boolean matchAnyBlockName(ChunkData data, Collection names); - void replaceBlocks(ChunkData data, Map replace); + boolean replaceBlocks(ChunkData data, Map replace); + default BlockReplacePreviewData previewReplaceBlocks(ChunkData data, Map replace) { + return BlockReplacePreviewData.unsupported(); + } int getBlockAmount(ChunkData data, String[] blocks); int getAverageHeight(ChunkData data); } @@ -210,6 +214,302 @@ interface MergeEntities extends Merge {} interface MergePOI extends Merge {} + class BlockReplaceSource { + + private final BlockReplaceSourceType type; + private final BlockReplaceTileEntityMode tileEntityMode; + private final String name; + private final CompoundTag state; + private final Integer minY; + private final Integer maxY; + private final Set biomes; + private final Pattern pattern; + + public BlockReplaceSource(String name) { + this.type = BlockReplaceSourceType.LEGACY_REGEX_NAME; + this.tileEntityMode = BlockReplaceTileEntityMode.ANY; + this.name = name; + state = null; + minY = null; + maxY = null; + biomes = Collections.emptySet(); + pattern = Pattern.compile(name); + } + + public BlockReplaceSource(CompoundTag state) { + this.type = BlockReplaceSourceType.EXACT_STATE; + this.tileEntityMode = BlockReplaceTileEntityMode.ANY; + this.state = (CompoundTag) state.copy(); + name = this.state.getString("Name"); + minY = null; + maxY = null; + biomes = Collections.emptySet(); + pattern = null; + } + + private BlockReplaceSource(BlockReplaceSourceType type, BlockReplaceTileEntityMode tileEntityMode, String name, CompoundTag state, Integer minY, Integer maxY, Set biomes) { + this(type, tileEntityMode, name, state, minY, maxY, biomes, null); + } + + private BlockReplaceSource(BlockReplaceSourceType type, BlockReplaceTileEntityMode tileEntityMode, String name, + CompoundTag state, Integer minY, Integer maxY, Set biomes, Pattern pattern) { + this.type = type; + this.tileEntityMode = tileEntityMode; + this.name = name; + this.state = state == null ? null : (CompoundTag) state.copy(); + this.minY = minY; + this.maxY = maxY; + this.biomes = biomes == null || biomes.isEmpty() ? Collections.emptySet() : Collections.unmodifiableSet(new LinkedHashSet<>(biomes)); + this.pattern = pattern != null ? pattern : switch (type) { + case LEGACY_REGEX_NAME, REGEX_NAME -> Pattern.compile(name); + default -> null; + }; + } + + public static BlockReplaceSource regexName(String pattern) { + return new BlockReplaceSource(BlockReplaceSourceType.REGEX_NAME, BlockReplaceTileEntityMode.ANY, pattern, null, null, null, Collections.emptySet()); + } + + public static BlockReplaceSource literalName(String name) { + return new BlockReplaceSource(BlockReplaceSourceType.LITERAL_NAME, BlockReplaceTileEntityMode.ANY, name, null, null, null, Collections.emptySet()); + } + + public static BlockReplaceSource selectedProperties(CompoundTag state) { + return new BlockReplaceSource(BlockReplaceSourceType.SELECTED_PROPERTIES, BlockReplaceTileEntityMode.ANY, state.getString("Name"), state, null, null, Collections.emptySet()); + } + + public BlockReplaceSource withTileEntityMode(BlockReplaceTileEntityMode tileEntityMode) { + return new BlockReplaceSource(type, tileEntityMode, name, state, minY, maxY, biomes, pattern); + } + + public BlockReplaceSource withYRange(Integer minY, Integer maxY) { + return new BlockReplaceSource(type, tileEntityMode, name, state, minY, maxY, biomes, pattern); + } + + public BlockReplaceSource withBiomes(Collection biomes) { + return new BlockReplaceSource(type, tileEntityMode, name, state, minY, maxY, + biomes == null ? Collections.emptySet() : new LinkedHashSet<>(biomes), pattern); + } + + public boolean matches(CompoundTag blockState) { + return !requiresLocationContext() && matchesBlockState(blockState); + } + + public boolean matches(CompoundTag blockState, boolean hasTileEntity) { + return !hasYRange() && !hasBiomeRestriction() + && matchesBlockState(blockState) && matchesTileEntityMode(hasTileEntity); + } + + public boolean matches(CompoundTag blockState, boolean hasTileEntity, int y) { + return !hasBiomeRestriction() && matchesY(y) + && matchesBlockState(blockState) && matchesTileEntityMode(hasTileEntity); + } + + public boolean matches(CompoundTag blockState, boolean hasTileEntity, int y, String biome) { + return matchesY(y) && matchesBiome(biome) + && matchesBlockState(blockState) && matchesTileEntityMode(hasTileEntity); + } + + private boolean matchesBlockState(CompoundTag blockState) { + String blockName = blockState.getString("Name"); + switch (type) { + case EXACT_STATE: + return state.equals(blockState); + case SELECTED_PROPERTIES: + return Objects.equals(name, blockName) && matchesSelectedProperties(blockState); + case LITERAL_NAME: + return Objects.equals(name, blockName); + case LEGACY_REGEX_NAME: + case REGEX_NAME: + return blockName != null && pattern.matcher(blockName).matches(); + default: + return false; + } + } + + private boolean matchesTileEntityMode(boolean hasTileEntity) { + switch (tileEntityMode) { + case REQUIRE_TILE_ENTITY: + return hasTileEntity; + case EXCLUDE_TILE_ENTITY: + return !hasTileEntity; + default: + return true; + } + } + + private boolean matchesSelectedProperties(CompoundTag blockState) { + CompoundTag selectedProperties = state.getCompoundTag("Properties"); + if (selectedProperties == null || selectedProperties.isEmpty()) { + return false; + } + CompoundTag blockProperties = blockState.getCompoundTag("Properties"); + if (blockProperties == null) { + return false; + } + for (Map.Entry property : selectedProperties) { + Tag blockValue = blockProperties.get(property.getKey()); + if (!property.getValue().equals(blockValue)) { + return false; + } + } + return true; + } + + public boolean matchesAir() { + CompoundTag air = new CompoundTag(); + air.putString("Name", "minecraft:air"); + return tileEntityMode != BlockReplaceTileEntityMode.REQUIRE_TILE_ENTITY && matchesBlockState(air); + } + + public boolean matchesAirInSection(int sectionY) { + return matchesAir() && intersectsSection(sectionY); + } + + public boolean matchesY(int y) { + return (minY == null || y >= minY) && (maxY == null || y <= maxY); + } + + public boolean intersectsSection(int sectionY) { + int sectionMinY = sectionY * 16; + int sectionMaxY = sectionMinY + 15; + return (minY == null || sectionMaxY >= minY) && (maxY == null || sectionMinY <= maxY); + } + + public boolean matchesBiome(String biome) { + return biomes.isEmpty() || biome != null && biomes.contains(biome); + } + + public BlockReplaceSourceType getType() { + return type; + } + + public BlockReplaceTileEntityMode getTileEntityMode() { + return tileEntityMode; + } + + public String getName() { + return name; + } + + public CompoundTag getState() { + return state == null ? null : (CompoundTag) state.copy(); + } + + public boolean hasYRange() { + return minY != null || maxY != null; + } + + public boolean hasBiomeRestriction() { + return !biomes.isEmpty(); + } + + public boolean requiresLocationContext() { + return tileEntityMode != BlockReplaceTileEntityMode.ANY || hasYRange() || hasBiomeRestriction(); + } + + public Integer getMinY() { + return minY; + } + + public Integer getMaxY() { + return maxY; + } + + public Set getBiomes() { + return biomes; + } + + @Override + public String toString() { + String value = baseToString(); + switch (tileEntityMode) { + case REQUIRE_TILE_ENTITY: + value = "tile(" + value + ")"; + break; + case EXCLUDE_TILE_ENTITY: + value = "no_tile(" + value + ")"; + break; + } + if (hasYRange()) { + value = "y(" + formatYRange() + ", " + value + ")"; + } + if (hasBiomeRestriction()) { + value = "biome(" + formatBiomes() + ", " + value + ")"; + } + return value; + } + + private String baseToString() { + switch (type) { + case EXACT_STATE: + return NBTUtil.toSNBT(state); + case SELECTED_PROPERTIES: + return "props(" + NBTUtil.toSNBT(state) + ")"; + case REGEX_NAME: + return "regex(" + formatWrapperArgument(name) + ")"; + case LITERAL_NAME: + return "literal(" + formatWrapperArgument(name) + ")"; + case LEGACY_REGEX_NAME: + if (name.startsWith("minecraft:")) { + return name; + } + return "'" + name + "'"; + default: + return null; + } + } + + private static String formatWrapperArgument(String value) { + if (!value.equals(value.trim()) || value.contains(")")) { + return "'" + value + "'"; + } + return value; + } + + private String formatYRange() { + return (minY == null ? "" : minY) + ".." + (maxY == null ? "" : maxY); + } + + private String formatBiomes() { + StringJoiner joiner = new StringJoiner(";"); + for (String biome : biomes) { + joiner.add(biome); + } + return joiner.toString(); + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (!(o instanceof BlockReplaceSource that)) { + return false; + } + return type == that.type + && tileEntityMode == that.tileEntityMode + && Objects.equals(name, that.name) + && Objects.equals(state, that.state) + && Objects.equals(minY, that.minY) + && Objects.equals(maxY, that.maxY) + && Objects.equals(biomes, that.biomes); + } + + @Override + public int hashCode() { + return Objects.hash(type, tileEntityMode, name, state, minY, maxY, biomes); + } + } + + enum BlockReplaceSourceType { + LEGACY_REGEX_NAME, REGEX_NAME, LITERAL_NAME, EXACT_STATE, SELECTED_PROPERTIES + } + + enum BlockReplaceTileEntityMode { + ANY, REQUIRE_TILE_ENTITY, EXCLUDE_TILE_ENTITY + } + class BlockReplaceData { private String name; @@ -298,6 +598,158 @@ public String toString() { } } + class BlockReplacePreviewData { + + private final boolean supported; + private final List rules = new ArrayList<>(); + private long blocks; + private int sections; + private int lightSections; + private int completedAirSections; + private long tileEntityAdditions; + private long tileEntityRemovals; + private long tileEntityUpdates; + private long overlappingBlocks; + + private BlockReplacePreviewData(boolean supported) { + this.supported = supported; + } + + public static BlockReplacePreviewData supported() { + return new BlockReplacePreviewData(true); + } + + public static BlockReplacePreviewData supported(Map replace) { + BlockReplacePreviewData result = supported(); + result.setRules(replace); + return result; + } + + public static BlockReplacePreviewData unsupported() { + return new BlockReplacePreviewData(false); + } + + public boolean isSupported() { + return supported; + } + + public void addSection(long blocks) { + if (blocks > 0) { + this.blocks += blocks; + sections++; + } + } + + private void setRules(Map replace) { + int index = 1; + for (Map.Entry rule : replace.entrySet()) { + rules.add(new BlockReplaceRulePreviewData(index++, rule.getKey(), rule.getValue())); + } + } + + public void incrementRuleBlocks(int index) { + rules.get(index).incrementBlocks(); + } + + public void incrementOverlappingBlocks() { + overlappingBlocks++; + } + + public void incrementLightSections() { + lightSections++; + } + + public void incrementCompletedAirSections() { + completedAirSections++; + } + + public void incrementTileEntityAdditions() { + tileEntityAdditions++; + } + + public void incrementTileEntityRemovals() { + tileEntityRemovals++; + } + + public void incrementTileEntityUpdates() { + tileEntityUpdates++; + } + + public long getBlocks() { + return blocks; + } + + public int getSections() { + return sections; + } + + public int getLightSections() { + return lightSections; + } + + public int getCompletedAirSections() { + return completedAirSections; + } + + public long getTileEntityAdditions() { + return tileEntityAdditions; + } + + public long getTileEntityRemovals() { + return tileEntityRemovals; + } + + public long getTileEntityUpdates() { + return tileEntityUpdates; + } + + public long getOverlappingBlocks() { + return overlappingBlocks; + } + + public List getRules() { + return Collections.unmodifiableList(rules); + } + } + + class BlockReplaceRulePreviewData { + + private final int index; + private final BlockReplaceSource source; + private final BlockReplaceData target; + private long blocks; + + private BlockReplaceRulePreviewData(int index, BlockReplaceSource source, BlockReplaceData target) { + this.index = index; + this.source = source; + this.target = target; + } + + private void incrementBlocks() { + blocks++; + } + + public int getIndex() { + return index; + } + + public BlockReplaceSourceType getSourceType() { + return source.getType(); + } + + public String getSourceText() { + return source.toString(); + } + + public String getTargetText() { + return target.toString(); + } + + public long getBlocks() { + return blocks; + } + } + enum BlockReplaceType { NAME, STATE, STATE_TILE, NAME_TILE } diff --git a/src/main/java/net/querz/mcaselector/version/java_1_13/ChunkFilter_17w47a.java b/src/main/java/net/querz/mcaselector/version/java_1_13/ChunkFilter_17w47a.java index 5bfb4785..59f947e2 100644 --- a/src/main/java/net/querz/mcaselector/version/java_1_13/ChunkFilter_17w47a.java +++ b/src/main/java/net/querz/mcaselector/version/java_1_13/ChunkFilter_17w47a.java @@ -72,23 +72,25 @@ public boolean matchAnyBlockName(ChunkData data, Collection names) { } @Override - public void replaceBlocks(ChunkData data, Map replace) { + public boolean replaceBlocks(ChunkData data, Map replace) { CompoundTag level = Helper.levelFromRoot(Helper.getRegion(data)); ListTag sections = Helper.tagFromCompound(level, "Sections"); if (sections == null) { - return; + return false; } Point2i pos = Helper.point2iFromCompound(level, "xPos", "zPos"); if (pos == null) { - return; + return false; } pos = pos.chunkToBlock(); + boolean changed = false; // handle the special case when someone wants to replace air with something else - if (replace.containsKey("minecraft:air")) { + if (replace.keySet().stream().filter(s -> !s.requiresLocationContext()).anyMatch(ChunkFilter.BlockReplaceSource::matchesAir)) { Map sectionMap = new HashMap<>(); List heights = new ArrayList<>(18); + boolean completedSections = false; for (CompoundTag section : sections.iterateType(CompoundTag.class)) { sectionMap.put(section.getInt("Y"), section); heights.add(section.getInt("Y")); @@ -98,19 +100,23 @@ public void replaceBlocks(ChunkData data, Map entry : replace.entrySet()) { - if (!blockState.getString("Name").matches(entry.getKey())) { + for (Map.Entry entry : replace.entrySet()) { + if (!entry.getKey().matches(blockState)) { continue; } ChunkFilter.BlockReplaceData replacement = entry.getValue(); + if (!sectionChanged) { + section.remove("BlockLight"); + section.remove("SkyLight"); + sectionChanged = true; + changed = true; + } try { blockStates = setBlockAt(i, replacement.getState(), blockStates, palette); @@ -156,25 +169,21 @@ public void replaceBlocks(ChunkData data, Map= 0; t--) { + CompoundTag tile = tileEntities.getCompound(t); + if (tile.getInt("x") == location.getX() + && tile.getInt("y") == location.getY() + && tile.getInt("z") == location.getZ()) { + tileEntities.remove(t); + } + } } protected Point3i indexToLocation(int i) { diff --git a/src/main/java/net/querz/mcaselector/version/java_1_14/ChunkFilter_19w02a.java b/src/main/java/net/querz/mcaselector/version/java_1_14/ChunkFilter_19w02a.java index 85054a9a..3f9a1e4b 100644 --- a/src/main/java/net/querz/mcaselector/version/java_1_14/ChunkFilter_19w02a.java +++ b/src/main/java/net/querz/mcaselector/version/java_1_14/ChunkFilter_19w02a.java @@ -23,7 +23,7 @@ public ByteTag getLightPopulated(ChunkData data) { public void setLightPopulated(ChunkData data, byte lightPopulated) { CompoundTag level = Helper.levelFromRoot(Helper.getRegion(data)); if (level != null) { - level.putLong("isLightOn", lightPopulated); + level.putByte("isLightOn", lightPopulated); } } } diff --git a/src/main/java/net/querz/mcaselector/version/java_1_17/ChunkFilter_21w06a.java b/src/main/java/net/querz/mcaselector/version/java_1_17/ChunkFilter_21w06a.java index 20ce88e7..ba9444b2 100644 --- a/src/main/java/net/querz/mcaselector/version/java_1_17/ChunkFilter_21w06a.java +++ b/src/main/java/net/querz/mcaselector/version/java_1_17/ChunkFilter_21w06a.java @@ -269,7 +269,7 @@ protected long[] applyHeightMap(short[] rawHeightmap, int bits) { int index = 0; for (int i = 0; i < data.length; i++) { long l = 0L; - for (int j = 0; j < bits - 1 && index < 256; j++, index++) { + for (int j = 0; j < 64 / bits && index < 256; j++, index++) { l += ((long) rawHeightmap[index] << (bits * j)); } data[i] = l; @@ -282,25 +282,27 @@ protected long[] applyHeightMap(short[] rawHeightmap, int bits) { public static class Blocks extends ChunkFilter_20w17a.Blocks { @Override - public void replaceBlocks(ChunkData data, Map replace) { + public boolean replaceBlocks(ChunkData data, Map replace) { CompoundTag level = Helper.levelFromRoot(Helper.getRegion(data)); - ListTag sections = Helper.tagFromLevelFromRoot(level, "Sections"); + ListTag sections = Helper.tagFromCompound(level, "Sections"); if (sections == null) { - return; + return false; } Point2i pos = Helper.point2iFromCompound(level, "xPos", "zPos"); if (pos == null) { - return; + return false; } pos = pos.chunkToBlock(); + boolean changed = false; Range sectionRange = Helper.findSectionRange(level, sections); // handle the special case when someone wants to replace air with something else - if (replace.containsKey("minecraft:air")) { + if (replace.keySet().stream().filter(s -> !s.requiresLocationContext()).anyMatch(ChunkFilter.BlockReplaceSource::matchesAir)) { Map sectionMap = new HashMap<>(); List heights = new ArrayList<>(sectionRange.num()); + boolean completedSections = false; for (CompoundTag section : sections.iterateType(CompoundTag.class)) { sectionMap.put(section.getInt("Y"), section); heights.add(section.getInt("Y")); @@ -310,19 +312,23 @@ public void replaceBlocks(ChunkData data, Map entry : replace.entrySet()) { - if (!blockState.getString("Name").matches(entry.getKey())) { + for (Map.Entry entry : replace.entrySet()) { + if (!entry.getKey().matches(blockState)) { continue; } ChunkFilter.BlockReplaceData replacement = entry.getValue(); + if (!sectionChanged) { + section.remove("BlockLight"); + section.remove("SkyLight"); + sectionChanged = true; + changed = true; + } try { blockStates = setBlockAt(i, replacement.getState(), blockStates, palette); @@ -368,25 +381,21 @@ public void replaceBlocks(ChunkData data, Map= 0; t--) { + CompoundTag tile = tileEntities.getCompound(t); + if (tile.getInt("x") == location.getX() + && tile.getInt("y") == location.getY() + && tile.getInt("z") == location.getZ()) { + tileEntities.remove(t); + } + } } @Override diff --git a/src/main/java/net/querz/mcaselector/version/java_1_18/ChunkFilter_21w37a.java b/src/main/java/net/querz/mcaselector/version/java_1_18/ChunkFilter_21w37a.java index 01bc608f..59c237cd 100644 --- a/src/main/java/net/querz/mcaselector/version/java_1_18/ChunkFilter_21w37a.java +++ b/src/main/java/net/querz/mcaselector/version/java_1_18/ChunkFilter_21w37a.java @@ -74,47 +74,69 @@ public boolean matchAnyBlockName(ChunkData data, Collection names) { } @Override - public void replaceBlocks(ChunkData data, Map replace) { + public boolean replaceBlocks(ChunkData data, Map replace) { CompoundTag level = Helper.levelFromRoot(Helper.getRegion(data)); ListTag sections = Helper.tagFromCompound(level, "Sections"); if (sections == null) { - return; + return false; } Point2i pos = Helper.point2iFromCompound(level, "xPos", "zPos"); if (pos == null) { - return; + return false; } pos = pos.chunkToBlock(); + boolean changed = false; Range sectionRange = Helper.findSectionRange(level, sections); + Set syntheticSectionsWithUnknownBiomes = Collections.newSetFromMap(new IdentityHashMap<>()); // handle the special case when someone wants to replace air with something else - if (replace.containsKey("minecraft:air")) { + if (replace.keySet().stream().anyMatch(ChunkFilter.BlockReplaceSource::matchesAir)) { Map sectionMap = new HashMap<>(); List heights = new ArrayList<>(sectionRange.num()); + boolean completedSections = false; for (CompoundTag section : sections.iterateType(CompoundTag.class)) { sectionMap.put(section.getInt("Y"), section); heights.add(section.getInt("Y")); } for (int y = sectionRange.getFrom(); y <= sectionRange.getTo(); y++) { - if (!sectionMap.containsKey(y)) { - sectionMap.put(y, completeSection(new CompoundTag(), y)); + if (!hasAirReplacementInSection(replace, y)) { + continue; + } + CompoundTag section = sectionMap.get(y); + if (section == null) { + if (!hasSyntheticAirReplacementInSection(null, y, replace)) { + continue; + } + CompoundTag completed = completeSection(new CompoundTag(), y); + sectionMap.put(y, completed); + syntheticSectionsWithUnknownBiomes.add(completed); heights.add(y); + completedSections = true; } else { - CompoundTag section = sectionMap.get(y); if (!section.containsKey("block_states")) { + if (!hasSyntheticAirReplacementInSection(section, y, replace)) { + continue; + } + boolean biomeUnknown = getBiomeAt(section, 0) == null; completeSection(sectionMap.get(y), y); + completedSections = true; + if (biomeUnknown) { + syntheticSectionsWithUnknownBiomes.add(section); + } } } } - heights.sort(Integer::compareTo); - sections.clear(); + if (completedSections) { + heights.sort(Integer::compareTo); + sections.clear(); - for (int height : heights) { - sections.add(sectionMap.get(height)); + for (int height : heights) { + sections.add(sectionMap.get(height)); + } } } @@ -122,8 +144,15 @@ public void replaceBlocks(ChunkData data, Map sourceTileEntityLocations = needsTileContext + ? getTileEntityLocations(tileEntities) + : Collections.emptySet(); for (CompoundTag section : sections.iterateType(CompoundTag.class)) { + boolean sectionChanged = false; CompoundTag blockStatesTag = section.getCompoundTag("block_states"); if(blockStatesTag == null) continue; @@ -141,18 +170,32 @@ public void replaceBlocks(ChunkData data, Map entry : replace.entrySet()) { - if (!blockState.getString("Name").matches(entry.getKey())) { + int blockY = y * 16 + (i >>> 8); + int blockX = pos.getX() + (i & 15); + int blockZ = pos.getZ() + ((i >>> 4) & 15); + boolean sourceHasTileEntity = needsTileContext + && sourceTileEntityLocations.contains(locationKey(blockX, blockY, blockZ)); + String biome = needsBiomeContext && !syntheticSectionsWithUnknownBiomes.contains(section) + ? getBiomeAt(section, i) : null; + + for (Map.Entry entry : replace.entrySet()) { + if (!matchesSource(entry.getKey(), blockState, sourceHasTileEntity, + needsYContext ? blockY : 0, biome)) { continue; } ChunkFilter.BlockReplaceData replacement = entry.getValue(); + if (!sectionChanged) { + section.remove("BlockLight"); + section.remove("SkyLight"); + sectionChanged = true; + changed = true; + } try { blockStates = setBlockAt(i, replacement.getState(), blockStates, palette); @@ -160,29 +203,24 @@ public void replaceBlocks(ChunkData data, Map replace) { + CompoundTag level = Helper.levelFromRoot(Helper.getRegion(data)); + ListTag sections = Helper.tagFromCompound(level, "Sections"); + return previewReplaceBlocks(level, sections, "TileEntities", replace); + } + + protected ChunkFilter.BlockReplacePreviewData previewReplaceBlocks(CompoundTag root, ListTag sections, String tileEntitiesKey, Map replace) { + ChunkFilter.BlockReplacePreviewData result = ChunkFilter.BlockReplacePreviewData.supported(replace); + if (root == null || sections == null) { + return result; + } + + Range sectionRange = Helper.findSectionRange(root, sections); + if (sectionRange == null) { + return result; + } + + boolean needsTileContext = needsTileContext(replace); + boolean needsYContext = needsYContext(replace); + boolean needsBiomeContext = needsBiomeContext(replace); + ListTag tileEntities = Helper.tagFromCompound(root, tileEntitiesKey); + Set tileEntityLocations = needsTileContext + ? getTileEntityLocations(tileEntities) + : Collections.emptySet(); + + if (replace.keySet().stream().anyMatch(ChunkFilter.BlockReplaceSource::matchesAir)) { + Map sectionMap = new HashMap<>(); + for (CompoundTag section : sections.iterateType(CompoundTag.class)) { + sectionMap.put(section.getInt("Y"), section); + } + for (int y = sectionRange.getFrom(); y <= sectionRange.getTo(); y++) { + if (!hasAirReplacementInSection(replace, y)) { + continue; + } + CompoundTag section = sectionMap.get(y); + if (section == null || !section.containsKey("block_states")) { + long matches = countSyntheticAirSection(section, y, replace, result); + if (matches > 0) { + result.incrementCompletedAirSections(); + result.incrementLightSections(); + result.addSection(matches); + } + } + } + } + + Point2i pos = Helper.point2iFromCompound(root, "xPos", "zPos"); + if (pos == null) { + return result; + } + pos = pos.chunkToBlock(); + + for (CompoundTag section : sections.iterateType(CompoundTag.class)) { + CompoundTag blockStatesTag = section.getCompoundTag("block_states"); + if (blockStatesTag == null) { + continue; + } + + ListTag palette = Helper.tagFromCompound(blockStatesTag, "palette"); + long[] blockStates = Helper.longArrayFromCompound(blockStatesTag, "data"); + if (palette == null) { + continue; + } + + if (palette.size() == 1 && blockStates == null) { + blockStates = new long[256]; + } + + int y = Helper.numberFromCompound(section, "Y", sectionRange.getFrom() - 1).intValue(); + if (!sectionRange.contains(y)) { + continue; + } + if (!sourceMayMatchSection(replace, y)) { + continue; + } + + long sectionMatches = 0; + for (int i = 0; i < 4096; i++) { + CompoundTag blockState = getBlockAt(i, blockStates, palette); + int blockY = y * 16 + (i >>> 8); + int blockX = pos.getX() + (i & 15); + int blockZ = pos.getZ() + ((i >>> 4) & 15); + String biome = needsBiomeContext ? getBiomeAt(section, i) : null; + boolean hasTileEntity = needsTileContext + ? tileEntityLocations.contains(locationKey(blockX, blockY, blockZ)) + : tileEntities != null && !tileEntities.isEmpty() + && hasTileEntityAt(tileEntities, blockX, blockY, blockZ); + if (countMatchingBlock(blockState, replace, result, hasTileEntity, + needsYContext ? blockY : 0, biome)) { + sectionMatches++; + } + } + if (sectionMatches > 0) { + result.incrementLightSections(); + } + result.addSection(sectionMatches); + } + + return result; + } + + protected boolean hasAirReplacementInSection(Map replace, int sectionY) { + return replace.keySet().stream().anyMatch(source -> source.matchesAirInSection(sectionY)); + } + + protected boolean sourceMayMatchSection(Map replace, int sectionY) { + return replace.keySet().stream().anyMatch(source -> source.intersectsSection(sectionY)); + } + + protected boolean needsTileContext(Map replace) { + return replace.keySet().stream().anyMatch(source -> + source.getTileEntityMode() != ChunkFilter.BlockReplaceTileEntityMode.ANY); + } + + protected boolean needsYContext(Map replace) { + return replace.keySet().stream().anyMatch(source -> source.hasYRange() || source.hasBiomeRestriction()); + } + + protected boolean needsBiomeContext(Map replace) { + return replace.keySet().stream().anyMatch(ChunkFilter.BlockReplaceSource::hasBiomeRestriction); + } + + protected boolean matchesSource(ChunkFilter.BlockReplaceSource source, CompoundTag blockState, + boolean hasTileEntity, int y, String biome) { + if (source.hasBiomeRestriction()) { + return source.matches(blockState, hasTileEntity, y, biome); + } + if (source.hasYRange()) { + return source.matches(blockState, hasTileEntity, y); + } + if (source.getTileEntityMode() != ChunkFilter.BlockReplaceTileEntityMode.ANY) { + return source.matches(blockState, hasTileEntity); + } + return source.matches(blockState); + } + + private long countSyntheticAirSection(CompoundTag section, int sectionY, Map replace, ChunkFilter.BlockReplacePreviewData result) { + CompoundTag air = new CompoundTag(); + air.putString("Name", "minecraft:air"); + long matches = 0; + for (int i = 0; i < 4096; i++) { + int y = sectionY * 16 + indexToLocation(i).getY(); + if (countMatchingBlock(air, replace, result, false, y, getBiomeAt(section, i))) { + matches++; + } + } + return matches; + } + + private boolean countMatchingBlock(CompoundTag blockState, Map replace, ChunkFilter.BlockReplacePreviewData result, boolean hasTileEntity, int y, String biome) { + boolean matched = false; + boolean tileEntityPresent = hasTileEntity; + int matchedRules = 0; + int ruleIndex = 0; + for (Map.Entry entry : replace.entrySet()) { + if (!matchesSource(entry.getKey(), blockState, hasTileEntity, y, biome)) { + ruleIndex++; + continue; + } + matched = true; + matchedRules++; + result.incrementRuleBlocks(ruleIndex); + if (entry.getValue().getTile() != null) { + if (tileEntityPresent) { + result.incrementTileEntityUpdates(); + } else { + result.incrementTileEntityAdditions(); + } + tileEntityPresent = true; + } else if (tileEntityPresent) { + result.incrementTileEntityRemovals(); + tileEntityPresent = false; + } + ruleIndex++; + } + if (matchedRules > 1) { + result.incrementOverlappingBlocks(); + } + return matched; + } + + protected boolean hasSyntheticAirReplacementInSection(CompoundTag section, int sectionY, Map replace) { + CompoundTag air = new CompoundTag(); + air.putString("Name", "minecraft:air"); + for (int i = 0; i < 4096; i++) { + int y = sectionY * 16 + indexToLocation(i).getY(); + String biome = getBiomeAt(section, i); + for (ChunkFilter.BlockReplaceSource source : replace.keySet()) { + if (source.matches(air, false, y, biome)) { + return true; + } + } + } + return false; + } + + protected Set getTileEntityLocations(CompoundTag root, String tileEntitiesKey) { + ListTag tileEntities = Helper.tagFromCompound(root, tileEntitiesKey); + return getTileEntityLocations(tileEntities); + } + + protected Set getTileEntityLocations(ListTag tileEntities) { + Set locations = new HashSet<>(); + if (tileEntities == null) { + return locations; + } + for (CompoundTag tile : tileEntities.iterateType(CompoundTag.class)) { + locations.add(locationKey(tile.getInt("x"), tile.getInt("y"), tile.getInt("z"))); + } + return locations; + } + + protected int removeTileEntitiesAt(ListTag tileEntities, Point3i location) { + int removed = 0; + for (int t = 0; t < tileEntities.size(); t++) { + CompoundTag tile = tileEntities.getCompound(t); + if (tile.getInt("x") == location.getX() + && tile.getInt("y") == location.getY() + && tile.getInt("z") == location.getZ()) { + tileEntities.remove(t); + t--; + removed++; + } + } + return removed; + } + + protected boolean hasTileEntityAt(ListTag tileEntities, int x, int y, int z) { + for (CompoundTag tile : tileEntities.iterateType(CompoundTag.class)) { + if (tile.getInt("x") == x && tile.getInt("y") == y && tile.getInt("z") == z) { + return true; + } + } + return false; + } + + protected String locationKey(Point3i location) { + return locationKey(location.getX(), location.getY(), location.getZ()); + } + + protected String locationKey(int x, int y, int z) { + return x + "," + y + "," + z; + } + + protected String getBiomeAt(CompoundTag section, int blockIndex) { + CompoundTag biomes = Helper.tagFromCompound(section, "biomes"); + ListTag palette = Helper.tagFromCompound(biomes, "palette"); + if (palette == null || palette.isEmpty()) { + return null; + } + if (palette.size() == 1) { + return palette.getString(0); + } + long[] data = Helper.longArrayFromCompound(biomes, "data"); + if (data == null || data.length == 0) { + return null; + } + + Point3i location = indexToLocation(blockIndex); + int index = (location.getY() >> 2) * 16 + (location.getZ() >> 2) * 4 + (location.getX() >> 2); + int bits = 32 - Integer.numberOfLeadingZeros(palette.size() - 1); + int indexesPerLong = 64 / bits; + if (data.length != Math.ceilDiv(64, indexesPerLong)) { + return null; + } + int biomeDataIndex = index / indexesPerLong; + if (biomeDataIndex >= data.length) { + return null; + } + long clean = (1L << bits) - 1L; + int startBit = (index % indexesPerLong) * bits; + int paletteIndex = (int) (data[biomeDataIndex] >>> startBit & clean); + if (paletteIndex >= palette.size()) { + return null; + } + return palette.getString(paletteIndex); } protected CompoundTag completeSection(CompoundTag section, int y) { @@ -335,10 +655,11 @@ protected long[] getHeightMap(CompoundTag root, Predicate matcher) ListTag[] palettes = new ListTag[sectionRange.num()]; long[][] blockStatesArray = new long[sectionRange.num()][]; sections.forEach(s -> { - ListTag p = Helper.tagFromCompound(s, "palette"); - long[] b = Helper.longArrayFromCompound(s, "block_states"); + CompoundTag blockStates = Helper.tagFromCompound(s, "block_states"); + ListTag p = Helper.tagFromCompound(blockStates, "palette"); + long[] b = Helper.longArrayFromCompound(blockStates, "data"); int y = Helper.numberFromCompound(s, "Y", sectionRange.getFrom() - 1).intValue(); - if (sectionRange.contains(y) && p != null && b != null) { + if (sectionRange.contains(y) && p != null && !p.isEmpty() && (b != null || p.size() == 1)) { palettes[y - sectionRange.getFrom()] = p; blockStatesArray[y - sectionRange.getFrom()] = b; } @@ -356,6 +677,16 @@ protected long[] getHeightMap(CompoundTag root, Predicate matcher) continue; } long[] blockStates = blockStatesArray[i]; + if (palette.size() == 1) { + if (matcher.test(palette.getCompound(0))) { + heightmap[cz * 16 + cx] = (short) ((i + 1) * 16); + continue loop; + } + continue; + } + if (blockStates == null) { + continue; + } for (int cy = 15; cy >= 0; cy--) { int blockIndex = cy * 256 + cz * 16 + cx; if (matcher.test(getBlockAt(blockIndex, blockStates, palette))) { diff --git a/src/main/java/net/querz/mcaselector/version/java_1_18/ChunkFilter_21w43a.java b/src/main/java/net/querz/mcaselector/version/java_1_18/ChunkFilter_21w43a.java index bc2a1a0e..cf720816 100644 --- a/src/main/java/net/querz/mcaselector/version/java_1_18/ChunkFilter_21w43a.java +++ b/src/main/java/net/querz/mcaselector/version/java_1_18/ChunkFilter_21w43a.java @@ -72,46 +72,68 @@ public boolean matchAnyBlockName(ChunkData data, Collection names) { } @Override - public void replaceBlocks(ChunkData data, Map replace) { + public boolean replaceBlocks(ChunkData data, Map replace) { ListTag sections = Helper.tagFromCompound(Helper.getRegion(data), "sections"); if (sections == null) { - return; + return false; } Point2i pos = Helper.point2iFromCompound(Helper.getRegion(data), "xPos", "zPos"); if (pos == null) { - return; + return false; } pos = pos.chunkToBlock(); + boolean changed = false; Range sectionRange = Helper.findSectionRange(Helper.getRegion(data), sections); + Set syntheticSectionsWithUnknownBiomes = Collections.newSetFromMap(new IdentityHashMap<>()); // handle the special case when someone wants to replace air with something else - if (replace.containsKey("minecraft:air")) { + if (replace.keySet().stream().anyMatch(ChunkFilter.BlockReplaceSource::matchesAir)) { Map sectionMap = new HashMap<>(); List heights = new ArrayList<>(sectionRange.num()); + boolean completedSections = false; for (CompoundTag section : sections.iterateType(CompoundTag.class)) { sectionMap.put(section.getInt("Y"), section); heights.add(section.getInt("Y")); } for (int y = sectionRange.getFrom(); y <= sectionRange.getTo(); y++) { - if (!sectionMap.containsKey(y)) { - sectionMap.put(y, completeSection(new CompoundTag(), y)); + if (!hasAirReplacementInSection(replace, y)) { + continue; + } + CompoundTag section = sectionMap.get(y); + if (section == null) { + if (!hasSyntheticAirReplacementInSection(null, y, replace)) { + continue; + } + CompoundTag completed = completeSection(new CompoundTag(), y); + sectionMap.put(y, completed); + syntheticSectionsWithUnknownBiomes.add(completed); heights.add(y); + completedSections = true; } else { - CompoundTag section = sectionMap.get(y); if (!section.containsKey("block_states")) { + if (!hasSyntheticAirReplacementInSection(section, y, replace)) { + continue; + } + boolean biomeUnknown = getBiomeAt(section, 0) == null; completeSection(sectionMap.get(y), y); + completedSections = true; + if (biomeUnknown) { + syntheticSectionsWithUnknownBiomes.add(section); + } } } } - heights.sort(Integer::compareTo); - sections.clear(); + if (completedSections) { + heights.sort(Integer::compareTo); + sections.clear(); - for (int height : heights) { - sections.add(sectionMap.get(height)); + for (int height : heights) { + sections.add(sectionMap.get(height)); + } } } @@ -119,8 +141,15 @@ public void replaceBlocks(ChunkData data, Map sourceTileEntityLocations = needsTileContext + ? getTileEntityLocations(tileEntities) + : Collections.emptySet(); for (CompoundTag section : sections.iterateType(CompoundTag.class)) { + boolean sectionChanged = false; CompoundTag blockStatesTag = section.getCompoundTag("block_states"); if(blockStatesTag == null) continue; @@ -138,18 +167,32 @@ public void replaceBlocks(ChunkData data, Map entry : replace.entrySet()) { - if (!blockState.getString("Name").matches(entry.getKey())) { + int blockY = y * 16 + (i >>> 8); + int blockX = pos.getX() + (i & 15); + int blockZ = pos.getZ() + ((i >>> 4) & 15); + boolean sourceHasTileEntity = needsTileContext + && sourceTileEntityLocations.contains(locationKey(blockX, blockY, blockZ)); + String biome = needsBiomeContext && !syntheticSectionsWithUnknownBiomes.contains(section) + ? getBiomeAt(section, i) : null; + + for (Map.Entry entry : replace.entrySet()) { + if (!matchesSource(entry.getKey(), blockState, sourceHasTileEntity, + needsYContext ? blockY : 0, biome)) { continue; } ChunkFilter.BlockReplaceData replacement = entry.getValue(); + if (!sectionChanged) { + section.remove("BlockLight"); + section.remove("SkyLight"); + sectionChanged = true; + changed = true; + } try { blockStates = setBlockAt(i, replacement.getState(), blockStates, palette); @@ -157,29 +200,24 @@ public void replaceBlocks(ChunkData data, Map replace) { + CompoundTag root = Helper.getRegion(data); + ListTag sections = Helper.tagFromCompound(root, "sections"); + return previewReplaceBlocks(root, sections, "block_entities", replace); } @Override @@ -294,7 +342,7 @@ protected long[] getHeightMap(CompoundTag root, Predicate matcher) ListTag p = Helper.tagFromCompound(Helper.tagFromCompound(s, "block_states"), "palette"); long[] b = Helper.longArrayFromCompound(Helper.tagFromCompound(s, "block_states"), "data"); int y = Helper.numberFromCompound(s, "Y", sectionRange.getFrom() - 1).intValue(); - if (sectionRange.contains(y) && p != null && b != null) { + if (sectionRange.contains(y) && p != null && !p.isEmpty() && (b != null || p.size() == 1)) { palettes[y - sectionRange.getFrom()] = p; blockStatesArray[y - sectionRange.getFrom()] = b; } @@ -312,6 +360,16 @@ protected long[] getHeightMap(CompoundTag root, Predicate matcher) continue; } long[] blockStates = blockStatesArray[i]; + if (palette.size() == 1) { + if (matcher.test(palette.getCompound(0))) { + heightmap[cz * 16 + cx] = (short) ((i + 1) * 16); + continue loop; + } + continue; + } + if (blockStates == null) { + continue; + } for (int cy = 15; cy >= 0; cy--) { int blockIndex = cy * 256 + cz * 16 + cx; if (matcher.test(getBlockAt(blockIndex, blockStates, palette))) { @@ -326,6 +384,15 @@ protected long[] getHeightMap(CompoundTag root, Predicate matcher) int bits = 32 - Integer.numberOfLeadingZeros(sectionRange.num() * 16); return applyHeightMap(heightmap, bits); } + + @Override + protected void setHeightMap(CompoundTag root, String name, long[] heightmap) { + if (root == null) { + return; + } + CompoundTag heightmaps = (CompoundTag) root.computeIfAbsent("Heightmaps", k -> new CompoundTag()); + heightmaps.putLongArray(name, heightmap); + } } @MCVersionImplementation(2844) diff --git a/src/main/java/net/querz/mcaselector/version/java_1_9/ChunkFilter_15w32a.java b/src/main/java/net/querz/mcaselector/version/java_1_9/ChunkFilter_15w32a.java index 0b1c82e4..62e113d6 100644 --- a/src/main/java/net/querz/mcaselector/version/java_1_9/ChunkFilter_15w32a.java +++ b/src/main/java/net/querz/mcaselector/version/java_1_9/ChunkFilter_15w32a.java @@ -219,16 +219,18 @@ public boolean matchAnyBlockName(ChunkData data, Collection names) { } @Override - public void replaceBlocks(ChunkData data, Map replace) { + public boolean replaceBlocks(ChunkData data, Map replace) { ListTag sections = Helper.tagFromLevelFromRoot(Helper.getRegion(data), "Sections"); if (sections == null) { - return; + return false; } + boolean changed = false; // handle the special case when someone wants to replace air with something else - if (replace.containsKey("minecraft:air")) { + if (replace.entrySet().stream().filter(this::isExecutableReplacement).map(Map.Entry::getKey).anyMatch(ChunkFilter.BlockReplaceSource::matchesAir)) { Map sectionMap = new HashMap<>(); List heights = new ArrayList<>(18); + boolean completedSections = false; for (CompoundTag section : sections.iterateType(CompoundTag.class)) { sectionMap.put(section.getInt("Y"), section); heights.add(section.getInt("Y")); @@ -238,39 +240,50 @@ public void replaceBlocks(ChunkData data, Map entry : replace.entrySet()) { - BlockData[] bd = mapping.get(entry.getKey()); + boolean sectionChanged = false; + for (Map.Entry entry : replace.entrySet()) { + if (!isExecutableReplacement(entry)) { + continue; + } + BlockData[] bd = mapping.get(entry.getKey().getName()); BlockData bdr = mapping.get(entry.getValue().getName())[0]; byte[] blocks = section.getByteArray("Blocks"); byte[] blockData = section.getByteArray("Data"); - section.remove("BlockLight"); - section.remove("SkyLight"); - blockLoop: for (int i = 0; i < blocks.length; i++) { byte dataByte = blockData[i / 2]; byte dataBits = (byte) (i % 2 == 0 ? dataByte & 0x0F : (dataByte >> 4) & 0x0F); for (BlockData d : bd) { if (d.id == (blocks[i] & 0xFF) && d.data.contains(dataBits)) { + if (!sectionChanged) { + section.remove("BlockLight"); + section.remove("SkyLight"); + sectionChanged = true; + changed = true; + } blocks[i] = (byte) bdr.id; byte newDataBits = bdr.data.iterator().next(); blockData[i / 2] = (byte) (i % 2 == 0 ? (dataByte & 0xF0) + newDataBits : (dataByte & 0x0F) + (newDataBits << 4)); @@ -283,16 +296,29 @@ public void replaceBlocks(ChunkData data, Map isExecutableReplacement(entry)) + .map(Map.Entry::getKey) + .anyMatch(s -> Objects.equals(s.getName(), id))) { tileEntities.remove(i); i--; } } } + return changed; + } + + private boolean isExecutableReplacement(Map.Entry entry) { + ChunkFilter.BlockReplaceSource source = entry.getKey(); + return !source.requiresLocationContext() + && (source.getType() == ChunkFilter.BlockReplaceSourceType.LEGACY_REGEX_NAME + || source.getType() == ChunkFilter.BlockReplaceSourceType.LITERAL_NAME) + && mapping.containsKey(source.getName()) + && mapping.containsKey(entry.getValue().getName()); } private CompoundTag createEmptySection(int y) { @@ -577,7 +603,7 @@ public ByteTag getLightPopulated(ChunkData data) { public void setLightPopulated(ChunkData data, byte lightPopulated) { CompoundTag level = Helper.levelFromRoot(Helper.getRegion(data)); if (level != null) { - level.putLong("LightPopulated", lightPopulated); + level.putByte("LightPopulated", lightPopulated); } } } diff --git a/src/main/java/net/querz/mcaselector/version/java_null/ChunkFilter_Null.java b/src/main/java/net/querz/mcaselector/version/java_null/ChunkFilter_Null.java index 4e4aa799..fc6ea8a5 100644 --- a/src/main/java/net/querz/mcaselector/version/java_null/ChunkFilter_Null.java +++ b/src/main/java/net/querz/mcaselector/version/java_null/ChunkFilter_Null.java @@ -47,7 +47,9 @@ public boolean matchAnyBlockName(ChunkData data, Collection names) { } @Override - public void replaceBlocks(ChunkData data, Map replace) {} + public boolean replaceBlocks(ChunkData data, Map replace) { + return false; + } @Override public int getBlockAmount(ChunkData data, String[] blocks) { diff --git a/src/main/java/net/querz/mcaselector/version/mapping/blockstate/BlockStateCatalog.java b/src/main/java/net/querz/mcaselector/version/mapping/blockstate/BlockStateCatalog.java new file mode 100644 index 00000000..ef9633d7 --- /dev/null +++ b/src/main/java/net/querz/mcaselector/version/mapping/blockstate/BlockStateCatalog.java @@ -0,0 +1,199 @@ +package net.querz.mcaselector.version.mapping.blockstate; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.reflect.TypeToken; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.Reader; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.Set; +import java.util.TreeMap; +import java.util.function.Function; + +public final class BlockStateCatalog { + + private static final Gson GSON = new GsonBuilder().create(); + private static final Logger LOGGER = LogManager.getLogger(BlockStateCatalog.class); + private static final String CATALOG_INDEX_RESOURCE = "mapping/block_states/catalogs.json"; + private static final BlockStateCatalog UNAVAILABLE = new BlockStateCatalog("unavailable", 0, + "No bundled block-state catalog is available", Collections.emptyMap()); + private static final List AVAILABLE = loadAvailable(); + + private final String version; + private final int dataVersion; + private final String source; + private final Map blocks; + + private BlockStateCatalog(String version, int dataVersion, String source, Map blocks) { + this.version = version; + this.dataVersion = dataVersion; + this.source = source; + this.blocks = Collections.unmodifiableMap(blocks); + } + + public static BlockStateCatalog load(Reader reader) { + CatalogData data = GSON.fromJson(reader, new TypeToken() {}.getType()); + if (data == null || data.version == null || data.source == null || data.blocks == null) { + throw new IllegalArgumentException("invalid block-state catalog"); + } + Map blocks = new TreeMap<>(); + data.blocks.forEach((name, block) -> blocks.put(normalizeName(name), block.normalized())); + return new BlockStateCatalog(data.version, data.dataVersion, data.source, blocks); + } + + static List loadCatalogs(Reader index, Function resourceLoader) { + List resourcePaths; + try { + resourcePaths = GSON.fromJson(index, new TypeToken>() {}.getType()); + } catch (RuntimeException ex) { + LOGGER.warn("failed to load block-state catalog index", ex); + return List.of(); + } + if (resourcePaths == null) { + return List.of(); + } + List catalogs = new ArrayList<>(); + Set versions = new HashSet<>(); + Set dataVersions = new HashSet<>(); + for (String path : resourcePaths) { + if (path == null || path.isBlank()) { + continue; + } + try (Reader resource = resourceLoader.apply(path)) { + if (resource == null) { + LOGGER.warn("missing block-state catalog resource {}", path); + continue; + } + BlockStateCatalog catalog = load(resource); + if (!versions.add(catalog.version()) || !dataVersions.add(catalog.dataVersion())) { + LOGGER.warn("skipping duplicate block-state catalog {} ({})", catalog.version(), catalog.dataVersion()); + continue; + } + catalogs.add(catalog); + } catch (Exception ex) { + LOGGER.warn("failed to load block-state catalog resource {}", path, ex); + } + } + catalogs.sort(Comparator.comparingInt(BlockStateCatalog::dataVersion)); + return List.copyOf(catalogs); + } + + private static List loadAvailable() { + InputStream index = BlockStateCatalog.class.getClassLoader().getResourceAsStream(CATALOG_INDEX_RESOURCE); + if (index == null) { + LOGGER.warn("missing block-state catalog index {}", CATALOG_INDEX_RESOURCE); + return List.of(); + } + try (Reader reader = new InputStreamReader(index, StandardCharsets.UTF_8)) { + return loadCatalogs(reader, path -> { + InputStream resource = BlockStateCatalog.class.getClassLoader().getResourceAsStream(path); + return resource == null ? null : new InputStreamReader(resource, StandardCharsets.UTF_8); + }); + } catch (Exception ex) { + LOGGER.warn("failed to load block-state catalogs", ex); + return List.of(); + } + } + + public static List available() { + return AVAILABLE; + } + + public static BlockStateCatalog latestJava() { + return AVAILABLE.isEmpty() ? UNAVAILABLE : AVAILABLE.getLast(); + } + + public static Optional findByVersion(String version) { + return AVAILABLE.stream() + .filter(catalog -> catalog.version().equals(version)) + .findFirst(); + } + + public String version() { + return version; + } + + public int dataVersion() { + return dataVersion; + } + + public String source() { + return source; + } + + public Set blockNames() { + return blocks.keySet(); + } + + public boolean containsBlock(String blockName) { + return blocks.containsKey(normalizeName(blockName)); + } + + public Optional getBlock(String blockName) { + return Optional.ofNullable(blocks.get(normalizeName(blockName))); + } + + public Map> properties(String blockName) { + return getBlock(blockName) + .map(Block::properties) + .orElseGet(Collections::emptyMap); + } + + public Map defaultProperties(String blockName) { + return getBlock(blockName) + .map(Block::defaultProperties) + .orElseGet(Collections::emptyMap); + } + + public boolean hasProperty(String blockName, String propertyName) { + return properties(blockName).containsKey(propertyName); + } + + public boolean isValidPropertyValue(String blockName, String propertyName, String value) { + List values = properties(blockName).get(propertyName); + return values != null && values.contains(value); + } + + public static String normalizeName(String blockName) { + if (blockName == null || blockName.isBlank()) { + return ""; + } + String trimmed = blockName.trim(); + if (trimmed.indexOf(':') < 0) { + return "minecraft:" + trimmed; + } + return trimmed; + } + + public record Block( + Map> properties, + Map defaultProperties, + int stateCount) { + + private Block normalized() { + Map> normalizedProperties = new TreeMap<>(); + (properties == null ? Collections.>emptyMap() : properties) + .forEach((name, values) -> normalizedProperties.put(name, values == null ? List.of() : List.copyOf(values))); + return new Block( + Collections.unmodifiableMap(normalizedProperties), + Collections.unmodifiableMap(new TreeMap<>(defaultProperties == null ? Collections.emptyMap() : defaultProperties)), + stateCount); + } + } + + private record CatalogData( + String version, + int dataVersion, + String source, + Map blocks) {} +} diff --git a/src/main/java/net/querz/mcaselector/version/mapping/generator/BlockStateCatalogConfig.java b/src/main/java/net/querz/mcaselector/version/mapping/generator/BlockStateCatalogConfig.java new file mode 100644 index 00000000..7381a4a0 --- /dev/null +++ b/src/main/java/net/querz/mcaselector/version/mapping/generator/BlockStateCatalogConfig.java @@ -0,0 +1,63 @@ +package net.querz.mcaselector.version.mapping.generator; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import net.querz.mcaselector.version.mapping.minecraft.Blocks; +import net.querz.mcaselector.version.mapping.minecraft.ServerVersion; +import java.io.IOException; +import java.nio.file.FileSystem; +import java.nio.file.FileSystems; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.List; +import java.util.Map; +import java.util.TreeMap; + +/** Generates the UI-only block-state catalog from Mojang's server data-generator reports. */ +public final class BlockStateCatalogConfig { + + private static final Gson GSON = new GsonBuilder().setPrettyPrinting().create(); + + private BlockStateCatalogConfig() {} + + public static Path generate(String minecraftVersion, Path temporaryDirectory) throws IOException { + Path reports = temporaryDirectory.resolve("generated/reports/blocks.json"); + Path serverJar = temporaryDirectory.resolve("server.jar"); + Blocks blocks = Blocks.load(reports); + int dataVersion; + try (FileSystem fileSystem = FileSystems.newFileSystem(serverJar)) { + dataVersion = ServerVersion.load(fileSystem.getPath("version.json")).worldVersion(); + } + Path output = temporaryDirectory.resolve("configs").resolve(fileName(minecraftVersion)); + Files.writeString(output, toJson(minecraftVersion, dataVersion, blocks)); + return output; + } + + static String toJson(String minecraftVersion, int dataVersion, Blocks blocks) { + Map catalogBlocks = new TreeMap<>(); + blocks.states.forEach((name, block) -> { + Map> properties = new TreeMap<>(); + block.properties().forEach((property, values) -> properties.put(property, + values.stream().sorted().toList())); + Map defaults = new TreeMap<>(); + if (block.states != null) { + block.states.stream() + .filter(Blocks.Block.State::defaultState) + .findFirst() + .ifPresent(state -> defaults.putAll(state.properties())); + } + catalogBlocks.put(name, new CatalogBlock(properties, defaults, block.states == null ? 0 : block.states.size())); + }); + return GSON.toJson(new CatalogData(minecraftVersion, dataVersion, + "Mojang server reports/blocks.json generated from " + minecraftVersion + " server.jar", catalogBlocks)); + } + + public static String fileName(String minecraftVersion) { + return "java_" + minecraftVersion.toLowerCase().replaceAll("[^a-z0-9]+", "_") + ".json"; + } + + private record CatalogData(String version, int dataVersion, String source, Map blocks) {} + + private record CatalogBlock(Map> properties, Map defaultProperties, + int stateCount) {} +} diff --git a/src/main/java/net/querz/mcaselector/version/mapping/generator/Main.java b/src/main/java/net/querz/mcaselector/version/mapping/generator/Main.java index 6449ff4a..c4a2140c 100644 --- a/src/main/java/net/querz/mcaselector/version/mapping/generator/Main.java +++ b/src/main/java/net/querz/mcaselector/version/mapping/generator/Main.java @@ -104,6 +104,8 @@ public static void main(String[] args) throws IOException, InterruptedException Path b = configs.resolve("blocks.json"); blockConfig.save(b); + BlockStateCatalogConfig.generate(mcVersion, tmp); + // ------------------------------------------------ BiomeConfig biomeConfig = new BiomeConfig(); diff --git a/src/main/java/net/querz/mcaselector/version/mapping/minecraft/Blocks.java b/src/main/java/net/querz/mcaselector/version/mapping/minecraft/Blocks.java index 680a72e7..e75ccace 100644 --- a/src/main/java/net/querz/mcaselector/version/mapping/minecraft/Blocks.java +++ b/src/main/java/net/querz/mcaselector/version/mapping/minecraft/Blocks.java @@ -2,6 +2,7 @@ import com.google.gson.Gson; import com.google.gson.GsonBuilder; +import com.google.gson.annotations.SerializedName; import com.google.gson.reflect.TypeToken; import net.querz.mcaselector.version.mapping.color.BlockStates; import java.io.BufferedReader; @@ -77,11 +78,17 @@ public Map> properties() { public static class State { public int id; + @SerializedName("default") + private boolean defaultState; private Map properties; public Map properties() { return properties == null ? Collections.emptyMap() : properties; } + + public boolean defaultState() { + return defaultState; + } } } } diff --git a/src/main/java/net/querz/mcaselector/version/mapping/registry/BiomeRegistry.java b/src/main/java/net/querz/mcaselector/version/mapping/registry/BiomeRegistry.java index 0da12f4a..9a83ecd9 100644 --- a/src/main/java/net/querz/mcaselector/version/mapping/registry/BiomeRegistry.java +++ b/src/main/java/net/querz/mcaselector/version/mapping/registry/BiomeRegistry.java @@ -5,6 +5,7 @@ import com.google.gson.reflect.TypeToken; import net.querz.mcaselector.io.FileHelper; import java.io.Serializable; +import java.util.Collections; import java.util.HashMap; import java.util.Map; import java.util.Set; @@ -32,6 +33,10 @@ public static boolean isValidName(String name) { return mapping.contains(name); } + public static Set names() { + return Collections.unmodifiableSet(mapping); + } + public static boolean isValidID(int id) { return idMapping.containsKey(id); } diff --git a/src/main/resources/lang/cs_CZ.txt b/src/main/resources/lang/cs_CZ.txt index 51ee26c2..e8efb5f7 100644 --- a/src/main/resources/lang/cs_CZ.txt +++ b/src/main/resources/lang/cs_CZ.txt @@ -213,4 +213,110 @@ dialog.unsaved_script.header;Existuje neuklizený skript. dialog.request_number.title.array_length;Délka pole dialog.request_number.title.enter_number;Hodnota button.cancel;Zrušit -button.ok;OK \ No newline at end of file +button.ok;OK +dialog.replace_blocks.builder.button;Tvůrce +dialog.replace_blocks.builder.title;Tvůrce ReplaceBlocks +dialog.replace_blocks.builder.from;From block +dialog.replace_blocks.builder.to;To block +dialog.replace_blocks.builder.add_rule;Add rule +dialog.replace_blocks.builder.delete_rule;Delete rule +dialog.replace_blocks.builder.rules;Rules +dialog.replace_blocks.builder.rules.empty;Zatím nebyla přidána žádná pravidla. Vyplňte zdrojový a cílový blok a klikněte na Přidat pravidlo. +dialog.replace_blocks.builder.result;Vygenerovaný výraz ReplaceBlocks +dialog.replace_blocks.builder.invalid;Invalid block id or generated rule. +dialog.replace_blocks.builder.duplicate;This rule already exists. +dialog.replace_blocks.builder.empty;Add at least one rule. +dialog.replace_blocks.builder.advanced;Zdrojový a cílový blok přijímají úplný SNBT stavu bloku obsahující Name. Ostatní složitá pravidla upravte přímo ve výrazu ReplaceBlocks. +dialog.replace_blocks.builder.tile_source.any;Extra NBT: any +dialog.replace_blocks.builder.tile_source.require;Extra NBT: present +dialog.replace_blocks.builder.tile_source.exclude;Extra NBT: absent +dialog.replace_blocks.builder.y_min;Min Y +dialog.replace_blocks.builder.y_max;Max Y +dialog.replace_blocks.builder.biome;Biome +dialog.replace_blocks.builder.biome.prompt;minecraft:plains;minecraft:forest +dialog.replace_blocks.builder.source_constraints;Omezení zdroje (volitelné) +dialog.replace_blocks.builder.catalog;Block catalogue +dialog.replace_blocks.builder.catalog_switch.title;Switch block catalogue +dialog.replace_blocks.builder.catalog_switch.message;Přepnutí z %s na %s zahodí všechna pravidla, rozepsané vstupy a výběry Tvůrce. Pokračovat? +dialog.replace_blocks.builder.catalog.note;Ovlivňuje pouze návrhy bloků a vlastnosti; ID nepřevádí. Pokud Tvůrce obsahuje data, přepnutí vyžádá potvrzení a poté obsah vymaže. +dialog.replace_blocks.builder.catalog.source_unknown;Source "%s" is not in the Java %s catalogue; it will still be accepted as entered. +dialog.replace_blocks.builder.catalog.target_unknown;Target "%s" is not in the Java %s catalogue; it will still be accepted, but verify that the target world supports this ID. +dialog.replace_blocks.builder.preset.persist_failed;Could not write the configuration; the preset change was rolled back. +dialog.replace_blocks.builder.preset;Preset +dialog.replace_blocks.builder.preset.prompt;Choose preset +dialog.replace_blocks.builder.preset.apply;Fill preset +dialog.replace_blocks.builder.preset.save;Save preset +dialog.replace_blocks.builder.preset.delete;Delete preset +dialog.replace_blocks.builder.preset.title;ReplaceBlocks presets +dialog.replace_blocks.builder.preset.save.title;Save ReplaceBlocks preset +dialog.replace_blocks.builder.preset.save.header;Uložit vygenerovaná pravidla jako znovu použitelnou předvolbu Tvůrce. +dialog.replace_blocks.builder.preset.save.name;Preset name +dialog.replace_blocks.builder.preset.name_empty;Enter a preset name. +dialog.replace_blocks.builder.preset.builtin_locked;Built-in preset names cannot be overwritten. +dialog.replace_blocks.builder.preset.overwrite_confirm;A preset named "%s" already exists. Overwrite it? +dialog.replace_blocks.builder.preset.delete_confirm;Delete preset "%s"? +dialog.replace_blocks.builder.preset.replace_confirm;Načtení této předvolby nahradí aktuální pravidla Tvůrce a rozepsané vstupy. +dialog.replace_blocks.builder.preset.saved;Preset "%s" saved. +dialog.replace_blocks.builder.preset.already_filled;This preset is already present in the rule list. +dialog.replace_blocks.builder.discard.title;Zahodit změny Tvůrce? +dialog.replace_blocks.builder.discard.header;Zahodit změny provedené v tomto Tvůrci? Pole ReplaceBlocks si ponechá hodnotu, kterou mělo před jeho otevřením. +dialog.replace_blocks.builder.discard.action;Discard changes +dialog.replace_blocks.builder.continue_editing.action;Continue editing +dialog.replace_blocks.builder.preset.air_to_stone;Air -> stone +dialog.replace_blocks.builder.preset.fluids_to_air;Fluids -> air +dialog.replace_blocks.builder.preset.logs_leaves_to_air;Logs/leaves -> air +dialog.replace_blocks.builder.preset.ores_to_stone;Ores -> stone +dialog.replace_blocks.builder.preset.containers_to_air;Containers with Extra NBT -> air +dialog.replace_blocks.builder.preset.warning_air;Air replacement can create missing or sparse sections. Preview on a small copied selection first. +dialog.replace_blocks.builder.preset.warning_containers;The container preset matches only positions with Extra NBT present, but replacing them can remove stored contents. Preview on a copied world first. +dialog.replace_blocks.builder.edit_rule;Load rule +dialog.replace_blocks.builder.property.all;all +dialog.replace_blocks.builder.help.button;Help +dialog.replace_blocks.builder.help.title;Nápověda Tvůrce ReplaceBlocks +dialog.replace_blocks.builder.help.nbt.title;Extra NBT source condition +dialog.replace_blocks.builder.help.nbt.intro;Extra NBT is block entity data stored at a block position, such as sign text, container items, furnace progress, or command block commands. This option only checks whether the source position has that data; it does not inspect the contents. +dialog.replace_blocks.builder.help.nbt.any;Extra NBT: any - match by block name and properties regardless of block entity data. Use this for normal blocks, or when replacing and discarding existing extra data is acceptable. +dialog.replace_blocks.builder.help.nbt.present;Extra NBT: present - match only positions that already have block entity data. Use this when deliberately targeting chests, barrels, signs, furnaces, spawners, or similar data blocks; generates tile(...). +dialog.replace_blocks.builder.help.nbt.absent;Extra NBT: absent - match only positions without block entity data. Use this to avoid container contents, sign text, and similar data, or to clean up unusual same-name blocks without entities; generates no_tile(...). +dialog.replace_blocks.builder.help.nbt.note;This setting filters only the source side. If the target needs block entity SNBT, continue using advanced text input. +dialog.replace_blocks.builder.help.biome.title;Biome condition +dialog.replace_blocks.builder.help.biome.intro;Biome filtering checks the biome at each candidate block position. In modern 1.18+ chunks, one biome value covers a 4x4x4 block area, so nearby blocks in that cell share the same biome condition. +dialog.replace_blocks.builder.help.biome.syntax;Pro použití bez omezení biomu ponechte pole biomu Tvůrce prázdné. Zadejte jedno ID biomu nebo více ID oddělených středníky; vygenerovaná pravidla používají biome(..., source). +dialog.replace_blocks.validation.source_empty;Enter a source block id. +dialog.replace_blocks.validation.target_empty;Enter a target block id. +dialog.replace_blocks.validation.source_unknown;Unknown source block "%s". +dialog.replace_blocks.validation.target_unknown;Unknown target block "%s". +dialog.replace_blocks.validation.source_format;Source block id must look like minecraft:stone or modid:block_name. +dialog.replace_blocks.validation.target_format;Target block id must look like minecraft:dirt or modid:block_name. +dialog.replace_blocks.validation.missing_equals;Each ReplaceBlocks rule needs from=to. +dialog.replace_blocks.validation.state_snbt;Block state SNBT must be a valid compound, for example {Name:"minecraft:stone"}. +dialog.replace_blocks.validation.tile_empty;Tile entity SNBT is missing after ;. +dialog.replace_blocks.validation.tile_snbt;Tile entity SNBT must be a valid compound. +dialog.replace_blocks.validation.trailing;Unexpected text after this rule. Separate rules with commas. +dialog.replace_blocks.validation.target_quote;Quoted target block is missing a closing quote. +dialog.replace_blocks.validation.quoted_target_ambiguous;Quoted target blocks are fragile before another rule or tile SNBT. Use {Name:"modid:block"} instead. +dialog.replace_blocks.validation.source_regex;Source "%s" is treated as a Java regex when matching blocks. +dialog.replace_blocks.validation.source_mode_wrapper;Source mode wrappers must be literal(...), regex(...), props(...), tile(...), or no_tile(...). +dialog.replace_blocks.validation.source_literal;literal(...) source must contain a valid block id. Invalid source: "%s". +dialog.replace_blocks.validation.source_regex_syntax;regex(...) source must contain a valid Java regex. +dialog.replace_blocks.validation.source_props;props(...) source must contain block-state SNBT with Name and at least one selected property. +dialog.replace_blocks.validation.source_y_range;y(...) source must use min..max with at least one integer boundary, for example y(-64..64, literal(minecraft:stone)). +dialog.replace_blocks.validation.source_biome;biome(...) source must use valid biome IDs separated by semicolons, followed by a source expression, for example biome(minecraft:plains, literal(minecraft:stone)). +dialog.change_nbt.query_invalid;Invalid change query: %s +dialog.change_nbt.replace_blocks_query_quote;In the advanced query field, wrap ReplaceBlocks values in double quotes, for example ReplaceBlocks = "minecraft:stone=minecraft:dirt". +dialog.replace_blocks.preview.button;Preview +dialog.replace_blocks.preview.title;ReplaceBlocks Preview +dialog.replace_blocks.preview.no_field;Enter a valid ReplaceBlocks value before running preview. +dialog.replace_blocks.preview.result;Dry-run completed.\nScanned regions: %d\nScanned chunks: %d\nAffected chunks: %d\nAffected sections: %d\nMatched blocks: %d\nTile entities to add: %d\nTile entities to remove: %d\nTile entities to update: %d +dialog.replace_blocks.preview.rules;Rule matches: +dialog.replace_blocks.preview.rule;#%d [%s] %s -> %s: %d +dialog.replace_blocks.preview.warning_air;Air replacement may complete missing sections before replacement. Preview counted %d missing or incomplete air sections. +dialog.replace_blocks.preview.warning_overlap;%d block positions matched more than one rule. Per-rule counts include each rule match, so their sum may be higher than matched blocks. +dialog.replace_blocks.preview.warning_tile;Tile entity replacement can add, remove, or update block entities. Test on copied worlds before applying. +dialog.replace_blocks.preview.warning_light;The current ReplaceBlocks implementation may remove light arrays from %d processed sections. +dialog.replace_blocks.preview.warning_adjacent_relight;Skutečná změna může aktualizovat příznaky přepočtu osvětlení až v %d sousedních chunkech mimo výběr; žádné bloky se v nich nenahrazují. +dialog.replace_blocks.preview.warning_heightmaps;Při skutečné změně se výškové mapy přepočítají pro %d ovlivněných chunků. +dialog.replace_blocks.preview.warning_unsupported;Preview is not implemented for %d scanned chunks in older or unsupported versions. +dialog.replace_blocks.preview.warning_errors;Preview skipped %d chunks and %d regions because of errors: +dialog.progress.title.preview_replace_blocks;Preview ReplaceBlocks +dialog.replace_blocks.validation.source_state_snbt;Source block state SNBT must be a valid compound with a Name value. diff --git a/src/main/resources/lang/de_DE.txt b/src/main/resources/lang/de_DE.txt index 52d65719..80b69b4a 100644 --- a/src/main/resources/lang/de_DE.txt +++ b/src/main/resources/lang/de_DE.txt @@ -213,4 +213,110 @@ dialog.unsaved_script.header;Ein Skript ist nicht gespeichert. dialog.request_number.title.array_length;Länge des Arrays dialog.request_number.title.enter_number;Wert eingeben button.cancel;Abbrechen -button.ok;OK \ No newline at end of file +button.ok;OK +dialog.replace_blocks.builder.button;Editor +dialog.replace_blocks.builder.title;ReplaceBlocks-Editor +dialog.replace_blocks.builder.from;Von-Block +dialog.replace_blocks.builder.to;Zu-Block +dialog.replace_blocks.builder.add_rule;Regel hinzufügen +dialog.replace_blocks.builder.delete_rule;Regel löschen +dialog.replace_blocks.builder.rules;Regeln +dialog.replace_blocks.builder.rules.empty;Noch keine Regeln. Fülle Quell- und Zielfeld aus und klicke dann auf „Regel hinzufügen“. +dialog.replace_blocks.builder.result;Generierter ReplaceBlocks-Ausdruck +dialog.replace_blocks.builder.invalid;Ungültige Block-ID oder generierte Regel. +dialog.replace_blocks.builder.duplicate;Diese Regel existiert bereits. +dialog.replace_blocks.builder.empty;Füge mindestens eine Regel hinzu. +dialog.replace_blocks.builder.advanced;Quell- und Zielblock akzeptieren vollständiges Blockzustands-SNBT mit Name. Andere komplexe Regeln können direkt im ReplaceBlocks-Ausdruck bearbeitet werden. +dialog.replace_blocks.builder.tile_source.any;Extra NBT: beliebig +dialog.replace_blocks.builder.tile_source.require;Extra NBT: vorhanden +dialog.replace_blocks.builder.tile_source.exclude;Extra NBT: nicht vorhanden +dialog.replace_blocks.builder.y_min;Min Y +dialog.replace_blocks.builder.y_max;Max Y +dialog.replace_blocks.builder.biome;Biom +dialog.replace_blocks.builder.biome.prompt;minecraft:plains;minecraft:forest +dialog.replace_blocks.builder.source_constraints;Quellbeschränkungen (optional) +dialog.replace_blocks.builder.catalog;Block catalogue +dialog.replace_blocks.builder.catalog_switch.title;Switch block catalogue +dialog.replace_blocks.builder.catalog_switch.message;Beim Wechsel von %s zu %s werden alle Regeln, Entwürfe und Auswahlen im Editor verworfen. Fortfahren? +dialog.replace_blocks.builder.catalog.note;Steuert nur Blockvorschläge und Eigenschaften; IDs werden nicht umgewandelt. Enthält der Editor Inhalte, wird vor dem Wechsel nachgefragt und danach der Inhalt gelöscht. +dialog.replace_blocks.builder.catalog.source_unknown;Source "%s" is not in the Java %s catalogue; it will still be accepted as entered. +dialog.replace_blocks.builder.catalog.target_unknown;Target "%s" is not in the Java %s catalogue; it will still be accepted, but verify that the target world supports this ID. +dialog.replace_blocks.builder.preset.persist_failed;Could not write the configuration; the preset change was rolled back. +dialog.replace_blocks.builder.preset;Voreinstellung +dialog.replace_blocks.builder.preset.prompt;Voreinstellung wählen +dialog.replace_blocks.builder.preset.apply;Voreinstellung übernehmen +dialog.replace_blocks.builder.preset.save;Voreinstellung speichern +dialog.replace_blocks.builder.preset.delete;Voreinstellung löschen +dialog.replace_blocks.builder.preset.title;ReplaceBlocks Voreinstellungen +dialog.replace_blocks.builder.preset.save.title;ReplaceBlocks Voreinstellung speichern +dialog.replace_blocks.builder.preset.save.header;Generierte Regeln als wiederverwendbare Editor-Voreinstellung speichern. +dialog.replace_blocks.builder.preset.save.name;Name der Voreinstellung +dialog.replace_blocks.builder.preset.name_empty;Gib einen Namen für die Voreinstellung ein. +dialog.replace_blocks.builder.preset.builtin_locked;Integrierte Voreinstellungen können nicht überschrieben werden. +dialog.replace_blocks.builder.preset.overwrite_confirm;Eine Voreinstellung namens „%s“ existiert bereits. Überschreiben? +dialog.replace_blocks.builder.preset.delete_confirm;Voreinstellung „%s" löschen? +dialog.replace_blocks.builder.preset.replace_confirm;Das Laden dieser Voreinstellung ersetzt die aktuellen Editor-Regeln und Eingaben. +dialog.replace_blocks.builder.preset.saved;Voreinstellung „%s" gespeichert. +dialog.replace_blocks.builder.preset.already_filled;Diese Voreinstellung ist bereits in der Regelliste vorhanden. +dialog.replace_blocks.builder.discard.title;Editor-Änderungen verwerfen? +dialog.replace_blocks.builder.discard.header;Die Änderungen in diesem Editor verwerfen? Das ReplaceBlocks-Feld behält den Wert von vor dem Öffnen des Editors. +dialog.replace_blocks.builder.discard.action;Änderungen verwerfen +dialog.replace_blocks.builder.continue_editing.action;Weiter bearbeiten +dialog.replace_blocks.builder.preset.air_to_stone;Luft -> Stein +dialog.replace_blocks.builder.preset.fluids_to_air;Flüssigkeiten -> Luft +dialog.replace_blocks.builder.preset.logs_leaves_to_air;Stämme/Blätter -> Luft +dialog.replace_blocks.builder.preset.ores_to_stone;Erze -> Stein +dialog.replace_blocks.builder.preset.containers_to_air;Behälter mit Extra NBT -> Luft +dialog.replace_blocks.builder.preset.warning_air;Das Ersetzen von Luft kann fehlende oder spärliche Sektionen erzeugen. Zuerst eine kleine kopierte Auswahl in der Vorschau prüfen. +dialog.replace_blocks.builder.preset.warning_containers;Die Behälter-Voreinstellung erfasst nur Positionen mit Extra NBT, aber das Ersetzen kann gespeicherte Inhalte wie Truhen und Fässer entfernen. Zuerst auf einer kopierten Welt in der Vorschau prüfen. +dialog.replace_blocks.builder.edit_rule;Regel laden +dialog.replace_blocks.builder.property.all;alle +dialog.replace_blocks.builder.help.button;Hilfe +dialog.replace_blocks.builder.help.title;Hilfe zum ReplaceBlocks-Editor +dialog.replace_blocks.builder.help.nbt.title;Extra NBT Bedingung +dialog.replace_blocks.builder.help.nbt.intro;Extra NBT sind Blockentitätsdaten, die an einer Blockposition gespeichert sind, wie Schildertexte, Behälterinhalte, Ofenfortschritt oder Befehlsblockbefehle. Diese Option prüft nur, ob die Quellposition solche Daten hat; der Inhalt wird nicht untersucht. +dialog.replace_blocks.builder.help.nbt.any;Extra NBT: beliebig – Abgleich nach Blockname und Eigenschaften, unabhängig von Blockentitätsdaten. Für normale Blöcke oder wenn das Verwerfen vorhandener Extra-Daten akzeptabel ist. +dialog.replace_blocks.builder.help.nbt.present;Extra NBT: vorhanden – Nur Positionen mit bereits vorhandenen Blockentitätsdaten abgleichen. Verwende dies, um gezielt Truhen, Fässer, Schilder, Öfen, Spawner oder ähnliche Datenblöcke zu bearbeiten; erzeugt tile(...). +dialog.replace_blocks.builder.help.nbt.absent;Extra NBT: nicht vorhanden – Nur Positionen ohne Blockentitätsdaten abgleichen. Verwende dies, um Behälterinhalte, Schildertexte und ähnliche Daten zu vermeiden oder um ungewöhnliche gleichnamige Blöcke ohne Entitäten zu bereinigen; erzeugt no_tile(...). +dialog.replace_blocks.builder.help.nbt.note;Diese Einstellung filtert nur die Quellseite. Wenn die Zielseite Blockentitäts-SNBT benötigt, verwende weiterhin die erweiterte Texteingabe. +dialog.replace_blocks.builder.help.biome.title;Biom-Bedingung +dialog.replace_blocks.builder.help.biome.intro;Die Biom-Filterung prüft das Biom an jeder Kandidaten-Blockposition. In modernen 1.18+-Chunks deckt ein Biom-Wert einen 4×4×4-Blockbereich ab, sodass nahe Blöcke in derselben Zelle die gleiche Biom-Bedingung teilen. +dialog.replace_blocks.builder.help.biome.syntax;Lass das Biom-Feld im Editor leer, um keine Biom-Einschränkung zu haben. Gib eine Biom-ID oder mehrere durch Semikolons getrennte IDs ein; generierte Regeln verwenden biome(..., source). +dialog.replace_blocks.validation.source_empty;Gib eine Quellblock-ID ein. +dialog.replace_blocks.validation.target_empty;Gib eine Zielblock-ID ein. +dialog.replace_blocks.validation.source_unknown;Unbekannter Quellblock „%s“. +dialog.replace_blocks.validation.target_unknown;Unbekannter Zielblock „%s“. +dialog.replace_blocks.validation.source_format;Die Quellblock-ID muss wie minecraft:stone oder modid:block_name aussehen. +dialog.replace_blocks.validation.target_format;Die Zielblock-ID muss wie minecraft:dirt oder modid:block_name aussehen. +dialog.replace_blocks.validation.missing_equals;Jede ReplaceBlocks-Regel benötigt from=to. +dialog.replace_blocks.validation.state_snbt;Blockzustands-SNBT muss ein gültiges Compound sein, zum Beispiel {Name:"minecraft:stone"}. +dialog.replace_blocks.validation.tile_empty;Nach ; fehlt Blockentitäts-SNBT. +dialog.replace_blocks.validation.tile_snbt;Blockentitäts-SNBT muss ein gültiges Compound sein. +dialog.replace_blocks.validation.trailing;Unerwarteter Text nach dieser Regel. Trenne Regeln mit Kommas. +dialog.replace_blocks.validation.target_quote;Dem Zielblock in Anführungszeichen fehlt das schließende Anführungszeichen. +dialog.replace_blocks.validation.quoted_target_ambiguous;Zielblöcke in Anführungszeichen sind vor einer weiteren Regel oder Tile-SNBT fehleranfällig. Verwende stattdessen {Name:"modid:block"}. +dialog.replace_blocks.validation.source_regex;Die Quelle „%s“ wird beim Blockabgleich als Java-Regex behandelt. +dialog.replace_blocks.validation.source_mode_wrapper;Quellmodus-Wrapper müssen literal(...), regex(...), props(...), tile(...) oder no_tile(...) sein. +dialog.replace_blocks.validation.source_literal;Die literal(...)-Quelle muss eine gültige Block-ID enthalten. Ungültige Quelle: „%s“. +dialog.replace_blocks.validation.source_regex_syntax;Die regex(...)-Quelle muss eine gültige Java-Regex enthalten. +dialog.replace_blocks.validation.source_props;Die props(...)-Quelle muss Blockzustands-SNBT mit Name und mindestens einer ausgewählten Eigenschaft enthalten. +dialog.replace_blocks.validation.source_y_range;Die y(...)-Quelle muss min..max mit mindestens einer ganzzahligen Grenze verwenden, zum Beispiel y(-64..64, literal(minecraft:stone)). +dialog.replace_blocks.validation.source_biome;Die biome(...)-Quelle muss gültige, durch Semikolons getrennte Biom-IDs und danach einen Quellausdruck enthalten, zum Beispiel biome(minecraft:plains, literal(minecraft:stone)). +dialog.change_nbt.query_invalid;Invalid change query: %s +dialog.change_nbt.replace_blocks_query_quote;In the advanced query field, wrap ReplaceBlocks values in double quotes, for example ReplaceBlocks = "minecraft:stone=minecraft:dirt". +dialog.replace_blocks.preview.button;Vorschau +dialog.replace_blocks.preview.title;ReplaceBlocks-Vorschau +dialog.replace_blocks.preview.no_field;Gib einen gültigen ReplaceBlocks-Wert ein, bevor du die Vorschau startest. +dialog.replace_blocks.preview.result;Testlauf abgeschlossen.\nDurchsuchte Regionen: %d\nDurchsuchte Chunks: %d\nBetroffene Chunks: %d\nBetroffene Sektionen: %d\nPassende Blöcke: %d\nHinzuzufügende Blockentitäten: %d\nZu entfernende Blockentitäten: %d\nZu aktualisierende Blockentitäten: %d +dialog.replace_blocks.preview.rules;Regeltreffer: +dialog.replace_blocks.preview.rule;#%d [%s] %s -> %s: %d +dialog.replace_blocks.preview.warning_air;Das Ersetzen von Luft kann vorher fehlende Sektionen ergänzen. Die Vorschau zählte %d fehlende oder unvollständige Luft-Sektionen. +dialog.replace_blocks.preview.warning_overlap;%d Blockpositionen entsprachen mehr als einer Regel. Die Regelzählungen enthalten jeden Regeltreffer, daher kann ihre Summe höher sein als die Zahl passender Blöcke. +dialog.replace_blocks.preview.warning_tile;Das Ersetzen von Blockentitäten kann Blockentitäten hinzufügen, entfernen oder aktualisieren. Teste vor dem Anwenden auf kopierten Welten. +dialog.replace_blocks.preview.warning_light;Die aktuelle ReplaceBlocks-Implementierung kann Licht-Arrays aus %d verarbeiteten Sektionen entfernen. +dialog.replace_blocks.preview.warning_adjacent_relight;Die tatsächliche Änderung kann Relight-Markierungen in bis zu %d benachbarten Chunks außerhalb der Auswahl aktualisieren; dort werden keine Blöcke ersetzt. +dialog.replace_blocks.preview.warning_heightmaps;Bei der tatsächlichen Änderung werden die Höhenkarten für %d betroffene Chunks neu berechnet. +dialog.replace_blocks.preview.warning_unsupported;Für %d durchsuchte Chunks älterer oder nicht unterstützter Versionen ist keine Vorschau implementiert. +dialog.replace_blocks.preview.warning_errors;Die Vorschau übersprang wegen Fehlern %d Chunks und %d Regionen: +dialog.progress.title.preview_replace_blocks;ReplaceBlocks-Vorschau +dialog.replace_blocks.validation.source_state_snbt;Quellblockzustands-SNBT muss ein gültiges Compound mit einem Name-Wert sein. diff --git a/src/main/resources/lang/en_GB.txt b/src/main/resources/lang/en_GB.txt index f283966d..66b14140 100644 --- a/src/main/resources/lang/en_GB.txt +++ b/src/main/resources/lang/en_GB.txt @@ -213,4 +213,110 @@ dialog.unsaved_script.header;There is an unsaved script. dialog.request_number.title.array_length;Array length dialog.request_number.title.enter_number;Enter number button.cancel;Cancel -button.ok;OK \ No newline at end of file +button.ok;OK +dialog.replace_blocks.builder.button;Builder +dialog.replace_blocks.builder.title;ReplaceBlocks Builder +dialog.replace_blocks.builder.from;From block +dialog.replace_blocks.builder.to;To block +dialog.replace_blocks.builder.add_rule;Add rule +dialog.replace_blocks.builder.delete_rule;Delete rule +dialog.replace_blocks.builder.rules;Rules +dialog.replace_blocks.builder.rules.empty;No rules have been added yet. Fill in the source and target blocks, then click Add rule. +dialog.replace_blocks.builder.result;Generated ReplaceBlocks expression +dialog.replace_blocks.builder.invalid;Invalid block id or generated rule. +dialog.replace_blocks.builder.duplicate;This rule already exists. +dialog.replace_blocks.builder.empty;Add at least one rule. +dialog.replace_blocks.builder.advanced;Source and target blocks accept full block state SNBT containing Name. Edit the ReplaceBlocks expression directly for other complex rules. +dialog.replace_blocks.builder.tile_source.any;Extra NBT: any +dialog.replace_blocks.builder.tile_source.require;Extra NBT: present +dialog.replace_blocks.builder.tile_source.exclude;Extra NBT: absent +dialog.replace_blocks.builder.y_min;Min Y +dialog.replace_blocks.builder.y_max;Max Y +dialog.replace_blocks.builder.biome;Biome +dialog.replace_blocks.builder.biome.prompt;minecraft:plains;minecraft:forest +dialog.replace_blocks.builder.source_constraints;Source restrictions (optional) +dialog.replace_blocks.builder.catalog;Block catalogue +dialog.replace_blocks.builder.catalog_switch.title;Switch block catalogue +dialog.replace_blocks.builder.catalog_switch.message;Switching from %s to %s will discard all Builder rules, drafts, and selections. Continue? +dialog.replace_blocks.builder.catalog.note;Controls suggestions and properties only; IDs are not converted. If the Builder has content, switching asks for confirmation and then clears the content. +dialog.replace_blocks.builder.catalog.source_unknown;Source "%s" is not in the Java %s catalogue; it will still be accepted as entered. +dialog.replace_blocks.builder.catalog.target_unknown;Target "%s" is not in the Java %s catalogue; it will still be accepted, but verify that the target world supports this ID. +dialog.replace_blocks.builder.preset.persist_failed;Could not write the configuration; the preset change was rolled back. +dialog.replace_blocks.builder.preset;Preset +dialog.replace_blocks.builder.preset.prompt;Choose preset +dialog.replace_blocks.builder.preset.apply;Fill preset +dialog.replace_blocks.builder.preset.save;Save preset +dialog.replace_blocks.builder.preset.delete;Delete preset +dialog.replace_blocks.builder.preset.title;ReplaceBlocks presets +dialog.replace_blocks.builder.preset.save.title;Save ReplaceBlocks preset +dialog.replace_blocks.builder.preset.save.header;Save the generated rules as a reusable Builder preset. +dialog.replace_blocks.builder.preset.save.name;Preset name +dialog.replace_blocks.builder.preset.name_empty;Enter a preset name. +dialog.replace_blocks.builder.preset.builtin_locked;Built-in preset names cannot be overwritten. +dialog.replace_blocks.builder.preset.overwrite_confirm;A preset named "%s" already exists. Overwrite it? +dialog.replace_blocks.builder.preset.delete_confirm;Delete preset "%s"? +dialog.replace_blocks.builder.preset.replace_confirm;Loading this preset will replace the current Builder rules and draft inputs. +dialog.replace_blocks.builder.preset.saved;Preset "%s" saved. +dialog.replace_blocks.builder.preset.already_filled;This preset is already present in the rule list. +dialog.replace_blocks.builder.discard.title;Discard Builder changes? +dialog.replace_blocks.builder.discard.header;Discard the changes made in this Builder? The ReplaceBlocks field will keep the value it had before the Builder opened. +dialog.replace_blocks.builder.discard.action;Discard changes +dialog.replace_blocks.builder.continue_editing.action;Continue editing +dialog.replace_blocks.builder.preset.air_to_stone;Air -> stone +dialog.replace_blocks.builder.preset.fluids_to_air;Fluids -> air +dialog.replace_blocks.builder.preset.logs_leaves_to_air;Logs/leaves -> air +dialog.replace_blocks.builder.preset.ores_to_stone;Ores -> stone +dialog.replace_blocks.builder.preset.containers_to_air;Containers with Extra NBT -> air +dialog.replace_blocks.builder.preset.warning_air;Air replacement can create missing or sparse sections. Preview on a small copied selection first. +dialog.replace_blocks.builder.preset.warning_containers;The container preset matches only positions with Extra NBT present, but replacing them can remove stored contents. Preview on a copied world first. +dialog.replace_blocks.builder.edit_rule;Load rule +dialog.replace_blocks.builder.property.all;all +dialog.replace_blocks.builder.help.button;Help +dialog.replace_blocks.builder.help.title;ReplaceBlocks Builder Help +dialog.replace_blocks.builder.help.nbt.title;Extra NBT source condition +dialog.replace_blocks.builder.help.nbt.intro;Extra NBT is block entity data stored at a block position, such as sign text, container items, furnace progress, or command block commands. This option only checks whether the source position has that data; it does not inspect the contents. +dialog.replace_blocks.builder.help.nbt.any;Extra NBT: any - match by block name and properties regardless of block entity data. Use this for normal blocks, or when replacing and discarding existing extra data is acceptable. +dialog.replace_blocks.builder.help.nbt.present;Extra NBT: present - match only positions that already have block entity data. Use this when deliberately targeting chests, barrels, signs, furnaces, spawners, or similar data blocks; generates tile(...). +dialog.replace_blocks.builder.help.nbt.absent;Extra NBT: absent - match only positions without block entity data. Use this to avoid container contents, sign text, and similar data, or to clean up unusual same-name blocks without entities; generates no_tile(...). +dialog.replace_blocks.builder.help.nbt.note;This setting filters only the source side. If the target needs block entity SNBT, continue using advanced text input. +dialog.replace_blocks.builder.help.biome.title;Biome condition +dialog.replace_blocks.builder.help.biome.intro;Biome filtering checks the biome at each candidate block position. In modern 1.18+ chunks, one biome value covers a 4x4x4 block area, so nearby blocks in that cell share the same biome condition. +dialog.replace_blocks.builder.help.biome.syntax;Leave the Builder biome field empty for no biome restriction. Enter one biome id or multiple ids separated by semicolons; generated rules use biome(..., source). +dialog.replace_blocks.validation.source_empty;Enter a source block id. +dialog.replace_blocks.validation.target_empty;Enter a target block id. +dialog.replace_blocks.validation.source_unknown;Unknown source block "%s". +dialog.replace_blocks.validation.target_unknown;Unknown target block "%s". +dialog.replace_blocks.validation.source_format;Source block id must look like minecraft:stone or modid:block_name. +dialog.replace_blocks.validation.target_format;Target block id must look like minecraft:dirt or modid:block_name. +dialog.replace_blocks.validation.missing_equals;Each ReplaceBlocks rule needs from=to. +dialog.replace_blocks.validation.state_snbt;Block state SNBT must be a valid compound, for example {Name:"minecraft:stone"}. +dialog.replace_blocks.validation.tile_empty;Tile entity SNBT is missing after ;. +dialog.replace_blocks.validation.tile_snbt;Tile entity SNBT must be a valid compound. +dialog.replace_blocks.validation.trailing;Unexpected text after this rule. Separate rules with commas. +dialog.replace_blocks.validation.target_quote;Quoted target block is missing a closing quote. +dialog.replace_blocks.validation.quoted_target_ambiguous;Quoted target blocks are fragile before another rule or tile SNBT. Use {Name:"modid:block"} instead. +dialog.replace_blocks.validation.source_regex;Source "%s" is treated as a Java regex when matching blocks. +dialog.replace_blocks.validation.source_mode_wrapper;Source mode wrappers must be literal(...), regex(...), props(...), tile(...), or no_tile(...). +dialog.replace_blocks.validation.source_literal;literal(...) source must contain a valid block id. Invalid source: "%s". +dialog.replace_blocks.validation.source_regex_syntax;regex(...) source must contain a valid Java regex. +dialog.replace_blocks.validation.source_props;props(...) source must contain block-state SNBT with Name and at least one selected property. +dialog.replace_blocks.validation.source_y_range;y(...) source must use min..max with at least one integer boundary, for example y(-64..64, literal(minecraft:stone)). +dialog.replace_blocks.validation.source_biome;biome(...) source must use valid biome IDs separated by semicolons, followed by a source expression, for example biome(minecraft:plains, literal(minecraft:stone)). +dialog.change_nbt.query_invalid;Invalid change query: %s +dialog.change_nbt.replace_blocks_query_quote;In the advanced query field, wrap ReplaceBlocks values in double quotes, for example ReplaceBlocks = "minecraft:stone=minecraft:dirt". +dialog.replace_blocks.preview.button;Preview +dialog.replace_blocks.preview.title;ReplaceBlocks Preview +dialog.replace_blocks.preview.no_field;Enter a valid ReplaceBlocks value before running preview. +dialog.replace_blocks.preview.result;Dry-run completed.\nScanned regions: %d\nScanned chunks: %d\nAffected chunks: %d\nAffected sections: %d\nMatched blocks: %d\nTile entities to add: %d\nTile entities to remove: %d\nTile entities to update: %d +dialog.replace_blocks.preview.rules;Rule matches: +dialog.replace_blocks.preview.rule;#%d [%s] %s -> %s: %d +dialog.replace_blocks.preview.warning_air;Air replacement may complete missing sections before replacement. Preview counted %d missing or incomplete air sections. +dialog.replace_blocks.preview.warning_overlap;%d block positions matched more than one rule. Per-rule counts include each rule match, so their sum may be higher than matched blocks. +dialog.replace_blocks.preview.warning_tile;Tile entity replacement can add, remove, or update block entities. Test on copied worlds before applying. +dialog.replace_blocks.preview.warning_light;The real change removes light arrays from %d affected sections. +dialog.replace_blocks.preview.warning_adjacent_relight;The real change may update relight flags in up to %d adjacent chunks outside the selection; no blocks are replaced there. +dialog.replace_blocks.preview.warning_heightmaps;Heightmaps are recomputed for %d affected chunks during the real change. +dialog.replace_blocks.preview.warning_unsupported;Preview is not implemented for %d scanned chunks in older or unsupported versions. +dialog.replace_blocks.preview.warning_errors;Preview skipped %d chunks and %d regions because of errors: +dialog.progress.title.preview_replace_blocks;Preview ReplaceBlocks +dialog.replace_blocks.validation.source_state_snbt;Source block state SNBT must be a valid compound with a Name value. diff --git a/src/main/resources/lang/es_ES.txt b/src/main/resources/lang/es_ES.txt index 9e3f0911..55c1fbb4 100644 --- a/src/main/resources/lang/es_ES.txt +++ b/src/main/resources/lang/es_ES.txt @@ -213,4 +213,110 @@ dialog.unsaved_script.header;Hay un script no guardado. dialog.request_number.title.array_length;Longitud de la matriz dialog.request_number.title.enter_number;Valor button.cancel;Cancelar -button.ok;OK \ No newline at end of file +button.ok;OK +dialog.replace_blocks.builder.button;Constructor +dialog.replace_blocks.builder.title;Constructor ReplaceBlocks +dialog.replace_blocks.builder.from;Bloque origen +dialog.replace_blocks.builder.to;Bloque destino +dialog.replace_blocks.builder.add_rule;Añadir regla +dialog.replace_blocks.builder.delete_rule;Eliminar regla +dialog.replace_blocks.builder.rules;Reglas +dialog.replace_blocks.builder.rules.empty;Aún no hay reglas. Completa los bloques de origen y destino y pulsa «Añadir regla». +dialog.replace_blocks.builder.result;Expresión ReplaceBlocks generada +dialog.replace_blocks.builder.invalid;ID de bloque o regla generada no válida. +dialog.replace_blocks.builder.duplicate;Esta regla ya existe. +dialog.replace_blocks.builder.empty;Añade al menos una regla. +dialog.replace_blocks.builder.advanced;Los bloques de origen y destino aceptan SNBT completo de estado de bloque que contenga Name. Para otras reglas complejas, edita directamente la expresión ReplaceBlocks. +dialog.replace_blocks.builder.tile_source.any;NBT extra: cualquiera +dialog.replace_blocks.builder.tile_source.require;NBT extra: presente +dialog.replace_blocks.builder.tile_source.exclude;NBT extra: ausente +dialog.replace_blocks.builder.y_min;Y mín +dialog.replace_blocks.builder.y_max;Y máx +dialog.replace_blocks.builder.biome;Bioma +dialog.replace_blocks.builder.biome.prompt;minecraft:plains;minecraft:forest +dialog.replace_blocks.builder.source_constraints;Restricciones del origen (opcional) +dialog.replace_blocks.builder.catalog;Block catalogue +dialog.replace_blocks.builder.catalog_switch.title;Switch block catalogue +dialog.replace_blocks.builder.catalog_switch.message;Cambiar de %s a %s descartará todas las reglas, borradores y selecciones del constructor. ¿Continuar? +dialog.replace_blocks.builder.catalog.note;Solo controla sugerencias y propiedades; no convierte ID. Si el constructor tiene contenido, el cambio pide confirmación y después borra el contenido. +dialog.replace_blocks.builder.catalog.source_unknown;Source "%s" is not in the Java %s catalogue; it will still be accepted as entered. +dialog.replace_blocks.builder.catalog.target_unknown;Target "%s" is not in the Java %s catalogue; it will still be accepted, but verify that the target world supports this ID. +dialog.replace_blocks.builder.preset.persist_failed;Could not write the configuration; the preset change was rolled back. +dialog.replace_blocks.builder.preset;Predefinido +dialog.replace_blocks.builder.preset.prompt;Elegir predefinido +dialog.replace_blocks.builder.preset.apply;Aplicar predefinido +dialog.replace_blocks.builder.preset.save;Guardar predefinido +dialog.replace_blocks.builder.preset.delete;Eliminar predefinido +dialog.replace_blocks.builder.preset.title;Predefinidos ReplaceBlocks +dialog.replace_blocks.builder.preset.save.title;Guardar predefinido ReplaceBlocks +dialog.replace_blocks.builder.preset.save.header;Guardar las reglas generadas como un predefinido de constructor reutilizable. +dialog.replace_blocks.builder.preset.save.name;Nombre del predefinido +dialog.replace_blocks.builder.preset.name_empty;Introduce un nombre para el predefinido. +dialog.replace_blocks.builder.preset.builtin_locked;Los nombres de predefinidos integrados no se pueden sobrescribir. +dialog.replace_blocks.builder.preset.overwrite_confirm;Ya existe un predefinido llamado "%s". ¿Sobrescribirlo? +dialog.replace_blocks.builder.preset.delete_confirm;¿Eliminar predefinido "%s"? +dialog.replace_blocks.builder.preset.replace_confirm;Cargar este predefinido reemplazará las reglas y la entrada en curso del constructor. +dialog.replace_blocks.builder.preset.saved;Predefinido "%s" guardado. +dialog.replace_blocks.builder.preset.already_filled;Este predefinido ya está presente en la lista de reglas. +dialog.replace_blocks.builder.discard.title;¿Descartar cambios del constructor? +dialog.replace_blocks.builder.discard.header;¿Descartar los cambios realizados en este constructor? El campo ReplaceBlocks conservará el valor que tenía antes de abrirlo. +dialog.replace_blocks.builder.discard.action;Descartar cambios +dialog.replace_blocks.builder.continue_editing.action;Seguir editando +dialog.replace_blocks.builder.preset.air_to_stone;Aire -> piedra +dialog.replace_blocks.builder.preset.fluids_to_air;Fluidos -> aire +dialog.replace_blocks.builder.preset.logs_leaves_to_air;Troncos/hojas -> aire +dialog.replace_blocks.builder.preset.ores_to_stone;Minerales -> piedra +dialog.replace_blocks.builder.preset.containers_to_air;Contenedores con NBT extra -> aire +dialog.replace_blocks.builder.preset.warning_air;La sustitución de aire puede crear secciones faltantes o dispersas. Previsualiza primero en una pequeña selección copiada. +dialog.replace_blocks.builder.preset.warning_containers;El predefinido de contenedores solo coincide con posiciones que tienen NBT extra presente, pero la sustitución puede eliminar contenidos almacenados como cofres y barriles. Previsualiza primero en un mundo copiado. +dialog.replace_blocks.builder.edit_rule;Cargar regla +dialog.replace_blocks.builder.property.all;todo +dialog.replace_blocks.builder.help.button;Ayuda +dialog.replace_blocks.builder.help.title;Ayuda del constructor ReplaceBlocks +dialog.replace_blocks.builder.help.nbt.title;Condición de NBT extra +dialog.replace_blocks.builder.help.nbt.intro;El NBT extra son datos de entidad de bloque almacenados en una posición, como texto de carteles, contenido de cofres, progreso de horno o comandos de bloque de comandos. Esta opción solo verifica si la posición origen tiene esos datos; no inspecciona el contenido. +dialog.replace_blocks.builder.help.nbt.any;NBT extra: cualquiera – coincide por nombre de bloque y propiedades independientemente de los datos de entidad de bloque. Para bloques normales, o cuando descartar los datos extra existentes es aceptable. +dialog.replace_blocks.builder.help.nbt.present;NBT extra: presente – coincide solo con posiciones que ya tienen datos de entidad de bloque. Úsalo para apuntar deliberadamente a cofres, barriles, carteles, hornos, spawners o bloques de datos similares; genera tile(...). +dialog.replace_blocks.builder.help.nbt.absent;NBT extra: ausente – coincide solo con posiciones sin datos de entidad de bloque. Úsalo para evitar contenidos de contenedores, texto de carteles y datos similares, o para limpiar bloques anómalos del mismo nombre sin entidad; genera no_tile(...). +dialog.replace_blocks.builder.help.nbt.note;Esta configuración filtra solo el lado origen. Si el destino necesita SNBT de entidad de bloque, sigue usando la entrada de texto avanzada. +dialog.replace_blocks.builder.help.biome.title;Condición de bioma +dialog.replace_blocks.builder.help.biome.intro;El filtrado por bioma comprueba el bioma en cada posición de bloque candidata. En chunks modernos 1.18+, un valor de bioma cubre un área de 4×4×4 bloques, por lo que los bloques cercanos en esa celda comparten la misma condición de bioma. +dialog.replace_blocks.builder.help.biome.syntax;Deja vacío el campo Bioma del constructor para no aplicar restricción de bioma. Introduce un ID de bioma o varios IDs separados por punto y coma; las reglas generadas usan biome(..., source). +dialog.replace_blocks.validation.source_empty;Introduce un ID de bloque de origen. +dialog.replace_blocks.validation.target_empty;Introduce un ID de bloque de destino. +dialog.replace_blocks.validation.source_unknown;Bloque de origen desconocido "%s". +dialog.replace_blocks.validation.target_unknown;Bloque de destino desconocido "%s". +dialog.replace_blocks.validation.source_format;El ID de bloque de origen debe tener el formato minecraft:stone o modid:block_name. +dialog.replace_blocks.validation.target_format;El ID de bloque de destino debe tener el formato minecraft:dirt o modid:block_name. +dialog.replace_blocks.validation.missing_equals;Cada regla ReplaceBlocks necesita from=to. +dialog.replace_blocks.validation.state_snbt;El SNBT de estado de bloque debe ser un compound válido, por ejemplo {Name:"minecraft:stone"}. +dialog.replace_blocks.validation.tile_empty;Falta el SNBT de entidad de bloque después de ;. +dialog.replace_blocks.validation.tile_snbt;El SNBT de entidad de bloque debe ser un compound válido. +dialog.replace_blocks.validation.trailing;Hay texto inesperado después de esta regla. Separa las reglas con comas. +dialog.replace_blocks.validation.target_quote;Falta la comilla de cierre en el bloque de destino entre comillas. +dialog.replace_blocks.validation.quoted_target_ambiguous;Los bloques de destino entre comillas son frágiles antes de otra regla o SNBT de entidad. Usa {Name:"modid:block"} en su lugar. +dialog.replace_blocks.validation.source_regex;El origen "%s" se trata como una expresión regular de Java al buscar bloques. +dialog.replace_blocks.validation.source_mode_wrapper;Los envoltorios de modo de origen deben ser literal(...), regex(...), props(...), tile(...) o no_tile(...). +dialog.replace_blocks.validation.source_literal;El origen literal(...) debe contener un ID de bloque válido. Origen no válido: "%s". +dialog.replace_blocks.validation.source_regex_syntax;El origen regex(...) debe contener una expresión regular de Java válida. +dialog.replace_blocks.validation.source_props;El origen props(...) debe contener SNBT de estado de bloque con Name y al menos una propiedad seleccionada. +dialog.replace_blocks.validation.source_y_range;El origen y(...) debe usar min..max con al menos un límite entero, por ejemplo y(-64..64, literal(minecraft:stone)). +dialog.replace_blocks.validation.source_biome;El origen biome(...) debe usar ID de bioma válidos separados por punto y coma, seguidos de una expresión de origen, por ejemplo biome(minecraft:plains, literal(minecraft:stone)). +dialog.change_nbt.query_invalid;Invalid change query: %s +dialog.change_nbt.replace_blocks_query_quote;In the advanced query field, wrap ReplaceBlocks values in double quotes, for example ReplaceBlocks = "minecraft:stone=minecraft:dirt". +dialog.replace_blocks.preview.button;Vista previa +dialog.replace_blocks.preview.title;Vista previa de ReplaceBlocks +dialog.replace_blocks.preview.no_field;Introduce un valor ReplaceBlocks válido antes de ejecutar la vista previa. +dialog.replace_blocks.preview.result;Simulación completada.\nRegiones analizadas: %d\nChunks analizados: %d\nChunks afectados: %d\nSecciones afectadas: %d\nBloques coincidentes: %d\nEntidades de bloque que se añadirán: %d\nEntidades de bloque que se eliminarán: %d\nEntidades de bloque que se actualizarán: %d +dialog.replace_blocks.preview.rules;Coincidencias de reglas: +dialog.replace_blocks.preview.rule;#%d [%s] %s -> %s: %d +dialog.replace_blocks.preview.warning_air;La sustitución de aire puede completar secciones faltantes antes de reemplazar. La vista previa contó %d secciones de aire faltantes o incompletas. +dialog.replace_blocks.preview.warning_overlap;%d posiciones de bloque coincidieron con más de una regla. Los recuentos por regla incluyen cada coincidencia, por lo que su suma puede ser mayor que la de bloques coincidentes. +dialog.replace_blocks.preview.warning_tile;La sustitución de entidades de bloque puede añadir, eliminar o actualizar entidades de bloque. Pruébala en mundos copiados antes de aplicarla. +dialog.replace_blocks.preview.warning_light;La implementación actual de ReplaceBlocks puede eliminar matrices de luz de %d secciones procesadas. +dialog.replace_blocks.preview.warning_adjacent_relight;El cambio real puede actualizar las marcas de recálculo de luz en hasta %d chunks adyacentes fuera de la selección; allí no se reemplazan bloques. +dialog.replace_blocks.preview.warning_heightmaps;Durante el cambio real se recalculan los mapas de altura de %d chunks afectados. +dialog.replace_blocks.preview.warning_unsupported;La vista previa no está implementada para %d chunks analizados de versiones antiguas o no compatibles. +dialog.replace_blocks.preview.warning_errors;La vista previa omitió %d chunks y %d regiones debido a errores: +dialog.progress.title.preview_replace_blocks;Vista previa de ReplaceBlocks +dialog.replace_blocks.validation.source_state_snbt;El SNBT de estado del bloque de origen debe ser un compound válido con un valor Name. diff --git a/src/main/resources/lang/fr_FR.txt b/src/main/resources/lang/fr_FR.txt index 4c877a05..50d08aa2 100644 --- a/src/main/resources/lang/fr_FR.txt +++ b/src/main/resources/lang/fr_FR.txt @@ -213,4 +213,110 @@ dialog.unsaved_script.header;Il y a un script non enregistré. dialog.request_number.title.array_length;Longueur du tableau dialog.request_number.title.enter_number;Valeur button.cancel;Annuler -button.ok;OK \ No newline at end of file +button.ok;OK +dialog.replace_blocks.builder.button;Constructeur +dialog.replace_blocks.builder.title;Constructeur ReplaceBlocks +dialog.replace_blocks.builder.from;Bloc source +dialog.replace_blocks.builder.to;Bloc cible +dialog.replace_blocks.builder.add_rule;Ajouter une règle +dialog.replace_blocks.builder.delete_rule;Supprimer la règle +dialog.replace_blocks.builder.rules;Règles +dialog.replace_blocks.builder.rules.empty;Aucune règle. Remplissez les blocs source et cible, puis cliquez sur « Ajouter une règle ». +dialog.replace_blocks.builder.result;Expression ReplaceBlocks générée +dialog.replace_blocks.builder.invalid;ID de bloc ou règle générée non valide. +dialog.replace_blocks.builder.duplicate;Cette règle existe déjà. +dialog.replace_blocks.builder.empty;Ajoutez au moins une règle. +dialog.replace_blocks.builder.advanced;Les blocs source et cible acceptent un SNBT d’état de bloc complet contenant Name. Pour les autres règles complexes, modifiez directement l’expression ReplaceBlocks. +dialog.replace_blocks.builder.tile_source.any;NBT supplémentaire: indifférent +dialog.replace_blocks.builder.tile_source.require;NBT supplémentaire: présent +dialog.replace_blocks.builder.tile_source.exclude;NBT supplémentaire: absent +dialog.replace_blocks.builder.y_min;Y min +dialog.replace_blocks.builder.y_max;Y max +dialog.replace_blocks.builder.biome;Biome +dialog.replace_blocks.builder.biome.prompt;minecraft:plains;minecraft:forest +dialog.replace_blocks.builder.source_constraints;Contraintes de source (facultatif) +dialog.replace_blocks.builder.catalog;Block catalogue +dialog.replace_blocks.builder.catalog_switch.title;Switch block catalogue +dialog.replace_blocks.builder.catalog_switch.message;Passer de %s à %s supprimera toutes les règles, saisies en cours et sélections du constructeur. Continuer ? +dialog.replace_blocks.builder.catalog.note;Contrôle seulement les suggestions et propriétés ; les ID ne sont pas convertis. Si le constructeur contient des données, le changement demande confirmation puis efface le contenu. +dialog.replace_blocks.builder.catalog.source_unknown;Source "%s" is not in the Java %s catalogue; it will still be accepted as entered. +dialog.replace_blocks.builder.catalog.target_unknown;Target "%s" is not in the Java %s catalogue; it will still be accepted, but verify that the target world supports this ID. +dialog.replace_blocks.builder.preset.persist_failed;Could not write the configuration; the preset change was rolled back. +dialog.replace_blocks.builder.preset;Préréglage +dialog.replace_blocks.builder.preset.prompt;Choisir un préréglage +dialog.replace_blocks.builder.preset.apply;Appliquer le préréglage +dialog.replace_blocks.builder.preset.save;Enregistrer le préréglage +dialog.replace_blocks.builder.preset.delete;Supprimer le préréglage +dialog.replace_blocks.builder.preset.title;Préréglages ReplaceBlocks +dialog.replace_blocks.builder.preset.save.title;Enregistrer le préréglage ReplaceBlocks +dialog.replace_blocks.builder.preset.save.header;Enregistrer les règles générées comme préréglage de constructeur réutilisable. +dialog.replace_blocks.builder.preset.save.name;Nom du préréglage +dialog.replace_blocks.builder.preset.name_empty;Saisissez un nom de préréglage. +dialog.replace_blocks.builder.preset.builtin_locked;Les noms des préréglages intégrés ne peuvent pas être écrasés. +dialog.replace_blocks.builder.preset.overwrite_confirm;Un préréglage nommé « %s » existe déjà. L'écraser ? +dialog.replace_blocks.builder.preset.delete_confirm;Supprimer le préréglage « %s » ? +dialog.replace_blocks.builder.preset.replace_confirm;Le chargement de ce préréglage remplacera les règles et la saisie en cours du constructeur. +dialog.replace_blocks.builder.preset.saved;Préréglage « %s » enregistré. +dialog.replace_blocks.builder.preset.already_filled;Ce préréglage est déjà présent dans la liste des règles. +dialog.replace_blocks.builder.discard.title;Abandonner les modifications du constructeur ? +dialog.replace_blocks.builder.discard.header;Abandonner les modifications effectuées dans ce constructeur ? Le champ ReplaceBlocks conservera sa valeur antérieure à l'ouverture. +dialog.replace_blocks.builder.discard.action;Abandonner les modifications +dialog.replace_blocks.builder.continue_editing.action;Continuer la modification +dialog.replace_blocks.builder.preset.air_to_stone;Air -> pierre +dialog.replace_blocks.builder.preset.fluids_to_air;Fluides -> air +dialog.replace_blocks.builder.preset.logs_leaves_to_air;Bûches/feuilles -> air +dialog.replace_blocks.builder.preset.ores_to_stone;Minerais -> pierre +dialog.replace_blocks.builder.preset.containers_to_air;Conteneurs avec NBT suppl. -> air +dialog.replace_blocks.builder.preset.warning_air;Le remplacement de l'air peut créer des sections manquantes ou clairsemées. Prévisualisez d'abord sur une petite sélection copiée. +dialog.replace_blocks.builder.preset.warning_containers;Le préréglage conteneur ne cible que les positions avec NBT supplémentaire présent, mais le remplacement peut supprimer le contenu stocké comme les coffres et tonneaux. Prévisualisez d'abord sur un monde copié. +dialog.replace_blocks.builder.edit_rule;Charger la règle +dialog.replace_blocks.builder.property.all;tout +dialog.replace_blocks.builder.help.button;Aide +dialog.replace_blocks.builder.help.title;Aide du constructeur ReplaceBlocks +dialog.replace_blocks.builder.help.nbt.title;Condition NBT supplémentaire +dialog.replace_blocks.builder.help.nbt.intro;Le NBT supplémentaire désigne les données d'entité de bloc stockées à une position, comme le texte d'un panneau, le contenu d'un coffre, la progression d'un fourneau ou la commande d'un bloc de commande. Cette option vérifie uniquement si la position source possède ces données; elle n'inspecte pas leur contenu. +dialog.replace_blocks.builder.help.nbt.any;NBT supplémentaire: indifférent – correspond par nom de bloc et propriétés, indépendamment des données d'entité de bloc. Pour les blocs normaux, ou quand jeter les données supplémentaires existantes est acceptable. +dialog.replace_blocks.builder.help.nbt.present;NBT supplémentaire: présent – correspond uniquement aux positions ayant déjà des données d'entité de bloc. Utilisez ceci pour cibler délibérément les coffres, tonneaux, panneaux, fourneaux, spawners ou blocs de données similaires; génère tile(...). +dialog.replace_blocks.builder.help.nbt.absent;NBT supplémentaire: absent – correspond uniquement aux positions sans données d'entité de bloc. Utilisez ceci pour éviter le contenu des conteneurs, le texte des panneaux et données similaires, ou pour nettoyer les blocs anormaux de même nom sans entité; génère no_tile(...). +dialog.replace_blocks.builder.help.nbt.note;Ce paramètre filtre uniquement le côté source. Si la cible a besoin de SNBT d'entité de bloc, continuez à utiliser la saisie de texte avancée. +dialog.replace_blocks.builder.help.biome.title;Condition de biome +dialog.replace_blocks.builder.help.biome.intro;Le filtrage par biome vérifie le biome à chaque position de bloc candidate. Dans les tronçons modernes 1.18+, une valeur de biome couvre une zone de 4×4×4 blocs, de sorte que les blocs proches dans cette cellule partagent la même condition de biome. +dialog.replace_blocks.builder.help.biome.syntax;Laissez le champ Biome du constructeur vide pour aucune restriction de biome. Saisissez un ID de biome ou plusieurs ID séparés par des points-virgules; les règles générées utilisent biome(..., source). +dialog.replace_blocks.validation.source_empty;Saisissez un ID de bloc source. +dialog.replace_blocks.validation.target_empty;Saisissez un ID de bloc cible. +dialog.replace_blocks.validation.source_unknown;Bloc source inconnu « %s ». +dialog.replace_blocks.validation.target_unknown;Bloc cible inconnu « %s ». +dialog.replace_blocks.validation.source_format;L'ID du bloc source doit ressembler à minecraft:stone ou modid:block_name. +dialog.replace_blocks.validation.target_format;L'ID du bloc cible doit ressembler à minecraft:dirt ou modid:block_name. +dialog.replace_blocks.validation.missing_equals;Chaque règle ReplaceBlocks nécessite from=to. +dialog.replace_blocks.validation.state_snbt;Le SNBT d'état de bloc doit être un compound valide, par exemple {Name:"minecraft:stone"}. +dialog.replace_blocks.validation.tile_empty;Le SNBT d'entité de bloc est absent après ;. +dialog.replace_blocks.validation.tile_snbt;Le SNBT d'entité de bloc doit être un compound valide. +dialog.replace_blocks.validation.trailing;Texte inattendu après cette règle. Séparez les règles par des virgules. +dialog.replace_blocks.validation.target_quote;Il manque le guillemet fermant du bloc cible entre guillemets. +dialog.replace_blocks.validation.quoted_target_ambiguous;Les blocs cibles entre guillemets sont fragiles avant une autre règle ou un SNBT d'entité. Utilisez plutôt {Name:"modid:block"}. +dialog.replace_blocks.validation.source_regex;La source « %s » est traitée comme une expression régulière Java lors de la correspondance des blocs. +dialog.replace_blocks.validation.source_mode_wrapper;Les enveloppes de mode source doivent être literal(...), regex(...), props(...), tile(...) ou no_tile(...). +dialog.replace_blocks.validation.source_literal;La source literal(...) doit contenir un ID de bloc valide. Source non valide : « %s ». +dialog.replace_blocks.validation.source_regex_syntax;La source regex(...) doit contenir une expression régulière Java valide. +dialog.replace_blocks.validation.source_props;La source props(...) doit contenir un SNBT d'état de bloc avec Name et au moins une propriété sélectionnée. +dialog.replace_blocks.validation.source_y_range;La source y(...) doit utiliser min..max avec au moins une limite entière, par exemple y(-64..64, literal(minecraft:stone)). +dialog.replace_blocks.validation.source_biome;La source biome(...) doit utiliser des ID de biome valides séparés par des points-virgules, suivis d'une expression source, par exemple biome(minecraft:plains, literal(minecraft:stone)). +dialog.change_nbt.query_invalid;Invalid change query: %s +dialog.change_nbt.replace_blocks_query_quote;In the advanced query field, wrap ReplaceBlocks values in double quotes, for example ReplaceBlocks = "minecraft:stone=minecraft:dirt". +dialog.replace_blocks.preview.button;Aperçu +dialog.replace_blocks.preview.title;Aperçu ReplaceBlocks +dialog.replace_blocks.preview.no_field;Saisissez une valeur ReplaceBlocks valide avant de lancer l'aperçu. +dialog.replace_blocks.preview.result;Simulation terminée.\nRégions analysées : %d\nChunks analysés : %d\nChunks affectés : %d\nSections affectées : %d\nBlocs correspondants : %d\nEntités de bloc à ajouter : %d\nEntités de bloc à supprimer : %d\nEntités de bloc à mettre à jour : %d +dialog.replace_blocks.preview.rules;Correspondances des règles : +dialog.replace_blocks.preview.rule;#%d [%s] %s -> %s : %d +dialog.replace_blocks.preview.warning_air;Le remplacement de l'air peut compléter des sections manquantes avant le remplacement. L'aperçu a compté %d sections d'air manquantes ou incomplètes. +dialog.replace_blocks.preview.warning_overlap;%d positions de bloc correspondent à plus d'une règle. Les comptes par règle incluent chaque correspondance, leur somme peut donc être supérieure au nombre de blocs correspondants. +dialog.replace_blocks.preview.warning_tile;Le remplacement d'entités de bloc peut ajouter, supprimer ou mettre à jour des entités de bloc. Testez sur des mondes copiés avant d'appliquer. +dialog.replace_blocks.preview.warning_light;L'implémentation actuelle de ReplaceBlocks peut supprimer les tableaux de lumière de %d sections traitées. +dialog.replace_blocks.preview.warning_adjacent_relight;La modification réelle peut mettre à jour l'indicateur de recalcul de l'éclairage dans jusqu'à %d chunks adjacents hors de la sélection ; aucun bloc n'y est remplacé. +dialog.replace_blocks.preview.warning_heightmaps;Lors de la modification réelle, les cartes de hauteur sont recalculées pour %d chunks affectés. +dialog.replace_blocks.preview.warning_unsupported;L'aperçu n'est pas implémenté pour %d chunks analysés de versions anciennes ou non prises en charge. +dialog.replace_blocks.preview.warning_errors;L'aperçu a ignoré %d chunks et %d régions à cause d'erreurs : +dialog.progress.title.preview_replace_blocks;Aperçu ReplaceBlocks +dialog.replace_blocks.validation.source_state_snbt;Le SNBT d'état du bloc source doit être un compound valide avec une valeur Name. diff --git a/src/main/resources/lang/hu_HU.txt b/src/main/resources/lang/hu_HU.txt index db83cd87..80ad3041 100644 --- a/src/main/resources/lang/hu_HU.txt +++ b/src/main/resources/lang/hu_HU.txt @@ -213,4 +213,110 @@ dialog.unsaved_script.header;Van egy mentetlen szkript. dialog.request_number.title.array_length;A tömb hossza dialog.request_number.title.enter_number;Érték button.cancel;Visszavonás -button.ok;OK \ No newline at end of file +button.ok;OK +dialog.replace_blocks.builder.button;Szerkesztő +dialog.replace_blocks.builder.title;ReplaceBlocks-szerkesztő +dialog.replace_blocks.builder.from;From block +dialog.replace_blocks.builder.to;To block +dialog.replace_blocks.builder.add_rule;Add rule +dialog.replace_blocks.builder.delete_rule;Delete rule +dialog.replace_blocks.builder.rules;Rules +dialog.replace_blocks.builder.rules.empty;Még nincsenek szabályok. Töltse ki a forrás- és célblokkot, majd kattintson a Szabály hozzáadása gombra. +dialog.replace_blocks.builder.result;Létrehozott ReplaceBlocks-kifejezés +dialog.replace_blocks.builder.invalid;Invalid block id or generated rule. +dialog.replace_blocks.builder.duplicate;This rule already exists. +dialog.replace_blocks.builder.empty;Add at least one rule. +dialog.replace_blocks.builder.advanced;A forrás- és célblokkok elfogadják a Name mezőt tartalmazó teljes blokkállapot-SNBT-t. Más összetett szabályokat közvetlenül a ReplaceBlocks-kifejezésben szerkesszen. +dialog.replace_blocks.builder.tile_source.any;Extra NBT: any +dialog.replace_blocks.builder.tile_source.require;Extra NBT: present +dialog.replace_blocks.builder.tile_source.exclude;Extra NBT: absent +dialog.replace_blocks.builder.y_min;Min Y +dialog.replace_blocks.builder.y_max;Max Y +dialog.replace_blocks.builder.biome;Biome +dialog.replace_blocks.builder.biome.prompt;minecraft:plains;minecraft:forest +dialog.replace_blocks.builder.source_constraints;Forráskorlátozások (opcionális) +dialog.replace_blocks.builder.catalog;Block catalogue +dialog.replace_blocks.builder.catalog_switch.title;Switch block catalogue +dialog.replace_blocks.builder.catalog_switch.message;A(z) %s katalógusról %s katalógusra váltás elveti a szerkesztő összes szabályát, piszkozatát és kijelölését. Folytatja? +dialog.replace_blocks.builder.catalog.note;Csak a blokkjavaslatokat és tulajdonságokat vezérli; az azonosítókat nem alakítja át. Ha a szerkesztő tartalmaz adatot, a váltás megerősítést kér, majd törli a tartalmat. +dialog.replace_blocks.builder.catalog.source_unknown;Source "%s" is not in the Java %s catalogue; it will still be accepted as entered. +dialog.replace_blocks.builder.catalog.target_unknown;Target "%s" is not in the Java %s catalogue; it will still be accepted, but verify that the target world supports this ID. +dialog.replace_blocks.builder.preset.persist_failed;Could not write the configuration; the preset change was rolled back. +dialog.replace_blocks.builder.preset;Preset +dialog.replace_blocks.builder.preset.prompt;Choose preset +dialog.replace_blocks.builder.preset.apply;Fill preset +dialog.replace_blocks.builder.preset.save;Save preset +dialog.replace_blocks.builder.preset.delete;Delete preset +dialog.replace_blocks.builder.preset.title;ReplaceBlocks presets +dialog.replace_blocks.builder.preset.save.title;Save ReplaceBlocks preset +dialog.replace_blocks.builder.preset.save.header;A létrehozott szabályok mentése újra felhasználható szerkesztői előbeállításként. +dialog.replace_blocks.builder.preset.save.name;Preset name +dialog.replace_blocks.builder.preset.name_empty;Enter a preset name. +dialog.replace_blocks.builder.preset.builtin_locked;Built-in preset names cannot be overwritten. +dialog.replace_blocks.builder.preset.overwrite_confirm;A preset named "%s" already exists. Overwrite it? +dialog.replace_blocks.builder.preset.delete_confirm;Delete preset "%s"? +dialog.replace_blocks.builder.preset.replace_confirm;Az előbeállítás betöltése lecseréli a szerkesztő jelenlegi szabályait és piszkozatként megadott értékeit. +dialog.replace_blocks.builder.preset.saved;Preset "%s" saved. +dialog.replace_blocks.builder.preset.already_filled;This preset is already present in the rule list. +dialog.replace_blocks.builder.discard.title;Elveti a szerkesztő módosításait? +dialog.replace_blocks.builder.discard.header;Elveti a szerkesztőben végzett módosításokat? A ReplaceBlocks mező megtartja a szerkesztő megnyitása előtti értékét. +dialog.replace_blocks.builder.discard.action;Discard changes +dialog.replace_blocks.builder.continue_editing.action;Continue editing +dialog.replace_blocks.builder.preset.air_to_stone;Air -> stone +dialog.replace_blocks.builder.preset.fluids_to_air;Fluids -> air +dialog.replace_blocks.builder.preset.logs_leaves_to_air;Logs/leaves -> air +dialog.replace_blocks.builder.preset.ores_to_stone;Ores -> stone +dialog.replace_blocks.builder.preset.containers_to_air;Containers with Extra NBT -> air +dialog.replace_blocks.builder.preset.warning_air;Air replacement can create missing or sparse sections. Preview on a small copied selection first. +dialog.replace_blocks.builder.preset.warning_containers;The container preset matches only positions with Extra NBT present, but replacing them can remove stored contents. Preview on a copied world first. +dialog.replace_blocks.builder.edit_rule;Load rule +dialog.replace_blocks.builder.property.all;all +dialog.replace_blocks.builder.help.button;Help +dialog.replace_blocks.builder.help.title;A ReplaceBlocks-szerkesztő súgója +dialog.replace_blocks.builder.help.nbt.title;Extra NBT source condition +dialog.replace_blocks.builder.help.nbt.intro;Extra NBT is block entity data stored at a block position, such as sign text, container items, furnace progress, or command block commands. This option only checks whether the source position has that data; it does not inspect the contents. +dialog.replace_blocks.builder.help.nbt.any;Extra NBT: any - match by block name and properties regardless of block entity data. Use this for normal blocks, or when replacing and discarding existing extra data is acceptable. +dialog.replace_blocks.builder.help.nbt.present;Extra NBT: present - match only positions that already have block entity data. Use this when deliberately targeting chests, barrels, signs, furnaces, spawners, or similar data blocks; generates tile(...). +dialog.replace_blocks.builder.help.nbt.absent;Extra NBT: absent - match only positions without block entity data. Use this to avoid container contents, sign text, and similar data, or to clean up unusual same-name blocks without entities; generates no_tile(...). +dialog.replace_blocks.builder.help.nbt.note;This setting filters only the source side. If the target needs block entity SNBT, continue using advanced text input. +dialog.replace_blocks.builder.help.biome.title;Biome condition +dialog.replace_blocks.builder.help.biome.intro;Biome filtering checks the biome at each candidate block position. In modern 1.18+ chunks, one biome value covers a 4x4x4 block area, so nearby blocks in that cell share the same biome condition. +dialog.replace_blocks.builder.help.biome.syntax;Ha nem szeretne biomkorlátozást, hagyja üresen a szerkesztő biom mezőjét. Adjon meg egy biomazonosítót vagy több, pontosvesszővel elválasztott azonosítót; a létrehozott szabályok a biome(..., source) alakot használják. +dialog.replace_blocks.validation.source_empty;Enter a source block id. +dialog.replace_blocks.validation.target_empty;Enter a target block id. +dialog.replace_blocks.validation.source_unknown;Unknown source block "%s". +dialog.replace_blocks.validation.target_unknown;Unknown target block "%s". +dialog.replace_blocks.validation.source_format;Source block id must look like minecraft:stone or modid:block_name. +dialog.replace_blocks.validation.target_format;Target block id must look like minecraft:dirt or modid:block_name. +dialog.replace_blocks.validation.missing_equals;Each ReplaceBlocks rule needs from=to. +dialog.replace_blocks.validation.state_snbt;Block state SNBT must be a valid compound, for example {Name:"minecraft:stone"}. +dialog.replace_blocks.validation.tile_empty;Tile entity SNBT is missing after ;. +dialog.replace_blocks.validation.tile_snbt;Tile entity SNBT must be a valid compound. +dialog.replace_blocks.validation.trailing;Unexpected text after this rule. Separate rules with commas. +dialog.replace_blocks.validation.target_quote;Quoted target block is missing a closing quote. +dialog.replace_blocks.validation.quoted_target_ambiguous;Quoted target blocks are fragile before another rule or tile SNBT. Use {Name:"modid:block"} instead. +dialog.replace_blocks.validation.source_regex;Source "%s" is treated as a Java regex when matching blocks. +dialog.replace_blocks.validation.source_mode_wrapper;Source mode wrappers must be literal(...), regex(...), props(...), tile(...), or no_tile(...). +dialog.replace_blocks.validation.source_literal;literal(...) source must contain a valid block id. Invalid source: "%s". +dialog.replace_blocks.validation.source_regex_syntax;regex(...) source must contain a valid Java regex. +dialog.replace_blocks.validation.source_props;props(...) source must contain block-state SNBT with Name and at least one selected property. +dialog.replace_blocks.validation.source_y_range;y(...) source must use min..max with at least one integer boundary, for example y(-64..64, literal(minecraft:stone)). +dialog.replace_blocks.validation.source_biome;biome(...) source must use valid biome IDs separated by semicolons, followed by a source expression, for example biome(minecraft:plains, literal(minecraft:stone)). +dialog.change_nbt.query_invalid;Invalid change query: %s +dialog.change_nbt.replace_blocks_query_quote;In the advanced query field, wrap ReplaceBlocks values in double quotes, for example ReplaceBlocks = "minecraft:stone=minecraft:dirt". +dialog.replace_blocks.preview.button;Preview +dialog.replace_blocks.preview.title;ReplaceBlocks Preview +dialog.replace_blocks.preview.no_field;Enter a valid ReplaceBlocks value before running preview. +dialog.replace_blocks.preview.result;Dry-run completed.\nScanned regions: %d\nScanned chunks: %d\nAffected chunks: %d\nAffected sections: %d\nMatched blocks: %d\nTile entities to add: %d\nTile entities to remove: %d\nTile entities to update: %d +dialog.replace_blocks.preview.rules;Rule matches: +dialog.replace_blocks.preview.rule;#%d [%s] %s -> %s: %d +dialog.replace_blocks.preview.warning_air;Air replacement may complete missing sections before replacement. Preview counted %d missing or incomplete air sections. +dialog.replace_blocks.preview.warning_overlap;%d block positions matched more than one rule. Per-rule counts include each rule match, so their sum may be higher than matched blocks. +dialog.replace_blocks.preview.warning_tile;Tile entity replacement can add, remove, or update block entities. Test on copied worlds before applying. +dialog.replace_blocks.preview.warning_light;The current ReplaceBlocks implementation may remove light arrays from %d processed sections. +dialog.replace_blocks.preview.warning_adjacent_relight;A tényleges módosítás a kijelölésen kívül legfeljebb %d szomszédos chunk újrafényesítési jelzőjét frissítheti; ott blokkok nem cserélődnek. +dialog.replace_blocks.preview.warning_heightmaps;A tényleges módosítás során %d érintett chunk magasságtérképe újraszámításra kerül. +dialog.replace_blocks.preview.warning_unsupported;Preview is not implemented for %d scanned chunks in older or unsupported versions. +dialog.replace_blocks.preview.warning_errors;Preview skipped %d chunks and %d regions because of errors: +dialog.progress.title.preview_replace_blocks;Preview ReplaceBlocks +dialog.replace_blocks.validation.source_state_snbt;Source block state SNBT must be a valid compound with a Name value. diff --git a/src/main/resources/lang/it_IT.txt b/src/main/resources/lang/it_IT.txt index 4741f1e4..c7e48536 100644 --- a/src/main/resources/lang/it_IT.txt +++ b/src/main/resources/lang/it_IT.txt @@ -213,4 +213,110 @@ dialog.unsaved_script.header;C'è uno script non salvato. dialog.request_number.title.array_length;Lunghezza della matrice dialog.request_number.title.enter_number;Valore button.cancel;Annulla -button.ok;Va bene \ No newline at end of file +button.ok;Va bene +dialog.replace_blocks.builder.button;Editor +dialog.replace_blocks.builder.title;Editor ReplaceBlocks +dialog.replace_blocks.builder.from;Blocco origine +dialog.replace_blocks.builder.to;Blocco destinazione +dialog.replace_blocks.builder.add_rule;Aggiungi regola +dialog.replace_blocks.builder.delete_rule;Elimina regola +dialog.replace_blocks.builder.rules;Regole +dialog.replace_blocks.builder.rules.empty;Non ci sono ancora regole. Compila i blocchi di origine e destinazione, poi fai clic su «Aggiungi regola». +dialog.replace_blocks.builder.result;Espressione ReplaceBlocks generata +dialog.replace_blocks.builder.invalid;ID blocco o regola generata non valido. +dialog.replace_blocks.builder.duplicate;Questa regola esiste già. +dialog.replace_blocks.builder.empty;Aggiungi almeno una regola. +dialog.replace_blocks.builder.advanced;I blocchi di origine e destinazione accettano uno SNBT completo dello stato del blocco contenente Name. Per altre regole complesse, modifica direttamente l'espressione ReplaceBlocks. +dialog.replace_blocks.builder.tile_source.any;NBT extra: qualsiasi +dialog.replace_blocks.builder.tile_source.require;NBT extra: presente +dialog.replace_blocks.builder.tile_source.exclude;NBT extra: assente +dialog.replace_blocks.builder.y_min;Y min +dialog.replace_blocks.builder.y_max;Y max +dialog.replace_blocks.builder.biome;Bioma +dialog.replace_blocks.builder.biome.prompt;minecraft:plains;minecraft:forest +dialog.replace_blocks.builder.source_constraints;Vincoli della sorgente (facoltativi) +dialog.replace_blocks.builder.catalog;Block catalogue +dialog.replace_blocks.builder.catalog_switch.title;Switch block catalogue +dialog.replace_blocks.builder.catalog_switch.message;Il passaggio da %s a %s eliminerà tutte le regole, le bozze e le selezioni dell'editor. Continuare? +dialog.replace_blocks.builder.catalog.note;Controlla solo suggerimenti e proprietà; gli ID non vengono convertiti. Se l'editor contiene dati, il cambio chiede conferma e poi cancella il contenuto. +dialog.replace_blocks.builder.catalog.source_unknown;Source "%s" is not in the Java %s catalogue; it will still be accepted as entered. +dialog.replace_blocks.builder.catalog.target_unknown;Target "%s" is not in the Java %s catalogue; it will still be accepted, but verify that the target world supports this ID. +dialog.replace_blocks.builder.preset.persist_failed;Could not write the configuration; the preset change was rolled back. +dialog.replace_blocks.builder.preset;Predefinito +dialog.replace_blocks.builder.preset.prompt;Scegli predefinito +dialog.replace_blocks.builder.preset.apply;Applica predefinito +dialog.replace_blocks.builder.preset.save;Salva predefinito +dialog.replace_blocks.builder.preset.delete;Elimina predefinito +dialog.replace_blocks.builder.preset.title;Predefiniti ReplaceBlocks +dialog.replace_blocks.builder.preset.save.title;Salva predefinito ReplaceBlocks +dialog.replace_blocks.builder.preset.save.header;Salva le regole generate come predefinito riutilizzabile dell'editor. +dialog.replace_blocks.builder.preset.save.name;Nome predefinito +dialog.replace_blocks.builder.preset.name_empty;Inserisci un nome per il predefinito. +dialog.replace_blocks.builder.preset.builtin_locked;I nomi dei predefiniti integrati non possono essere sovrascritti. +dialog.replace_blocks.builder.preset.overwrite_confirm;Un predefinito chiamato "%s" esiste già. Sovrascriverlo? +dialog.replace_blocks.builder.preset.delete_confirm;Eliminare il predefinito "%s"? +dialog.replace_blocks.builder.preset.replace_confirm;Caricare questo predefinito sostituirà le regole e l'input in corso dell'editor. +dialog.replace_blocks.builder.preset.saved;Predefinito "%s" salvato. +dialog.replace_blocks.builder.preset.already_filled;Questo predefinito è già presente nell'elenco delle regole. +dialog.replace_blocks.builder.discard.title;Scartare le modifiche dell'editor? +dialog.replace_blocks.builder.discard.header;Scartare le modifiche effettuate in questo editor? Il campo ReplaceBlocks manterrà il valore precedente all'apertura. +dialog.replace_blocks.builder.discard.action;Scarta modifiche +dialog.replace_blocks.builder.continue_editing.action;Continua a modificare +dialog.replace_blocks.builder.preset.air_to_stone;Aria -> pietra +dialog.replace_blocks.builder.preset.fluids_to_air;Fluidi -> aria +dialog.replace_blocks.builder.preset.logs_leaves_to_air;Tronchi/foglie -> aria +dialog.replace_blocks.builder.preset.ores_to_stone;Minerali -> pietra +dialog.replace_blocks.builder.preset.containers_to_air;Contenitori con NBT extra -> aria +dialog.replace_blocks.builder.preset.warning_air;La sostituzione dell'aria può creare sezioni mancanti o rade. Prima visualizza l'anteprima su una piccola selezione copiata. +dialog.replace_blocks.builder.preset.warning_containers;Il predefinito contenitori corrisponde solo alle posizioni con NBT extra presente, ma la sostituzione può rimuovere i contenuti salvati come bauli e barili. Prima visualizza l'anteprima su un mondo copiato. +dialog.replace_blocks.builder.edit_rule;Carica regola +dialog.replace_blocks.builder.property.all;tutto +dialog.replace_blocks.builder.help.button;Aiuto +dialog.replace_blocks.builder.help.title;Guida dell'editor ReplaceBlocks +dialog.replace_blocks.builder.help.nbt.title;Condizione NBT extra +dialog.replace_blocks.builder.help.nbt.intro;I NBT extra sono dati di entità blocco memorizzati in una posizione, come testo dei cartelli, oggetti nei contenitori, progresso della fornace o comandi dei blocchi comandi. Questa opzione verifica solo se la posizione origine ha tali dati; non ne ispeziona il contenuto. +dialog.replace_blocks.builder.help.nbt.any;NBT extra: qualsiasi – corrisponde per nome blocco e proprietà, indipendentemente dai dati di entità blocco. Per blocchi normali, o quando scartare i dati extra esistenti è accettabile. +dialog.replace_blocks.builder.help.nbt.present;NBT extra: presente – corrisponde solo alle posizioni che hanno già dati di entità blocco. Usalo per prendere di mira intenzionalmente bauli, barili, cartelli, fornaci, spawner o blocchi dati simili; genera tile(...). +dialog.replace_blocks.builder.help.nbt.absent;NBT extra: assente – corrisponde solo alle posizioni senza dati di entità blocco. Usalo per evitare il contenuto dei contenitori, il testo dei cartelli e dati simili, o per ripulire blocchi anomali con lo stesso nome ma senza entità; genera no_tile(...). +dialog.replace_blocks.builder.help.nbt.note;Questa impostazione filtra solo il lato origine. Se la destinazione ha bisogno di SNBT di entità blocco, continua a usare l'input di testo avanzato. +dialog.replace_blocks.builder.help.biome.title;Condizione bioma +dialog.replace_blocks.builder.help.biome.intro;Il filtro bioma controlla il bioma in ogni posizione di blocco candidata. Nei chunk moderni 1.18+, un valore di bioma copre un'area di 4×4×4 blocchi, quindi i blocchi vicini in quella cella condividono la stessa condizione di bioma. +dialog.replace_blocks.builder.help.biome.syntax;Lascia vuoto il campo Bioma dell'editor per non applicare restrizioni di bioma. Inserisci un ID bioma o più ID separati da punto e virgola; le regole generate usano biome(..., source). +dialog.replace_blocks.validation.source_empty;Inserisci un ID del blocco di origine. +dialog.replace_blocks.validation.target_empty;Inserisci un ID del blocco di destinazione. +dialog.replace_blocks.validation.source_unknown;Blocco di origine sconosciuto "%s". +dialog.replace_blocks.validation.target_unknown;Blocco di destinazione sconosciuto "%s". +dialog.replace_blocks.validation.source_format;L'ID del blocco di origine deve avere la forma minecraft:stone o modid:block_name. +dialog.replace_blocks.validation.target_format;L'ID del blocco di destinazione deve avere la forma minecraft:dirt o modid:block_name. +dialog.replace_blocks.validation.missing_equals;Ogni regola ReplaceBlocks richiede from=to. +dialog.replace_blocks.validation.state_snbt;Lo SNBT dello stato del blocco deve essere un compound valido, ad esempio {Name:"minecraft:stone"}. +dialog.replace_blocks.validation.tile_empty;Dopo ; manca lo SNBT dell'entità blocco. +dialog.replace_blocks.validation.tile_snbt;Lo SNBT dell'entità blocco deve essere un compound valido. +dialog.replace_blocks.validation.trailing;Testo imprevisto dopo questa regola. Separa le regole con virgole. +dialog.replace_blocks.validation.target_quote;Al blocco di destinazione tra virgolette manca la virgoletta di chiusura. +dialog.replace_blocks.validation.quoted_target_ambiguous;I blocchi di destinazione tra virgolette sono fragili prima di un'altra regola o di uno SNBT dell'entità blocco. Usa invece {Name:"modid:block"}. +dialog.replace_blocks.validation.source_regex;L'origine "%s" viene trattata come espressione regolare Java durante la ricerca dei blocchi. +dialog.replace_blocks.validation.source_mode_wrapper;I wrapper della modalità origine devono essere literal(...), regex(...), props(...), tile(...) o no_tile(...). +dialog.replace_blocks.validation.source_literal;L'origine literal(...) deve contenere un ID blocco valido. Origine non valida: "%s". +dialog.replace_blocks.validation.source_regex_syntax;L'origine regex(...) deve contenere un'espressione regolare Java valida. +dialog.replace_blocks.validation.source_props;L'origine props(...) deve contenere SNBT dello stato del blocco con Name e almeno una proprietà selezionata. +dialog.replace_blocks.validation.source_y_range;L'origine y(...) deve usare min..max con almeno un limite intero, ad esempio y(-64..64, literal(minecraft:stone)). +dialog.replace_blocks.validation.source_biome;L'origine biome(...) deve usare ID bioma validi separati da punto e virgola, seguiti da un'espressione di origine, ad esempio biome(minecraft:plains, literal(minecraft:stone)). +dialog.change_nbt.query_invalid;Invalid change query: %s +dialog.change_nbt.replace_blocks_query_quote;In the advanced query field, wrap ReplaceBlocks values in double quotes, for example ReplaceBlocks = "minecraft:stone=minecraft:dirt". +dialog.replace_blocks.preview.button;Anteprima +dialog.replace_blocks.preview.title;Anteprima ReplaceBlocks +dialog.replace_blocks.preview.no_field;Inserisci un valore ReplaceBlocks valido prima di eseguire l'anteprima. +dialog.replace_blocks.preview.result;Simulazione completata.\nRegioni analizzate: %d\nChunk analizzati: %d\nChunk interessati: %d\nSezioni interessate: %d\nBlocchi corrispondenti: %d\nEntità blocco da aggiungere: %d\nEntità blocco da rimuovere: %d\nEntità blocco da aggiornare: %d +dialog.replace_blocks.preview.rules;Corrispondenze delle regole: +dialog.replace_blocks.preview.rule;#%d [%s] %s -> %s: %d +dialog.replace_blocks.preview.warning_air;La sostituzione dell'aria può completare sezioni mancanti prima della sostituzione. L'anteprima ha contato %d sezioni d'aria mancanti o incomplete. +dialog.replace_blocks.preview.warning_overlap;%d posizioni di blocchi hanno corrisposto a più di una regola. I conteggi per regola includono ogni corrispondenza, quindi la loro somma può superare i blocchi corrispondenti. +dialog.replace_blocks.preview.warning_tile;La sostituzione di entità blocco può aggiungere, rimuovere o aggiornare entità blocco. Prova su mondi copiati prima di applicarla. +dialog.replace_blocks.preview.warning_light;L'attuale implementazione ReplaceBlocks può rimuovere gli array di luce da %d sezioni elaborate. +dialog.replace_blocks.preview.warning_adjacent_relight;La modifica reale può aggiornare i flag di ricalcolo della luce in un massimo di %d chunk adiacenti fuori dalla selezione; in tali chunk non viene sostituito alcun blocco. +dialog.replace_blocks.preview.warning_heightmaps;Durante la modifica reale, le mappe di altezza vengono ricalcolate per %d chunk interessati. +dialog.replace_blocks.preview.warning_unsupported;L'anteprima non è implementata per %d chunk analizzati di versioni vecchie o non supportate. +dialog.replace_blocks.preview.warning_errors;L'anteprima ha saltato %d chunk e %d regioni a causa di errori: +dialog.progress.title.preview_replace_blocks;Anteprima ReplaceBlocks +dialog.replace_blocks.validation.source_state_snbt;Lo SNBT dello stato del blocco di origine deve essere un compound valido con un valore Name. diff --git a/src/main/resources/lang/ja_JP.txt b/src/main/resources/lang/ja_JP.txt index 88785dbb..5ff0636f 100644 --- a/src/main/resources/lang/ja_JP.txt +++ b/src/main/resources/lang/ja_JP.txt @@ -109,7 +109,7 @@ dialog.goto.title;入力した座標に移動 dialog.confirmation.question;よろしいですか? dialog.delete_chunks_confirmation.title;チャンクを削除 dialog.delete_chunks_confirmation.header_short;不明な数のチャンクを削除しようとしています -dialog.delete_chunks_confirmation.header_verbose;%d個のチャンクを削除しようとしています +dialog.delete_chunks_confirmation.header_verbose;%d個のチャンクを削除しようとしています dialog.image_export_confirmation.title;画像としてエクスポート dialog.image_export_confirmation.header_short;比率が不明な画像を作成しようとしています dialog.image_export_confirmation.header_verbose;サイズが%dx%dの画像を作成しようとしています @@ -213,4 +213,110 @@ dialog.unsaved_script.header;保存されていないスクリプトがありま dialog.request_number.title.array_length;配列の長さ dialog.request_number.title.enter_number;価値 button.cancel;キャンセル -button.ok;OK \ No newline at end of file +button.ok;OK +dialog.replace_blocks.builder.button;ビルダー +dialog.replace_blocks.builder.title;ReplaceBlocks ビルダー +dialog.replace_blocks.builder.from;置換元ブロック +dialog.replace_blocks.builder.to;置換先ブロック +dialog.replace_blocks.builder.add_rule;ルールを追加 +dialog.replace_blocks.builder.delete_rule;ルールを削除 +dialog.replace_blocks.builder.rules;ルール +dialog.replace_blocks.builder.rules.empty;まだルールがありません。元ブロックと対象ブロックを入力して「ルールを追加」をクリックしてください。 +dialog.replace_blocks.builder.result;生成された ReplaceBlocks 式 +dialog.replace_blocks.builder.invalid;ブロックIDまたは生成されたルールが無効です。 +dialog.replace_blocks.builder.duplicate;このルールは既に存在します。 +dialog.replace_blocks.builder.empty;少なくとも1つのルールを追加してください。 +dialog.replace_blocks.builder.advanced;置換元と置換先には、Name を含む完全なブロック状態 SNBT を入力できます。その他の複雑なルールは ReplaceBlocks 式を直接編集してください。 +dialog.replace_blocks.builder.tile_source.any;追加 NBT: 任意 +dialog.replace_blocks.builder.tile_source.require;追加 NBT: あり +dialog.replace_blocks.builder.tile_source.exclude;追加 NBT: なし +dialog.replace_blocks.builder.y_min;最小 Y +dialog.replace_blocks.builder.y_max;最大 Y +dialog.replace_blocks.builder.biome;バイオーム +dialog.replace_blocks.builder.biome.prompt;minecraft:plains;minecraft:forest +dialog.replace_blocks.builder.source_constraints;ソース制限(任意) +dialog.replace_blocks.builder.catalog;Block catalogue +dialog.replace_blocks.builder.catalog_switch.title;Switch block catalogue +dialog.replace_blocks.builder.catalog_switch.message;%s から %s に切り替えると、ビルダー内のすべてのルール、編集中の入力、選択内容が破棄されます。続行しますか? +dialog.replace_blocks.builder.catalog.note;ブロック候補とプロパティだけを制御し、IDは変換しません。ビルダーに内容がある場合、切り替え前に確認し、確認後に内容を消去します。 +dialog.replace_blocks.builder.catalog.source_unknown;Source "%s" is not in the Java %s catalogue; it will still be accepted as entered. +dialog.replace_blocks.builder.catalog.target_unknown;Target "%s" is not in the Java %s catalogue; it will still be accepted, but verify that the target world supports this ID. +dialog.replace_blocks.builder.preset.persist_failed;Could not write the configuration; the preset change was rolled back. +dialog.replace_blocks.builder.preset;プリセット +dialog.replace_blocks.builder.preset.prompt;プリセットを選択 +dialog.replace_blocks.builder.preset.apply;プリセットを反映 +dialog.replace_blocks.builder.preset.save;プリセットを保存 +dialog.replace_blocks.builder.preset.delete;プリセットを削除 +dialog.replace_blocks.builder.preset.title;ReplaceBlocks プリセット +dialog.replace_blocks.builder.preset.save.title;ReplaceBlocks プリセットの保存 +dialog.replace_blocks.builder.preset.save.header;生成されたルールを再利用可能なビルダープリセットとして保存します。 +dialog.replace_blocks.builder.preset.save.name;プリセット名 +dialog.replace_blocks.builder.preset.name_empty;プリセット名を入力してください。 +dialog.replace_blocks.builder.preset.builtin_locked;組み込みプリセット名は上書きできません。 +dialog.replace_blocks.builder.preset.overwrite_confirm;「%s」という名前のプリセットが既に存在します。上書きしますか? +dialog.replace_blocks.builder.preset.delete_confirm;プリセット「%s」を削除しますか? +dialog.replace_blocks.builder.preset.replace_confirm;このプリセットを読み込むと、現在のビルダーのルールと編集中の入力が置き換えられます。 +dialog.replace_blocks.builder.preset.saved;プリセット「%s」を保存しました。 +dialog.replace_blocks.builder.preset.already_filled;このプリセットは既にルールリストに含まれています。 +dialog.replace_blocks.builder.discard.title;ビルダーの変更を破棄しますか? +dialog.replace_blocks.builder.discard.header;このビルダーでの変更を破棄しますか?ReplaceBlocks 欄はビルダーを開く前の値を保持します。 +dialog.replace_blocks.builder.discard.action;変更を破棄 +dialog.replace_blocks.builder.continue_editing.action;編集を続ける +dialog.replace_blocks.builder.preset.air_to_stone;空気 -> 石 +dialog.replace_blocks.builder.preset.fluids_to_air;液体 -> 空気 +dialog.replace_blocks.builder.preset.logs_leaves_to_air;原木/葉 -> 空気 +dialog.replace_blocks.builder.preset.ores_to_stone;鉱石 -> 石 +dialog.replace_blocks.builder.preset.containers_to_air;追加 NBT 付きコンテナ -> 空気 +dialog.replace_blocks.builder.preset.warning_air;空気の置換は欠落セクションや疎なセクションを作成する可能性があります。最初に小さなコピー選択範囲でプレビューしてください。 +dialog.replace_blocks.builder.preset.warning_containers;コンテナプリセットは追加 NBT が存在する位置のみを対象としますが、置換によりチェストや樽などの中身が削除される可能性があります。最初にコピーワールドでプレビューしてください。 +dialog.replace_blocks.builder.edit_rule;ルールを読み込み +dialog.replace_blocks.builder.property.all;すべて +dialog.replace_blocks.builder.help.button;ヘルプ +dialog.replace_blocks.builder.help.title;ReplaceBlocks ビルダー ヘルプ +dialog.replace_blocks.builder.help.nbt.title;追加 NBT の条件 +dialog.replace_blocks.builder.help.nbt.intro;追加 NBT とは、看板の文字、チェストの中身、かまどの進捗、コマンドブロックのコマンドなど、ブロックの位置に保存されるブロックエンティティデータです。このオプションは置換元の位置にそのようなデータがあるかどうかのみを判定し、内容の検査は行いません。 +dialog.replace_blocks.builder.help.nbt.any;追加 NBT: 任意 - ブロックエンティティデータの有無にかかわらず、ブロック名とプロパティで照合します。通常のブロックや、既存の追加データを破棄しても問題ない場合に使用します。 +dialog.replace_blocks.builder.help.nbt.present;追加 NBT: あり - 既にブロックエンティティデータを持つ位置のみに照合します。チェスト、樽、看板、かまど、スポナーなどのデータブロックを意図的に対象とする場合に使用します。tile(...) を生成します。 +dialog.replace_blocks.builder.help.nbt.absent;追加 NBT: なし - ブロックエンティティデータを持たない位置のみに照合します。チェストの中身や看板の文字などのデータを避ける場合、またはエンティティのない同名の異常なブロックを除去する場合に使用します。no_tile(...) を生成します。 +dialog.replace_blocks.builder.help.nbt.note;この設定は置換元側のみをフィルタリングします。置換先にブロックエンティティ SNBT が必要な場合は、高度なテキスト入力をお使いください。 +dialog.replace_blocks.builder.help.biome.title;バイオーム条件 +dialog.replace_blocks.builder.help.biome.intro;バイオームフィルタリングは、各候補ブロック位置のバイオームをチェックします。1.18 以降のチャンクでは、1つのバイオーム値が 4x4x4 ブロック領域をカバーするため、そのセル内の近接ブロックは同じバイオーム条件を共有します。 +dialog.replace_blocks.builder.help.biome.syntax;バイオーム制限をしない場合は、ビルダーのバイオームフィールドを空のままにしてください。1つのバイオーム ID、またはセミコロン区切りで複数の ID を入力します。生成されるルールは biome(..., source) を使用します。 +dialog.replace_blocks.validation.source_empty;置換元ブロック ID を入力してください。 +dialog.replace_blocks.validation.target_empty;置換先ブロック ID を入力してください。 +dialog.replace_blocks.validation.source_unknown;不明な置換元ブロック「%s」です。 +dialog.replace_blocks.validation.target_unknown;不明な置換先ブロック「%s」です。 +dialog.replace_blocks.validation.source_format;置換元ブロック ID は minecraft:stone または modid:block_name の形式にしてください。 +dialog.replace_blocks.validation.target_format;置換先ブロック ID は minecraft:dirt または modid:block_name の形式にしてください。 +dialog.replace_blocks.validation.missing_equals;各 ReplaceBlocks ルールには from=to が必要です。 +dialog.replace_blocks.validation.state_snbt;ブロック状態 SNBT は {Name:"minecraft:stone"} のような有効な compound である必要があります。 +dialog.replace_blocks.validation.tile_empty;; の後にブロックエンティティ SNBT がありません。 +dialog.replace_blocks.validation.tile_snbt;ブロックエンティティ SNBT は有効な compound である必要があります。 +dialog.replace_blocks.validation.trailing;このルールの後に予期しないテキストがあります。ルールはカンマで区切ってください。 +dialog.replace_blocks.validation.target_quote;引用符で囲んだ置換先ブロックに閉じ引用符がありません。 +dialog.replace_blocks.validation.quoted_target_ambiguous;引用符で囲んだ置換先ブロックは、次のルールやブロックエンティティ SNBT の前では不安定です。代わりに {Name:"modid:block"} を使用してください。 +dialog.replace_blocks.validation.source_regex;ブロック照合時、置換元「%s」は Java 正規表現として扱われます。 +dialog.replace_blocks.validation.source_mode_wrapper;置換元モードのラッパーは literal(...)、regex(...)、props(...)、tile(...)、no_tile(...) のいずれかである必要があります。 +dialog.replace_blocks.validation.source_literal;literal(...) の置換元には有効なブロック ID が必要です。無効な置換元: 「%s」。 +dialog.replace_blocks.validation.source_regex_syntax;regex(...) の置換元には有効な Java 正規表現が必要です。 +dialog.replace_blocks.validation.source_props;props(...) の置換元には Name と少なくとも1つの選択済みプロパティを含むブロック状態 SNBT が必要です。 +dialog.replace_blocks.validation.source_y_range;y(...) の置換元は、少なくとも片方が整数の min..max を使用する必要があります。例: y(-64..64, literal(minecraft:stone))。 +dialog.replace_blocks.validation.source_biome;biome(...) の置換元には、セミコロン区切りの有効なバイオーム ID と、その後に置換元式が必要です。例: biome(minecraft:plains, literal(minecraft:stone))。 +dialog.change_nbt.query_invalid;Invalid change query: %s +dialog.change_nbt.replace_blocks_query_quote;In the advanced query field, wrap ReplaceBlocks values in double quotes, for example ReplaceBlocks = "minecraft:stone=minecraft:dirt". +dialog.replace_blocks.preview.button;プレビュー +dialog.replace_blocks.preview.title;ReplaceBlocks プレビュー +dialog.replace_blocks.preview.no_field;プレビューを実行する前に有効な ReplaceBlocks 値を入力してください。 +dialog.replace_blocks.preview.result;試行実行が完了しました。\n走査したリージョン: %d\n走査したチャンク: %d\n影響を受けるチャンク: %d\n影響を受けるセクション: %d\n一致したブロック: %d\n追加されるブロックエンティティ: %d\n削除されるブロックエンティティ: %d\n更新されるブロックエンティティ: %d +dialog.replace_blocks.preview.rules;ルールの一致: +dialog.replace_blocks.preview.rule;#%d [%s] %s -> %s: %d +dialog.replace_blocks.preview.warning_air;空気の置換により、置換前に欠落セクションが補完される場合があります。プレビューでは欠落または不完全な空気セクションを %d 個数えました。 +dialog.replace_blocks.preview.warning_overlap;%d 個のブロック位置が複数のルールに一致しました。ルールごとの数には各一致が含まれるため、合計が一致ブロック数より多くなる場合があります。 +dialog.replace_blocks.preview.warning_tile;ブロックエンティティの置換は、ブロックエンティティを追加、削除、更新することがあります。適用前にコピーしたワールドでテストしてください。 +dialog.replace_blocks.preview.warning_light;現在の ReplaceBlocks 実装では、処理した %d 個のセクションから光源配列が削除される可能性があります。 +dialog.replace_blocks.preview.warning_adjacent_relight;実際の変更では、選択範囲外にある最大 %d 個の隣接チャンクの再照明フラグが更新される場合があります。そこではブロックは置換されません。 +dialog.replace_blocks.preview.warning_heightmaps;実際の変更では、影響を受ける %d 個のチャンクの高さマップが再計算されます。 +dialog.replace_blocks.preview.warning_unsupported;古い、または未対応のバージョンに属する走査済みチャンク %d 個では、プレビューは実装されていません。 +dialog.replace_blocks.preview.warning_errors;エラーにより、プレビューは %d 個のチャンクと %d 個のリージョンをスキップしました: +dialog.progress.title.preview_replace_blocks;ReplaceBlocks プレビュー +dialog.replace_blocks.validation.source_state_snbt;置換元ブロック状態 SNBT は Name 値を含む有効な compound である必要があります。 diff --git a/src/main/resources/lang/ko_KR.txt b/src/main/resources/lang/ko_KR.txt index 1432f901..ba7796a2 100644 --- a/src/main/resources/lang/ko_KR.txt +++ b/src/main/resources/lang/ko_KR.txt @@ -213,4 +213,110 @@ dialog.unsaved_script.header;저장되지 않은 스크립트가 있습니다. dialog.request_number.title.array_length;배열의 길이 dialog.request_number.title.enter_number;값 button.cancel;취소 -button.ok;확인 \ No newline at end of file +button.ok;확인 +dialog.replace_blocks.builder.button;빌더 +dialog.replace_blocks.builder.title;ReplaceBlocks 빌더 +dialog.replace_blocks.builder.from;원본 블록 +dialog.replace_blocks.builder.to;대상 블록 +dialog.replace_blocks.builder.add_rule;규칙 추가 +dialog.replace_blocks.builder.delete_rule;규칙 삭제 +dialog.replace_blocks.builder.rules;규칙 +dialog.replace_blocks.builder.rules.empty;아직 추가된 규칙이 없습니다. 원본 및 대상 블록을 입력한 다음 규칙 추가를 클릭하세요. +dialog.replace_blocks.builder.result;생성된 ReplaceBlocks 표현식 +dialog.replace_blocks.builder.invalid;블록 ID 또는 생성된 규칙이 유효하지 않습니다. +dialog.replace_blocks.builder.duplicate;이 규칙은 이미 존재합니다. +dialog.replace_blocks.builder.empty;하나 이상의 규칙을 추가하세요. +dialog.replace_blocks.builder.advanced;원본 및 대상 블록에는 Name이 포함된 전체 블록 상태 SNBT를 입력할 수 있습니다. 그 밖의 복잡한 규칙은 ReplaceBlocks 표현식을 직접 편집하세요. +dialog.replace_blocks.builder.tile_source.any;추가 NBT: 상관없음 +dialog.replace_blocks.builder.tile_source.require;추가 NBT: 있음 +dialog.replace_blocks.builder.tile_source.exclude;추가 NBT: 없음 +dialog.replace_blocks.builder.y_min;최소 Y +dialog.replace_blocks.builder.y_max;최대 Y +dialog.replace_blocks.builder.biome;생물 군계 +dialog.replace_blocks.builder.biome.prompt;minecraft:plains;minecraft:forest +dialog.replace_blocks.builder.source_constraints;소스 제한(선택 사항) +dialog.replace_blocks.builder.catalog;Block catalogue +dialog.replace_blocks.builder.catalog_switch.title;Switch block catalogue +dialog.replace_blocks.builder.catalog_switch.message;%s에서 %s(으)로 전환하면 빌더의 모든 규칙, 작성 중인 입력 및 선택 항목이 삭제됩니다. 계속하시겠습니까? +dialog.replace_blocks.builder.catalog.note;블록 제안과 속성만 제어하며 ID는 변환하지 않습니다. 빌더에 내용이 있으면 전환 전에 확인하고, 확인 후 내용을 지웁니다. +dialog.replace_blocks.builder.catalog.source_unknown;Source "%s" is not in the Java %s catalogue; it will still be accepted as entered. +dialog.replace_blocks.builder.catalog.target_unknown;Target "%s" is not in the Java %s catalogue; it will still be accepted, but verify that the target world supports this ID. +dialog.replace_blocks.builder.preset.persist_failed;Could not write the configuration; the preset change was rolled back. +dialog.replace_blocks.builder.preset;프리셋 +dialog.replace_blocks.builder.preset.prompt;프리셋 선택 +dialog.replace_blocks.builder.preset.apply;프리셋 적용 +dialog.replace_blocks.builder.preset.save;프리셋 저장 +dialog.replace_blocks.builder.preset.delete;프리셋 삭제 +dialog.replace_blocks.builder.preset.title;ReplaceBlocks 프리셋 +dialog.replace_blocks.builder.preset.save.title;ReplaceBlocks 프리셋 저장 +dialog.replace_blocks.builder.preset.save.header;생성된 규칙을 재사용 가능한 빌더 프리셋으로 저장합니다. +dialog.replace_blocks.builder.preset.save.name;프리셋 이름 +dialog.replace_blocks.builder.preset.name_empty;프리셋 이름을 입력하세요. +dialog.replace_blocks.builder.preset.builtin_locked;내장 프리셋 이름은 덮어쓸 수 없습니다. +dialog.replace_blocks.builder.preset.overwrite_confirm;이미 "%s" 이름의 프리셋이 존재합니다. 덮어쓰시겠습니까? +dialog.replace_blocks.builder.preset.delete_confirm;프리셋 "%s"을(를) 삭제하시겠습니까? +dialog.replace_blocks.builder.preset.replace_confirm;이 프리셋을 불러오면 현재 빌더의 규칙과 작성 중인 입력이 대체됩니다. +dialog.replace_blocks.builder.preset.saved;프리셋 "%s"이(가) 저장되었습니다. +dialog.replace_blocks.builder.preset.already_filled;이 프리셋은 이미 규칙 목록에 있습니다. +dialog.replace_blocks.builder.discard.title;빌더 변경 사항을 취소하시겠습니까? +dialog.replace_blocks.builder.discard.header;이 빌더에서 변경한 내용을 버리시겠습니까? ReplaceBlocks 입력란은 빌더를 열기 전 값을 유지합니다. +dialog.replace_blocks.builder.discard.action;변경 사항 버리기 +dialog.replace_blocks.builder.continue_editing.action;계속 편집 +dialog.replace_blocks.builder.preset.air_to_stone;공기 -> 돌 +dialog.replace_blocks.builder.preset.fluids_to_air;액체 -> 공기 +dialog.replace_blocks.builder.preset.logs_leaves_to_air;원목/잎 -> 공기 +dialog.replace_blocks.builder.preset.ores_to_stone;광석 -> 돌 +dialog.replace_blocks.builder.preset.containers_to_air;추가 NBT가 있는 컨테이너 -> 공기 +dialog.replace_blocks.builder.preset.warning_air;공기 치환은 누락되거나 희소한 섹션을 만들 수 있습니다. 먼저 작은 복사 선택 영역에서 미리 보기하세요. +dialog.replace_blocks.builder.preset.warning_containers;컨테이너 프리셋은 추가 NBT가 있는 위치만 일치시키지만, 치환 시 상자나 통 등의 저장 내용이 제거될 수 있습니다. 먼저 복사된 세계에서 미리 보기하세요. +dialog.replace_blocks.builder.edit_rule;규칙 불러오기 +dialog.replace_blocks.builder.property.all;전체 +dialog.replace_blocks.builder.help.button;도움말 +dialog.replace_blocks.builder.help.title;ReplaceBlocks 빌더 도움말 +dialog.replace_blocks.builder.help.nbt.title;추가 NBT 조건 +dialog.replace_blocks.builder.help.nbt.intro;추가 NBT는 표지판 문자, 상자 아이템, 화로 진행도, 명령 블록 명령 등 블록 위치에 저장된 블록 개체 데이터입니다. 이 옵션은 원본 위치에 그러한 데이터가 있는지만 확인하며, 내용은 검사하지 않습니다. +dialog.replace_blocks.builder.help.nbt.any;추가 NBT: 상관없음 - 블록 개체 데이터 유무와 관계없이 블록 이름과 속성으로 일치시킵니다. 일반 블록이나 기존 추가 데이터를 폐기해도 문제없을 때 사용합니다. +dialog.replace_blocks.builder.help.nbt.present;추가 NBT: 있음 - 이미 블록 개체 데이터가 있는 위치만 일치시킵니다. 상자, 통, 표지판, 화로, 스포너 등의 데이터 블록을 의도적으로 대상으로 할 때 사용합니다. tile(...)을 생성합니다. +dialog.replace_blocks.builder.help.nbt.absent;추가 NBT: 없음 - 블록 개체 데이터가 없는 위치만 일치시킵니다. 상자 내용물이나 표지판 문자 등의 데이터를 피하거나, 개체 없는 동명 비정상 블록을 정리할 때 사용합니다. no_tile(...)을 생성합니다. +dialog.replace_blocks.builder.help.nbt.note;이 설정은 원본 측만 필터링합니다. 대상 측에 블록 개체 SNBT가 필요한 경우 고급 텍스트 입력을 계속 사용하세요. +dialog.replace_blocks.builder.help.biome.title;생물 군계 조건 +dialog.replace_blocks.builder.help.biome.intro;생물 군계 필터링은 각 후보 블록 위치의 생물 군계를 확인합니다. 1.18 이상 청크에서는 하나의 생물 군계 값이 4x4x4 블록 영역을 담당하므로, 해당 셀 내의 인접 블록들은 같은 생물 군계 조건을 공유합니다. +dialog.replace_blocks.builder.help.biome.syntax;생물 군계 제한을 하지 않으려면 빌더의 생물 군계 필드를 비워 두세요. 하나의 생물 군계 ID 또는 세미콜론으로 구분된 여러 ID를 입력합니다. 생성된 규칙은 biome(..., source)를 사용합니다. +dialog.replace_blocks.validation.source_empty;원본 블록 ID를 입력하세요. +dialog.replace_blocks.validation.target_empty;대상 블록 ID를 입력하세요. +dialog.replace_blocks.validation.source_unknown;알 수 없는 원본 블록 "%s"입니다. +dialog.replace_blocks.validation.target_unknown;알 수 없는 대상 블록 "%s"입니다. +dialog.replace_blocks.validation.source_format;원본 블록 ID는 minecraft:stone 또는 modid:block_name 형식이어야 합니다. +dialog.replace_blocks.validation.target_format;대상 블록 ID는 minecraft:dirt 또는 modid:block_name 형식이어야 합니다. +dialog.replace_blocks.validation.missing_equals;각 ReplaceBlocks 규칙에는 from=to가 필요합니다. +dialog.replace_blocks.validation.state_snbt;블록 상태 SNBT는 {Name:"minecraft:stone"}과 같은 유효한 compound여야 합니다. +dialog.replace_blocks.validation.tile_empty;; 뒤에 블록 개체 SNBT가 없습니다. +dialog.replace_blocks.validation.tile_snbt;블록 개체 SNBT는 유효한 compound여야 합니다. +dialog.replace_blocks.validation.trailing;이 규칙 뒤에 예기치 않은 텍스트가 있습니다. 규칙은 쉼표로 구분하세요. +dialog.replace_blocks.validation.target_quote;따옴표로 묶인 대상 블록에 닫는 따옴표가 없습니다. +dialog.replace_blocks.validation.quoted_target_ambiguous;따옴표로 묶인 대상 블록은 다른 규칙이나 블록 개체 SNBT 앞에서 취약할 수 있습니다. 대신 {Name:"modid:block"}을 사용하세요. +dialog.replace_blocks.validation.source_regex;블록을 일치시킬 때 원본 "%s"은(는) Java 정규식으로 처리됩니다. +dialog.replace_blocks.validation.source_mode_wrapper;원본 모드 래퍼는 literal(...), regex(...), props(...), tile(...) 또는 no_tile(...)이어야 합니다. +dialog.replace_blocks.validation.source_literal;literal(...) 원본에는 유효한 블록 ID가 있어야 합니다. 잘못된 원본: "%s". +dialog.replace_blocks.validation.source_regex_syntax;regex(...) 원본에는 유효한 Java 정규식이 있어야 합니다. +dialog.replace_blocks.validation.source_props;props(...) 원본에는 Name과 하나 이상의 선택된 속성이 있는 블록 상태 SNBT가 있어야 합니다. +dialog.replace_blocks.validation.source_y_range;y(...) 원본은 적어도 하나의 정수 경계를 포함한 min..max를 사용해야 합니다. 예: y(-64..64, literal(minecraft:stone)). +dialog.replace_blocks.validation.source_biome;biome(...) 원본은 세미콜론으로 구분된 유효한 생물 군계 ID와 그 뒤의 원본 표현식을 사용해야 합니다. 예: biome(minecraft:plains, literal(minecraft:stone)). +dialog.change_nbt.query_invalid;Invalid change query: %s +dialog.change_nbt.replace_blocks_query_quote;In the advanced query field, wrap ReplaceBlocks values in double quotes, for example ReplaceBlocks = "minecraft:stone=minecraft:dirt". +dialog.replace_blocks.preview.button;미리 보기 +dialog.replace_blocks.preview.title;ReplaceBlocks 미리 보기 +dialog.replace_blocks.preview.no_field;미리 보기를 실행하기 전에 유효한 ReplaceBlocks 값을 입력하세요. +dialog.replace_blocks.preview.result;시험 실행을 완료했습니다.\n스캔한 지역: %d\n스캔한 청크: %d\n영향받는 청크: %d\n영향받는 섹션: %d\n일치한 블록: %d\n추가할 블록 개체: %d\n제거할 블록 개체: %d\n업데이트할 블록 개체: %d +dialog.replace_blocks.preview.rules;규칙 일치: +dialog.replace_blocks.preview.rule;#%d [%s] %s -> %s: %d +dialog.replace_blocks.preview.warning_air;공기 치환으로 인해 치환 전에 누락된 섹션이 완성될 수 있습니다. 미리 보기에서 누락되거나 불완전한 공기 섹션을 %d개 확인했습니다. +dialog.replace_blocks.preview.warning_overlap;%d개의 블록 위치가 둘 이상의 규칙과 일치했습니다. 규칙별 수에는 각 일치가 포함되므로 합계가 일치한 블록 수보다 많을 수 있습니다. +dialog.replace_blocks.preview.warning_tile;블록 개체 치환은 블록 개체를 추가, 제거 또는 업데이트할 수 있습니다. 적용하기 전에 복사된 세계에서 테스트하세요. +dialog.replace_blocks.preview.warning_light;현재 ReplaceBlocks 구현은 처리한 %d개 섹션에서 광원 배열을 제거할 수 있습니다. +dialog.replace_blocks.preview.warning_adjacent_relight;실제 변경 시 선택 영역 밖의 인접 청크 최대 %d개에서 재조명 플래그를 업데이트할 수 있으며, 해당 청크의 블록은 교체되지 않습니다. +dialog.replace_blocks.preview.warning_heightmaps;실제 변경 시 영향을 받는 청크 %d개의 높이 맵을 다시 계산합니다. +dialog.replace_blocks.preview.warning_unsupported;이전 버전이나 지원되지 않는 버전의 스캔한 청크 %d개에는 미리 보기가 구현되어 있지 않습니다. +dialog.replace_blocks.preview.warning_errors;오류로 인해 미리 보기에서 청크 %d개와 지역 %d개를 건너뛰었습니다: +dialog.progress.title.preview_replace_blocks;ReplaceBlocks 미리 보기 +dialog.replace_blocks.validation.source_state_snbt;원본 블록 상태 SNBT는 Name 값을 가진 유효한 compound여야 합니다. diff --git a/src/main/resources/lang/nl_NL.txt b/src/main/resources/lang/nl_NL.txt index 3fe294ef..f6dee80f 100644 --- a/src/main/resources/lang/nl_NL.txt +++ b/src/main/resources/lang/nl_NL.txt @@ -213,4 +213,110 @@ dialog.unsaved_script.header;Er is een niet-opgeslagen script. dialog.request_number.title.array_length;Lengte van de array dialog.request_number.title.enter_number;Waarde button.cancel;Annuleren -button.ok;OK \ No newline at end of file +button.ok;OK +dialog.replace_blocks.builder.button;Bouwer +dialog.replace_blocks.builder.title;ReplaceBlocks Bouwer +dialog.replace_blocks.builder.from;Bronblok +dialog.replace_blocks.builder.to;Doelblok +dialog.replace_blocks.builder.add_rule;Regel toevoegen +dialog.replace_blocks.builder.delete_rule;Regel verwijderen +dialog.replace_blocks.builder.rules;Regels +dialog.replace_blocks.builder.rules.empty;Er zijn nog geen regels. Vul de bron- en doelblokken in en klik daarna op ‘Regel toevoegen’. +dialog.replace_blocks.builder.result;Gegenereerde ReplaceBlocks-expressie +dialog.replace_blocks.builder.invalid;Ongeldige blok-ID of gegenereerde regel. +dialog.replace_blocks.builder.duplicate;Deze regel bestaat al. +dialog.replace_blocks.builder.empty;Voeg minstens één regel toe. +dialog.replace_blocks.builder.advanced;Bron- en doelblokken accepteren volledige blokstatus-SNBT met Name. Bewerk voor andere complexe regels rechtstreeks de ReplaceBlocks-expressie. +dialog.replace_blocks.builder.tile_source.any;Extra NBT: onbeperkt +dialog.replace_blocks.builder.tile_source.require;Extra NBT: aanwezig +dialog.replace_blocks.builder.tile_source.exclude;Extra NBT: afwezig +dialog.replace_blocks.builder.y_min;Min Y +dialog.replace_blocks.builder.y_max;Max Y +dialog.replace_blocks.builder.biome;Bioom +dialog.replace_blocks.builder.biome.prompt;minecraft:plains;minecraft:forest +dialog.replace_blocks.builder.source_constraints;Bronbeperkingen (optioneel) +dialog.replace_blocks.builder.catalog;Block catalogue +dialog.replace_blocks.builder.catalog_switch.title;Switch block catalogue +dialog.replace_blocks.builder.catalog_switch.message;Bij het wisselen van %s naar %s worden alle regels, conceptinvoer en selecties van de Bouwer verwijderd. Doorgaan? +dialog.replace_blocks.builder.catalog.note;Beheert alleen suggesties en eigenschappen; ID’s worden niet omgezet. Als de Bouwer inhoud bevat, wordt vóór het wisselen om bevestiging gevraagd en daarna de inhoud gewist. +dialog.replace_blocks.builder.catalog.source_unknown;Source "%s" is not in the Java %s catalogue; it will still be accepted as entered. +dialog.replace_blocks.builder.catalog.target_unknown;Target "%s" is not in the Java %s catalogue; it will still be accepted, but verify that the target world supports this ID. +dialog.replace_blocks.builder.preset.persist_failed;Could not write the configuration; the preset change was rolled back. +dialog.replace_blocks.builder.preset;Voorinstelling +dialog.replace_blocks.builder.preset.prompt;Kies voorinstelling +dialog.replace_blocks.builder.preset.apply;Voorinstelling toepassen +dialog.replace_blocks.builder.preset.save;Voorinstelling opslaan +dialog.replace_blocks.builder.preset.delete;Voorinstelling verwijderen +dialog.replace_blocks.builder.preset.title;ReplaceBlocks voorinstellingen +dialog.replace_blocks.builder.preset.save.title;ReplaceBlocks voorinstelling opslaan +dialog.replace_blocks.builder.preset.save.header;Genereerde regels opslaan als herbruikbare Bouwer-voorinstelling. +dialog.replace_blocks.builder.preset.save.name;Naam voorinstelling +dialog.replace_blocks.builder.preset.name_empty;Voer een naam in voor de voorinstelling. +dialog.replace_blocks.builder.preset.builtin_locked;Ingebouwde voorinstellingen kunnen niet worden overschreven. +dialog.replace_blocks.builder.preset.overwrite_confirm;Er bestaat al een voorinstelling met de naam "%s". Overschrijven? +dialog.replace_blocks.builder.preset.delete_confirm;Voorinstelling "%s" verwijderen? +dialog.replace_blocks.builder.preset.replace_confirm;Het laden van deze voorinstelling vervangt de huidige Bouwer-regels en conceptinvoer. +dialog.replace_blocks.builder.preset.saved;Voorinstelling "%s" opgeslagen. +dialog.replace_blocks.builder.preset.already_filled;Deze voorinstelling is al aanwezig in de regellijst. +dialog.replace_blocks.builder.discard.title;Bouwer-wijzigingen annuleren? +dialog.replace_blocks.builder.discard.header;De wijzigingen in deze Bouwer verwerpen? Het ReplaceBlocks-veld behoudt de waarde van vóór het openen. +dialog.replace_blocks.builder.discard.action;Wijzigingen verwerpen +dialog.replace_blocks.builder.continue_editing.action;Doorgaan met bewerken +dialog.replace_blocks.builder.preset.air_to_stone;Lucht -> steen +dialog.replace_blocks.builder.preset.fluids_to_air;Vloeistoffen -> lucht +dialog.replace_blocks.builder.preset.logs_leaves_to_air;Stammen/bladeren -> lucht +dialog.replace_blocks.builder.preset.ores_to_stone;Ertsen -> steen +dialog.replace_blocks.builder.preset.containers_to_air;Containers met extra NBT -> lucht +dialog.replace_blocks.builder.preset.warning_air;Luchtvervanging kan ontbrekende of schaarse secties creëren. Bekijk eerst een voorbeeld op een kleine gekopieerde selectie. +dialog.replace_blocks.builder.preset.warning_containers;De containervoorinstelling komt alleen overeen met posities waar extra NBT aanwezig is, maar vervanging kan opgeslagen inhoud zoals kisten en vaten verwijderen. Bekijk eerst een voorbeeld op een gekopieerde wereld. +dialog.replace_blocks.builder.edit_rule;Regel laden +dialog.replace_blocks.builder.property.all;alle +dialog.replace_blocks.builder.help.button;Help +dialog.replace_blocks.builder.help.title;Hulp voor ReplaceBlocks-bouwer +dialog.replace_blocks.builder.help.nbt.title;Extra NBT voorwaarde +dialog.replace_blocks.builder.help.nbt.intro;Extra NBT zijn blokentiteitsgegevens die op een blokpositie zijn opgeslagen, zoals bordtekst, containerinhoud, ovenvoortgang of opdrachtblokopdrachten. Deze optie controleert alleen of de bronpositie die gegevens heeft; de inhoud wordt niet geïnspecteerd. +dialog.replace_blocks.builder.help.nbt.any;Extra NBT: onbeperkt – overeenkomst op bloknaam en eigenschappen, ongeacht blokentiteitsgegevens. Voor normale blokken, of wanneer het weggooien van bestaande extra gegevens acceptabel is. +dialog.replace_blocks.builder.help.nbt.present;Extra NBT: aanwezig – alleen overeenkomst met posities die al blokentiteitsgegevens hebben. Gebruik dit om bewust kisten, vaten, borden, ovens, spawners of vergelijkbare gegevensblokken te targeten; genereert tile(...). +dialog.replace_blocks.builder.help.nbt.absent;Extra NBT: afwezig – alleen overeenkomst met posities zonder blokentiteitsgegevens. Gebruik dit om containerinhoud, bordtekst en vergelijkbare gegevens te vermijden, of om ongebruikelijke gelijknamige blokken zonder entiteiten op te schonen; genereert no_tile(...). +dialog.replace_blocks.builder.help.nbt.note;Deze instelling filtert alleen de bronzijde. Als de doelzijde blokentiteit-SNBT nodig heeft, blijf dan geavanceerde tekstinvoer gebruiken. +dialog.replace_blocks.builder.help.biome.title;Bioomvoorwaarde +dialog.replace_blocks.builder.help.biome.intro;Bioomfiltering controleert het bioom op elke kandidaat-blokpositie. In moderne 1.18+ chunks dekt één bioomwaarde een 4×4×4 blokgebied, dus nabije blokken in die cel delen dezelfde bioomvoorwaarde. +dialog.replace_blocks.builder.help.biome.syntax;Laat het bioomveld van de Bouwer leeg voor geen bioombeperking. Voer één bioom-ID in of meerdere ID's gescheiden door puntkomma's; gegenereerde regels gebruiken biome(..., source). +dialog.replace_blocks.validation.source_empty;Voer een bronblok-ID in. +dialog.replace_blocks.validation.target_empty;Voer een doelblok-ID in. +dialog.replace_blocks.validation.source_unknown;Onbekend bronblok "%s". +dialog.replace_blocks.validation.target_unknown;Onbekend doelblok "%s". +dialog.replace_blocks.validation.source_format;De bronblok-ID moet eruitzien als minecraft:stone of modid:block_name. +dialog.replace_blocks.validation.target_format;De doelblok-ID moet eruitzien als minecraft:dirt of modid:block_name. +dialog.replace_blocks.validation.missing_equals;Elke ReplaceBlocks-regel heeft from=to nodig. +dialog.replace_blocks.validation.state_snbt;Blokstatus-SNBT moet een geldige compound zijn, bijvoorbeeld {Name:"minecraft:stone"}. +dialog.replace_blocks.validation.tile_empty;Na ; ontbreekt blokentiteit-SNBT. +dialog.replace_blocks.validation.tile_snbt;Blokentiteit-SNBT moet een geldige compound zijn. +dialog.replace_blocks.validation.trailing;Onverwachte tekst na deze regel. Scheid regels met komma's. +dialog.replace_blocks.validation.target_quote;Het doelblok tussen aanhalingstekens mist een sluitend aanhalingsteken. +dialog.replace_blocks.validation.quoted_target_ambiguous;Doelblokken tussen aanhalingstekens zijn kwetsbaar vóór een volgende regel of blokentiteit-SNBT. Gebruik in plaats daarvan {Name:"modid:block"}. +dialog.replace_blocks.validation.source_regex;Bron "%s" wordt als Java-reguliere expressie behandeld bij het vergelijken van blokken. +dialog.replace_blocks.validation.source_mode_wrapper;Bronmodus-wrappers moeten literal(...), regex(...), props(...), tile(...) of no_tile(...) zijn. +dialog.replace_blocks.validation.source_literal;De literal(...)-bron moet een geldige blok-ID bevatten. Ongeldige bron: "%s". +dialog.replace_blocks.validation.source_regex_syntax;De regex(...)-bron moet een geldige Java-reguliere expressie bevatten. +dialog.replace_blocks.validation.source_props;De props(...)-bron moet blokstatus-SNBT bevatten met Name en minstens één geselecteerde eigenschap. +dialog.replace_blocks.validation.source_y_range;De y(...)-bron moet min..max gebruiken met minstens één gehele grens, bijvoorbeeld y(-64..64, literal(minecraft:stone)). +dialog.replace_blocks.validation.source_biome;De biome(...)-bron moet geldige bioom-ID's gebruiken, gescheiden door puntkomma's en gevolgd door een bronexpressie, bijvoorbeeld biome(minecraft:plains, literal(minecraft:stone)). +dialog.change_nbt.query_invalid;Invalid change query: %s +dialog.change_nbt.replace_blocks_query_quote;In the advanced query field, wrap ReplaceBlocks values in double quotes, for example ReplaceBlocks = "minecraft:stone=minecraft:dirt". +dialog.replace_blocks.preview.button;Voorbeeld +dialog.replace_blocks.preview.title;ReplaceBlocks-voorbeeld +dialog.replace_blocks.preview.no_field;Voer een geldige ReplaceBlocks-waarde in voordat je het voorbeeld uitvoert. +dialog.replace_blocks.preview.result;Proefdraaien voltooid.\nGescande regio's: %d\nGescande chunks: %d\nGetroffen chunks: %d\nGetroffen secties: %d\nOvereenkomende blokken: %d\nToe te voegen blokentiteiten: %d\nTe verwijderen blokentiteiten: %d\nBij te werken blokentiteiten: %d +dialog.replace_blocks.preview.rules;Regelovereenkomsten: +dialog.replace_blocks.preview.rule;#%d [%s] %s -> %s: %d +dialog.replace_blocks.preview.warning_air;Luchtvervanging kan vóór de vervanging ontbrekende secties aanvullen. Het voorbeeld telde %d ontbrekende of onvolledige luchtsecties. +dialog.replace_blocks.preview.warning_overlap;%d blokposities voldeden aan meer dan één regel. De tellingen per regel bevatten elke overeenkomst, dus de som kan hoger zijn dan het aantal overeenkomende blokken. +dialog.replace_blocks.preview.warning_tile;Het vervangen van blokentiteiten kan blokentiteiten toevoegen, verwijderen of bijwerken. Test op gekopieerde werelden voordat je toepast. +dialog.replace_blocks.preview.warning_light;De huidige ReplaceBlocks-implementatie kan lichtarrays uit %d verwerkte secties verwijderen. +dialog.replace_blocks.preview.warning_adjacent_relight;De echte wijziging kan relight-markeringen bijwerken in maximaal %d aangrenzende chunks buiten de selectie; daar worden geen blokken vervangen. +dialog.replace_blocks.preview.warning_heightmaps;Tijdens de echte wijziging worden de hoogtekaarten van %d getroffen chunks opnieuw berekend. +dialog.replace_blocks.preview.warning_unsupported;Voorbeeld is niet geïmplementeerd voor %d gescande chunks van oudere of niet-ondersteunde versies. +dialog.replace_blocks.preview.warning_errors;Het voorbeeld sloeg vanwege fouten %d chunks en %d regio's over: +dialog.progress.title.preview_replace_blocks;ReplaceBlocks-voorbeeld +dialog.replace_blocks.validation.source_state_snbt;Bronblokstatus-SNBT moet een geldige compound met een Name-waarde zijn. diff --git a/src/main/resources/lang/pl_PL.txt b/src/main/resources/lang/pl_PL.txt index 60a79a95..646cdabd 100644 --- a/src/main/resources/lang/pl_PL.txt +++ b/src/main/resources/lang/pl_PL.txt @@ -213,4 +213,110 @@ dialog.unsaved_script.header;Istnieje niezapisany skrypt. dialog.request_number.title.array_length;Długość tablicy dialog.request_number.title.enter_number;Wartość button.cancel;Anuluj -button.ok;OK \ No newline at end of file +button.ok;OK +dialog.replace_blocks.builder.button;Konstruktor +dialog.replace_blocks.builder.title;Konstruktor ReplaceBlocks +dialog.replace_blocks.builder.from;Blok źródłowy +dialog.replace_blocks.builder.to;Blok docelowy +dialog.replace_blocks.builder.add_rule;Dodaj regułę +dialog.replace_blocks.builder.delete_rule;Usuń regułę +dialog.replace_blocks.builder.rules;Reguły +dialog.replace_blocks.builder.rules.empty;Nie dodano jeszcze reguł. Wypełnij bloki źródłowy i docelowy, a następnie kliknij „Dodaj regułę”. +dialog.replace_blocks.builder.result;Wygenerowane wyrażenie ReplaceBlocks +dialog.replace_blocks.builder.invalid;Nieprawidłowy ID bloku lub wygenerowana reguła. +dialog.replace_blocks.builder.duplicate;Ta reguła już istnieje. +dialog.replace_blocks.builder.empty;Dodaj co najmniej jedną regułę. +dialog.replace_blocks.builder.advanced;Bloki źródłowy i docelowy akceptują pełny SNBT stanu bloku zawierający Name. Inne złożone reguły można edytować bezpośrednio w wyrażeniu ReplaceBlocks. +dialog.replace_blocks.builder.tile_source.any;Dodatkowe NBT: dowolne +dialog.replace_blocks.builder.tile_source.require;Dodatkowe NBT: obecne +dialog.replace_blocks.builder.tile_source.exclude;Dodatkowe NBT: brak +dialog.replace_blocks.builder.y_min;Min. Y +dialog.replace_blocks.builder.y_max;Maks. Y +dialog.replace_blocks.builder.biome;Biom +dialog.replace_blocks.builder.biome.prompt;minecraft:plains;minecraft:forest +dialog.replace_blocks.builder.source_constraints;Ograniczenia źródła (opcjonalne) +dialog.replace_blocks.builder.catalog;Block catalogue +dialog.replace_blocks.builder.catalog_switch.title;Switch block catalogue +dialog.replace_blocks.builder.catalog_switch.message;Przełączenie z %s na %s odrzuci wszystkie reguły, wersje robocze i wybory Konstruktora. Kontynuować? +dialog.replace_blocks.builder.catalog.note;Steruje tylko sugestiami bloków i właściwościami; identyfikatory nie są konwertowane. Jeśli Konstruktor zawiera dane, przełączenie wymaga potwierdzenia, a następnie czyści zawartość. +dialog.replace_blocks.builder.catalog.source_unknown;Source "%s" is not in the Java %s catalogue; it will still be accepted as entered. +dialog.replace_blocks.builder.catalog.target_unknown;Target "%s" is not in the Java %s catalogue; it will still be accepted, but verify that the target world supports this ID. +dialog.replace_blocks.builder.preset.persist_failed;Could not write the configuration; the preset change was rolled back. +dialog.replace_blocks.builder.preset;Ustawienie wstępne +dialog.replace_blocks.builder.preset.prompt;Wybierz ustawienie +dialog.replace_blocks.builder.preset.apply;Zastosuj ustawienie +dialog.replace_blocks.builder.preset.save;Zapisz ustawienie +dialog.replace_blocks.builder.preset.delete;Usuń ustawienie +dialog.replace_blocks.builder.preset.title;Ustawienia wstępne ReplaceBlocks +dialog.replace_blocks.builder.preset.save.title;Zapisz ustawienie wstępne ReplaceBlocks +dialog.replace_blocks.builder.preset.save.header;Zapisz wygenerowane reguły jako ustawienie wstępne Konstruktora do ponownego użycia. +dialog.replace_blocks.builder.preset.save.name;Nazwa ustawienia +dialog.replace_blocks.builder.preset.name_empty;Wprowadź nazwę ustawienia. +dialog.replace_blocks.builder.preset.builtin_locked;Nie można nadpisać wbudowanych nazw ustawień. +dialog.replace_blocks.builder.preset.overwrite_confirm;Ustawienie o nazwie „%s” już istnieje. Nadpisać? +dialog.replace_blocks.builder.preset.delete_confirm;Usunąć ustawienie „%s"? +dialog.replace_blocks.builder.preset.replace_confirm;Załadowanie tego ustawienia zastąpi bieżące reguły Konstruktora i wprowadzane dane. +dialog.replace_blocks.builder.preset.saved;Ustawienie „%s" zapisane. +dialog.replace_blocks.builder.preset.already_filled;To ustawienie jest już obecne na liście reguł. +dialog.replace_blocks.builder.discard.title;Odrzucić zmiany w Konstruktorze? +dialog.replace_blocks.builder.discard.header;Odrzucić zmiany wprowadzone w tym Konstruktorze? Pole ReplaceBlocks zachowa wartość sprzed jego otwarcia. +dialog.replace_blocks.builder.discard.action;Odrzuć zmiany +dialog.replace_blocks.builder.continue_editing.action;Kontynuuj edycję +dialog.replace_blocks.builder.preset.air_to_stone;Powietrze -> kamień +dialog.replace_blocks.builder.preset.fluids_to_air;Płyny -> powietrze +dialog.replace_blocks.builder.preset.logs_leaves_to_air;Pnie/liście -> powietrze +dialog.replace_blocks.builder.preset.ores_to_stone;Rudy -> kamień +dialog.replace_blocks.builder.preset.containers_to_air;Pojemniki z dodatkowym NBT -> powietrze +dialog.replace_blocks.builder.preset.warning_air;Zastępowanie powietrza może tworzyć brakujące lub rzadkie sekcje. Najpierw podejrzyj na małym skopiowanym zaznaczeniu. +dialog.replace_blocks.builder.preset.warning_containers;Ustawienie pojemników dopasowuje tylko pozycje z dodatkowym NBT, ale zastąpienie może usunąć przechowywaną zawartość, taką jak skrzynie i beczki. Najpierw podejrzyj na skopiowanym świecie. +dialog.replace_blocks.builder.edit_rule;Wczytaj regułę +dialog.replace_blocks.builder.property.all;wszystko +dialog.replace_blocks.builder.help.button;Pomoc +dialog.replace_blocks.builder.help.title;Pomoc Konstruktora ReplaceBlocks +dialog.replace_blocks.builder.help.nbt.title;Warunek dodatkowego NBT +dialog.replace_blocks.builder.help.nbt.intro;Dodatkowe NBT to dane encji bloku zapisane w pozycji bloku, takie jak tekst tabliczek, zawartość pojemników, postęp pieca czy polecenia bloku poleceń. Ta opcja sprawdza tylko, czy pozycja źródłowa ma takie dane; nie kontroluje ich zawartości. +dialog.replace_blocks.builder.help.nbt.any;Dodatkowe NBT: dowolne – dopasowanie według nazwy bloku i właściwości, niezależnie od danych encji bloku. Dla zwykłych bloków lub gdy odrzucenie istniejących dodatkowych danych jest dopuszczalne. +dialog.replace_blocks.builder.help.nbt.present;Dodatkowe NBT: obecne – dopasowanie tylko do pozycji, które już mają dane encji bloku. Użyj, aby celowo kierować na skrzynie, beczki, tabliczki, piece, spawnery lub podobne bloki danych; generuje tile(...). +dialog.replace_blocks.builder.help.nbt.absent;Dodatkowe NBT: brak – dopasowanie tylko do pozycji bez danych encji bloku. Użyj, aby uniknąć zawartości pojemników, tekstu tabliczek i podobnych danych, lub aby wyczyścić nietypowe bloki o tej samej nazwie bez encji; generuje no_tile(...). +dialog.replace_blocks.builder.help.nbt.note;To ustawienie filtruje tylko stronę źródłową. Jeśli strona docelowa potrzebuje SNBT encji bloku, nadal używaj zaawansowanego wprowadzania tekstu. +dialog.replace_blocks.builder.help.biome.title;Warunek biomu +dialog.replace_blocks.builder.help.biome.intro;Filtrowanie biomu sprawdza biom w każdej pozycji bloku kandydującego. W nowoczesnych chunkach 1.18+ jedna wartość biomu obejmuje obszar 4×4×4 bloków, więc pobliskie bloki w tej komórce mają ten sam warunek biomu. +dialog.replace_blocks.builder.help.biome.syntax;Pozostaw pole biomu Konstruktora puste, aby nie stosować ograniczenia biomu. Wprowadź jeden identyfikator biomu lub kilka oddzielonych średnikami; wygenerowane reguły używają biome(..., source). +dialog.replace_blocks.validation.source_empty;Wprowadź ID bloku źródłowego. +dialog.replace_blocks.validation.target_empty;Wprowadź ID bloku docelowego. +dialog.replace_blocks.validation.source_unknown;Nieznany blok źródłowy „%s”. +dialog.replace_blocks.validation.target_unknown;Nieznany blok docelowy „%s”. +dialog.replace_blocks.validation.source_format;ID bloku źródłowego musi mieć postać minecraft:stone lub modid:block_name. +dialog.replace_blocks.validation.target_format;ID bloku docelowego musi mieć postać minecraft:dirt lub modid:block_name. +dialog.replace_blocks.validation.missing_equals;Każda reguła ReplaceBlocks wymaga from=to. +dialog.replace_blocks.validation.state_snbt;SNBT stanu bloku musi być prawidłowym compoundem, na przykład {Name:"minecraft:stone"}. +dialog.replace_blocks.validation.tile_empty;Po ; brakuje SNBT encji bloku. +dialog.replace_blocks.validation.tile_snbt;SNBT encji bloku musi być prawidłowym compoundem. +dialog.replace_blocks.validation.trailing;Nieoczekiwany tekst po tej regule. Reguły oddzielaj przecinkami. +dialog.replace_blocks.validation.target_quote;Docelowemu blokowi w cudzysłowie brakuje zamykającego cudzysłowu. +dialog.replace_blocks.validation.quoted_target_ambiguous;Docelowe bloki w cudzysłowie są podatne na błędy przed kolejną regułą lub SNBT encji bloku. Zamiast tego użyj {Name:"modid:block"}. +dialog.replace_blocks.validation.source_regex;Źródło „%s” jest traktowane jako wyrażenie regularne Java podczas dopasowywania bloków. +dialog.replace_blocks.validation.source_mode_wrapper;Opakowania trybu źródłowego muszą być literal(...), regex(...), props(...), tile(...) lub no_tile(...). +dialog.replace_blocks.validation.source_literal;Źródło literal(...) musi zawierać prawidłowy ID bloku. Nieprawidłowe źródło: „%s”. +dialog.replace_blocks.validation.source_regex_syntax;Źródło regex(...) musi zawierać prawidłowe wyrażenie regularne Java. +dialog.replace_blocks.validation.source_props;Źródło props(...) musi zawierać SNBT stanu bloku z Name i co najmniej jedną wybraną właściwością. +dialog.replace_blocks.validation.source_y_range;Źródło y(...) musi używać min..max z co najmniej jedną granicą całkowitą, na przykład y(-64..64, literal(minecraft:stone)). +dialog.replace_blocks.validation.source_biome;Źródło biome(...) musi używać prawidłowych ID biomów rozdzielonych średnikami, a po nich wyrażenia źródłowego, na przykład biome(minecraft:plains, literal(minecraft:stone)). +dialog.change_nbt.query_invalid;Invalid change query: %s +dialog.change_nbt.replace_blocks_query_quote;In the advanced query field, wrap ReplaceBlocks values in double quotes, for example ReplaceBlocks = "minecraft:stone=minecraft:dirt". +dialog.replace_blocks.preview.button;Podgląd +dialog.replace_blocks.preview.title;Podgląd ReplaceBlocks +dialog.replace_blocks.preview.no_field;Wprowadź prawidłową wartość ReplaceBlocks przed uruchomieniem podglądu. +dialog.replace_blocks.preview.result;Próba na sucho zakończona.\nPrzeskanowane regiony: %d\nPrzeskanowane chunki: %d\nDotknięte chunki: %d\nDotknięte sekcje: %d\nDopasowane bloki: %d\nEncje bloku do dodania: %d\nEncje bloku do usunięcia: %d\nEncje bloku do aktualizacji: %d +dialog.replace_blocks.preview.rules;Dopasowania reguł: +dialog.replace_blocks.preview.rule;#%d [%s] %s -> %s: %d +dialog.replace_blocks.preview.warning_air;Zastępowanie powietrza może przed zastąpieniem uzupełnić brakujące sekcje. Podgląd zliczył %d brakujących lub niekompletnych sekcji powietrza. +dialog.replace_blocks.preview.warning_overlap;%d pozycji bloków dopasowało się do więcej niż jednej reguły. Liczniki poszczególnych reguł uwzględniają każde dopasowanie, więc ich suma może być większa niż liczba dopasowanych bloków. +dialog.replace_blocks.preview.warning_tile;Zastępowanie encji bloku może dodawać, usuwać lub aktualizować encje bloku. Przetestuj na skopiowanych światach przed zastosowaniem. +dialog.replace_blocks.preview.warning_light;Bieżąca implementacja ReplaceBlocks może usunąć tablice światła z %d przetworzonych sekcji. +dialog.replace_blocks.preview.warning_adjacent_relight;Rzeczywista zmiana może zaktualizować znaczniki ponownego oświetlenia w maksymalnie %d sąsiednich chunkach poza zaznaczeniem; żadne bloki nie są tam zastępowane. +dialog.replace_blocks.preview.warning_heightmaps;Podczas rzeczywistej zmiany mapy wysokości są przeliczane dla %d zmienionych chunków. +dialog.replace_blocks.preview.warning_unsupported;Podgląd nie jest zaimplementowany dla %d przeskanowanych chunków ze starszych lub nieobsługiwanych wersji. +dialog.replace_blocks.preview.warning_errors;Podgląd pominął %d chunków i %d regionów z powodu błędów: +dialog.progress.title.preview_replace_blocks;Podgląd ReplaceBlocks +dialog.replace_blocks.validation.source_state_snbt;SNBT stanu bloku źródłowego musi być prawidłowym compoundem z wartością Name. diff --git a/src/main/resources/lang/pt_BR.txt b/src/main/resources/lang/pt_BR.txt index a441833a..c7f67181 100644 --- a/src/main/resources/lang/pt_BR.txt +++ b/src/main/resources/lang/pt_BR.txt @@ -213,4 +213,110 @@ dialog.unsaved_script.header;Há um script não salvo. dialog.request_number.title.array_length;Comprimento da matriz dialog.request_number.title.enter_number;Valor button.cancel;Cancelar -button.ok;OK \ No newline at end of file +button.ok;OK +dialog.replace_blocks.builder.button;Construtor +dialog.replace_blocks.builder.title;Construtor ReplaceBlocks +dialog.replace_blocks.builder.from;Bloco de origem +dialog.replace_blocks.builder.to;Bloco de destino +dialog.replace_blocks.builder.add_rule;Adicionar regra +dialog.replace_blocks.builder.delete_rule;Excluir regra +dialog.replace_blocks.builder.rules;Regras +dialog.replace_blocks.builder.rules.empty;Ainda não há regras. Preencha os blocos de origem e destino e clique em “Adicionar regra”. +dialog.replace_blocks.builder.result;Expressão ReplaceBlocks gerada +dialog.replace_blocks.builder.invalid;ID de bloco ou regra gerada inválido. +dialog.replace_blocks.builder.duplicate;Esta regra já existe. +dialog.replace_blocks.builder.empty;Adicione pelo menos uma regra. +dialog.replace_blocks.builder.advanced;Os blocos de origem e destino aceitam SNBT completo de estado de bloco contendo Name. Para outras regras complexas, edite diretamente a expressão ReplaceBlocks. +dialog.replace_blocks.builder.tile_source.any;NBT extra: qualquer +dialog.replace_blocks.builder.tile_source.require;NBT extra: presente +dialog.replace_blocks.builder.tile_source.exclude;NBT extra: ausente +dialog.replace_blocks.builder.y_min;Y mín +dialog.replace_blocks.builder.y_max;Y máx +dialog.replace_blocks.builder.biome;Bioma +dialog.replace_blocks.builder.biome.prompt;minecraft:plains;minecraft:forest +dialog.replace_blocks.builder.source_constraints;Restrições da origem (opcional) +dialog.replace_blocks.builder.catalog;Block catalogue +dialog.replace_blocks.builder.catalog_switch.title;Switch block catalogue +dialog.replace_blocks.builder.catalog_switch.message;Mudar de %s para %s descartará todas as regras, rascunhos e seleções do Construtor. Continuar? +dialog.replace_blocks.builder.catalog.note;Controla apenas sugestões e propriedades; os IDs não são convertidos. Se o Construtor tiver conteúdo, a troca pede confirmação e depois limpa o conteúdo. +dialog.replace_blocks.builder.catalog.source_unknown;Source "%s" is not in the Java %s catalogue; it will still be accepted as entered. +dialog.replace_blocks.builder.catalog.target_unknown;Target "%s" is not in the Java %s catalogue; it will still be accepted, but verify that the target world supports this ID. +dialog.replace_blocks.builder.preset.persist_failed;Could not write the configuration; the preset change was rolled back. +dialog.replace_blocks.builder.preset;Predefinição +dialog.replace_blocks.builder.preset.prompt;Escolher predefinição +dialog.replace_blocks.builder.preset.apply;Aplicar predefinição +dialog.replace_blocks.builder.preset.save;Salvar predefinição +dialog.replace_blocks.builder.preset.delete;Excluir predefinição +dialog.replace_blocks.builder.preset.title;Predefinições ReplaceBlocks +dialog.replace_blocks.builder.preset.save.title;Salvar predefinição ReplaceBlocks +dialog.replace_blocks.builder.preset.save.header;Salvar as regras geradas como uma predefinição reutilizável do Construtor. +dialog.replace_blocks.builder.preset.save.name;Nome da predefinição +dialog.replace_blocks.builder.preset.name_empty;Digite um nome para a predefinição. +dialog.replace_blocks.builder.preset.builtin_locked;Nomes de predefinições integradas não podem ser sobrescritos. +dialog.replace_blocks.builder.preset.overwrite_confirm;Já existe uma predefinição com o nome "%s". Sobrescrevê-la? +dialog.replace_blocks.builder.preset.delete_confirm;Excluir predefinição "%s"? +dialog.replace_blocks.builder.preset.replace_confirm;Carregar esta predefinição substituirá as regras atuais e a entrada em edição do Construtor. +dialog.replace_blocks.builder.preset.saved;Predefinição "%s" salva. +dialog.replace_blocks.builder.preset.already_filled;Esta predefinição já está presente na lista de regras. +dialog.replace_blocks.builder.discard.title;Descartar alterações do Construtor? +dialog.replace_blocks.builder.discard.header;Descartar as alterações feitas neste Construtor? O campo ReplaceBlocks manterá o valor anterior à abertura. +dialog.replace_blocks.builder.discard.action;Descartar alterações +dialog.replace_blocks.builder.continue_editing.action;Continuar editando +dialog.replace_blocks.builder.preset.air_to_stone;Ar -> pedra +dialog.replace_blocks.builder.preset.fluids_to_air;Fluidos -> ar +dialog.replace_blocks.builder.preset.logs_leaves_to_air;Troncos/folhas -> ar +dialog.replace_blocks.builder.preset.ores_to_stone;Minérios -> pedra +dialog.replace_blocks.builder.preset.containers_to_air;Contêineres com NBT extra -> ar +dialog.replace_blocks.builder.preset.warning_air;A substituição de ar pode criar seções ausentes ou esparsas. Visualize primeiro em uma pequena seleção copiada. +dialog.replace_blocks.builder.preset.warning_containers;A predefinição de contêineres corresponde apenas a posições com NBT extra presente, mas a substituição pode remover conteúdos armazenados como baús e barris. Visualize primeiro em um mundo copiado. +dialog.replace_blocks.builder.edit_rule;Carregar regra +dialog.replace_blocks.builder.property.all;tudo +dialog.replace_blocks.builder.help.button;Ajuda +dialog.replace_blocks.builder.help.title;Ajuda do Construtor ReplaceBlocks +dialog.replace_blocks.builder.help.nbt.title;Condição de NBT extra +dialog.replace_blocks.builder.help.nbt.intro;NBT extra são dados de entidade de bloco armazenados em uma posição, como texto de placas, itens de contêineres, progresso de fornalha ou comandos de bloco de comando. Esta opção apenas verifica se a posição de origem possui esses dados; ela não inspeciona o conteúdo. +dialog.replace_blocks.builder.help.nbt.any;NBT extra: qualquer – corresponde por nome de bloco e propriedades, independentemente dos dados de entidade de bloco. Para blocos normais, ou quando descartar dados extra existentes é aceitável. +dialog.replace_blocks.builder.help.nbt.present;NBT extra: presente – corresponde apenas a posições que já possuem dados de entidade de bloco. Use para alvejar intencionalmente baús, barris, placas, fornalhas, spawners ou blocos de dados semelhantes; gera tile(...). +dialog.replace_blocks.builder.help.nbt.absent;NBT extra: ausente – corresponde apenas a posições sem dados de entidade de bloco. Use para evitar conteúdo de contêineres, texto de placas e dados semelhantes, ou para limpar blocos anômalos de mesmo nome sem entidades; gera no_tile(...). +dialog.replace_blocks.builder.help.nbt.note;Esta configuração filtra apenas o lado da origem. Se o destino precisar de SNBT de entidade de bloco, continue usando a entrada de texto avançada. +dialog.replace_blocks.builder.help.biome.title;Condição de bioma +dialog.replace_blocks.builder.help.biome.intro;A filtragem de bioma verifica o bioma em cada posição de bloco candidata. Em chunks modernos 1.18+, um valor de bioma cobre uma área de 4×4×4 blocos, portanto blocos próximos nessa célula compartilham a mesma condição de bioma. +dialog.replace_blocks.builder.help.biome.syntax;Deixe o campo Bioma do Construtor vazio para nenhuma restrição de bioma. Insira um ID de bioma ou vários IDs separados por ponto e vírgula; as regras geradas usam biome(..., source). +dialog.replace_blocks.validation.source_empty;Insira um ID de bloco de origem. +dialog.replace_blocks.validation.target_empty;Insira um ID de bloco de destino. +dialog.replace_blocks.validation.source_unknown;Bloco de origem desconhecido "%s". +dialog.replace_blocks.validation.target_unknown;Bloco de destino desconhecido "%s". +dialog.replace_blocks.validation.source_format;O ID do bloco de origem deve ter o formato minecraft:stone ou modid:block_name. +dialog.replace_blocks.validation.target_format;O ID do bloco de destino deve ter o formato minecraft:dirt ou modid:block_name. +dialog.replace_blocks.validation.missing_equals;Cada regra ReplaceBlocks precisa de from=to. +dialog.replace_blocks.validation.state_snbt;O SNBT de estado de bloco deve ser um compound válido, por exemplo {Name:"minecraft:stone"}. +dialog.replace_blocks.validation.tile_empty;Falta o SNBT da entidade de bloco após ;. +dialog.replace_blocks.validation.tile_snbt;O SNBT da entidade de bloco deve ser um compound válido. +dialog.replace_blocks.validation.trailing;Há texto inesperado após esta regra. Separe as regras com vírgulas. +dialog.replace_blocks.validation.target_quote;Falta a aspa de fechamento do bloco de destino entre aspas. +dialog.replace_blocks.validation.quoted_target_ambiguous;Blocos de destino entre aspas são frágeis antes de outra regra ou SNBT de entidade de bloco. Use {Name:"modid:block"} em vez disso. +dialog.replace_blocks.validation.source_regex;A origem "%s" é tratada como uma expressão regular Java ao corresponder blocos. +dialog.replace_blocks.validation.source_mode_wrapper;Os wrappers do modo de origem devem ser literal(...), regex(...), props(...), tile(...) ou no_tile(...). +dialog.replace_blocks.validation.source_literal;A origem literal(...) deve conter um ID de bloco válido. Origem inválida: "%s". +dialog.replace_blocks.validation.source_regex_syntax;A origem regex(...) deve conter uma expressão regular Java válida. +dialog.replace_blocks.validation.source_props;A origem props(...) deve conter SNBT de estado de bloco com Name e pelo menos uma propriedade selecionada. +dialog.replace_blocks.validation.source_y_range;A origem y(...) deve usar min..max com pelo menos um limite inteiro, por exemplo y(-64..64, literal(minecraft:stone)). +dialog.replace_blocks.validation.source_biome;A origem biome(...) deve usar IDs de bioma válidos separados por ponto e vírgula, seguidos por uma expressão de origem, por exemplo biome(minecraft:plains, literal(minecraft:stone)). +dialog.change_nbt.query_invalid;Invalid change query: %s +dialog.change_nbt.replace_blocks_query_quote;In the advanced query field, wrap ReplaceBlocks values in double quotes, for example ReplaceBlocks = "minecraft:stone=minecraft:dirt". +dialog.replace_blocks.preview.button;Prévia +dialog.replace_blocks.preview.title;Prévia do ReplaceBlocks +dialog.replace_blocks.preview.no_field;Insira um valor ReplaceBlocks válido antes de executar a prévia. +dialog.replace_blocks.preview.result;Simulação concluída.\nRegiões analisadas: %d\nChunks analisados: %d\nChunks afetados: %d\nSeções afetadas: %d\nBlocos correspondentes: %d\nEntidades de bloco a adicionar: %d\nEntidades de bloco a remover: %d\nEntidades de bloco a atualizar: %d +dialog.replace_blocks.preview.rules;Correspondências de regras: +dialog.replace_blocks.preview.rule;#%d [%s] %s -> %s: %d +dialog.replace_blocks.preview.warning_air;A substituição de ar pode completar seções ausentes antes da troca. A prévia contou %d seções de ar ausentes ou incompletas. +dialog.replace_blocks.preview.warning_overlap;%d posições de bloco corresponderam a mais de uma regra. As contagens por regra incluem cada correspondência, portanto a soma pode ser maior que o número de blocos correspondentes. +dialog.replace_blocks.preview.warning_tile;A substituição de entidades de bloco pode adicionar, remover ou atualizar entidades de bloco. Teste em mundos copiados antes de aplicar. +dialog.replace_blocks.preview.warning_light;A implementação atual de ReplaceBlocks pode remover matrizes de luz de %d seções processadas. +dialog.replace_blocks.preview.warning_adjacent_relight;A alteração real pode atualizar os sinalizadores de recálculo de luz em até %d chunks adjacentes fora da seleção; nenhum bloco é substituído neles. +dialog.replace_blocks.preview.warning_heightmaps;Durante a alteração real, os mapas de altura são recalculados para %d chunks afetados. +dialog.replace_blocks.preview.warning_unsupported;A prévia não está implementada para %d chunks analisados de versões antigas ou sem suporte. +dialog.replace_blocks.preview.warning_errors;A prévia ignorou %d chunks e %d regiões devido a erros: +dialog.progress.title.preview_replace_blocks;Prévia do ReplaceBlocks +dialog.replace_blocks.validation.source_state_snbt;O SNBT de estado do bloco de origem deve ser um compound válido com um valor Name. diff --git a/src/main/resources/lang/pt_PT.txt b/src/main/resources/lang/pt_PT.txt index eaea17f8..0d1a8614 100644 --- a/src/main/resources/lang/pt_PT.txt +++ b/src/main/resources/lang/pt_PT.txt @@ -213,4 +213,110 @@ dialog.unsaved_script.header;Há um script não salvo. dialog.request_number.title.array_length;Comprimento da matriz dialog.request_number.title.enter_number;Valor button.cancel;Cancelar -button.ok;OK \ No newline at end of file +button.ok;OK +dialog.replace_blocks.builder.button;Construtor +dialog.replace_blocks.builder.title;Construtor ReplaceBlocks +dialog.replace_blocks.builder.from;Bloco de origem +dialog.replace_blocks.builder.to;Bloco de destino +dialog.replace_blocks.builder.add_rule;Adicionar regra +dialog.replace_blocks.builder.delete_rule;Eliminar regra +dialog.replace_blocks.builder.rules;Regras +dialog.replace_blocks.builder.rules.empty;Ainda não existem regras. Preencha os blocos de origem e destino e clique em “Adicionar regra”. +dialog.replace_blocks.builder.result;Expressão ReplaceBlocks gerada +dialog.replace_blocks.builder.invalid;ID de bloco ou regra gerada inválido. +dialog.replace_blocks.builder.duplicate;Esta regra já existe. +dialog.replace_blocks.builder.empty;Adicione pelo menos uma regra. +dialog.replace_blocks.builder.advanced;Os blocos de origem e destino aceitam SNBT completo de estado de bloco contendo Name. Para outras regras complexas, edite diretamente a expressão ReplaceBlocks. +dialog.replace_blocks.builder.tile_source.any;NBT extra: qualquer +dialog.replace_blocks.builder.tile_source.require;NBT extra: presente +dialog.replace_blocks.builder.tile_source.exclude;NBT extra: ausente +dialog.replace_blocks.builder.y_min;Y mín +dialog.replace_blocks.builder.y_max;Y máx +dialog.replace_blocks.builder.biome;Bioma +dialog.replace_blocks.builder.biome.prompt;minecraft:plains;minecraft:forest +dialog.replace_blocks.builder.source_constraints;Restrições da origem (opcional) +dialog.replace_blocks.builder.catalog;Block catalogue +dialog.replace_blocks.builder.catalog_switch.title;Switch block catalogue +dialog.replace_blocks.builder.catalog_switch.message;Mudar de %s para %s irá descartar todas as regras, rascunhos e seleções do Construtor. Continuar? +dialog.replace_blocks.builder.catalog.note;Controla apenas sugestões e propriedades; os IDs não são convertidos. Se o Construtor tiver conteúdo, a mudança pede confirmação e depois limpa o conteúdo. +dialog.replace_blocks.builder.catalog.source_unknown;Source "%s" is not in the Java %s catalogue; it will still be accepted as entered. +dialog.replace_blocks.builder.catalog.target_unknown;Target "%s" is not in the Java %s catalogue; it will still be accepted, but verify that the target world supports this ID. +dialog.replace_blocks.builder.preset.persist_failed;Could not write the configuration; the preset change was rolled back. +dialog.replace_blocks.builder.preset;Predefinição +dialog.replace_blocks.builder.preset.prompt;Escolher predefinição +dialog.replace_blocks.builder.preset.apply;Aplicar predefinição +dialog.replace_blocks.builder.preset.save;Guardar predefinição +dialog.replace_blocks.builder.preset.delete;Eliminar predefinição +dialog.replace_blocks.builder.preset.title;Predefinições ReplaceBlocks +dialog.replace_blocks.builder.preset.save.title;Guardar predefinição ReplaceBlocks +dialog.replace_blocks.builder.preset.save.header;Guardar as regras geradas como uma predefinição reutilizável do Construtor. +dialog.replace_blocks.builder.preset.save.name;Nome da predefinição +dialog.replace_blocks.builder.preset.name_empty;Introduza um nome para a predefinição. +dialog.replace_blocks.builder.preset.builtin_locked;Os nomes das predefinições integradas não podem ser sobrescritos. +dialog.replace_blocks.builder.preset.overwrite_confirm;Já existe uma predefinição com o nome "%s". Sobrescrevê-la? +dialog.replace_blocks.builder.preset.delete_confirm;Eliminar predefinição "%s"? +dialog.replace_blocks.builder.preset.replace_confirm;Carregar esta predefinição substituirá as regras atuais e a entrada em edição do Construtor. +dialog.replace_blocks.builder.preset.saved;Predefinição "%s" guardada. +dialog.replace_blocks.builder.preset.already_filled;Esta predefinição já está presente na lista de regras. +dialog.replace_blocks.builder.discard.title;Descartar alterações do Construtor? +dialog.replace_blocks.builder.discard.header;Descartar as alterações feitas neste Construtor? O campo ReplaceBlocks manterá o valor anterior à abertura. +dialog.replace_blocks.builder.discard.action;Descartar alterações +dialog.replace_blocks.builder.continue_editing.action;Continuar a editar +dialog.replace_blocks.builder.preset.air_to_stone;Ar -> pedra +dialog.replace_blocks.builder.preset.fluids_to_air;Fluidos -> ar +dialog.replace_blocks.builder.preset.logs_leaves_to_air;Troncos/folhas -> ar +dialog.replace_blocks.builder.preset.ores_to_stone;Minérios -> pedra +dialog.replace_blocks.builder.preset.containers_to_air;Contentores com NBT extra -> ar +dialog.replace_blocks.builder.preset.warning_air;A substituição de ar pode criar secções em falta ou esparsas. Pré-visualize primeiro numa pequena seleção copiada. +dialog.replace_blocks.builder.preset.warning_containers;A predefinição de contentores corresponde apenas a posições com NBT extra presente, mas a substituição pode remover conteúdos armazenados como baús e barris. Pré-visualize primeiro num mundo copiado. +dialog.replace_blocks.builder.edit_rule;Carregar regra +dialog.replace_blocks.builder.property.all;tudo +dialog.replace_blocks.builder.help.button;Ajuda +dialog.replace_blocks.builder.help.title;Ajuda do Construtor ReplaceBlocks +dialog.replace_blocks.builder.help.nbt.title;Condição de NBT extra +dialog.replace_blocks.builder.help.nbt.intro;NBT extra são dados de entidade de bloco armazenados numa posição, como texto de placas, itens de contentores, progresso de fornalha ou comandos de bloco de comando. Esta opção apenas verifica se a posição de origem possui esses dados; não inspeciona o conteúdo. +dialog.replace_blocks.builder.help.nbt.any;NBT extra: qualquer – corresponde por nome de bloco e propriedades, independentemente dos dados de entidade de bloco. Para blocos normais, ou quando descartar dados extra existentes é aceitável. +dialog.replace_blocks.builder.help.nbt.present;NBT extra: presente – corresponde apenas a posições que já possuem dados de entidade de bloco. Use para alvejar intencionalmente baús, barris, placas, fornalhas, spawners ou blocos de dados semelhantes; gera tile(...). +dialog.replace_blocks.builder.help.nbt.absent;NBT extra: ausente – corresponde apenas a posições sem dados de entidade de bloco. Use para evitar conteúdo de contentores, texto de placas e dados semelhantes, ou para limpar blocos anómalos de mesmo nome sem entidades; gera no_tile(...). +dialog.replace_blocks.builder.help.nbt.note;Esta configuração filtra apenas o lado da origem. Se o destino precisar de SNBT de entidade de bloco, continue a usar a entrada de texto avançada. +dialog.replace_blocks.builder.help.biome.title;Condição de bioma +dialog.replace_blocks.builder.help.biome.intro;A filtragem de bioma verifica o bioma em cada posição de bloco candidata. Em chunks modernos 1.18+, um valor de bioma cobre uma área de 4×4×4 blocos, portanto blocos próximos nessa célula partilham a mesma condição de bioma. +dialog.replace_blocks.builder.help.biome.syntax;Deixe o campo Bioma do Construtor vazio para nenhuma restrição de bioma. Insira um ID de bioma ou vários IDs separados por ponto e vírgula; as regras geradas usam biome(..., source). +dialog.replace_blocks.validation.source_empty;Introduza um ID de bloco de origem. +dialog.replace_blocks.validation.target_empty;Introduza um ID de bloco de destino. +dialog.replace_blocks.validation.source_unknown;Bloco de origem desconhecido "%s". +dialog.replace_blocks.validation.target_unknown;Bloco de destino desconhecido "%s". +dialog.replace_blocks.validation.source_format;O ID do bloco de origem deve ter o formato minecraft:stone ou modid:block_name. +dialog.replace_blocks.validation.target_format;O ID do bloco de destino deve ter o formato minecraft:dirt ou modid:block_name. +dialog.replace_blocks.validation.missing_equals;Cada regra ReplaceBlocks precisa de from=to. +dialog.replace_blocks.validation.state_snbt;O SNBT de estado de bloco tem de ser um compound válido, por exemplo {Name:"minecraft:stone"}. +dialog.replace_blocks.validation.tile_empty;Falta o SNBT da entidade de bloco após ;. +dialog.replace_blocks.validation.tile_snbt;O SNBT da entidade de bloco tem de ser um compound válido. +dialog.replace_blocks.validation.trailing;Existe texto inesperado após esta regra. Separe as regras com vírgulas. +dialog.replace_blocks.validation.target_quote;Falta a aspa de fecho no bloco de destino entre aspas. +dialog.replace_blocks.validation.quoted_target_ambiguous;Os blocos de destino entre aspas são frágeis antes de outra regra ou de SNBT de entidade de bloco. Utilize antes {Name:"modid:block"}. +dialog.replace_blocks.validation.source_regex;A origem "%s" é tratada como uma expressão regular Java ao comparar blocos. +dialog.replace_blocks.validation.source_mode_wrapper;Os wrappers do modo de origem têm de ser literal(...), regex(...), props(...), tile(...) ou no_tile(...). +dialog.replace_blocks.validation.source_literal;A origem literal(...) tem de conter um ID de bloco válido. Origem inválida: "%s". +dialog.replace_blocks.validation.source_regex_syntax;A origem regex(...) tem de conter uma expressão regular Java válida. +dialog.replace_blocks.validation.source_props;A origem props(...) tem de conter SNBT de estado de bloco com Name e pelo menos uma propriedade selecionada. +dialog.replace_blocks.validation.source_y_range;A origem y(...) tem de usar min..max com pelo menos um limite inteiro, por exemplo y(-64..64, literal(minecraft:stone)). +dialog.replace_blocks.validation.source_biome;A origem biome(...) tem de usar IDs de bioma válidos separados por ponto e vírgula, seguidos de uma expressão de origem, por exemplo biome(minecraft:plains, literal(minecraft:stone)). +dialog.change_nbt.query_invalid;Invalid change query: %s +dialog.change_nbt.replace_blocks_query_quote;In the advanced query field, wrap ReplaceBlocks values in double quotes, for example ReplaceBlocks = "minecraft:stone=minecraft:dirt". +dialog.replace_blocks.preview.button;Pré-visualização +dialog.replace_blocks.preview.title;Pré-visualização ReplaceBlocks +dialog.replace_blocks.preview.no_field;Introduza um valor ReplaceBlocks válido antes de executar a pré-visualização. +dialog.replace_blocks.preview.result;Execução de teste concluída.\nRegiões analisadas: %d\nChunks analisados: %d\nChunks afetados: %d\nSecções afetadas: %d\nBlocos correspondentes: %d\nEntidades de bloco a adicionar: %d\nEntidades de bloco a remover: %d\nEntidades de bloco a atualizar: %d +dialog.replace_blocks.preview.rules;Correspondências de regras: +dialog.replace_blocks.preview.rule;#%d [%s] %s -> %s: %d +dialog.replace_blocks.preview.warning_air;A substituição de ar pode completar secções em falta antes da substituição. A pré-visualização contou %d secções de ar em falta ou incompletas. +dialog.replace_blocks.preview.warning_overlap;%d posições de bloco corresponderam a mais de uma regra. As contagens por regra incluem cada correspondência, pelo que a soma pode ser superior ao número de blocos correspondentes. +dialog.replace_blocks.preview.warning_tile;A substituição de entidades de bloco pode adicionar, remover ou atualizar entidades de bloco. Teste em mundos copiados antes de aplicar. +dialog.replace_blocks.preview.warning_light;A implementação atual de ReplaceBlocks pode remover matrizes de luz de %d secções processadas. +dialog.replace_blocks.preview.warning_adjacent_relight;A alteração real pode atualizar os indicadores de recálculo de luz em até %d chunks adjacentes fora da seleção; nenhum bloco é substituído nesses chunks. +dialog.replace_blocks.preview.warning_heightmaps;Durante a alteração real, os mapas de altura são recalculados para %d chunks afetados. +dialog.replace_blocks.preview.warning_unsupported;A pré-visualização não está implementada para %d chunks analisados de versões antigas ou não suportadas. +dialog.replace_blocks.preview.warning_errors;A pré-visualização ignorou %d chunks e %d regiões devido a erros: +dialog.progress.title.preview_replace_blocks;Pré-visualização ReplaceBlocks +dialog.replace_blocks.validation.source_state_snbt;O SNBT de estado do bloco de origem tem de ser um compound válido com um valor Name. diff --git a/src/main/resources/lang/ru_RU.txt b/src/main/resources/lang/ru_RU.txt index 03e7c27a..843db40b 100644 --- a/src/main/resources/lang/ru_RU.txt +++ b/src/main/resources/lang/ru_RU.txt @@ -213,4 +213,110 @@ dialog.unsaved_script.header;Имеется несохранённый скри dialog.request_number.title.array_length;Длина массива dialog.request_number.title.enter_number;Введите число button.cancel;Отмена -button.ok;ОК \ No newline at end of file +button.ok;ОК +dialog.replace_blocks.builder.button;Конструктор +dialog.replace_blocks.builder.title;Конструктор ReplaceBlocks +dialog.replace_blocks.builder.from;Исходный блок +dialog.replace_blocks.builder.to;Целевой блок +dialog.replace_blocks.builder.add_rule;Добавить правило +dialog.replace_blocks.builder.delete_rule;Удалить правило +dialog.replace_blocks.builder.rules;Правила +dialog.replace_blocks.builder.rules.empty;Правила ещё не добавлены. Заполните исходный и целевой блоки, затем нажмите «Добавить правило». +dialog.replace_blocks.builder.result;Сгенерированное выражение ReplaceBlocks +dialog.replace_blocks.builder.invalid;Неверный ID блока или сгенерированное правило. +dialog.replace_blocks.builder.duplicate;Это правило уже существует. +dialog.replace_blocks.builder.empty;Добавьте хотя бы одно правило. +dialog.replace_blocks.builder.advanced;Исходный и целевой блоки принимают полный SNBT состояния блока, содержащий Name. Другие сложные правила можно редактировать непосредственно в выражении ReplaceBlocks. +dialog.replace_blocks.builder.tile_source.any;Доп. NBT: любой +dialog.replace_blocks.builder.tile_source.require;Доп. NBT: есть +dialog.replace_blocks.builder.tile_source.exclude;Доп. NBT: нет +dialog.replace_blocks.builder.y_min;Мин. Y +dialog.replace_blocks.builder.y_max;Макс. Y +dialog.replace_blocks.builder.biome;Биом +dialog.replace_blocks.builder.biome.prompt;minecraft:plains;minecraft:forest +dialog.replace_blocks.builder.source_constraints;Ограничения источника (необязательно) +dialog.replace_blocks.builder.catalog;Block catalogue +dialog.replace_blocks.builder.catalog_switch.title;Switch block catalogue +dialog.replace_blocks.builder.catalog_switch.message;При переключении с %s на %s все правила, черновики и выбранные элементы конструктора будут удалены. Продолжить? +dialog.replace_blocks.builder.catalog.note;Управляет только подсказками блоков и свойствами; идентификаторы не преобразуются. Если конструктор содержит данные, перед переключением запрашивается подтверждение, после чего содержимое очищается. +dialog.replace_blocks.builder.catalog.source_unknown;Source "%s" is not in the Java %s catalogue; it will still be accepted as entered. +dialog.replace_blocks.builder.catalog.target_unknown;Target "%s" is not in the Java %s catalogue; it will still be accepted, but verify that the target world supports this ID. +dialog.replace_blocks.builder.preset.persist_failed;Could not write the configuration; the preset change was rolled back. +dialog.replace_blocks.builder.preset;Предустановка +dialog.replace_blocks.builder.preset.prompt;Выбрать предустановку +dialog.replace_blocks.builder.preset.apply;Применить предустановку +dialog.replace_blocks.builder.preset.save;Сохранить предустановку +dialog.replace_blocks.builder.preset.delete;Удалить предустановку +dialog.replace_blocks.builder.preset.title;Предустановки ReplaceBlocks +dialog.replace_blocks.builder.preset.save.title;Сохранить предустановку ReplaceBlocks +dialog.replace_blocks.builder.preset.save.header;Сохранить сгенерированные правила как многоразовую предустановку конструктора. +dialog.replace_blocks.builder.preset.save.name;Название предустановки +dialog.replace_blocks.builder.preset.name_empty;Введите название предустановки. +dialog.replace_blocks.builder.preset.builtin_locked;Встроенные предустановки нельзя перезаписать. +dialog.replace_blocks.builder.preset.overwrite_confirm;Предустановка с именем «%s» уже существует. Перезаписать? +dialog.replace_blocks.builder.preset.delete_confirm;Удалить предустановку «%s»? +dialog.replace_blocks.builder.preset.replace_confirm;Загрузка этой предустановки заменит текущие правила конструктора и вводимые данные. +dialog.replace_blocks.builder.preset.saved;Предустановка «%s» сохранена. +dialog.replace_blocks.builder.preset.already_filled;Эта предустановка уже присутствует в списке правил. +dialog.replace_blocks.builder.discard.title;Отменить изменения конструктора? +dialog.replace_blocks.builder.discard.header;Отменить изменения в этом конструкторе? В поле ReplaceBlocks останется значение, которое было до его открытия. +dialog.replace_blocks.builder.discard.action;Отменить изменения +dialog.replace_blocks.builder.continue_editing.action;Продолжить редактирование +dialog.replace_blocks.builder.preset.air_to_stone;Воздух -> камень +dialog.replace_blocks.builder.preset.fluids_to_air;Жидкости -> воздух +dialog.replace_blocks.builder.preset.logs_leaves_to_air;Брёвна/листва -> воздух +dialog.replace_blocks.builder.preset.ores_to_stone;Руды -> камень +dialog.replace_blocks.builder.preset.containers_to_air;Контейнеры с доп. NBT -> воздух +dialog.replace_blocks.builder.preset.warning_air;Замена воздуха может создать отсутствующие или разреженные секции. Сначала выполните предпросмотр на небольшой скопированной области. +dialog.replace_blocks.builder.preset.warning_containers;Предустановка контейнеров совпадает только с позициями, где есть доп. NBT, но замена может удалить хранимое содержимое, например сундуки и бочки. Сначала выполните предпросмотр на скопированном мире. +dialog.replace_blocks.builder.edit_rule;Загрузить правило +dialog.replace_blocks.builder.property.all;все +dialog.replace_blocks.builder.help.button;Справка +dialog.replace_blocks.builder.help.title;Справка конструктора ReplaceBlocks +dialog.replace_blocks.builder.help.nbt.title;Условие доп. NBT +dialog.replace_blocks.builder.help.nbt.intro;Дополнительный NBT — это данные блоков-сущностей, хранящиеся в позиции блока, такие как текст табличек, содержимое контейнеров, прогресс печи или команды командных блоков. Эта опция только проверяет, есть ли такие данные в исходной позиции; она не проверяет их содержимое. +dialog.replace_blocks.builder.help.nbt.any;Доп. NBT: любой – совпадение по имени блока и свойствам независимо от данных блоков-сущностей. Для обычных блоков или когда отбрасывание существующих дополнительных данных допустимо. +dialog.replace_blocks.builder.help.nbt.present;Доп. NBT: есть – совпадение только с позициями, где уже есть данные блоков-сущностей. Используйте для целенаправленной обработки сундуков, бочек, табличек, печей, спаунеров и подобных блоков с данными; генерирует tile(...). +dialog.replace_blocks.builder.help.nbt.absent;Доп. NBT: нет – совпадение только с позициями без данных блоков-сущностей. Используйте, чтобы избежать содержимого контейнеров, текста табличек и подобных данных, или для очистки необычных одноимённых блоков без сущностей; генерирует no_tile(...). +dialog.replace_blocks.builder.help.nbt.note;Этот параметр фильтрует только исходную сторону. Если целевой стороне нужен SNBT блока-сущности, продолжайте использовать расширенный текстовый ввод. +dialog.replace_blocks.builder.help.biome.title;Условие биома +dialog.replace_blocks.builder.help.biome.intro;Фильтрация по биому проверяет биом в каждой позиции блока-кандидата. В современных чанках 1.18+ одно значение биома охватывает область 4×4×4 блока, поэтому соседние блоки в этой ячейке имеют одинаковое условие биома. +dialog.replace_blocks.builder.help.biome.syntax;Оставьте поле биома конструктора пустым, чтобы не применять ограничение по биому. Введите один ID биома или несколько ID, разделённых точкой с запятой; сгенерированные правила используют biome(..., source). +dialog.replace_blocks.validation.source_empty;Введите ID исходного блока. +dialog.replace_blocks.validation.target_empty;Введите ID целевого блока. +dialog.replace_blocks.validation.source_unknown;Неизвестный исходный блок «%s». +dialog.replace_blocks.validation.target_unknown;Неизвестный целевой блок «%s». +dialog.replace_blocks.validation.source_format;ID исходного блока должен иметь вид minecraft:stone или modid:block_name. +dialog.replace_blocks.validation.target_format;ID целевого блока должен иметь вид minecraft:dirt или modid:block_name. +dialog.replace_blocks.validation.missing_equals;Каждому правилу ReplaceBlocks требуется from=to. +dialog.replace_blocks.validation.state_snbt;SNBT состояния блока должен быть корректным compound, например {Name:"minecraft:stone"}. +dialog.replace_blocks.validation.tile_empty;После ; отсутствует SNBT блока-сущности. +dialog.replace_blocks.validation.tile_snbt;SNBT блока-сущности должен быть корректным compound. +dialog.replace_blocks.validation.trailing;После этого правила обнаружен неожиданный текст. Разделяйте правила запятыми. +dialog.replace_blocks.validation.target_quote;У целевого блока в кавычках отсутствует закрывающая кавычка. +dialog.replace_blocks.validation.quoted_target_ambiguous;Целевые блоки в кавычках ненадёжны перед другим правилом или SNBT блока-сущности. Используйте вместо этого {Name:"modid:block"}. +dialog.replace_blocks.validation.source_regex;Источник «%s» при сопоставлении блоков обрабатывается как регулярное выражение Java. +dialog.replace_blocks.validation.source_mode_wrapper;Обёртки режима источника должны быть literal(...), regex(...), props(...), tile(...) или no_tile(...). +dialog.replace_blocks.validation.source_literal;Источник literal(...) должен содержать корректный ID блока. Некорректный источник: «%s». +dialog.replace_blocks.validation.source_regex_syntax;Источник regex(...) должен содержать корректное регулярное выражение Java. +dialog.replace_blocks.validation.source_props;Источник props(...) должен содержать SNBT состояния блока с Name и хотя бы одним выбранным свойством. +dialog.replace_blocks.validation.source_y_range;Источник y(...) должен использовать min..max хотя бы с одной целой границей, например y(-64..64, literal(minecraft:stone)). +dialog.replace_blocks.validation.source_biome;Источник biome(...) должен использовать корректные ID биомов, разделённые точкой с запятой, после которых следует выражение источника, например biome(minecraft:plains, literal(minecraft:stone)). +dialog.change_nbt.query_invalid;Invalid change query: %s +dialog.change_nbt.replace_blocks_query_quote;In the advanced query field, wrap ReplaceBlocks values in double quotes, for example ReplaceBlocks = "minecraft:stone=minecraft:dirt". +dialog.replace_blocks.preview.button;Предпросмотр +dialog.replace_blocks.preview.title;Предпросмотр ReplaceBlocks +dialog.replace_blocks.preview.no_field;Перед запуском предпросмотра введите корректное значение ReplaceBlocks. +dialog.replace_blocks.preview.result;Пробный запуск завершён.\nПросканировано регионов: %d\nПросканировано чанков: %d\nЗатронуто чанков: %d\nЗатронуто секций: %d\nСовпавших блоков: %d\nБлоков-сущностей для добавления: %d\nБлоков-сущностей для удаления: %d\nБлоков-сущностей для обновления: %d +dialog.replace_blocks.preview.rules;Совпадения правил: +dialog.replace_blocks.preview.rule;#%d [%s] %s -> %s: %d +dialog.replace_blocks.preview.warning_air;Замена воздуха может дополнить отсутствующие секции до замены. Предпросмотр насчитал %d отсутствующих или неполных секций воздуха. +dialog.replace_blocks.preview.warning_overlap;%d позиций блоков соответствуют более чем одному правилу. Счётчики правил включают каждое совпадение, поэтому их сумма может быть больше числа совпавших блоков. +dialog.replace_blocks.preview.warning_tile;Замена блоков-сущностей может добавлять, удалять или обновлять блоки-сущности. Перед применением протестируйте на скопированных мирах. +dialog.replace_blocks.preview.warning_light;Текущая реализация ReplaceBlocks может удалить массивы освещения из %d обработанных секций. +dialog.replace_blocks.preview.warning_adjacent_relight;При фактическом изменении флаги пересчёта освещения могут обновиться максимум в %d соседних чанках за пределами выделения; блоки в них не заменяются. +dialog.replace_blocks.preview.warning_heightmaps;При фактическом изменении карты высот пересчитываются для %d затронутых чанков. +dialog.replace_blocks.preview.warning_unsupported;Предпросмотр не реализован для %d просканированных чанков старых или неподдерживаемых версий. +dialog.replace_blocks.preview.warning_errors;Из-за ошибок предпросмотр пропустил %d чанков и %d регионов: +dialog.progress.title.preview_replace_blocks;Предпросмотр ReplaceBlocks +dialog.replace_blocks.validation.source_state_snbt;SNBT состояния исходного блока должен быть корректным compound со значением Name. diff --git a/src/main/resources/lang/sv_SE.txt b/src/main/resources/lang/sv_SE.txt index d3b3f179..90ae0be9 100644 --- a/src/main/resources/lang/sv_SE.txt +++ b/src/main/resources/lang/sv_SE.txt @@ -213,4 +213,110 @@ dialog.unsaved_script.header;Det finns ett ej sparat skript. dialog.request_number.title.array_length;Längden på arrayen dialog.request_number.title.enter_number;Värde button.cancel;Avbryt -button.ok;OK \ No newline at end of file +button.ok;OK +dialog.replace_blocks.builder.button;Byggare +dialog.replace_blocks.builder.title;ReplaceBlocks-byggare +dialog.replace_blocks.builder.from;From block +dialog.replace_blocks.builder.to;To block +dialog.replace_blocks.builder.add_rule;Add rule +dialog.replace_blocks.builder.delete_rule;Delete rule +dialog.replace_blocks.builder.rules;Rules +dialog.replace_blocks.builder.rules.empty;Inga regler har lagts till ännu. Fyll i käll- och målblocken och klicka sedan på Lägg till regel. +dialog.replace_blocks.builder.result;Genererat ReplaceBlocks-uttryck +dialog.replace_blocks.builder.invalid;Invalid block id or generated rule. +dialog.replace_blocks.builder.duplicate;This rule already exists. +dialog.replace_blocks.builder.empty;Add at least one rule. +dialog.replace_blocks.builder.advanced;Käll- och målblock accepterar fullständig blocktillstånds-SNBT som innehåller Name. Redigera ReplaceBlocks-uttrycket direkt för andra komplexa regler. +dialog.replace_blocks.builder.tile_source.any;Extra NBT: any +dialog.replace_blocks.builder.tile_source.require;Extra NBT: present +dialog.replace_blocks.builder.tile_source.exclude;Extra NBT: absent +dialog.replace_blocks.builder.y_min;Min Y +dialog.replace_blocks.builder.y_max;Max Y +dialog.replace_blocks.builder.biome;Biome +dialog.replace_blocks.builder.biome.prompt;minecraft:plains;minecraft:forest +dialog.replace_blocks.builder.source_constraints;Källbegränsningar (valfritt) +dialog.replace_blocks.builder.catalog;Block catalogue +dialog.replace_blocks.builder.catalog_switch.title;Switch block catalogue +dialog.replace_blocks.builder.catalog_switch.message;Byte från %s till %s tar bort alla regler, utkast och val i byggaren. Fortsätta? +dialog.replace_blocks.builder.catalog.note;Styr endast blockförslag och egenskaper; ID:n konverteras inte. Om Buildern har innehåll begärs bekräftelse före bytet och därefter rensas innehållet. +dialog.replace_blocks.builder.catalog.source_unknown;Source "%s" is not in the Java %s catalogue; it will still be accepted as entered. +dialog.replace_blocks.builder.catalog.target_unknown;Target "%s" is not in the Java %s catalogue; it will still be accepted, but verify that the target world supports this ID. +dialog.replace_blocks.builder.preset.persist_failed;Could not write the configuration; the preset change was rolled back. +dialog.replace_blocks.builder.preset;Preset +dialog.replace_blocks.builder.preset.prompt;Choose preset +dialog.replace_blocks.builder.preset.apply;Fill preset +dialog.replace_blocks.builder.preset.save;Save preset +dialog.replace_blocks.builder.preset.delete;Delete preset +dialog.replace_blocks.builder.preset.title;ReplaceBlocks presets +dialog.replace_blocks.builder.preset.save.title;Save ReplaceBlocks preset +dialog.replace_blocks.builder.preset.save.header;Spara de genererade reglerna som en återanvändbar förinställning för byggaren. +dialog.replace_blocks.builder.preset.save.name;Preset name +dialog.replace_blocks.builder.preset.name_empty;Enter a preset name. +dialog.replace_blocks.builder.preset.builtin_locked;Built-in preset names cannot be overwritten. +dialog.replace_blocks.builder.preset.overwrite_confirm;A preset named "%s" already exists. Overwrite it? +dialog.replace_blocks.builder.preset.delete_confirm;Delete preset "%s"? +dialog.replace_blocks.builder.preset.replace_confirm;När den här förinställningen läses in ersätts byggarens aktuella regler och pågående inmatning. +dialog.replace_blocks.builder.preset.saved;Preset "%s" saved. +dialog.replace_blocks.builder.preset.already_filled;This preset is already present in the rule list. +dialog.replace_blocks.builder.discard.title;Förkasta ändringarna i byggaren? +dialog.replace_blocks.builder.discard.header;Förkasta ändringarna som gjorts i den här byggaren? ReplaceBlocks-fältet behåller värdet det hade innan byggaren öppnades. +dialog.replace_blocks.builder.discard.action;Discard changes +dialog.replace_blocks.builder.continue_editing.action;Continue editing +dialog.replace_blocks.builder.preset.air_to_stone;Air -> stone +dialog.replace_blocks.builder.preset.fluids_to_air;Fluids -> air +dialog.replace_blocks.builder.preset.logs_leaves_to_air;Logs/leaves -> air +dialog.replace_blocks.builder.preset.ores_to_stone;Ores -> stone +dialog.replace_blocks.builder.preset.containers_to_air;Containers with Extra NBT -> air +dialog.replace_blocks.builder.preset.warning_air;Air replacement can create missing or sparse sections. Preview on a small copied selection first. +dialog.replace_blocks.builder.preset.warning_containers;The container preset matches only positions with Extra NBT present, but replacing them can remove stored contents. Preview on a copied world first. +dialog.replace_blocks.builder.edit_rule;Load rule +dialog.replace_blocks.builder.property.all;all +dialog.replace_blocks.builder.help.button;Help +dialog.replace_blocks.builder.help.title;Hjälp för ReplaceBlocks-byggaren +dialog.replace_blocks.builder.help.nbt.title;Extra NBT source condition +dialog.replace_blocks.builder.help.nbt.intro;Extra NBT is block entity data stored at a block position, such as sign text, container items, furnace progress, or command block commands. This option only checks whether the source position has that data; it does not inspect the contents. +dialog.replace_blocks.builder.help.nbt.any;Extra NBT: any - match by block name and properties regardless of block entity data. Use this for normal blocks, or when replacing and discarding existing extra data is acceptable. +dialog.replace_blocks.builder.help.nbt.present;Extra NBT: present - match only positions that already have block entity data. Use this when deliberately targeting chests, barrels, signs, furnaces, spawners, or similar data blocks; generates tile(...). +dialog.replace_blocks.builder.help.nbt.absent;Extra NBT: absent - match only positions without block entity data. Use this to avoid container contents, sign text, and similar data, or to clean up unusual same-name blocks without entities; generates no_tile(...). +dialog.replace_blocks.builder.help.nbt.note;This setting filters only the source side. If the target needs block entity SNBT, continue using advanced text input. +dialog.replace_blocks.builder.help.biome.title;Biome condition +dialog.replace_blocks.builder.help.biome.intro;Biome filtering checks the biome at each candidate block position. In modern 1.18+ chunks, one biome value covers a 4x4x4 block area, so nearby blocks in that cell share the same biome condition. +dialog.replace_blocks.builder.help.biome.syntax;Lämna byggarens biomfält tomt om ingen biombegränsning ska användas. Ange ett biom-ID eller flera ID:n separerade med semikolon; genererade regler använder biome(..., source). +dialog.replace_blocks.validation.source_empty;Enter a source block id. +dialog.replace_blocks.validation.target_empty;Enter a target block id. +dialog.replace_blocks.validation.source_unknown;Unknown source block "%s". +dialog.replace_blocks.validation.target_unknown;Unknown target block "%s". +dialog.replace_blocks.validation.source_format;Source block id must look like minecraft:stone or modid:block_name. +dialog.replace_blocks.validation.target_format;Target block id must look like minecraft:dirt or modid:block_name. +dialog.replace_blocks.validation.missing_equals;Each ReplaceBlocks rule needs from=to. +dialog.replace_blocks.validation.state_snbt;Block state SNBT must be a valid compound, for example {Name:"minecraft:stone"}. +dialog.replace_blocks.validation.tile_empty;Tile entity SNBT is missing after ;. +dialog.replace_blocks.validation.tile_snbt;Tile entity SNBT must be a valid compound. +dialog.replace_blocks.validation.trailing;Unexpected text after this rule. Separate rules with commas. +dialog.replace_blocks.validation.target_quote;Quoted target block is missing a closing quote. +dialog.replace_blocks.validation.quoted_target_ambiguous;Quoted target blocks are fragile before another rule or tile SNBT. Use {Name:"modid:block"} instead. +dialog.replace_blocks.validation.source_regex;Source "%s" is treated as a Java regex when matching blocks. +dialog.replace_blocks.validation.source_mode_wrapper;Source mode wrappers must be literal(...), regex(...), props(...), tile(...), or no_tile(...). +dialog.replace_blocks.validation.source_literal;literal(...) source must contain a valid block id. Invalid source: "%s". +dialog.replace_blocks.validation.source_regex_syntax;regex(...) source must contain a valid Java regex. +dialog.replace_blocks.validation.source_props;props(...) source must contain block-state SNBT with Name and at least one selected property. +dialog.replace_blocks.validation.source_y_range;y(...) source must use min..max with at least one integer boundary, for example y(-64..64, literal(minecraft:stone)). +dialog.replace_blocks.validation.source_biome;biome(...) source must use valid biome IDs separated by semicolons, followed by a source expression, for example biome(minecraft:plains, literal(minecraft:stone)). +dialog.change_nbt.query_invalid;Invalid change query: %s +dialog.change_nbt.replace_blocks_query_quote;In the advanced query field, wrap ReplaceBlocks values in double quotes, for example ReplaceBlocks = "minecraft:stone=minecraft:dirt". +dialog.replace_blocks.preview.button;Preview +dialog.replace_blocks.preview.title;ReplaceBlocks Preview +dialog.replace_blocks.preview.no_field;Enter a valid ReplaceBlocks value before running preview. +dialog.replace_blocks.preview.result;Dry-run completed.\nScanned regions: %d\nScanned chunks: %d\nAffected chunks: %d\nAffected sections: %d\nMatched blocks: %d\nTile entities to add: %d\nTile entities to remove: %d\nTile entities to update: %d +dialog.replace_blocks.preview.rules;Rule matches: +dialog.replace_blocks.preview.rule;#%d [%s] %s -> %s: %d +dialog.replace_blocks.preview.warning_air;Air replacement may complete missing sections before replacement. Preview counted %d missing or incomplete air sections. +dialog.replace_blocks.preview.warning_overlap;%d block positions matched more than one rule. Per-rule counts include each rule match, so their sum may be higher than matched blocks. +dialog.replace_blocks.preview.warning_tile;Tile entity replacement can add, remove, or update block entities. Test on copied worlds before applying. +dialog.replace_blocks.preview.warning_light;The current ReplaceBlocks implementation may remove light arrays from %d processed sections. +dialog.replace_blocks.preview.warning_adjacent_relight;Den verkliga ändringen kan uppdatera omljusningsflaggor i upp till %d intilliggande chunks utanför markeringen; inga block ersätts där. +dialog.replace_blocks.preview.warning_heightmaps;Vid den verkliga ändringen räknas höjdkartorna om för %d påverkade chunks. +dialog.replace_blocks.preview.warning_unsupported;Preview is not implemented for %d scanned chunks in older or unsupported versions. +dialog.replace_blocks.preview.warning_errors;Preview skipped %d chunks and %d regions because of errors: +dialog.progress.title.preview_replace_blocks;Preview ReplaceBlocks +dialog.replace_blocks.validation.source_state_snbt;Source block state SNBT must be a valid compound with a Name value. diff --git a/src/main/resources/lang/tr_TR.txt b/src/main/resources/lang/tr_TR.txt index b4741499..8b90cb4e 100644 --- a/src/main/resources/lang/tr_TR.txt +++ b/src/main/resources/lang/tr_TR.txt @@ -213,4 +213,110 @@ dialog.unsaved_script.header;Kaydedilmemiş bir script var. dialog.request_number.title.array_length;Dizinin uzunluğu dialog.request_number.title.enter_number;Değer button.cancel;İptal -button.ok;Tamam \ No newline at end of file +button.ok;Tamam +dialog.replace_blocks.builder.button;Oluşturucu +dialog.replace_blocks.builder.title;ReplaceBlocks Oluşturucu +dialog.replace_blocks.builder.from;From block +dialog.replace_blocks.builder.to;To block +dialog.replace_blocks.builder.add_rule;Add rule +dialog.replace_blocks.builder.delete_rule;Delete rule +dialog.replace_blocks.builder.rules;Rules +dialog.replace_blocks.builder.rules.empty;Henüz kural eklenmedi. Kaynak ve hedef blokları doldurup Kural ekle düğmesine tıklayın. +dialog.replace_blocks.builder.result;Oluşturulan ReplaceBlocks ifadesi +dialog.replace_blocks.builder.invalid;Invalid block id or generated rule. +dialog.replace_blocks.builder.duplicate;This rule already exists. +dialog.replace_blocks.builder.empty;Add at least one rule. +dialog.replace_blocks.builder.advanced;Kaynak ve hedef bloklar, Name içeren tam blok durumu SNBT'sini kabul eder. Diğer karmaşık kurallar için ReplaceBlocks ifadesini doğrudan düzenleyin. +dialog.replace_blocks.builder.tile_source.any;Extra NBT: any +dialog.replace_blocks.builder.tile_source.require;Extra NBT: present +dialog.replace_blocks.builder.tile_source.exclude;Extra NBT: absent +dialog.replace_blocks.builder.y_min;Min Y +dialog.replace_blocks.builder.y_max;Max Y +dialog.replace_blocks.builder.biome;Biome +dialog.replace_blocks.builder.biome.prompt;minecraft:plains;minecraft:forest +dialog.replace_blocks.builder.source_constraints;Kaynak kısıtlamaları (isteğe bağlı) +dialog.replace_blocks.builder.catalog;Block catalogue +dialog.replace_blocks.builder.catalog_switch.title;Switch block catalogue +dialog.replace_blocks.builder.catalog_switch.message;%s kataloğundan %s kataloğuna geçmek, oluşturucudaki tüm kuralları, taslakları ve seçimleri silecektir. Devam edilsin mi? +dialog.replace_blocks.builder.catalog.note;Yalnızca blok önerilerini ve özellikleri denetler; kimlikleri dönüştürmez. Oluşturucu içerik barındırıyorsa geçiş önce onay ister, ardından içeriği temizler. +dialog.replace_blocks.builder.catalog.source_unknown;Source "%s" is not in the Java %s catalogue; it will still be accepted as entered. +dialog.replace_blocks.builder.catalog.target_unknown;Target "%s" is not in the Java %s catalogue; it will still be accepted, but verify that the target world supports this ID. +dialog.replace_blocks.builder.preset.persist_failed;Could not write the configuration; the preset change was rolled back. +dialog.replace_blocks.builder.preset;Preset +dialog.replace_blocks.builder.preset.prompt;Choose preset +dialog.replace_blocks.builder.preset.apply;Fill preset +dialog.replace_blocks.builder.preset.save;Save preset +dialog.replace_blocks.builder.preset.delete;Delete preset +dialog.replace_blocks.builder.preset.title;ReplaceBlocks presets +dialog.replace_blocks.builder.preset.save.title;Save ReplaceBlocks preset +dialog.replace_blocks.builder.preset.save.header;Oluşturulan kuralları yeniden kullanılabilir bir Oluşturucu ön ayarı olarak kaydet. +dialog.replace_blocks.builder.preset.save.name;Preset name +dialog.replace_blocks.builder.preset.name_empty;Enter a preset name. +dialog.replace_blocks.builder.preset.builtin_locked;Built-in preset names cannot be overwritten. +dialog.replace_blocks.builder.preset.overwrite_confirm;A preset named "%s" already exists. Overwrite it? +dialog.replace_blocks.builder.preset.delete_confirm;Delete preset "%s"? +dialog.replace_blocks.builder.preset.replace_confirm;Bu ön ayarı yüklemek, Oluşturucudaki mevcut kuralları ve taslak girdileri değiştirecektir. +dialog.replace_blocks.builder.preset.saved;Preset "%s" saved. +dialog.replace_blocks.builder.preset.already_filled;This preset is already present in the rule list. +dialog.replace_blocks.builder.discard.title;Oluşturucu değişiklikleri silinsin mi? +dialog.replace_blocks.builder.discard.header;Bu Oluşturucuda yapılan değişiklikler silinsin mi? ReplaceBlocks alanı, Oluşturucu açılmadan önceki değerini koruyacaktır. +dialog.replace_blocks.builder.discard.action;Discard changes +dialog.replace_blocks.builder.continue_editing.action;Continue editing +dialog.replace_blocks.builder.preset.air_to_stone;Air -> stone +dialog.replace_blocks.builder.preset.fluids_to_air;Fluids -> air +dialog.replace_blocks.builder.preset.logs_leaves_to_air;Logs/leaves -> air +dialog.replace_blocks.builder.preset.ores_to_stone;Ores -> stone +dialog.replace_blocks.builder.preset.containers_to_air;Containers with Extra NBT -> air +dialog.replace_blocks.builder.preset.warning_air;Air replacement can create missing or sparse sections. Preview on a small copied selection first. +dialog.replace_blocks.builder.preset.warning_containers;The container preset matches only positions with Extra NBT present, but replacing them can remove stored contents. Preview on a copied world first. +dialog.replace_blocks.builder.edit_rule;Load rule +dialog.replace_blocks.builder.property.all;all +dialog.replace_blocks.builder.help.button;Help +dialog.replace_blocks.builder.help.title;ReplaceBlocks Oluşturucu Yardımı +dialog.replace_blocks.builder.help.nbt.title;Extra NBT source condition +dialog.replace_blocks.builder.help.nbt.intro;Extra NBT is block entity data stored at a block position, such as sign text, container items, furnace progress, or command block commands. This option only checks whether the source position has that data; it does not inspect the contents. +dialog.replace_blocks.builder.help.nbt.any;Extra NBT: any - match by block name and properties regardless of block entity data. Use this for normal blocks, or when replacing and discarding existing extra data is acceptable. +dialog.replace_blocks.builder.help.nbt.present;Extra NBT: present - match only positions that already have block entity data. Use this when deliberately targeting chests, barrels, signs, furnaces, spawners, or similar data blocks; generates tile(...). +dialog.replace_blocks.builder.help.nbt.absent;Extra NBT: absent - match only positions without block entity data. Use this to avoid container contents, sign text, and similar data, or to clean up unusual same-name blocks without entities; generates no_tile(...). +dialog.replace_blocks.builder.help.nbt.note;This setting filters only the source side. If the target needs block entity SNBT, continue using advanced text input. +dialog.replace_blocks.builder.help.biome.title;Biome condition +dialog.replace_blocks.builder.help.biome.intro;Biome filtering checks the biome at each candidate block position. In modern 1.18+ chunks, one biome value covers a 4x4x4 block area, so nearby blocks in that cell share the same biome condition. +dialog.replace_blocks.builder.help.biome.syntax;Biyom kısıtlaması olmaması için Oluşturucunun biyom alanını boş bırakın. Bir biyom kimliği veya noktalı virgülle ayrılmış birden çok kimlik girin; oluşturulan kurallar biome(..., source) kullanır. +dialog.replace_blocks.validation.source_empty;Enter a source block id. +dialog.replace_blocks.validation.target_empty;Enter a target block id. +dialog.replace_blocks.validation.source_unknown;Unknown source block "%s". +dialog.replace_blocks.validation.target_unknown;Unknown target block "%s". +dialog.replace_blocks.validation.source_format;Source block id must look like minecraft:stone or modid:block_name. +dialog.replace_blocks.validation.target_format;Target block id must look like minecraft:dirt or modid:block_name. +dialog.replace_blocks.validation.missing_equals;Each ReplaceBlocks rule needs from=to. +dialog.replace_blocks.validation.state_snbt;Block state SNBT must be a valid compound, for example {Name:"minecraft:stone"}. +dialog.replace_blocks.validation.tile_empty;Tile entity SNBT is missing after ;. +dialog.replace_blocks.validation.tile_snbt;Tile entity SNBT must be a valid compound. +dialog.replace_blocks.validation.trailing;Unexpected text after this rule. Separate rules with commas. +dialog.replace_blocks.validation.target_quote;Quoted target block is missing a closing quote. +dialog.replace_blocks.validation.quoted_target_ambiguous;Quoted target blocks are fragile before another rule or tile SNBT. Use {Name:"modid:block"} instead. +dialog.replace_blocks.validation.source_regex;Source "%s" is treated as a Java regex when matching blocks. +dialog.replace_blocks.validation.source_mode_wrapper;Source mode wrappers must be literal(...), regex(...), props(...), tile(...), or no_tile(...). +dialog.replace_blocks.validation.source_literal;literal(...) source must contain a valid block id. Invalid source: "%s". +dialog.replace_blocks.validation.source_regex_syntax;regex(...) source must contain a valid Java regex. +dialog.replace_blocks.validation.source_props;props(...) source must contain block-state SNBT with Name and at least one selected property. +dialog.replace_blocks.validation.source_y_range;y(...) source must use min..max with at least one integer boundary, for example y(-64..64, literal(minecraft:stone)). +dialog.replace_blocks.validation.source_biome;biome(...) source must use valid biome IDs separated by semicolons, followed by a source expression, for example biome(minecraft:plains, literal(minecraft:stone)). +dialog.change_nbt.query_invalid;Invalid change query: %s +dialog.change_nbt.replace_blocks_query_quote;In the advanced query field, wrap ReplaceBlocks values in double quotes, for example ReplaceBlocks = "minecraft:stone=minecraft:dirt". +dialog.replace_blocks.preview.button;Preview +dialog.replace_blocks.preview.title;ReplaceBlocks Preview +dialog.replace_blocks.preview.no_field;Enter a valid ReplaceBlocks value before running preview. +dialog.replace_blocks.preview.result;Dry-run completed.\nScanned regions: %d\nScanned chunks: %d\nAffected chunks: %d\nAffected sections: %d\nMatched blocks: %d\nTile entities to add: %d\nTile entities to remove: %d\nTile entities to update: %d +dialog.replace_blocks.preview.rules;Rule matches: +dialog.replace_blocks.preview.rule;#%d [%s] %s -> %s: %d +dialog.replace_blocks.preview.warning_air;Air replacement may complete missing sections before replacement. Preview counted %d missing or incomplete air sections. +dialog.replace_blocks.preview.warning_overlap;%d block positions matched more than one rule. Per-rule counts include each rule match, so their sum may be higher than matched blocks. +dialog.replace_blocks.preview.warning_tile;Tile entity replacement can add, remove, or update block entities. Test on copied worlds before applying. +dialog.replace_blocks.preview.warning_light;The current ReplaceBlocks implementation may remove light arrays from %d processed sections. +dialog.replace_blocks.preview.warning_adjacent_relight;Gerçek değişiklik, seçimin dışındaki en fazla %d komşu chunk'ın yeniden aydınlatma işaretlerini güncelleyebilir; buralarda hiçbir blok değiştirilmez. +dialog.replace_blocks.preview.warning_heightmaps;Gerçek değişiklik sırasında etkilenen %d chunk'ın yükseklik haritaları yeniden hesaplanır. +dialog.replace_blocks.preview.warning_unsupported;Preview is not implemented for %d scanned chunks in older or unsupported versions. +dialog.replace_blocks.preview.warning_errors;Preview skipped %d chunks and %d regions because of errors: +dialog.progress.title.preview_replace_blocks;Preview ReplaceBlocks +dialog.replace_blocks.validation.source_state_snbt;Source block state SNBT must be a valid compound with a Name value. diff --git a/src/main/resources/lang/uk_UA.txt b/src/main/resources/lang/uk_UA.txt index a72f9098..eed66023 100644 --- a/src/main/resources/lang/uk_UA.txt +++ b/src/main/resources/lang/uk_UA.txt @@ -213,4 +213,110 @@ dialog.unsaved_script.header;Є незбережений скрипт. dialog.request_number.title.array_length;Довжина масиву dialog.request_number.title.enter_number;Значення button.cancel;Скасувати -button.ok;OK \ No newline at end of file +button.ok;OK +dialog.replace_blocks.builder.button;Конструктор +dialog.replace_blocks.builder.title;Конструктор ReplaceBlocks +dialog.replace_blocks.builder.from;From block +dialog.replace_blocks.builder.to;To block +dialog.replace_blocks.builder.add_rule;Add rule +dialog.replace_blocks.builder.delete_rule;Delete rule +dialog.replace_blocks.builder.rules;Rules +dialog.replace_blocks.builder.rules.empty;Правила ще не додано. Заповніть вихідний і цільовий блоки, а потім натисніть «Додати правило». +dialog.replace_blocks.builder.result;Згенерований вираз ReplaceBlocks +dialog.replace_blocks.builder.invalid;Invalid block id or generated rule. +dialog.replace_blocks.builder.duplicate;This rule already exists. +dialog.replace_blocks.builder.empty;Add at least one rule. +dialog.replace_blocks.builder.advanced;Вихідний і цільовий блоки приймають повний SNBT стану блока, що містить Name. Інші складні правила можна редагувати безпосередньо у виразі ReplaceBlocks. +dialog.replace_blocks.builder.tile_source.any;Extra NBT: any +dialog.replace_blocks.builder.tile_source.require;Extra NBT: present +dialog.replace_blocks.builder.tile_source.exclude;Extra NBT: absent +dialog.replace_blocks.builder.y_min;Min Y +dialog.replace_blocks.builder.y_max;Max Y +dialog.replace_blocks.builder.biome;Biome +dialog.replace_blocks.builder.biome.prompt;minecraft:plains;minecraft:forest +dialog.replace_blocks.builder.source_constraints;Обмеження джерела (необов’язково) +dialog.replace_blocks.builder.catalog;Block catalogue +dialog.replace_blocks.builder.catalog_switch.title;Switch block catalogue +dialog.replace_blocks.builder.catalog_switch.message;Перемикання з %s на %s видалить усі правила, чернетки та вибрані елементи Конструктора. Продовжити? +dialog.replace_blocks.builder.catalog.note;Керує лише пропозиціями блоків і властивостями; ідентифікатори не перетворюються. Якщо Конструктор містить дані, перед перемиканням запитується підтвердження, після чого вміст очищається. +dialog.replace_blocks.builder.catalog.source_unknown;Source "%s" is not in the Java %s catalogue; it will still be accepted as entered. +dialog.replace_blocks.builder.catalog.target_unknown;Target "%s" is not in the Java %s catalogue; it will still be accepted, but verify that the target world supports this ID. +dialog.replace_blocks.builder.preset.persist_failed;Could not write the configuration; the preset change was rolled back. +dialog.replace_blocks.builder.preset;Preset +dialog.replace_blocks.builder.preset.prompt;Choose preset +dialog.replace_blocks.builder.preset.apply;Fill preset +dialog.replace_blocks.builder.preset.save;Save preset +dialog.replace_blocks.builder.preset.delete;Delete preset +dialog.replace_blocks.builder.preset.title;ReplaceBlocks presets +dialog.replace_blocks.builder.preset.save.title;Save ReplaceBlocks preset +dialog.replace_blocks.builder.preset.save.header;Зберегти згенеровані правила як багаторазовий набір Конструктора. +dialog.replace_blocks.builder.preset.save.name;Preset name +dialog.replace_blocks.builder.preset.name_empty;Enter a preset name. +dialog.replace_blocks.builder.preset.builtin_locked;Built-in preset names cannot be overwritten. +dialog.replace_blocks.builder.preset.overwrite_confirm;A preset named "%s" already exists. Overwrite it? +dialog.replace_blocks.builder.preset.delete_confirm;Delete preset "%s"? +dialog.replace_blocks.builder.preset.replace_confirm;Завантаження цього набору замінить поточні правила Конструктора та введені чернетки. +dialog.replace_blocks.builder.preset.saved;Preset "%s" saved. +dialog.replace_blocks.builder.preset.already_filled;This preset is already present in the rule list. +dialog.replace_blocks.builder.discard.title;Відкинути зміни Конструктора? +dialog.replace_blocks.builder.discard.header;Відкинути зміни, внесені в цьому Конструкторі? Поле ReplaceBlocks збереже значення, яке мало до відкриття Конструктора. +dialog.replace_blocks.builder.discard.action;Discard changes +dialog.replace_blocks.builder.continue_editing.action;Continue editing +dialog.replace_blocks.builder.preset.air_to_stone;Air -> stone +dialog.replace_blocks.builder.preset.fluids_to_air;Fluids -> air +dialog.replace_blocks.builder.preset.logs_leaves_to_air;Logs/leaves -> air +dialog.replace_blocks.builder.preset.ores_to_stone;Ores -> stone +dialog.replace_blocks.builder.preset.containers_to_air;Containers with Extra NBT -> air +dialog.replace_blocks.builder.preset.warning_air;Air replacement can create missing or sparse sections. Preview on a small copied selection first. +dialog.replace_blocks.builder.preset.warning_containers;The container preset matches only positions with Extra NBT present, but replacing them can remove stored contents. Preview on a copied world first. +dialog.replace_blocks.builder.edit_rule;Load rule +dialog.replace_blocks.builder.property.all;all +dialog.replace_blocks.builder.help.button;Help +dialog.replace_blocks.builder.help.title;Довідка Конструктора ReplaceBlocks +dialog.replace_blocks.builder.help.nbt.title;Extra NBT source condition +dialog.replace_blocks.builder.help.nbt.intro;Extra NBT is block entity data stored at a block position, such as sign text, container items, furnace progress, or command block commands. This option only checks whether the source position has that data; it does not inspect the contents. +dialog.replace_blocks.builder.help.nbt.any;Extra NBT: any - match by block name and properties regardless of block entity data. Use this for normal blocks, or when replacing and discarding existing extra data is acceptable. +dialog.replace_blocks.builder.help.nbt.present;Extra NBT: present - match only positions that already have block entity data. Use this when deliberately targeting chests, barrels, signs, furnaces, spawners, or similar data blocks; generates tile(...). +dialog.replace_blocks.builder.help.nbt.absent;Extra NBT: absent - match only positions without block entity data. Use this to avoid container contents, sign text, and similar data, or to clean up unusual same-name blocks without entities; generates no_tile(...). +dialog.replace_blocks.builder.help.nbt.note;This setting filters only the source side. If the target needs block entity SNBT, continue using advanced text input. +dialog.replace_blocks.builder.help.biome.title;Biome condition +dialog.replace_blocks.builder.help.biome.intro;Biome filtering checks the biome at each candidate block position. In modern 1.18+ chunks, one biome value covers a 4x4x4 block area, so nearby blocks in that cell share the same biome condition. +dialog.replace_blocks.builder.help.biome.syntax;Щоб не обмежувати біом, залиште поле біому Конструктора порожнім. Введіть один ID біому або кілька ID, розділених крапкою з комою; згенеровані правила використовують biome(..., source). +dialog.replace_blocks.validation.source_empty;Enter a source block id. +dialog.replace_blocks.validation.target_empty;Enter a target block id. +dialog.replace_blocks.validation.source_unknown;Unknown source block "%s". +dialog.replace_blocks.validation.target_unknown;Unknown target block "%s". +dialog.replace_blocks.validation.source_format;Source block id must look like minecraft:stone or modid:block_name. +dialog.replace_blocks.validation.target_format;Target block id must look like minecraft:dirt or modid:block_name. +dialog.replace_blocks.validation.missing_equals;Each ReplaceBlocks rule needs from=to. +dialog.replace_blocks.validation.state_snbt;Block state SNBT must be a valid compound, for example {Name:"minecraft:stone"}. +dialog.replace_blocks.validation.tile_empty;Tile entity SNBT is missing after ;. +dialog.replace_blocks.validation.tile_snbt;Tile entity SNBT must be a valid compound. +dialog.replace_blocks.validation.trailing;Unexpected text after this rule. Separate rules with commas. +dialog.replace_blocks.validation.target_quote;Quoted target block is missing a closing quote. +dialog.replace_blocks.validation.quoted_target_ambiguous;Quoted target blocks are fragile before another rule or tile SNBT. Use {Name:"modid:block"} instead. +dialog.replace_blocks.validation.source_regex;Source "%s" is treated as a Java regex when matching blocks. +dialog.replace_blocks.validation.source_mode_wrapper;Source mode wrappers must be literal(...), regex(...), props(...), tile(...), or no_tile(...). +dialog.replace_blocks.validation.source_literal;literal(...) source must contain a valid block id. Invalid source: "%s". +dialog.replace_blocks.validation.source_regex_syntax;regex(...) source must contain a valid Java regex. +dialog.replace_blocks.validation.source_props;props(...) source must contain block-state SNBT with Name and at least one selected property. +dialog.replace_blocks.validation.source_y_range;y(...) source must use min..max with at least one integer boundary, for example y(-64..64, literal(minecraft:stone)). +dialog.replace_blocks.validation.source_biome;biome(...) source must use valid biome IDs separated by semicolons, followed by a source expression, for example biome(minecraft:plains, literal(minecraft:stone)). +dialog.change_nbt.query_invalid;Invalid change query: %s +dialog.change_nbt.replace_blocks_query_quote;In the advanced query field, wrap ReplaceBlocks values in double quotes, for example ReplaceBlocks = "minecraft:stone=minecraft:dirt". +dialog.replace_blocks.preview.button;Preview +dialog.replace_blocks.preview.title;ReplaceBlocks Preview +dialog.replace_blocks.preview.no_field;Enter a valid ReplaceBlocks value before running preview. +dialog.replace_blocks.preview.result;Dry-run completed.\nScanned regions: %d\nScanned chunks: %d\nAffected chunks: %d\nAffected sections: %d\nMatched blocks: %d\nTile entities to add: %d\nTile entities to remove: %d\nTile entities to update: %d +dialog.replace_blocks.preview.rules;Rule matches: +dialog.replace_blocks.preview.rule;#%d [%s] %s -> %s: %d +dialog.replace_blocks.preview.warning_air;Air replacement may complete missing sections before replacement. Preview counted %d missing or incomplete air sections. +dialog.replace_blocks.preview.warning_overlap;%d block positions matched more than one rule. Per-rule counts include each rule match, so their sum may be higher than matched blocks. +dialog.replace_blocks.preview.warning_tile;Tile entity replacement can add, remove, or update block entities. Test on copied worlds before applying. +dialog.replace_blocks.preview.warning_light;The current ReplaceBlocks implementation may remove light arrays from %d processed sections. +dialog.replace_blocks.preview.warning_adjacent_relight;Під час фактичної зміни прапорці повторного освітлення можуть оновитися щонайбільше у %d сусідніх чанках поза виділенням; блоки в них не замінюються. +dialog.replace_blocks.preview.warning_heightmaps;Під час фактичної зміни карти висот перераховуються для %d заторкнутих чанків. +dialog.replace_blocks.preview.warning_unsupported;Preview is not implemented for %d scanned chunks in older or unsupported versions. +dialog.replace_blocks.preview.warning_errors;Preview skipped %d chunks and %d regions because of errors: +dialog.progress.title.preview_replace_blocks;Preview ReplaceBlocks +dialog.replace_blocks.validation.source_state_snbt;Source block state SNBT must be a valid compound with a Name value. diff --git a/src/main/resources/lang/zh_CN.txt b/src/main/resources/lang/zh_CN.txt index 66550b11..92dab126 100644 --- a/src/main/resources/lang/zh_CN.txt +++ b/src/main/resources/lang/zh_CN.txt @@ -213,4 +213,110 @@ dialog.unsaved_script.header;有一个未保存的脚本。 dialog.request_number.title.array_length;数组长度 dialog.request_number.title.enter_number;输入数字 button.cancel;取消 -button.ok;确定 \ No newline at end of file +button.ok;确定 +dialog.replace_blocks.builder.button;构建器 +dialog.replace_blocks.builder.title;ReplaceBlocks 构建器 +dialog.replace_blocks.builder.from;来源方块 +dialog.replace_blocks.builder.to;目标方块 +dialog.replace_blocks.builder.add_rule;添加规则 +dialog.replace_blocks.builder.delete_rule;删除规则 +dialog.replace_blocks.builder.rules;规则 +dialog.replace_blocks.builder.rules.empty;尚未添加规则。填写来源方块和目标方块,然后点击“添加规则”。 +dialog.replace_blocks.builder.result;生成的 ReplaceBlocks 表达式 +dialog.replace_blocks.builder.invalid;方块 ID 或生成规则无效。 +dialog.replace_blocks.builder.duplicate;这条规则已存在。 +dialog.replace_blocks.builder.empty;请至少添加一条规则。 +dialog.replace_blocks.builder.advanced;来源方块和目标方块可输入包含 Name 的完整方块状态 SNBT。其他复杂规则可直接编辑 ReplaceBlocks 表达式。 +dialog.replace_blocks.builder.tile_source.any;附加 NBT:不限 +dialog.replace_blocks.builder.tile_source.require;附加 NBT:有 +dialog.replace_blocks.builder.tile_source.exclude;附加 NBT:无 +dialog.replace_blocks.builder.y_min;最低 Y +dialog.replace_blocks.builder.y_max;最高 Y +dialog.replace_blocks.builder.biome;生物群系 +dialog.replace_blocks.builder.biome.prompt;minecraft:plains;minecraft:forest +dialog.replace_blocks.builder.source_constraints;来源限制(可选) +dialog.replace_blocks.builder.catalog;方块目录 +dialog.replace_blocks.builder.catalog_switch.title;切换方块目录 +dialog.replace_blocks.builder.catalog_switch.message;从 %s 切换到 %s 将丢失构建器中的所有规则、草稿和选择。是否继续? +dialog.replace_blocks.builder.catalog.note;仅控制方块候选和属性,不会转换 ID;构建器有内容时,切换前会确认,确认后清空内容。 +dialog.replace_blocks.builder.catalog.source_unknown;来源“%s”不在 Java %s 目录中;仍会接受并按原样保存。 +dialog.replace_blocks.builder.catalog.target_unknown;目标“%s”不在 Java %s 目录中;仍会接受,但请确认目标世界版本支持该 ID。 +dialog.replace_blocks.builder.preset.persist_failed;无法写入配置,预设更改已回滚。 +dialog.replace_blocks.builder.preset;预设 +dialog.replace_blocks.builder.preset.prompt;选择预设 +dialog.replace_blocks.builder.preset.apply;填入预设 +dialog.replace_blocks.builder.preset.save;存为预设 +dialog.replace_blocks.builder.preset.delete;删除预设 +dialog.replace_blocks.builder.preset.title;ReplaceBlocks 预设 +dialog.replace_blocks.builder.preset.save.title;保存 ReplaceBlocks 预设 +dialog.replace_blocks.builder.preset.save.header;将当前生成的规则保存为可重复使用的构建器预设。 +dialog.replace_blocks.builder.preset.save.name;预设名称 +dialog.replace_blocks.builder.preset.name_empty;请输入预设名称。 +dialog.replace_blocks.builder.preset.builtin_locked;不能覆盖内置预设名称。 +dialog.replace_blocks.builder.preset.overwrite_confirm;已存在名为“%s”的预设。要覆盖吗? +dialog.replace_blocks.builder.preset.delete_confirm;删除预设“%s”? +dialog.replace_blocks.builder.preset.replace_confirm;载入这个预设会替换当前构建器规则和正在编辑的输入。 +dialog.replace_blocks.builder.preset.saved;预设“%s”已保存。 +dialog.replace_blocks.builder.preset.already_filled;这个预设已经填入规则区。 +dialog.replace_blocks.builder.discard.title;放弃构建器更改? +dialog.replace_blocks.builder.discard.header;要放弃本次构建器更改吗?ReplaceBlocks 输入框将保持打开构建器前的内容。 +dialog.replace_blocks.builder.discard.action;放弃更改 +dialog.replace_blocks.builder.continue_editing.action;继续编辑 +dialog.replace_blocks.builder.preset.air_to_stone;空气 -> 石头 +dialog.replace_blocks.builder.preset.fluids_to_air;流体 -> 空气 +dialog.replace_blocks.builder.preset.logs_leaves_to_air;原木/树叶 -> 空气 +dialog.replace_blocks.builder.preset.ores_to_stone;矿石 -> 石头 +dialog.replace_blocks.builder.preset.containers_to_air;带附加 NBT 的容器 -> 空气 +dialog.replace_blocks.builder.preset.warning_air;空气替换可能创建缺失或稀疏区段。请先在小范围复制世界中预览。 +dialog.replace_blocks.builder.preset.warning_containers;容器预设只匹配存在附加 NBT 的位置,但替换仍可能移除箱子等内部内容。请先在复制世界中预览。 +dialog.replace_blocks.builder.edit_rule;载入编辑 +dialog.replace_blocks.builder.property.all;全部 +dialog.replace_blocks.builder.help.button;帮助 +dialog.replace_blocks.builder.help.title;ReplaceBlocks 构建器帮助 +dialog.replace_blocks.builder.help.nbt.title;附加 NBT 条件 +dialog.replace_blocks.builder.help.nbt.intro;附加 NBT 是保存在方块位置上的额外数据,例如告示牌文字、箱子物品、熔炉进度或命令方块命令。这里的选项只判断来源方块位置是否有这类数据,不检查具体内容。 +dialog.replace_blocks.builder.help.nbt.any;附加NBT:不限 - 只按方块名称和属性匹配;有无附加数据都可以。适合普通方块,或你确定可以替换并丢弃原有附加数据的情况。 +dialog.replace_blocks.builder.help.nbt.present;附加NBT:有 - 只匹配已经带有附加数据的位置。适合专门处理箱子、木桶、告示牌、熔炉、刷怪笼等数据方块;生成 tile(...)。 +dialog.replace_blocks.builder.help.nbt.absent;附加NBT:无 - 只匹配没有附加数据的位置。适合避开容器内容、告示牌文字等数据,或清理异常的同名无实体方块;生成 no_tile(...)。 +dialog.replace_blocks.builder.help.nbt.note;该设置只过滤来源方块。目标方块如果需要写入方块实体 SNBT,目前仍通过高级文本输入完成。 +dialog.replace_blocks.builder.help.biome.title;生物群系条件 +dialog.replace_blocks.builder.help.biome.intro;生物群系过滤会检查每个候选方块位置所属的生物群系。现代 1.18+ 区块中,一个生物群系值覆盖 4x4x4 方块区域,因此同一单元内的相邻方块会使用同一个生物群系判断。 +dialog.replace_blocks.builder.help.biome.syntax;构建器的生物群系输入框留空表示不限制。可输入一个或多个生物群系 ID,多个用分号分隔;生成规则使用 biome(..., source)。 +dialog.replace_blocks.validation.source_empty;请输入来源方块 ID。 +dialog.replace_blocks.validation.target_empty;请输入目标方块 ID。 +dialog.replace_blocks.validation.source_unknown;未知来源方块 "%s"。 +dialog.replace_blocks.validation.target_unknown;未知目标方块 "%s"。 +dialog.replace_blocks.validation.source_format;来源方块 ID 应类似 minecraft:stone 或 modid:block_name。 +dialog.replace_blocks.validation.target_format;目标方块 ID 应类似 minecraft:dirt 或 modid:block_name。 +dialog.replace_blocks.validation.missing_equals;每条 ReplaceBlocks 规则都需要 from=to。 +dialog.replace_blocks.validation.state_snbt;方块状态 SNBT 必须是合法 compound,例如 {Name:"minecraft:stone"}。 +dialog.replace_blocks.validation.tile_empty;; 后缺少方块实体 SNBT。 +dialog.replace_blocks.validation.tile_snbt;方块实体 SNBT 必须是合法 compound。 +dialog.replace_blocks.validation.trailing;规则后有意外文本。多条规则请用逗号分隔。 +dialog.replace_blocks.validation.target_quote;带引号的目标方块缺少结束引号。 +dialog.replace_blocks.validation.quoted_target_ambiguous;带引号的目标方块接多规则或 tile SNBT 时较脆弱。请改用 {Name:"modid:block"}。 +dialog.replace_blocks.validation.source_regex;来源 "%s" 在匹配方块时会被当作 Java 正则。 +dialog.replace_blocks.validation.source_mode_wrapper;来源模式包装器必须是 literal(...)、regex(...)、props(...)、tile(...) 或 no_tile(...)。 +dialog.replace_blocks.validation.source_literal;literal(...) 来源必须包含有效方块 ID。无效来源:"%s"。 +dialog.replace_blocks.validation.source_regex_syntax;regex(...) 来源必须包含有效的 Java 正则。 +dialog.replace_blocks.validation.source_props;props(...) 来源必须包含带 Name 且至少选择一个属性的方块状态 SNBT。 +dialog.replace_blocks.validation.source_y_range;y(...) 来源必须使用 min..max,并且至少填写一个整数边界,例如 y(-64..64, literal(minecraft:stone))。 +dialog.replace_blocks.validation.source_biome;biome(...) 来源必须使用有效的生物群系 ID,多个用分号分隔,并在逗号后跟一个来源表达式,例如 biome(minecraft:plains, literal(minecraft:stone))。 +dialog.change_nbt.query_invalid;更改查询无效:%s +dialog.change_nbt.replace_blocks_query_quote;在高级查询框中,ReplaceBlocks 的值需要用英文双引号包住,例如 ReplaceBlocks = "minecraft:stone=minecraft:dirt"。 +dialog.replace_blocks.preview.button;预览 +dialog.replace_blocks.preview.title;ReplaceBlocks 预览 +dialog.replace_blocks.preview.no_field;请先输入有效的 ReplaceBlocks 值,再运行预览。 +dialog.replace_blocks.preview.result;试运行完成。\n扫描区域:%d\n扫描区块:%d\n受影响区块:%d\n受影响区段:%d\n匹配方块数:%d\n将新增方块实体:%d\n将移除方块实体:%d\n将更新方块实体:%d +dialog.replace_blocks.preview.rules;规则命中: +dialog.replace_blocks.preview.rule;#%d [%s] %s -> %s:%d +dialog.replace_blocks.preview.warning_air;替换空气时可能会先补全缺失区段。预览已计入 %d 个缺失或不完整的空气区段。 +dialog.replace_blocks.preview.warning_overlap;%d 个方块位置同时命中多条规则。逐规则计数会分别计入每条命中规则,所以合计可能高于匹配方块数。 +dialog.replace_blocks.preview.warning_tile;方块实体替换可能新增、移除或更新 block entity。正式应用前请先用复制世界测试。 +dialog.replace_blocks.preview.warning_light;实际执行会移除 %d 个受影响 section 的光照数组。 +dialog.replace_blocks.preview.warning_adjacent_relight;实际执行可能会在选择区外最多 %d 个相邻区块中更新重新光照标记;这些区块中的方块不会被替换。 +dialog.replace_blocks.preview.warning_heightmaps;实际执行会对 %d 个受影响 chunk 重算高度图。 +dialog.replace_blocks.preview.warning_unsupported;有 %d 个已扫描 chunk 属于较旧或暂不支持版本,未进行预览。 +dialog.replace_blocks.preview.warning_errors;预览因错误跳过了 %d 个 chunk 和 %d 个 region: +dialog.progress.title.preview_replace_blocks;预览 ReplaceBlocks +dialog.replace_blocks.validation.source_state_snbt;来源方块状态 SNBT 必须是包含 Name 的合法 compound。 diff --git a/src/main/resources/lang/zh_TW.txt b/src/main/resources/lang/zh_TW.txt index 99f87113..dfc3ac39 100644 --- a/src/main/resources/lang/zh_TW.txt +++ b/src/main/resources/lang/zh_TW.txt @@ -213,4 +213,110 @@ dialog.unsaved_script.header;有一個未保存的腳本。 dialog.request_number.title.array_length;數組的長度 dialog.request_number.title.enter_number;價值 button.cancel;取消 -button.ok;確定 \ No newline at end of file +button.ok;確定 +dialog.replace_blocks.builder.button;建構器 +dialog.replace_blocks.builder.title;ReplaceBlocks 建構器 +dialog.replace_blocks.builder.from;來源方塊 +dialog.replace_blocks.builder.to;目標方塊 +dialog.replace_blocks.builder.add_rule;新增規則 +dialog.replace_blocks.builder.delete_rule;刪除規則 +dialog.replace_blocks.builder.rules;規則 +dialog.replace_blocks.builder.rules.empty;尚未新增規則。填寫來源方塊和目標方塊,然後按一下「新增規則」。 +dialog.replace_blocks.builder.result;產生的 ReplaceBlocks 表達式 +dialog.replace_blocks.builder.invalid;方塊 ID 或產生的規則無效。 +dialog.replace_blocks.builder.duplicate;此規則已存在。 +dialog.replace_blocks.builder.empty;請至少新增一條規則。 +dialog.replace_blocks.builder.advanced;來源方塊與目標方塊可輸入包含 Name 的完整方塊狀態 SNBT。其他複雜規則可直接編輯 ReplaceBlocks 表達式。 +dialog.replace_blocks.builder.tile_source.any;附加 NBT:不限 +dialog.replace_blocks.builder.tile_source.require;附加 NBT:有 +dialog.replace_blocks.builder.tile_source.exclude;附加 NBT:無 +dialog.replace_blocks.builder.y_min;最低 Y +dialog.replace_blocks.builder.y_max;最高 Y +dialog.replace_blocks.builder.biome;生物群系 +dialog.replace_blocks.builder.biome.prompt;minecraft:plains;minecraft:forest +dialog.replace_blocks.builder.source_constraints;來源限制(可選) +dialog.replace_blocks.builder.catalog;方塊目錄 +dialog.replace_blocks.builder.catalog_switch.title;Switch block catalogue +dialog.replace_blocks.builder.catalog_switch.message;從 %s 切換到 %s 將捨棄建構器中的所有規則、草稿和選取項目。要繼續嗎? +dialog.replace_blocks.builder.catalog.note;只控制方塊候選和屬性,不會轉換 ID;建構器有內容時,切換前會確認,確認後清空內容。 +dialog.replace_blocks.builder.catalog.source_unknown;來源「%s」不在 Java %s 目錄中;仍會接受並按原樣儲存。 +dialog.replace_blocks.builder.catalog.target_unknown;目標「%s」不在 Java %s 目錄中;仍會接受,但請確認目標世界版本支援該 ID。 +dialog.replace_blocks.builder.preset.persist_failed;無法寫入設定,預設變更已復原。 +dialog.replace_blocks.builder.preset;預設 +dialog.replace_blocks.builder.preset.prompt;選擇預設 +dialog.replace_blocks.builder.preset.apply;填入預設 +dialog.replace_blocks.builder.preset.save;存為預設 +dialog.replace_blocks.builder.preset.delete;刪除預設 +dialog.replace_blocks.builder.preset.title;ReplaceBlocks 預設 +dialog.replace_blocks.builder.preset.save.title;儲存 ReplaceBlocks 預設 +dialog.replace_blocks.builder.preset.save.header;將目前生成的規則儲存為可重複使用的建構器預設。 +dialog.replace_blocks.builder.preset.save.name;預設名稱 +dialog.replace_blocks.builder.preset.name_empty;請輸入預設名稱。 +dialog.replace_blocks.builder.preset.builtin_locked;不能覆蓋內建預設名稱。 +dialog.replace_blocks.builder.preset.overwrite_confirm;已存在名為「%s」的預設。要覆蓋嗎? +dialog.replace_blocks.builder.preset.delete_confirm;刪除預設「%s」? +dialog.replace_blocks.builder.preset.replace_confirm;載入這個預設會取代目前建構器規則和正在編輯的輸入。 +dialog.replace_blocks.builder.preset.saved;預設「%s」已儲存。 +dialog.replace_blocks.builder.preset.already_filled;此預設已加入規則清單。 +dialog.replace_blocks.builder.discard.title;捨棄建構器變更? +dialog.replace_blocks.builder.discard.header;要捨棄本次建構器變更嗎?ReplaceBlocks 輸入框將保留開啟建構器前的內容。 +dialog.replace_blocks.builder.discard.action;捨棄變更 +dialog.replace_blocks.builder.continue_editing.action;繼續編輯 +dialog.replace_blocks.builder.preset.air_to_stone;空氣 -> 石頭 +dialog.replace_blocks.builder.preset.fluids_to_air;流體 -> 空氣 +dialog.replace_blocks.builder.preset.logs_leaves_to_air;原木/樹葉 -> 空氣 +dialog.replace_blocks.builder.preset.ores_to_stone;礦石 -> 石頭 +dialog.replace_blocks.builder.preset.containers_to_air;帶附加 NBT 的容器 -> 空氣 +dialog.replace_blocks.builder.preset.warning_air;替換空氣可能建立缺失或稀疏區段。請先在小範圍複製世界中預覽。 +dialog.replace_blocks.builder.preset.warning_containers;容器預設只匹配存在附加 NBT 的位置,但替換仍可能移除箱子等內部內容。請先在複製世界中預覽。 +dialog.replace_blocks.builder.edit_rule;載入編輯 +dialog.replace_blocks.builder.property.all;全部 +dialog.replace_blocks.builder.help.button;說明 +dialog.replace_blocks.builder.help.title;ReplaceBlocks 建構器說明 +dialog.replace_blocks.builder.help.nbt.title;附加 NBT 條件 +dialog.replace_blocks.builder.help.nbt.intro;附加 NBT 是儲存在方塊位置上的額外資料,例如告示牌文字、箱子物品、熔爐進度或命令方塊指令。這些選項只判斷來源位置是否有這類資料,不會檢查資料內容。 +dialog.replace_blocks.builder.help.nbt.any;附加 NBT:不限 — 只依方塊名稱與屬性匹配,有無附加資料都可以。適合一般方塊,或你確定替換時可以捨棄原有附加資料的情況。 +dialog.replace_blocks.builder.help.nbt.present;附加 NBT:有:只匹配已帶有附加資料的位置。適合專門處理箱子、木桶、告示牌、熔爐、刷怪籠等資料方塊;產生 tile(...)。 +dialog.replace_blocks.builder.help.nbt.absent;附加 NBT:無:只匹配沒有附加資料的位置。適合避開容器內容、告示牌文字等資料,或清理異常的同名無實體方塊;產生 no_tile(...)。 +dialog.replace_blocks.builder.help.nbt.note;這項設定只過濾來源方塊。若目標方塊需要寫入方塊實體 SNBT,目前仍須使用進階文字輸入。 +dialog.replace_blocks.builder.help.biome.title;生物群系條件 +dialog.replace_blocks.builder.help.biome.intro;生物群系過濾會檢查每個候選方塊位置所屬的生物群系。在現代 1.18+ 區塊中,一個生物群系值覆蓋 4x4x4 方塊區域,因此同一單元內的相鄰方塊會使用相同的生物群系判斷。 +dialog.replace_blocks.builder.help.biome.syntax;建構器的生物群系輸入框留空表示不限制。可輸入一個或多個生物群系 ID,多個 ID 以分號分隔;產生的規則會使用 biome(..., source)。 +dialog.replace_blocks.validation.source_empty;請輸入來源方塊 ID。 +dialog.replace_blocks.validation.target_empty;請輸入目標方塊 ID。 +dialog.replace_blocks.validation.source_unknown;未知的來源方塊「%s」。 +dialog.replace_blocks.validation.target_unknown;未知的目標方塊「%s」。 +dialog.replace_blocks.validation.source_format;來源方塊 ID 應類似 minecraft:stone 或 modid:block_name。 +dialog.replace_blocks.validation.target_format;目標方塊 ID 應類似 minecraft:dirt 或 modid:block_name。 +dialog.replace_blocks.validation.missing_equals;每條 ReplaceBlocks 規則都需要 from=to。 +dialog.replace_blocks.validation.state_snbt;方塊狀態 SNBT 必須是合法的 compound,例如 {Name:"minecraft:stone"}。 +dialog.replace_blocks.validation.tile_empty;; 後缺少方塊實體 SNBT。 +dialog.replace_blocks.validation.tile_snbt;方塊實體 SNBT 必須是合法的 compound。 +dialog.replace_blocks.validation.trailing;規則後有意外文字。多條規則請以逗號分隔。 +dialog.replace_blocks.validation.target_quote;加引號的目標方塊缺少結尾引號。 +dialog.replace_blocks.validation.quoted_target_ambiguous;加引號的目標方塊接續多條規則或 tile SNBT 時較容易產生歧義。請改用 {Name:"modid:block"}。 +dialog.replace_blocks.validation.source_regex;來源「%s」在匹配方塊時會被視為 Java 正則表達式。 +dialog.replace_blocks.validation.source_mode_wrapper;來源模式包裝器必須是 literal(...)、regex(...)、props(...)、tile(...) 或 no_tile(...)。 +dialog.replace_blocks.validation.source_literal;literal(...) 來源必須包含有效方塊 ID。無效來源:「%s」。 +dialog.replace_blocks.validation.source_regex_syntax;regex(...) 來源必須包含有效的 Java 正則。 +dialog.replace_blocks.validation.source_props;props(...) 來源必須包含帶 Name 且至少選擇一個屬性的方塊狀態 SNBT。 +dialog.replace_blocks.validation.source_y_range;y(...) 來源必須使用 min..max,並且至少填寫一個整數邊界,例如 y(-64..64, literal(minecraft:stone))。 +dialog.replace_blocks.validation.source_biome;biome(...) 來源必須使用有效的生物群系 ID,多個 ID 以分號分隔,並在逗號後接來源表達式,例如 biome(minecraft:plains, literal(minecraft:stone))。 +dialog.change_nbt.query_invalid;變更查詢無效:%s +dialog.change_nbt.replace_blocks_query_quote;在進階查詢欄位中,ReplaceBlocks 的值需要用英文雙引號包住,例如 ReplaceBlocks = "minecraft:stone=minecraft:dirt"。 +dialog.replace_blocks.preview.button;預覽 +dialog.replace_blocks.preview.title;ReplaceBlocks 預覽 +dialog.replace_blocks.preview.no_field;請先輸入有效的 ReplaceBlocks 值,再執行預覽。 +dialog.replace_blocks.preview.result;試執行完成。\n掃描區域:%d\n掃描區塊:%d\n受影響區塊:%d\n受影響區段:%d\n匹配方塊數:%d\n將新增方塊實體:%d\n將移除方塊實體:%d\n將更新方塊實體:%d +dialog.replace_blocks.preview.rules;規則命中: +dialog.replace_blocks.preview.rule;#%d [%s] %s -> %s:%d +dialog.replace_blocks.preview.warning_air;替換空氣可能會先補全缺失區段。預覽已計入 %d 個缺失或不完整的空氣區段。 +dialog.replace_blocks.preview.warning_overlap;%d 個方塊位置同時命中多條規則。逐規則計數會分別計入每條命中規則,因此總和可能高於匹配方塊數。 +dialog.replace_blocks.preview.warning_tile;方塊實體替換可能新增、移除或更新方塊實體。正式套用前請先在複製世界中測試。 +dialog.replace_blocks.preview.warning_light;實際執行會移除 %d 個受影響區段的光照陣列。 +dialog.replace_blocks.preview.warning_adjacent_relight;實際執行可能會在選取範圍外最多 %d 個相鄰區塊中更新重新光照標記;這些區塊中的方塊不會被替換。 +dialog.replace_blocks.preview.warning_heightmaps;實際執行會重新計算 %d 個受影響區塊的高度圖。 +dialog.replace_blocks.preview.warning_unsupported;有 %d 個已掃描區塊屬於較舊或暫不支援的版本,未進行預覽。 +dialog.replace_blocks.preview.warning_errors;預覽因錯誤略過了 %d 個區塊和 %d 個區域: +dialog.progress.title.preview_replace_blocks;預覽 ReplaceBlocks +dialog.replace_blocks.validation.source_state_snbt;來源方塊狀態 SNBT 必須是包含 Name 的合法 compound。 diff --git a/src/main/resources/mapping/block_states/catalogs.json b/src/main/resources/mapping/block_states/catalogs.json new file mode 100644 index 00000000..cf9782c3 --- /dev/null +++ b/src/main/resources/mapping/block_states/catalogs.json @@ -0,0 +1,7 @@ +[ + "mapping/block_states/java_1_18_2.json", + "mapping/block_states/java_1_20_6.json", + "mapping/block_states/java_1_21_9.json", + "mapping/block_states/java_1_21_11.json", + "mapping/block_states/java_26_2.json" +] diff --git a/src/main/resources/mapping/block_states/java_1_18_2.json b/src/main/resources/mapping/block_states/java_1_18_2.json new file mode 100644 index 00000000..c2ed548c --- /dev/null +++ b/src/main/resources/mapping/block_states/java_1_18_2.json @@ -0,0 +1,13918 @@ +{ + "version": "1.18.2", + "dataVersion": 2975, + "source": "Mojang server reports/blocks.json generated from 1.18.2 server.jar", + "blocks": { + "minecraft:acacia_button": { + "properties": { + "face": [ + "ceiling", + "floor", + "wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:acacia_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:acacia_fence": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:acacia_fence_gate": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "in_wall": [ + "false", + "true" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "in_wall": "false", + "open": "false", + "powered": "false" + }, + "stateCount": 32 + }, + "minecraft:acacia_leaves": { + "properties": { + "distance": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ], + "persistent": [ + "false", + "true" + ] + }, + "defaultProperties": { + "distance": "7", + "persistent": "false" + }, + "stateCount": 14 + }, + "minecraft:acacia_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:acacia_planks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:acacia_pressure_plate": { + "properties": { + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:acacia_sapling": { + "properties": { + "stage": [ + "0", + "1" + ] + }, + "defaultProperties": { + "stage": "0" + }, + "stateCount": 2 + }, + "minecraft:acacia_sign": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:acacia_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:acacia_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:acacia_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:acacia_wall_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:acacia_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:activator_rail": { + "properties": { + "powered": [ + "false", + "true" + ], + "shape": [ + "ascending_east", + "ascending_north", + "ascending_south", + "ascending_west", + "east_west", + "north_south" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false", + "shape": "north_south", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:air": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:allium": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:amethyst_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:amethyst_cluster": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "up", + "waterlogged": "false" + }, + "stateCount": 12 + }, + "minecraft:ancient_debris": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:andesite": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:andesite_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:andesite_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:andesite_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:anvil": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:attached_melon_stem": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:attached_pumpkin_stem": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:azalea": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:azalea_leaves": { + "properties": { + "distance": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ], + "persistent": [ + "false", + "true" + ] + }, + "defaultProperties": { + "distance": "7", + "persistent": "false" + }, + "stateCount": 14 + }, + "minecraft:azure_bluet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:bamboo": { + "properties": { + "age": [ + "0", + "1" + ], + "leaves": [ + "large", + "none", + "small" + ], + "stage": [ + "0", + "1" + ] + }, + "defaultProperties": { + "age": "0", + "leaves": "none", + "stage": "0" + }, + "stateCount": 12 + }, + "minecraft:bamboo_sapling": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:barrel": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ], + "open": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "open": "false" + }, + "stateCount": 12 + }, + "minecraft:barrier": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:basalt": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:beacon": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:bedrock": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:bee_nest": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "honey_level": [ + "0", + "1", + "2", + "3", + "4", + "5" + ] + }, + "defaultProperties": { + "facing": "north", + "honey_level": "0" + }, + "stateCount": 24 + }, + "minecraft:beehive": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "honey_level": [ + "0", + "1", + "2", + "3", + "4", + "5" + ] + }, + "defaultProperties": { + "facing": "north", + "honey_level": "0" + }, + "stateCount": 24 + }, + "minecraft:beetroots": { + "properties": { + "age": [ + "0", + "1", + "2", + "3" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 4 + }, + "minecraft:bell": { + "properties": { + "attachment": [ + "ceiling", + "double_wall", + "floor", + "single_wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "attachment": "floor", + "facing": "north", + "powered": "false" + }, + "stateCount": 32 + }, + "minecraft:big_dripleaf": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "tilt": [ + "full", + "none", + "partial", + "unstable" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "tilt": "none", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:big_dripleaf_stem": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:birch_button": { + "properties": { + "face": [ + "ceiling", + "floor", + "wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:birch_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:birch_fence": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:birch_fence_gate": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "in_wall": [ + "false", + "true" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "in_wall": "false", + "open": "false", + "powered": "false" + }, + "stateCount": 32 + }, + "minecraft:birch_leaves": { + "properties": { + "distance": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ], + "persistent": [ + "false", + "true" + ] + }, + "defaultProperties": { + "distance": "7", + "persistent": "false" + }, + "stateCount": 14 + }, + "minecraft:birch_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:birch_planks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:birch_pressure_plate": { + "properties": { + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:birch_sapling": { + "properties": { + "stage": [ + "0", + "1" + ] + }, + "defaultProperties": { + "stage": "0" + }, + "stateCount": 2 + }, + "minecraft:birch_sign": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:birch_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:birch_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:birch_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:birch_wall_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:birch_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:black_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:black_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:black_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:black_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:black_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:black_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:black_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:black_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:black_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:black_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:black_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:black_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:black_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:black_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:blackstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:blackstone_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:blackstone_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:blackstone_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:blast_furnace": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "lit": "false" + }, + "stateCount": 8 + }, + "minecraft:blue_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:blue_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:blue_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:blue_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:blue_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:blue_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:blue_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:blue_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:blue_ice": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:blue_orchid": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:blue_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:blue_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:blue_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:blue_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:blue_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:blue_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:bone_block": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:bookshelf": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:brain_coral": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:brain_coral_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:brain_coral_fan": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:brain_coral_wall_fan": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "true" + }, + "stateCount": 8 + }, + "minecraft:brewing_stand": { + "properties": { + "has_bottle_0": [ + "false", + "true" + ], + "has_bottle_1": [ + "false", + "true" + ], + "has_bottle_2": [ + "false", + "true" + ] + }, + "defaultProperties": { + "has_bottle_0": "false", + "has_bottle_1": "false", + "has_bottle_2": "false" + }, + "stateCount": 8 + }, + "minecraft:brick_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:brick_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:brick_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:brown_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:brown_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:brown_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:brown_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:brown_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:brown_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:brown_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:brown_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:brown_mushroom": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:brown_mushroom_block": { + "properties": { + "down": [ + "false", + "true" + ], + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "up": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "down": "true", + "east": "true", + "north": "true", + "south": "true", + "up": "true", + "west": "true" + }, + "stateCount": 64 + }, + "minecraft:brown_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:brown_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:brown_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:brown_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:brown_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:brown_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:bubble_column": { + "properties": { + "drag": [ + "false", + "true" + ] + }, + "defaultProperties": { + "drag": "true" + }, + "stateCount": 2 + }, + "minecraft:bubble_coral": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:bubble_coral_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:bubble_coral_fan": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:bubble_coral_wall_fan": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "true" + }, + "stateCount": 8 + }, + "minecraft:budding_amethyst": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cactus": { + "properties": { + "age": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 16 + }, + "minecraft:cake": { + "properties": { + "bites": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6" + ] + }, + "defaultProperties": { + "bites": "0" + }, + "stateCount": 7 + }, + "minecraft:calcite": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:campfire": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "lit": [ + "false", + "true" + ], + "signal_fire": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "lit": "true", + "signal_fire": "false", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:carrots": { + "properties": { + "age": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 8 + }, + "minecraft:cartography_table": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:carved_pumpkin": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:cauldron": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cave_air": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cave_vines": { + "properties": { + "age": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "16", + "17", + "18", + "19", + "2", + "20", + "21", + "22", + "23", + "24", + "25", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "berries": [ + "false", + "true" + ] + }, + "defaultProperties": { + "age": "0", + "berries": "false" + }, + "stateCount": 52 + }, + "minecraft:cave_vines_plant": { + "properties": { + "berries": [ + "false", + "true" + ] + }, + "defaultProperties": { + "berries": "false" + }, + "stateCount": 2 + }, + "minecraft:chain": { + "properties": { + "axis": [ + "x", + "y", + "z" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "axis": "y", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:chain_command_block": { + "properties": { + "conditional": [ + "false", + "true" + ], + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "conditional": "false", + "facing": "north" + }, + "stateCount": 12 + }, + "minecraft:chest": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "type": [ + "left", + "right", + "single" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "type": "single", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:chipped_anvil": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:chiseled_deepslate": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:chiseled_nether_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:chiseled_polished_blackstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:chiseled_quartz_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:chiseled_red_sandstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:chiseled_sandstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:chiseled_stone_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:chorus_flower": { + "properties": { + "age": [ + "0", + "1", + "2", + "3", + "4", + "5" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 6 + }, + "minecraft:chorus_plant": { + "properties": { + "down": [ + "false", + "true" + ], + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "up": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "down": "false", + "east": "false", + "north": "false", + "south": "false", + "up": "false", + "west": "false" + }, + "stateCount": 64 + }, + "minecraft:clay": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:coal_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:coal_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:coarse_dirt": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cobbled_deepslate": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cobbled_deepslate_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:cobbled_deepslate_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:cobbled_deepslate_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:cobblestone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cobblestone_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:cobblestone_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:cobblestone_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:cobweb": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cocoa": { + "properties": { + "age": [ + "0", + "1", + "2" + ], + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "age": "0", + "facing": "north" + }, + "stateCount": 12 + }, + "minecraft:command_block": { + "properties": { + "conditional": [ + "false", + "true" + ], + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "conditional": "false", + "facing": "north" + }, + "stateCount": 12 + }, + "minecraft:comparator": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "mode": [ + "compare", + "subtract" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "mode": "compare", + "powered": "false" + }, + "stateCount": 16 + }, + "minecraft:composter": { + "properties": { + "level": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8" + ] + }, + "defaultProperties": { + "level": "0" + }, + "stateCount": 9 + }, + "minecraft:conduit": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:copper_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:copper_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cornflower": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cracked_deepslate_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cracked_deepslate_tiles": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cracked_nether_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cracked_polished_blackstone_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cracked_stone_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:crafting_table": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:creeper_head": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:creeper_wall_head": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:crimson_button": { + "properties": { + "face": [ + "ceiling", + "floor", + "wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:crimson_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:crimson_fence": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:crimson_fence_gate": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "in_wall": [ + "false", + "true" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "in_wall": "false", + "open": "false", + "powered": "false" + }, + "stateCount": 32 + }, + "minecraft:crimson_fungus": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:crimson_hyphae": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:crimson_nylium": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:crimson_planks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:crimson_pressure_plate": { + "properties": { + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:crimson_roots": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:crimson_sign": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:crimson_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:crimson_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:crimson_stem": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:crimson_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:crimson_wall_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:crying_obsidian": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cut_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cut_copper_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:cut_copper_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:cut_red_sandstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cut_red_sandstone_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:cut_sandstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cut_sandstone_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:cyan_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:cyan_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:cyan_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:cyan_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:cyan_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cyan_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cyan_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cyan_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:cyan_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:cyan_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cyan_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:cyan_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cyan_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:cyan_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:damaged_anvil": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:dandelion": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dark_oak_button": { + "properties": { + "face": [ + "ceiling", + "floor", + "wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:dark_oak_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:dark_oak_fence": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:dark_oak_fence_gate": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "in_wall": [ + "false", + "true" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "in_wall": "false", + "open": "false", + "powered": "false" + }, + "stateCount": 32 + }, + "minecraft:dark_oak_leaves": { + "properties": { + "distance": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ], + "persistent": [ + "false", + "true" + ] + }, + "defaultProperties": { + "distance": "7", + "persistent": "false" + }, + "stateCount": 14 + }, + "minecraft:dark_oak_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:dark_oak_planks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dark_oak_pressure_plate": { + "properties": { + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:dark_oak_sapling": { + "properties": { + "stage": [ + "0", + "1" + ] + }, + "defaultProperties": { + "stage": "0" + }, + "stateCount": 2 + }, + "minecraft:dark_oak_sign": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:dark_oak_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:dark_oak_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:dark_oak_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:dark_oak_wall_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:dark_oak_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:dark_prismarine": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dark_prismarine_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:dark_prismarine_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:daylight_detector": { + "properties": { + "inverted": [ + "false", + "true" + ], + "power": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "inverted": "false", + "power": "0" + }, + "stateCount": 32 + }, + "minecraft:dead_brain_coral": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:dead_brain_coral_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dead_brain_coral_fan": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:dead_brain_coral_wall_fan": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "true" + }, + "stateCount": 8 + }, + "minecraft:dead_bubble_coral": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:dead_bubble_coral_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dead_bubble_coral_fan": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:dead_bubble_coral_wall_fan": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "true" + }, + "stateCount": 8 + }, + "minecraft:dead_bush": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dead_fire_coral": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:dead_fire_coral_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dead_fire_coral_fan": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:dead_fire_coral_wall_fan": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "true" + }, + "stateCount": 8 + }, + "minecraft:dead_horn_coral": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:dead_horn_coral_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dead_horn_coral_fan": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:dead_horn_coral_wall_fan": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "true" + }, + "stateCount": 8 + }, + "minecraft:dead_tube_coral": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:dead_tube_coral_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dead_tube_coral_fan": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:dead_tube_coral_wall_fan": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "true" + }, + "stateCount": 8 + }, + "minecraft:deepslate": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:deepslate_brick_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:deepslate_brick_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:deepslate_brick_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:deepslate_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:deepslate_coal_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:deepslate_copper_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:deepslate_diamond_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:deepslate_emerald_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:deepslate_gold_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:deepslate_iron_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:deepslate_lapis_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:deepslate_redstone_ore": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:deepslate_tile_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:deepslate_tile_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:deepslate_tile_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:deepslate_tiles": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:detector_rail": { + "properties": { + "powered": [ + "false", + "true" + ], + "shape": [ + "ascending_east", + "ascending_north", + "ascending_south", + "ascending_west", + "east_west", + "north_south" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false", + "shape": "north_south", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:diamond_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:diamond_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:diorite": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:diorite_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:diorite_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:diorite_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:dirt": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dirt_path": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dispenser": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ], + "triggered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "triggered": "false" + }, + "stateCount": 12 + }, + "minecraft:dragon_egg": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dragon_head": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:dragon_wall_head": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:dried_kelp_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dripstone_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dropper": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ], + "triggered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "triggered": "false" + }, + "stateCount": 12 + }, + "minecraft:emerald_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:emerald_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:enchanting_table": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:end_gateway": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:end_portal": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:end_portal_frame": { + "properties": { + "eye": [ + "false", + "true" + ], + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "eye": "false", + "facing": "north" + }, + "stateCount": 8 + }, + "minecraft:end_rod": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:end_stone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:end_stone_brick_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:end_stone_brick_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:end_stone_brick_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:end_stone_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:ender_chest": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:exposed_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:exposed_cut_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:exposed_cut_copper_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:exposed_cut_copper_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:farmland": { + "properties": { + "moisture": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ] + }, + "defaultProperties": { + "moisture": "0" + }, + "stateCount": 8 + }, + "minecraft:fern": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:fire": { + "properties": { + "age": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "up": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "age": "0", + "east": "false", + "north": "false", + "south": "false", + "up": "false", + "west": "false" + }, + "stateCount": 512 + }, + "minecraft:fire_coral": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:fire_coral_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:fire_coral_fan": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:fire_coral_wall_fan": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "true" + }, + "stateCount": 8 + }, + "minecraft:fletching_table": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:flower_pot": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:flowering_azalea": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:flowering_azalea_leaves": { + "properties": { + "distance": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ], + "persistent": [ + "false", + "true" + ] + }, + "defaultProperties": { + "distance": "7", + "persistent": "false" + }, + "stateCount": 14 + }, + "minecraft:frosted_ice": { + "properties": { + "age": [ + "0", + "1", + "2", + "3" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 4 + }, + "minecraft:furnace": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "lit": "false" + }, + "stateCount": 8 + }, + "minecraft:gilded_blackstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:glow_lichen": { + "properties": { + "down": [ + "false", + "true" + ], + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "down": "false", + "east": "false", + "north": "false", + "south": "false", + "up": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 128 + }, + "minecraft:glowstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:gold_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:gold_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:granite": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:granite_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:granite_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:granite_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:grass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:grass_block": { + "properties": { + "snowy": [ + "false", + "true" + ] + }, + "defaultProperties": { + "snowy": "false" + }, + "stateCount": 2 + }, + "minecraft:gravel": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:gray_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:gray_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:gray_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:gray_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:gray_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:gray_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:gray_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:gray_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:gray_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:gray_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:gray_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:gray_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:gray_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:gray_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:green_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:green_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:green_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:green_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:green_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:green_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:green_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:green_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:green_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:green_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:green_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:green_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:green_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:green_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:grindstone": { + "properties": { + "face": [ + "ceiling", + "floor", + "wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north" + }, + "stateCount": 12 + }, + "minecraft:hanging_roots": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "false" + }, + "stateCount": 2 + }, + "minecraft:hay_block": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:heavy_weighted_pressure_plate": { + "properties": { + "power": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "power": "0" + }, + "stateCount": 16 + }, + "minecraft:honey_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:honeycomb_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:hopper": { + "properties": { + "enabled": [ + "false", + "true" + ], + "facing": [ + "down", + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "enabled": "true", + "facing": "down" + }, + "stateCount": 10 + }, + "minecraft:horn_coral": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:horn_coral_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:horn_coral_fan": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:horn_coral_wall_fan": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "true" + }, + "stateCount": 8 + }, + "minecraft:ice": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:infested_chiseled_stone_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:infested_cobblestone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:infested_cracked_stone_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:infested_deepslate": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:infested_mossy_stone_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:infested_stone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:infested_stone_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:iron_bars": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:iron_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:iron_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:iron_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:iron_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:jack_o_lantern": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:jigsaw": { + "properties": { + "orientation": [ + "down_east", + "down_north", + "down_south", + "down_west", + "east_up", + "north_up", + "south_up", + "up_east", + "up_north", + "up_south", + "up_west", + "west_up" + ] + }, + "defaultProperties": { + "orientation": "north_up" + }, + "stateCount": 12 + }, + "minecraft:jukebox": { + "properties": { + "has_record": [ + "false", + "true" + ] + }, + "defaultProperties": { + "has_record": "false" + }, + "stateCount": 2 + }, + "minecraft:jungle_button": { + "properties": { + "face": [ + "ceiling", + "floor", + "wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:jungle_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:jungle_fence": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:jungle_fence_gate": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "in_wall": [ + "false", + "true" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "in_wall": "false", + "open": "false", + "powered": "false" + }, + "stateCount": 32 + }, + "minecraft:jungle_leaves": { + "properties": { + "distance": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ], + "persistent": [ + "false", + "true" + ] + }, + "defaultProperties": { + "distance": "7", + "persistent": "false" + }, + "stateCount": 14 + }, + "minecraft:jungle_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:jungle_planks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:jungle_pressure_plate": { + "properties": { + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:jungle_sapling": { + "properties": { + "stage": [ + "0", + "1" + ] + }, + "defaultProperties": { + "stage": "0" + }, + "stateCount": 2 + }, + "minecraft:jungle_sign": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:jungle_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:jungle_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:jungle_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:jungle_wall_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:jungle_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:kelp": { + "properties": { + "age": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "16", + "17", + "18", + "19", + "2", + "20", + "21", + "22", + "23", + "24", + "25", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 26 + }, + "minecraft:kelp_plant": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:ladder": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:lantern": { + "properties": { + "hanging": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "hanging": "false", + "waterlogged": "false" + }, + "stateCount": 4 + }, + "minecraft:lapis_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:lapis_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:large_amethyst_bud": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "up", + "waterlogged": "false" + }, + "stateCount": 12 + }, + "minecraft:large_fern": { + "properties": { + "half": [ + "lower", + "upper" + ] + }, + "defaultProperties": { + "half": "lower" + }, + "stateCount": 2 + }, + "minecraft:lava": { + "properties": { + "level": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "level": "0" + }, + "stateCount": 16 + }, + "minecraft:lava_cauldron": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:lectern": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "has_book": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "has_book": "false", + "powered": "false" + }, + "stateCount": 16 + }, + "minecraft:lever": { + "properties": { + "face": [ + "ceiling", + "floor", + "wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:light": { + "properties": { + "level": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "level": "15", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:light_blue_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:light_blue_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:light_blue_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:light_blue_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:light_blue_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:light_blue_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:light_blue_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:light_blue_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:light_blue_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:light_blue_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:light_blue_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:light_blue_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:light_blue_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:light_blue_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:light_gray_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:light_gray_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:light_gray_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:light_gray_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:light_gray_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:light_gray_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:light_gray_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:light_gray_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:light_gray_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:light_gray_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:light_gray_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:light_gray_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:light_gray_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:light_gray_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:light_weighted_pressure_plate": { + "properties": { + "power": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "power": "0" + }, + "stateCount": 16 + }, + "minecraft:lightning_rod": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "up", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:lilac": { + "properties": { + "half": [ + "lower", + "upper" + ] + }, + "defaultProperties": { + "half": "lower" + }, + "stateCount": 2 + }, + "minecraft:lily_of_the_valley": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:lily_pad": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:lime_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:lime_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:lime_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:lime_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:lime_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:lime_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:lime_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:lime_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:lime_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:lime_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:lime_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:lime_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:lime_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:lime_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:lodestone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:loom": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:magenta_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:magenta_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:magenta_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:magenta_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:magenta_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:magenta_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:magenta_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:magenta_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:magenta_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:magenta_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:magenta_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:magenta_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:magenta_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:magenta_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:magma_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:medium_amethyst_bud": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "up", + "waterlogged": "false" + }, + "stateCount": 12 + }, + "minecraft:melon": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:melon_stem": { + "properties": { + "age": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 8 + }, + "minecraft:moss_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:moss_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:mossy_cobblestone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:mossy_cobblestone_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:mossy_cobblestone_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:mossy_cobblestone_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:mossy_stone_brick_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:mossy_stone_brick_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:mossy_stone_brick_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:mossy_stone_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:moving_piston": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ], + "type": [ + "normal", + "sticky" + ] + }, + "defaultProperties": { + "facing": "north", + "type": "normal" + }, + "stateCount": 12 + }, + "minecraft:mushroom_stem": { + "properties": { + "down": [ + "false", + "true" + ], + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "up": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "down": "true", + "east": "true", + "north": "true", + "south": "true", + "up": "true", + "west": "true" + }, + "stateCount": 64 + }, + "minecraft:mycelium": { + "properties": { + "snowy": [ + "false", + "true" + ] + }, + "defaultProperties": { + "snowy": "false" + }, + "stateCount": 2 + }, + "minecraft:nether_brick_fence": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:nether_brick_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:nether_brick_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:nether_brick_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:nether_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:nether_gold_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:nether_portal": { + "properties": { + "axis": [ + "x", + "z" + ] + }, + "defaultProperties": { + "axis": "x" + }, + "stateCount": 2 + }, + "minecraft:nether_quartz_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:nether_sprouts": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:nether_wart": { + "properties": { + "age": [ + "0", + "1", + "2", + "3" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 4 + }, + "minecraft:nether_wart_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:netherite_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:netherrack": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:note_block": { + "properties": { + "instrument": [ + "banjo", + "basedrum", + "bass", + "bell", + "bit", + "chime", + "cow_bell", + "didgeridoo", + "flute", + "guitar", + "harp", + "hat", + "iron_xylophone", + "pling", + "snare", + "xylophone" + ], + "note": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "16", + "17", + "18", + "19", + "2", + "20", + "21", + "22", + "23", + "24", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "instrument": "harp", + "note": "0", + "powered": "false" + }, + "stateCount": 800 + }, + "minecraft:oak_button": { + "properties": { + "face": [ + "ceiling", + "floor", + "wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:oak_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:oak_fence": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:oak_fence_gate": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "in_wall": [ + "false", + "true" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "in_wall": "false", + "open": "false", + "powered": "false" + }, + "stateCount": 32 + }, + "minecraft:oak_leaves": { + "properties": { + "distance": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ], + "persistent": [ + "false", + "true" + ] + }, + "defaultProperties": { + "distance": "7", + "persistent": "false" + }, + "stateCount": 14 + }, + "minecraft:oak_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:oak_planks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:oak_pressure_plate": { + "properties": { + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:oak_sapling": { + "properties": { + "stage": [ + "0", + "1" + ] + }, + "defaultProperties": { + "stage": "0" + }, + "stateCount": 2 + }, + "minecraft:oak_sign": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:oak_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:oak_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:oak_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:oak_wall_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:oak_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:observer": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "south", + "powered": "false" + }, + "stateCount": 12 + }, + "minecraft:obsidian": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:orange_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:orange_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:orange_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:orange_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:orange_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:orange_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:orange_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:orange_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:orange_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:orange_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:orange_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:orange_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:orange_tulip": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:orange_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:orange_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:oxeye_daisy": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:oxidized_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:oxidized_cut_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:oxidized_cut_copper_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:oxidized_cut_copper_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:packed_ice": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:peony": { + "properties": { + "half": [ + "lower", + "upper" + ] + }, + "defaultProperties": { + "half": "lower" + }, + "stateCount": 2 + }, + "minecraft:petrified_oak_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:pink_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:pink_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:pink_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:pink_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:pink_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:pink_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:pink_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:pink_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:pink_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:pink_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:pink_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:pink_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:pink_tulip": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:pink_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:pink_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:piston": { + "properties": { + "extended": [ + "false", + "true" + ], + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "extended": "false", + "facing": "north" + }, + "stateCount": 12 + }, + "minecraft:piston_head": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ], + "short": [ + "false", + "true" + ], + "type": [ + "normal", + "sticky" + ] + }, + "defaultProperties": { + "facing": "north", + "short": "false", + "type": "normal" + }, + "stateCount": 24 + }, + "minecraft:player_head": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:player_wall_head": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:podzol": { + "properties": { + "snowy": [ + "false", + "true" + ] + }, + "defaultProperties": { + "snowy": "false" + }, + "stateCount": 2 + }, + "minecraft:pointed_dripstone": { + "properties": { + "thickness": [ + "base", + "frustum", + "middle", + "tip", + "tip_merge" + ], + "vertical_direction": [ + "down", + "up" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "thickness": "tip", + "vertical_direction": "up", + "waterlogged": "false" + }, + "stateCount": 20 + }, + "minecraft:polished_andesite": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:polished_andesite_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:polished_andesite_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:polished_basalt": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:polished_blackstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:polished_blackstone_brick_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:polished_blackstone_brick_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:polished_blackstone_brick_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:polished_blackstone_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:polished_blackstone_button": { + "properties": { + "face": [ + "ceiling", + "floor", + "wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:polished_blackstone_pressure_plate": { + "properties": { + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:polished_blackstone_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:polished_blackstone_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:polished_blackstone_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:polished_deepslate": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:polished_deepslate_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:polished_deepslate_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:polished_deepslate_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:polished_diorite": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:polished_diorite_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:polished_diorite_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:polished_granite": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:polished_granite_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:polished_granite_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:poppy": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potatoes": { + "properties": { + "age": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 8 + }, + "minecraft:potted_acacia_sapling": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_allium": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_azalea_bush": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_azure_bluet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_bamboo": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_birch_sapling": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_blue_orchid": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_brown_mushroom": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_cactus": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_cornflower": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_crimson_fungus": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_crimson_roots": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_dandelion": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_dark_oak_sapling": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_dead_bush": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_fern": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_flowering_azalea_bush": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_jungle_sapling": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_lily_of_the_valley": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_oak_sapling": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_orange_tulip": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_oxeye_daisy": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_pink_tulip": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_poppy": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_red_mushroom": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_red_tulip": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_spruce_sapling": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_warped_fungus": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_warped_roots": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_white_tulip": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_wither_rose": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:powder_snow": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:powder_snow_cauldron": { + "properties": { + "level": [ + "1", + "2", + "3" + ] + }, + "defaultProperties": { + "level": "1" + }, + "stateCount": 3 + }, + "minecraft:powered_rail": { + "properties": { + "powered": [ + "false", + "true" + ], + "shape": [ + "ascending_east", + "ascending_north", + "ascending_south", + "ascending_west", + "east_west", + "north_south" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false", + "shape": "north_south", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:prismarine": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:prismarine_brick_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:prismarine_brick_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:prismarine_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:prismarine_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:prismarine_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:prismarine_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:pumpkin": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:pumpkin_stem": { + "properties": { + "age": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 8 + }, + "minecraft:purple_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:purple_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:purple_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:purple_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:purple_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:purple_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:purple_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:purple_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:purple_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:purple_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:purple_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:purple_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:purple_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:purple_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:purpur_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:purpur_pillar": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:purpur_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:purpur_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:quartz_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:quartz_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:quartz_pillar": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:quartz_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:quartz_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:rail": { + "properties": { + "shape": [ + "ascending_east", + "ascending_north", + "ascending_south", + "ascending_west", + "east_west", + "north_east", + "north_south", + "north_west", + "south_east", + "south_west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "shape": "north_south", + "waterlogged": "false" + }, + "stateCount": 20 + }, + "minecraft:raw_copper_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:raw_gold_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:raw_iron_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:red_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:red_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:red_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:red_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:red_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:red_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:red_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:red_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:red_mushroom": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:red_mushroom_block": { + "properties": { + "down": [ + "false", + "true" + ], + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "up": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "down": "true", + "east": "true", + "north": "true", + "south": "true", + "up": "true", + "west": "true" + }, + "stateCount": 64 + }, + "minecraft:red_nether_brick_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:red_nether_brick_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:red_nether_brick_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:red_nether_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:red_sand": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:red_sandstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:red_sandstone_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:red_sandstone_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:red_sandstone_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:red_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:red_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:red_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:red_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:red_tulip": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:red_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:red_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:redstone_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:redstone_lamp": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:redstone_ore": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:redstone_torch": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "true" + }, + "stateCount": 2 + }, + "minecraft:redstone_wall_torch": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "lit": "true" + }, + "stateCount": 8 + }, + "minecraft:redstone_wire": { + "properties": { + "east": [ + "none", + "side", + "up" + ], + "north": [ + "none", + "side", + "up" + ], + "power": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "south": [ + "none", + "side", + "up" + ], + "west": [ + "none", + "side", + "up" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "power": "0", + "south": "none", + "west": "none" + }, + "stateCount": 1296 + }, + "minecraft:repeater": { + "properties": { + "delay": [ + "1", + "2", + "3", + "4" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "locked": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "delay": "1", + "facing": "north", + "locked": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:repeating_command_block": { + "properties": { + "conditional": [ + "false", + "true" + ], + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "conditional": "false", + "facing": "north" + }, + "stateCount": 12 + }, + "minecraft:respawn_anchor": { + "properties": { + "charges": [ + "0", + "1", + "2", + "3", + "4" + ] + }, + "defaultProperties": { + "charges": "0" + }, + "stateCount": 5 + }, + "minecraft:rooted_dirt": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:rose_bush": { + "properties": { + "half": [ + "lower", + "upper" + ] + }, + "defaultProperties": { + "half": "lower" + }, + "stateCount": 2 + }, + "minecraft:sand": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:sandstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:sandstone_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:sandstone_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:sandstone_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:scaffolding": { + "properties": { + "bottom": [ + "false", + "true" + ], + "distance": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "bottom": "false", + "distance": "7", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:sculk_sensor": { + "properties": { + "power": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "sculk_sensor_phase": [ + "active", + "cooldown", + "inactive" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "power": "0", + "sculk_sensor_phase": "inactive", + "waterlogged": "false" + }, + "stateCount": 96 + }, + "minecraft:sea_lantern": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:sea_pickle": { + "properties": { + "pickles": [ + "1", + "2", + "3", + "4" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "pickles": "1", + "waterlogged": "true" + }, + "stateCount": 8 + }, + "minecraft:seagrass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:shroomlight": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:skeleton_skull": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:skeleton_wall_skull": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:slime_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:small_amethyst_bud": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "up", + "waterlogged": "false" + }, + "stateCount": 12 + }, + "minecraft:small_dripleaf": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:smithing_table": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:smoker": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "lit": "false" + }, + "stateCount": 8 + }, + "minecraft:smooth_basalt": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:smooth_quartz": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:smooth_quartz_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:smooth_quartz_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:smooth_red_sandstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:smooth_red_sandstone_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:smooth_red_sandstone_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:smooth_sandstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:smooth_sandstone_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:smooth_sandstone_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:smooth_stone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:smooth_stone_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:snow": { + "properties": { + "layers": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8" + ] + }, + "defaultProperties": { + "layers": "1" + }, + "stateCount": 8 + }, + "minecraft:snow_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:soul_campfire": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "lit": [ + "false", + "true" + ], + "signal_fire": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "lit": "true", + "signal_fire": "false", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:soul_fire": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:soul_lantern": { + "properties": { + "hanging": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "hanging": "false", + "waterlogged": "false" + }, + "stateCount": 4 + }, + "minecraft:soul_sand": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:soul_soil": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:soul_torch": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:soul_wall_torch": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:spawner": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:sponge": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:spore_blossom": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:spruce_button": { + "properties": { + "face": [ + "ceiling", + "floor", + "wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:spruce_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:spruce_fence": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:spruce_fence_gate": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "in_wall": [ + "false", + "true" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "in_wall": "false", + "open": "false", + "powered": "false" + }, + "stateCount": 32 + }, + "minecraft:spruce_leaves": { + "properties": { + "distance": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ], + "persistent": [ + "false", + "true" + ] + }, + "defaultProperties": { + "distance": "7", + "persistent": "false" + }, + "stateCount": 14 + }, + "minecraft:spruce_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:spruce_planks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:spruce_pressure_plate": { + "properties": { + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:spruce_sapling": { + "properties": { + "stage": [ + "0", + "1" + ] + }, + "defaultProperties": { + "stage": "0" + }, + "stateCount": 2 + }, + "minecraft:spruce_sign": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:spruce_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:spruce_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:spruce_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:spruce_wall_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:spruce_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:sticky_piston": { + "properties": { + "extended": [ + "false", + "true" + ], + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "extended": "false", + "facing": "north" + }, + "stateCount": 12 + }, + "minecraft:stone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:stone_brick_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:stone_brick_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:stone_brick_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:stone_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:stone_button": { + "properties": { + "face": [ + "ceiling", + "floor", + "wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:stone_pressure_plate": { + "properties": { + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:stone_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:stone_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:stonecutter": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:stripped_acacia_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_acacia_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_birch_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_birch_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_crimson_hyphae": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_crimson_stem": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_dark_oak_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_dark_oak_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_jungle_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_jungle_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_oak_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_oak_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_spruce_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_spruce_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_warped_hyphae": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_warped_stem": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:structure_block": { + "properties": { + "mode": [ + "corner", + "data", + "load", + "save" + ] + }, + "defaultProperties": { + "mode": "load" + }, + "stateCount": 4 + }, + "minecraft:structure_void": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:sugar_cane": { + "properties": { + "age": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 16 + }, + "minecraft:sunflower": { + "properties": { + "half": [ + "lower", + "upper" + ] + }, + "defaultProperties": { + "half": "lower" + }, + "stateCount": 2 + }, + "minecraft:sweet_berry_bush": { + "properties": { + "age": [ + "0", + "1", + "2", + "3" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 4 + }, + "minecraft:tall_grass": { + "properties": { + "half": [ + "lower", + "upper" + ] + }, + "defaultProperties": { + "half": "lower" + }, + "stateCount": 2 + }, + "minecraft:tall_seagrass": { + "properties": { + "half": [ + "lower", + "upper" + ] + }, + "defaultProperties": { + "half": "lower" + }, + "stateCount": 2 + }, + "minecraft:target": { + "properties": { + "power": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "power": "0" + }, + "stateCount": 16 + }, + "minecraft:terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:tinted_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:tnt": { + "properties": { + "unstable": [ + "false", + "true" + ] + }, + "defaultProperties": { + "unstable": "false" + }, + "stateCount": 2 + }, + "minecraft:torch": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:trapped_chest": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "type": [ + "left", + "right", + "single" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "type": "single", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:tripwire": { + "properties": { + "attached": [ + "false", + "true" + ], + "disarmed": [ + "false", + "true" + ], + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "attached": "false", + "disarmed": "false", + "east": "false", + "north": "false", + "powered": "false", + "south": "false", + "west": "false" + }, + "stateCount": 128 + }, + "minecraft:tripwire_hook": { + "properties": { + "attached": [ + "false", + "true" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "attached": "false", + "facing": "north", + "powered": "false" + }, + "stateCount": 16 + }, + "minecraft:tube_coral": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:tube_coral_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:tube_coral_fan": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:tube_coral_wall_fan": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "true" + }, + "stateCount": 8 + }, + "minecraft:tuff": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:turtle_egg": { + "properties": { + "eggs": [ + "1", + "2", + "3", + "4" + ], + "hatch": [ + "0", + "1", + "2" + ] + }, + "defaultProperties": { + "eggs": "1", + "hatch": "0" + }, + "stateCount": 12 + }, + "minecraft:twisting_vines": { + "properties": { + "age": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "16", + "17", + "18", + "19", + "2", + "20", + "21", + "22", + "23", + "24", + "25", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 26 + }, + "minecraft:twisting_vines_plant": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:vine": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "up": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "up": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:void_air": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:wall_torch": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:warped_button": { + "properties": { + "face": [ + "ceiling", + "floor", + "wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:warped_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:warped_fence": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:warped_fence_gate": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "in_wall": [ + "false", + "true" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "in_wall": "false", + "open": "false", + "powered": "false" + }, + "stateCount": 32 + }, + "minecraft:warped_fungus": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:warped_hyphae": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:warped_nylium": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:warped_planks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:warped_pressure_plate": { + "properties": { + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:warped_roots": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:warped_sign": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:warped_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:warped_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:warped_stem": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:warped_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:warped_wall_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:warped_wart_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:water": { + "properties": { + "level": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "level": "0" + }, + "stateCount": 16 + }, + "minecraft:water_cauldron": { + "properties": { + "level": [ + "1", + "2", + "3" + ] + }, + "defaultProperties": { + "level": "1" + }, + "stateCount": 3 + }, + "minecraft:waxed_copper_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:waxed_cut_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:waxed_cut_copper_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:waxed_cut_copper_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:waxed_exposed_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:waxed_exposed_cut_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:waxed_exposed_cut_copper_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:waxed_exposed_cut_copper_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:waxed_oxidized_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:waxed_oxidized_cut_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:waxed_oxidized_cut_copper_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:waxed_oxidized_cut_copper_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:waxed_weathered_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:waxed_weathered_cut_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:waxed_weathered_cut_copper_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:waxed_weathered_cut_copper_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:weathered_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:weathered_cut_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:weathered_cut_copper_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:weathered_cut_copper_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:weeping_vines": { + "properties": { + "age": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "16", + "17", + "18", + "19", + "2", + "20", + "21", + "22", + "23", + "24", + "25", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 26 + }, + "minecraft:weeping_vines_plant": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:wet_sponge": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:wheat": { + "properties": { + "age": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 8 + }, + "minecraft:white_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:white_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:white_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:white_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:white_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:white_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:white_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:white_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:white_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:white_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:white_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:white_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:white_tulip": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:white_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:white_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:wither_rose": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:wither_skeleton_skull": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:wither_skeleton_wall_skull": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:yellow_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:yellow_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:yellow_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:yellow_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:yellow_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:yellow_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:yellow_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:yellow_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:yellow_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:yellow_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:yellow_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:yellow_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:yellow_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:yellow_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:zombie_head": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:zombie_wall_head": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + } + } +} \ No newline at end of file diff --git a/src/main/resources/mapping/block_states/java_1_20_6.json b/src/main/resources/mapping/block_states/java_1_20_6.json new file mode 100644 index 00000000..e529ea4d --- /dev/null +++ b/src/main/resources/mapping/block_states/java_1_20_6.json @@ -0,0 +1,17480 @@ +{ + "version": "1.20.6", + "dataVersion": 3839, + "source": "Mojang server reports/blocks.json generated from 1.20.6 server.jar", + "blocks": { + "minecraft:acacia_button": { + "properties": { + "face": [ + "ceiling", + "floor", + "wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:acacia_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:acacia_fence": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:acacia_fence_gate": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "in_wall": [ + "false", + "true" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "in_wall": "false", + "open": "false", + "powered": "false" + }, + "stateCount": 32 + }, + "minecraft:acacia_hanging_sign": { + "properties": { + "attached": [ + "false", + "true" + ], + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "attached": "false", + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:acacia_leaves": { + "properties": { + "distance": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ], + "persistent": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "distance": "7", + "persistent": "false", + "waterlogged": "false" + }, + "stateCount": 28 + }, + "minecraft:acacia_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:acacia_planks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:acacia_pressure_plate": { + "properties": { + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:acacia_sapling": { + "properties": { + "stage": [ + "0", + "1" + ] + }, + "defaultProperties": { + "stage": "0" + }, + "stateCount": 2 + }, + "minecraft:acacia_sign": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:acacia_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:acacia_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:acacia_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:acacia_wall_hanging_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:acacia_wall_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:acacia_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:activator_rail": { + "properties": { + "powered": [ + "false", + "true" + ], + "shape": [ + "ascending_east", + "ascending_north", + "ascending_south", + "ascending_west", + "east_west", + "north_south" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false", + "shape": "north_south", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:air": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:allium": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:amethyst_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:amethyst_cluster": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "up", + "waterlogged": "false" + }, + "stateCount": 12 + }, + "minecraft:ancient_debris": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:andesite": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:andesite_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:andesite_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:andesite_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:anvil": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:attached_melon_stem": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:attached_pumpkin_stem": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:azalea": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:azalea_leaves": { + "properties": { + "distance": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ], + "persistent": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "distance": "7", + "persistent": "false", + "waterlogged": "false" + }, + "stateCount": 28 + }, + "minecraft:azure_bluet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:bamboo": { + "properties": { + "age": [ + "0", + "1" + ], + "leaves": [ + "large", + "none", + "small" + ], + "stage": [ + "0", + "1" + ] + }, + "defaultProperties": { + "age": "0", + "leaves": "none", + "stage": "0" + }, + "stateCount": 12 + }, + "minecraft:bamboo_block": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:bamboo_button": { + "properties": { + "face": [ + "ceiling", + "floor", + "wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:bamboo_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:bamboo_fence": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:bamboo_fence_gate": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "in_wall": [ + "false", + "true" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "in_wall": "false", + "open": "false", + "powered": "false" + }, + "stateCount": 32 + }, + "minecraft:bamboo_hanging_sign": { + "properties": { + "attached": [ + "false", + "true" + ], + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "attached": "false", + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:bamboo_mosaic": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:bamboo_mosaic_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:bamboo_mosaic_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:bamboo_planks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:bamboo_pressure_plate": { + "properties": { + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:bamboo_sapling": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:bamboo_sign": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:bamboo_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:bamboo_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:bamboo_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:bamboo_wall_hanging_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:bamboo_wall_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:barrel": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ], + "open": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "open": "false" + }, + "stateCount": 12 + }, + "minecraft:barrier": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "false" + }, + "stateCount": 2 + }, + "minecraft:basalt": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:beacon": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:bedrock": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:bee_nest": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "honey_level": [ + "0", + "1", + "2", + "3", + "4", + "5" + ] + }, + "defaultProperties": { + "facing": "north", + "honey_level": "0" + }, + "stateCount": 24 + }, + "minecraft:beehive": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "honey_level": [ + "0", + "1", + "2", + "3", + "4", + "5" + ] + }, + "defaultProperties": { + "facing": "north", + "honey_level": "0" + }, + "stateCount": 24 + }, + "minecraft:beetroots": { + "properties": { + "age": [ + "0", + "1", + "2", + "3" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 4 + }, + "minecraft:bell": { + "properties": { + "attachment": [ + "ceiling", + "double_wall", + "floor", + "single_wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "attachment": "floor", + "facing": "north", + "powered": "false" + }, + "stateCount": 32 + }, + "minecraft:big_dripleaf": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "tilt": [ + "full", + "none", + "partial", + "unstable" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "tilt": "none", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:big_dripleaf_stem": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:birch_button": { + "properties": { + "face": [ + "ceiling", + "floor", + "wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:birch_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:birch_fence": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:birch_fence_gate": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "in_wall": [ + "false", + "true" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "in_wall": "false", + "open": "false", + "powered": "false" + }, + "stateCount": 32 + }, + "minecraft:birch_hanging_sign": { + "properties": { + "attached": [ + "false", + "true" + ], + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "attached": "false", + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:birch_leaves": { + "properties": { + "distance": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ], + "persistent": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "distance": "7", + "persistent": "false", + "waterlogged": "false" + }, + "stateCount": 28 + }, + "minecraft:birch_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:birch_planks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:birch_pressure_plate": { + "properties": { + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:birch_sapling": { + "properties": { + "stage": [ + "0", + "1" + ] + }, + "defaultProperties": { + "stage": "0" + }, + "stateCount": 2 + }, + "minecraft:birch_sign": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:birch_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:birch_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:birch_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:birch_wall_hanging_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:birch_wall_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:birch_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:black_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:black_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:black_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:black_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:black_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:black_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:black_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:black_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:black_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:black_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:black_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:black_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:black_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:black_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:blackstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:blackstone_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:blackstone_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:blackstone_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:blast_furnace": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "lit": "false" + }, + "stateCount": 8 + }, + "minecraft:blue_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:blue_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:blue_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:blue_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:blue_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:blue_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:blue_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:blue_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:blue_ice": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:blue_orchid": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:blue_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:blue_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:blue_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:blue_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:blue_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:blue_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:bone_block": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:bookshelf": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:brain_coral": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:brain_coral_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:brain_coral_fan": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:brain_coral_wall_fan": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "true" + }, + "stateCount": 8 + }, + "minecraft:brewing_stand": { + "properties": { + "has_bottle_0": [ + "false", + "true" + ], + "has_bottle_1": [ + "false", + "true" + ], + "has_bottle_2": [ + "false", + "true" + ] + }, + "defaultProperties": { + "has_bottle_0": "false", + "has_bottle_1": "false", + "has_bottle_2": "false" + }, + "stateCount": 8 + }, + "minecraft:brick_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:brick_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:brick_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:brown_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:brown_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:brown_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:brown_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:brown_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:brown_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:brown_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:brown_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:brown_mushroom": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:brown_mushroom_block": { + "properties": { + "down": [ + "false", + "true" + ], + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "up": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "down": "true", + "east": "true", + "north": "true", + "south": "true", + "up": "true", + "west": "true" + }, + "stateCount": 64 + }, + "minecraft:brown_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:brown_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:brown_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:brown_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:brown_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:brown_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:bubble_column": { + "properties": { + "drag": [ + "false", + "true" + ] + }, + "defaultProperties": { + "drag": "true" + }, + "stateCount": 2 + }, + "minecraft:bubble_coral": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:bubble_coral_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:bubble_coral_fan": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:bubble_coral_wall_fan": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "true" + }, + "stateCount": 8 + }, + "minecraft:budding_amethyst": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cactus": { + "properties": { + "age": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 16 + }, + "minecraft:cake": { + "properties": { + "bites": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6" + ] + }, + "defaultProperties": { + "bites": "0" + }, + "stateCount": 7 + }, + "minecraft:calcite": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:calibrated_sculk_sensor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "power": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "sculk_sensor_phase": [ + "active", + "cooldown", + "inactive" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "power": "0", + "sculk_sensor_phase": "inactive", + "waterlogged": "false" + }, + "stateCount": 384 + }, + "minecraft:campfire": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "lit": [ + "false", + "true" + ], + "signal_fire": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "lit": "true", + "signal_fire": "false", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:carrots": { + "properties": { + "age": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 8 + }, + "minecraft:cartography_table": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:carved_pumpkin": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:cauldron": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cave_air": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cave_vines": { + "properties": { + "age": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "16", + "17", + "18", + "19", + "2", + "20", + "21", + "22", + "23", + "24", + "25", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "berries": [ + "false", + "true" + ] + }, + "defaultProperties": { + "age": "0", + "berries": "false" + }, + "stateCount": 52 + }, + "minecraft:cave_vines_plant": { + "properties": { + "berries": [ + "false", + "true" + ] + }, + "defaultProperties": { + "berries": "false" + }, + "stateCount": 2 + }, + "minecraft:chain": { + "properties": { + "axis": [ + "x", + "y", + "z" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "axis": "y", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:chain_command_block": { + "properties": { + "conditional": [ + "false", + "true" + ], + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "conditional": "false", + "facing": "north" + }, + "stateCount": 12 + }, + "minecraft:cherry_button": { + "properties": { + "face": [ + "ceiling", + "floor", + "wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:cherry_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:cherry_fence": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:cherry_fence_gate": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "in_wall": [ + "false", + "true" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "in_wall": "false", + "open": "false", + "powered": "false" + }, + "stateCount": 32 + }, + "minecraft:cherry_hanging_sign": { + "properties": { + "attached": [ + "false", + "true" + ], + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "attached": "false", + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:cherry_leaves": { + "properties": { + "distance": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ], + "persistent": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "distance": "7", + "persistent": "false", + "waterlogged": "false" + }, + "stateCount": 28 + }, + "minecraft:cherry_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:cherry_planks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cherry_pressure_plate": { + "properties": { + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:cherry_sapling": { + "properties": { + "stage": [ + "0", + "1" + ] + }, + "defaultProperties": { + "stage": "0" + }, + "stateCount": 2 + }, + "minecraft:cherry_sign": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:cherry_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:cherry_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:cherry_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:cherry_wall_hanging_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:cherry_wall_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:cherry_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:chest": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "type": [ + "left", + "right", + "single" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "type": "single", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:chipped_anvil": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:chiseled_bookshelf": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "slot_0_occupied": [ + "false", + "true" + ], + "slot_1_occupied": [ + "false", + "true" + ], + "slot_2_occupied": [ + "false", + "true" + ], + "slot_3_occupied": [ + "false", + "true" + ], + "slot_4_occupied": [ + "false", + "true" + ], + "slot_5_occupied": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "slot_0_occupied": "false", + "slot_1_occupied": "false", + "slot_2_occupied": "false", + "slot_3_occupied": "false", + "slot_4_occupied": "false", + "slot_5_occupied": "false" + }, + "stateCount": 256 + }, + "minecraft:chiseled_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:chiseled_deepslate": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:chiseled_nether_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:chiseled_polished_blackstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:chiseled_quartz_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:chiseled_red_sandstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:chiseled_sandstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:chiseled_stone_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:chiseled_tuff": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:chiseled_tuff_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:chorus_flower": { + "properties": { + "age": [ + "0", + "1", + "2", + "3", + "4", + "5" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 6 + }, + "minecraft:chorus_plant": { + "properties": { + "down": [ + "false", + "true" + ], + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "up": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "down": "false", + "east": "false", + "north": "false", + "south": "false", + "up": "false", + "west": "false" + }, + "stateCount": 64 + }, + "minecraft:clay": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:coal_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:coal_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:coarse_dirt": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cobbled_deepslate": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cobbled_deepslate_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:cobbled_deepslate_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:cobbled_deepslate_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:cobblestone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cobblestone_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:cobblestone_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:cobblestone_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:cobweb": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cocoa": { + "properties": { + "age": [ + "0", + "1", + "2" + ], + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "age": "0", + "facing": "north" + }, + "stateCount": 12 + }, + "minecraft:command_block": { + "properties": { + "conditional": [ + "false", + "true" + ], + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "conditional": "false", + "facing": "north" + }, + "stateCount": 12 + }, + "minecraft:comparator": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "mode": [ + "compare", + "subtract" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "mode": "compare", + "powered": "false" + }, + "stateCount": 16 + }, + "minecraft:composter": { + "properties": { + "level": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8" + ] + }, + "defaultProperties": { + "level": "0" + }, + "stateCount": 9 + }, + "minecraft:conduit": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:copper_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:copper_bulb": { + "properties": { + "lit": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false", + "powered": "false" + }, + "stateCount": 4 + }, + "minecraft:copper_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:copper_grate": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "false" + }, + "stateCount": 2 + }, + "minecraft:copper_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:copper_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:cornflower": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cracked_deepslate_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cracked_deepslate_tiles": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cracked_nether_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cracked_polished_blackstone_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cracked_stone_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:crafter": { + "properties": { + "crafting": [ + "false", + "true" + ], + "orientation": [ + "down_east", + "down_north", + "down_south", + "down_west", + "east_up", + "north_up", + "south_up", + "up_east", + "up_north", + "up_south", + "up_west", + "west_up" + ], + "triggered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "crafting": "false", + "orientation": "north_up", + "triggered": "false" + }, + "stateCount": 48 + }, + "minecraft:crafting_table": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:creeper_head": { + "properties": { + "powered": [ + "false", + "true" + ], + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "powered": "false", + "rotation": "0" + }, + "stateCount": 32 + }, + "minecraft:creeper_wall_head": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false" + }, + "stateCount": 8 + }, + "minecraft:crimson_button": { + "properties": { + "face": [ + "ceiling", + "floor", + "wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:crimson_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:crimson_fence": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:crimson_fence_gate": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "in_wall": [ + "false", + "true" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "in_wall": "false", + "open": "false", + "powered": "false" + }, + "stateCount": 32 + }, + "minecraft:crimson_fungus": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:crimson_hanging_sign": { + "properties": { + "attached": [ + "false", + "true" + ], + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "attached": "false", + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:crimson_hyphae": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:crimson_nylium": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:crimson_planks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:crimson_pressure_plate": { + "properties": { + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:crimson_roots": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:crimson_sign": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:crimson_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:crimson_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:crimson_stem": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:crimson_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:crimson_wall_hanging_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:crimson_wall_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:crying_obsidian": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cut_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cut_copper_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:cut_copper_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:cut_red_sandstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cut_red_sandstone_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:cut_sandstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cut_sandstone_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:cyan_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:cyan_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:cyan_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:cyan_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:cyan_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cyan_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cyan_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cyan_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:cyan_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:cyan_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cyan_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:cyan_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cyan_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:cyan_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:damaged_anvil": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:dandelion": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dark_oak_button": { + "properties": { + "face": [ + "ceiling", + "floor", + "wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:dark_oak_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:dark_oak_fence": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:dark_oak_fence_gate": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "in_wall": [ + "false", + "true" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "in_wall": "false", + "open": "false", + "powered": "false" + }, + "stateCount": 32 + }, + "minecraft:dark_oak_hanging_sign": { + "properties": { + "attached": [ + "false", + "true" + ], + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "attached": "false", + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:dark_oak_leaves": { + "properties": { + "distance": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ], + "persistent": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "distance": "7", + "persistent": "false", + "waterlogged": "false" + }, + "stateCount": 28 + }, + "minecraft:dark_oak_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:dark_oak_planks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dark_oak_pressure_plate": { + "properties": { + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:dark_oak_sapling": { + "properties": { + "stage": [ + "0", + "1" + ] + }, + "defaultProperties": { + "stage": "0" + }, + "stateCount": 2 + }, + "minecraft:dark_oak_sign": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:dark_oak_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:dark_oak_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:dark_oak_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:dark_oak_wall_hanging_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:dark_oak_wall_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:dark_oak_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:dark_prismarine": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dark_prismarine_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:dark_prismarine_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:daylight_detector": { + "properties": { + "inverted": [ + "false", + "true" + ], + "power": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "inverted": "false", + "power": "0" + }, + "stateCount": 32 + }, + "minecraft:dead_brain_coral": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:dead_brain_coral_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dead_brain_coral_fan": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:dead_brain_coral_wall_fan": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "true" + }, + "stateCount": 8 + }, + "minecraft:dead_bubble_coral": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:dead_bubble_coral_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dead_bubble_coral_fan": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:dead_bubble_coral_wall_fan": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "true" + }, + "stateCount": 8 + }, + "minecraft:dead_bush": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dead_fire_coral": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:dead_fire_coral_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dead_fire_coral_fan": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:dead_fire_coral_wall_fan": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "true" + }, + "stateCount": 8 + }, + "minecraft:dead_horn_coral": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:dead_horn_coral_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dead_horn_coral_fan": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:dead_horn_coral_wall_fan": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "true" + }, + "stateCount": 8 + }, + "minecraft:dead_tube_coral": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:dead_tube_coral_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dead_tube_coral_fan": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:dead_tube_coral_wall_fan": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "true" + }, + "stateCount": 8 + }, + "minecraft:decorated_pot": { + "properties": { + "cracked": [ + "false", + "true" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "cracked": "false", + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:deepslate": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:deepslate_brick_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:deepslate_brick_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:deepslate_brick_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:deepslate_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:deepslate_coal_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:deepslate_copper_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:deepslate_diamond_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:deepslate_emerald_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:deepslate_gold_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:deepslate_iron_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:deepslate_lapis_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:deepslate_redstone_ore": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:deepslate_tile_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:deepslate_tile_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:deepslate_tile_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:deepslate_tiles": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:detector_rail": { + "properties": { + "powered": [ + "false", + "true" + ], + "shape": [ + "ascending_east", + "ascending_north", + "ascending_south", + "ascending_west", + "east_west", + "north_south" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false", + "shape": "north_south", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:diamond_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:diamond_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:diorite": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:diorite_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:diorite_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:diorite_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:dirt": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dirt_path": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dispenser": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ], + "triggered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "triggered": "false" + }, + "stateCount": 12 + }, + "minecraft:dragon_egg": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dragon_head": { + "properties": { + "powered": [ + "false", + "true" + ], + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "powered": "false", + "rotation": "0" + }, + "stateCount": 32 + }, + "minecraft:dragon_wall_head": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false" + }, + "stateCount": 8 + }, + "minecraft:dried_kelp_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dripstone_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dropper": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ], + "triggered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "triggered": "false" + }, + "stateCount": 12 + }, + "minecraft:emerald_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:emerald_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:enchanting_table": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:end_gateway": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:end_portal": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:end_portal_frame": { + "properties": { + "eye": [ + "false", + "true" + ], + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "eye": "false", + "facing": "north" + }, + "stateCount": 8 + }, + "minecraft:end_rod": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:end_stone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:end_stone_brick_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:end_stone_brick_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:end_stone_brick_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:end_stone_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:ender_chest": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:exposed_chiseled_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:exposed_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:exposed_copper_bulb": { + "properties": { + "lit": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false", + "powered": "false" + }, + "stateCount": 4 + }, + "minecraft:exposed_copper_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:exposed_copper_grate": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "false" + }, + "stateCount": 2 + }, + "minecraft:exposed_copper_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:exposed_cut_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:exposed_cut_copper_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:exposed_cut_copper_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:farmland": { + "properties": { + "moisture": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ] + }, + "defaultProperties": { + "moisture": "0" + }, + "stateCount": 8 + }, + "minecraft:fern": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:fire": { + "properties": { + "age": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "up": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "age": "0", + "east": "false", + "north": "false", + "south": "false", + "up": "false", + "west": "false" + }, + "stateCount": 512 + }, + "minecraft:fire_coral": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:fire_coral_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:fire_coral_fan": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:fire_coral_wall_fan": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "true" + }, + "stateCount": 8 + }, + "minecraft:fletching_table": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:flower_pot": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:flowering_azalea": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:flowering_azalea_leaves": { + "properties": { + "distance": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ], + "persistent": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "distance": "7", + "persistent": "false", + "waterlogged": "false" + }, + "stateCount": 28 + }, + "minecraft:frogspawn": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:frosted_ice": { + "properties": { + "age": [ + "0", + "1", + "2", + "3" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 4 + }, + "minecraft:furnace": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "lit": "false" + }, + "stateCount": 8 + }, + "minecraft:gilded_blackstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:glow_lichen": { + "properties": { + "down": [ + "false", + "true" + ], + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "down": "false", + "east": "false", + "north": "false", + "south": "false", + "up": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 128 + }, + "minecraft:glowstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:gold_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:gold_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:granite": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:granite_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:granite_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:granite_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:grass_block": { + "properties": { + "snowy": [ + "false", + "true" + ] + }, + "defaultProperties": { + "snowy": "false" + }, + "stateCount": 2 + }, + "minecraft:gravel": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:gray_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:gray_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:gray_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:gray_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:gray_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:gray_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:gray_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:gray_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:gray_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:gray_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:gray_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:gray_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:gray_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:gray_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:green_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:green_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:green_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:green_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:green_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:green_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:green_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:green_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:green_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:green_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:green_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:green_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:green_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:green_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:grindstone": { + "properties": { + "face": [ + "ceiling", + "floor", + "wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north" + }, + "stateCount": 12 + }, + "minecraft:hanging_roots": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "false" + }, + "stateCount": 2 + }, + "minecraft:hay_block": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:heavy_core": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "false" + }, + "stateCount": 2 + }, + "minecraft:heavy_weighted_pressure_plate": { + "properties": { + "power": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "power": "0" + }, + "stateCount": 16 + }, + "minecraft:honey_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:honeycomb_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:hopper": { + "properties": { + "enabled": [ + "false", + "true" + ], + "facing": [ + "down", + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "enabled": "true", + "facing": "down" + }, + "stateCount": 10 + }, + "minecraft:horn_coral": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:horn_coral_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:horn_coral_fan": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:horn_coral_wall_fan": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "true" + }, + "stateCount": 8 + }, + "minecraft:ice": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:infested_chiseled_stone_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:infested_cobblestone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:infested_cracked_stone_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:infested_deepslate": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:infested_mossy_stone_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:infested_stone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:infested_stone_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:iron_bars": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:iron_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:iron_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:iron_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:iron_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:jack_o_lantern": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:jigsaw": { + "properties": { + "orientation": [ + "down_east", + "down_north", + "down_south", + "down_west", + "east_up", + "north_up", + "south_up", + "up_east", + "up_north", + "up_south", + "up_west", + "west_up" + ] + }, + "defaultProperties": { + "orientation": "north_up" + }, + "stateCount": 12 + }, + "minecraft:jukebox": { + "properties": { + "has_record": [ + "false", + "true" + ] + }, + "defaultProperties": { + "has_record": "false" + }, + "stateCount": 2 + }, + "minecraft:jungle_button": { + "properties": { + "face": [ + "ceiling", + "floor", + "wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:jungle_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:jungle_fence": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:jungle_fence_gate": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "in_wall": [ + "false", + "true" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "in_wall": "false", + "open": "false", + "powered": "false" + }, + "stateCount": 32 + }, + "minecraft:jungle_hanging_sign": { + "properties": { + "attached": [ + "false", + "true" + ], + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "attached": "false", + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:jungle_leaves": { + "properties": { + "distance": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ], + "persistent": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "distance": "7", + "persistent": "false", + "waterlogged": "false" + }, + "stateCount": 28 + }, + "minecraft:jungle_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:jungle_planks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:jungle_pressure_plate": { + "properties": { + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:jungle_sapling": { + "properties": { + "stage": [ + "0", + "1" + ] + }, + "defaultProperties": { + "stage": "0" + }, + "stateCount": 2 + }, + "minecraft:jungle_sign": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:jungle_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:jungle_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:jungle_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:jungle_wall_hanging_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:jungle_wall_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:jungle_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:kelp": { + "properties": { + "age": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "16", + "17", + "18", + "19", + "2", + "20", + "21", + "22", + "23", + "24", + "25", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 26 + }, + "minecraft:kelp_plant": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:ladder": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:lantern": { + "properties": { + "hanging": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "hanging": "false", + "waterlogged": "false" + }, + "stateCount": 4 + }, + "minecraft:lapis_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:lapis_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:large_amethyst_bud": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "up", + "waterlogged": "false" + }, + "stateCount": 12 + }, + "minecraft:large_fern": { + "properties": { + "half": [ + "lower", + "upper" + ] + }, + "defaultProperties": { + "half": "lower" + }, + "stateCount": 2 + }, + "minecraft:lava": { + "properties": { + "level": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "level": "0" + }, + "stateCount": 16 + }, + "minecraft:lava_cauldron": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:lectern": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "has_book": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "has_book": "false", + "powered": "false" + }, + "stateCount": 16 + }, + "minecraft:lever": { + "properties": { + "face": [ + "ceiling", + "floor", + "wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:light": { + "properties": { + "level": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "level": "15", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:light_blue_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:light_blue_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:light_blue_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:light_blue_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:light_blue_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:light_blue_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:light_blue_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:light_blue_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:light_blue_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:light_blue_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:light_blue_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:light_blue_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:light_blue_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:light_blue_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:light_gray_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:light_gray_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:light_gray_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:light_gray_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:light_gray_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:light_gray_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:light_gray_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:light_gray_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:light_gray_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:light_gray_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:light_gray_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:light_gray_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:light_gray_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:light_gray_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:light_weighted_pressure_plate": { + "properties": { + "power": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "power": "0" + }, + "stateCount": 16 + }, + "minecraft:lightning_rod": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "up", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:lilac": { + "properties": { + "half": [ + "lower", + "upper" + ] + }, + "defaultProperties": { + "half": "lower" + }, + "stateCount": 2 + }, + "minecraft:lily_of_the_valley": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:lily_pad": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:lime_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:lime_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:lime_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:lime_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:lime_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:lime_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:lime_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:lime_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:lime_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:lime_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:lime_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:lime_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:lime_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:lime_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:lodestone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:loom": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:magenta_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:magenta_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:magenta_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:magenta_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:magenta_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:magenta_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:magenta_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:magenta_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:magenta_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:magenta_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:magenta_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:magenta_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:magenta_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:magenta_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:magma_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:mangrove_button": { + "properties": { + "face": [ + "ceiling", + "floor", + "wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:mangrove_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:mangrove_fence": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:mangrove_fence_gate": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "in_wall": [ + "false", + "true" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "in_wall": "false", + "open": "false", + "powered": "false" + }, + "stateCount": 32 + }, + "minecraft:mangrove_hanging_sign": { + "properties": { + "attached": [ + "false", + "true" + ], + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "attached": "false", + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:mangrove_leaves": { + "properties": { + "distance": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ], + "persistent": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "distance": "7", + "persistent": "false", + "waterlogged": "false" + }, + "stateCount": 28 + }, + "minecraft:mangrove_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:mangrove_planks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:mangrove_pressure_plate": { + "properties": { + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:mangrove_propagule": { + "properties": { + "age": [ + "0", + "1", + "2", + "3", + "4" + ], + "hanging": [ + "false", + "true" + ], + "stage": [ + "0", + "1" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "age": "0", + "hanging": "false", + "stage": "0", + "waterlogged": "false" + }, + "stateCount": 40 + }, + "minecraft:mangrove_roots": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "false" + }, + "stateCount": 2 + }, + "minecraft:mangrove_sign": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:mangrove_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:mangrove_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:mangrove_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:mangrove_wall_hanging_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:mangrove_wall_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:mangrove_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:medium_amethyst_bud": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "up", + "waterlogged": "false" + }, + "stateCount": 12 + }, + "minecraft:melon": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:melon_stem": { + "properties": { + "age": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 8 + }, + "minecraft:moss_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:moss_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:mossy_cobblestone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:mossy_cobblestone_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:mossy_cobblestone_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:mossy_cobblestone_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:mossy_stone_brick_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:mossy_stone_brick_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:mossy_stone_brick_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:mossy_stone_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:moving_piston": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ], + "type": [ + "normal", + "sticky" + ] + }, + "defaultProperties": { + "facing": "north", + "type": "normal" + }, + "stateCount": 12 + }, + "minecraft:mud": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:mud_brick_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:mud_brick_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:mud_brick_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:mud_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:muddy_mangrove_roots": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:mushroom_stem": { + "properties": { + "down": [ + "false", + "true" + ], + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "up": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "down": "true", + "east": "true", + "north": "true", + "south": "true", + "up": "true", + "west": "true" + }, + "stateCount": 64 + }, + "minecraft:mycelium": { + "properties": { + "snowy": [ + "false", + "true" + ] + }, + "defaultProperties": { + "snowy": "false" + }, + "stateCount": 2 + }, + "minecraft:nether_brick_fence": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:nether_brick_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:nether_brick_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:nether_brick_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:nether_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:nether_gold_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:nether_portal": { + "properties": { + "axis": [ + "x", + "z" + ] + }, + "defaultProperties": { + "axis": "x" + }, + "stateCount": 2 + }, + "minecraft:nether_quartz_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:nether_sprouts": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:nether_wart": { + "properties": { + "age": [ + "0", + "1", + "2", + "3" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 4 + }, + "minecraft:nether_wart_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:netherite_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:netherrack": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:note_block": { + "properties": { + "instrument": [ + "banjo", + "basedrum", + "bass", + "bell", + "bit", + "chime", + "cow_bell", + "creeper", + "custom_head", + "didgeridoo", + "dragon", + "flute", + "guitar", + "harp", + "hat", + "iron_xylophone", + "piglin", + "pling", + "skeleton", + "snare", + "wither_skeleton", + "xylophone", + "zombie" + ], + "note": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "16", + "17", + "18", + "19", + "2", + "20", + "21", + "22", + "23", + "24", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "instrument": "harp", + "note": "0", + "powered": "false" + }, + "stateCount": 1150 + }, + "minecraft:oak_button": { + "properties": { + "face": [ + "ceiling", + "floor", + "wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:oak_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:oak_fence": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:oak_fence_gate": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "in_wall": [ + "false", + "true" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "in_wall": "false", + "open": "false", + "powered": "false" + }, + "stateCount": 32 + }, + "minecraft:oak_hanging_sign": { + "properties": { + "attached": [ + "false", + "true" + ], + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "attached": "false", + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:oak_leaves": { + "properties": { + "distance": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ], + "persistent": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "distance": "7", + "persistent": "false", + "waterlogged": "false" + }, + "stateCount": 28 + }, + "minecraft:oak_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:oak_planks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:oak_pressure_plate": { + "properties": { + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:oak_sapling": { + "properties": { + "stage": [ + "0", + "1" + ] + }, + "defaultProperties": { + "stage": "0" + }, + "stateCount": 2 + }, + "minecraft:oak_sign": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:oak_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:oak_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:oak_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:oak_wall_hanging_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:oak_wall_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:oak_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:observer": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "south", + "powered": "false" + }, + "stateCount": 12 + }, + "minecraft:obsidian": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:ochre_froglight": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:orange_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:orange_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:orange_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:orange_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:orange_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:orange_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:orange_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:orange_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:orange_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:orange_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:orange_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:orange_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:orange_tulip": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:orange_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:orange_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:oxeye_daisy": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:oxidized_chiseled_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:oxidized_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:oxidized_copper_bulb": { + "properties": { + "lit": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false", + "powered": "false" + }, + "stateCount": 4 + }, + "minecraft:oxidized_copper_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:oxidized_copper_grate": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "false" + }, + "stateCount": 2 + }, + "minecraft:oxidized_copper_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:oxidized_cut_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:oxidized_cut_copper_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:oxidized_cut_copper_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:packed_ice": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:packed_mud": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:pearlescent_froglight": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:peony": { + "properties": { + "half": [ + "lower", + "upper" + ] + }, + "defaultProperties": { + "half": "lower" + }, + "stateCount": 2 + }, + "minecraft:petrified_oak_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:piglin_head": { + "properties": { + "powered": [ + "false", + "true" + ], + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "powered": "false", + "rotation": "0" + }, + "stateCount": 32 + }, + "minecraft:piglin_wall_head": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false" + }, + "stateCount": 8 + }, + "minecraft:pink_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:pink_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:pink_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:pink_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:pink_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:pink_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:pink_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:pink_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:pink_petals": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "flower_amount": [ + "1", + "2", + "3", + "4" + ] + }, + "defaultProperties": { + "facing": "north", + "flower_amount": "1" + }, + "stateCount": 16 + }, + "minecraft:pink_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:pink_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:pink_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:pink_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:pink_tulip": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:pink_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:pink_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:piston": { + "properties": { + "extended": [ + "false", + "true" + ], + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "extended": "false", + "facing": "north" + }, + "stateCount": 12 + }, + "minecraft:piston_head": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ], + "short": [ + "false", + "true" + ], + "type": [ + "normal", + "sticky" + ] + }, + "defaultProperties": { + "facing": "north", + "short": "false", + "type": "normal" + }, + "stateCount": 24 + }, + "minecraft:pitcher_crop": { + "properties": { + "age": [ + "0", + "1", + "2", + "3", + "4" + ], + "half": [ + "lower", + "upper" + ] + }, + "defaultProperties": { + "age": "0", + "half": "lower" + }, + "stateCount": 10 + }, + "minecraft:pitcher_plant": { + "properties": { + "half": [ + "lower", + "upper" + ] + }, + "defaultProperties": { + "half": "lower" + }, + "stateCount": 2 + }, + "minecraft:player_head": { + "properties": { + "powered": [ + "false", + "true" + ], + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "powered": "false", + "rotation": "0" + }, + "stateCount": 32 + }, + "minecraft:player_wall_head": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false" + }, + "stateCount": 8 + }, + "minecraft:podzol": { + "properties": { + "snowy": [ + "false", + "true" + ] + }, + "defaultProperties": { + "snowy": "false" + }, + "stateCount": 2 + }, + "minecraft:pointed_dripstone": { + "properties": { + "thickness": [ + "base", + "frustum", + "middle", + "tip", + "tip_merge" + ], + "vertical_direction": [ + "down", + "up" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "thickness": "tip", + "vertical_direction": "up", + "waterlogged": "false" + }, + "stateCount": 20 + }, + "minecraft:polished_andesite": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:polished_andesite_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:polished_andesite_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:polished_basalt": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:polished_blackstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:polished_blackstone_brick_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:polished_blackstone_brick_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:polished_blackstone_brick_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:polished_blackstone_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:polished_blackstone_button": { + "properties": { + "face": [ + "ceiling", + "floor", + "wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:polished_blackstone_pressure_plate": { + "properties": { + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:polished_blackstone_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:polished_blackstone_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:polished_blackstone_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:polished_deepslate": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:polished_deepslate_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:polished_deepslate_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:polished_deepslate_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:polished_diorite": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:polished_diorite_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:polished_diorite_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:polished_granite": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:polished_granite_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:polished_granite_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:polished_tuff": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:polished_tuff_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:polished_tuff_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:polished_tuff_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:poppy": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potatoes": { + "properties": { + "age": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 8 + }, + "minecraft:potted_acacia_sapling": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_allium": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_azalea_bush": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_azure_bluet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_bamboo": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_birch_sapling": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_blue_orchid": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_brown_mushroom": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_cactus": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_cherry_sapling": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_cornflower": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_crimson_fungus": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_crimson_roots": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_dandelion": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_dark_oak_sapling": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_dead_bush": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_fern": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_flowering_azalea_bush": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_jungle_sapling": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_lily_of_the_valley": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_mangrove_propagule": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_oak_sapling": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_orange_tulip": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_oxeye_daisy": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_pink_tulip": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_poppy": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_red_mushroom": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_red_tulip": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_spruce_sapling": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_torchflower": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_warped_fungus": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_warped_roots": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_white_tulip": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_wither_rose": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:powder_snow": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:powder_snow_cauldron": { + "properties": { + "level": [ + "1", + "2", + "3" + ] + }, + "defaultProperties": { + "level": "1" + }, + "stateCount": 3 + }, + "minecraft:powered_rail": { + "properties": { + "powered": [ + "false", + "true" + ], + "shape": [ + "ascending_east", + "ascending_north", + "ascending_south", + "ascending_west", + "east_west", + "north_south" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false", + "shape": "north_south", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:prismarine": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:prismarine_brick_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:prismarine_brick_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:prismarine_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:prismarine_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:prismarine_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:prismarine_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:pumpkin": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:pumpkin_stem": { + "properties": { + "age": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 8 + }, + "minecraft:purple_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:purple_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:purple_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:purple_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:purple_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:purple_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:purple_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:purple_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:purple_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:purple_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:purple_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:purple_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:purple_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:purple_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:purpur_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:purpur_pillar": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:purpur_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:purpur_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:quartz_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:quartz_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:quartz_pillar": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:quartz_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:quartz_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:rail": { + "properties": { + "shape": [ + "ascending_east", + "ascending_north", + "ascending_south", + "ascending_west", + "east_west", + "north_east", + "north_south", + "north_west", + "south_east", + "south_west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "shape": "north_south", + "waterlogged": "false" + }, + "stateCount": 20 + }, + "minecraft:raw_copper_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:raw_gold_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:raw_iron_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:red_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:red_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:red_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:red_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:red_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:red_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:red_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:red_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:red_mushroom": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:red_mushroom_block": { + "properties": { + "down": [ + "false", + "true" + ], + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "up": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "down": "true", + "east": "true", + "north": "true", + "south": "true", + "up": "true", + "west": "true" + }, + "stateCount": 64 + }, + "minecraft:red_nether_brick_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:red_nether_brick_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:red_nether_brick_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:red_nether_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:red_sand": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:red_sandstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:red_sandstone_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:red_sandstone_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:red_sandstone_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:red_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:red_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:red_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:red_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:red_tulip": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:red_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:red_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:redstone_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:redstone_lamp": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:redstone_ore": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:redstone_torch": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "true" + }, + "stateCount": 2 + }, + "minecraft:redstone_wall_torch": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "lit": "true" + }, + "stateCount": 8 + }, + "minecraft:redstone_wire": { + "properties": { + "east": [ + "none", + "side", + "up" + ], + "north": [ + "none", + "side", + "up" + ], + "power": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "south": [ + "none", + "side", + "up" + ], + "west": [ + "none", + "side", + "up" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "power": "0", + "south": "none", + "west": "none" + }, + "stateCount": 1296 + }, + "minecraft:reinforced_deepslate": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:repeater": { + "properties": { + "delay": [ + "1", + "2", + "3", + "4" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "locked": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "delay": "1", + "facing": "north", + "locked": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:repeating_command_block": { + "properties": { + "conditional": [ + "false", + "true" + ], + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "conditional": "false", + "facing": "north" + }, + "stateCount": 12 + }, + "minecraft:respawn_anchor": { + "properties": { + "charges": [ + "0", + "1", + "2", + "3", + "4" + ] + }, + "defaultProperties": { + "charges": "0" + }, + "stateCount": 5 + }, + "minecraft:rooted_dirt": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:rose_bush": { + "properties": { + "half": [ + "lower", + "upper" + ] + }, + "defaultProperties": { + "half": "lower" + }, + "stateCount": 2 + }, + "minecraft:sand": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:sandstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:sandstone_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:sandstone_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:sandstone_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:scaffolding": { + "properties": { + "bottom": [ + "false", + "true" + ], + "distance": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "bottom": "false", + "distance": "7", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:sculk": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:sculk_catalyst": { + "properties": { + "bloom": [ + "false", + "true" + ] + }, + "defaultProperties": { + "bloom": "false" + }, + "stateCount": 2 + }, + "minecraft:sculk_sensor": { + "properties": { + "power": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "sculk_sensor_phase": [ + "active", + "cooldown", + "inactive" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "power": "0", + "sculk_sensor_phase": "inactive", + "waterlogged": "false" + }, + "stateCount": 96 + }, + "minecraft:sculk_shrieker": { + "properties": { + "can_summon": [ + "false", + "true" + ], + "shrieking": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "can_summon": "false", + "shrieking": "false", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:sculk_vein": { + "properties": { + "down": [ + "false", + "true" + ], + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "down": "false", + "east": "false", + "north": "false", + "south": "false", + "up": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 128 + }, + "minecraft:sea_lantern": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:sea_pickle": { + "properties": { + "pickles": [ + "1", + "2", + "3", + "4" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "pickles": "1", + "waterlogged": "true" + }, + "stateCount": 8 + }, + "minecraft:seagrass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:short_grass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:shroomlight": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:skeleton_skull": { + "properties": { + "powered": [ + "false", + "true" + ], + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "powered": "false", + "rotation": "0" + }, + "stateCount": 32 + }, + "minecraft:skeleton_wall_skull": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false" + }, + "stateCount": 8 + }, + "minecraft:slime_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:small_amethyst_bud": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "up", + "waterlogged": "false" + }, + "stateCount": 12 + }, + "minecraft:small_dripleaf": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:smithing_table": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:smoker": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "lit": "false" + }, + "stateCount": 8 + }, + "minecraft:smooth_basalt": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:smooth_quartz": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:smooth_quartz_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:smooth_quartz_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:smooth_red_sandstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:smooth_red_sandstone_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:smooth_red_sandstone_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:smooth_sandstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:smooth_sandstone_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:smooth_sandstone_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:smooth_stone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:smooth_stone_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:sniffer_egg": { + "properties": { + "hatch": [ + "0", + "1", + "2" + ] + }, + "defaultProperties": { + "hatch": "0" + }, + "stateCount": 3 + }, + "minecraft:snow": { + "properties": { + "layers": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8" + ] + }, + "defaultProperties": { + "layers": "1" + }, + "stateCount": 8 + }, + "minecraft:snow_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:soul_campfire": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "lit": [ + "false", + "true" + ], + "signal_fire": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "lit": "true", + "signal_fire": "false", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:soul_fire": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:soul_lantern": { + "properties": { + "hanging": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "hanging": "false", + "waterlogged": "false" + }, + "stateCount": 4 + }, + "minecraft:soul_sand": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:soul_soil": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:soul_torch": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:soul_wall_torch": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:spawner": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:sponge": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:spore_blossom": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:spruce_button": { + "properties": { + "face": [ + "ceiling", + "floor", + "wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:spruce_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:spruce_fence": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:spruce_fence_gate": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "in_wall": [ + "false", + "true" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "in_wall": "false", + "open": "false", + "powered": "false" + }, + "stateCount": 32 + }, + "minecraft:spruce_hanging_sign": { + "properties": { + "attached": [ + "false", + "true" + ], + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "attached": "false", + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:spruce_leaves": { + "properties": { + "distance": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ], + "persistent": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "distance": "7", + "persistent": "false", + "waterlogged": "false" + }, + "stateCount": 28 + }, + "minecraft:spruce_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:spruce_planks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:spruce_pressure_plate": { + "properties": { + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:spruce_sapling": { + "properties": { + "stage": [ + "0", + "1" + ] + }, + "defaultProperties": { + "stage": "0" + }, + "stateCount": 2 + }, + "minecraft:spruce_sign": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:spruce_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:spruce_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:spruce_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:spruce_wall_hanging_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:spruce_wall_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:spruce_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:sticky_piston": { + "properties": { + "extended": [ + "false", + "true" + ], + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "extended": "false", + "facing": "north" + }, + "stateCount": 12 + }, + "minecraft:stone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:stone_brick_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:stone_brick_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:stone_brick_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:stone_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:stone_button": { + "properties": { + "face": [ + "ceiling", + "floor", + "wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:stone_pressure_plate": { + "properties": { + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:stone_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:stone_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:stonecutter": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:stripped_acacia_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_acacia_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_bamboo_block": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_birch_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_birch_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_cherry_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_cherry_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_crimson_hyphae": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_crimson_stem": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_dark_oak_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_dark_oak_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_jungle_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_jungle_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_mangrove_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_mangrove_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_oak_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_oak_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_spruce_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_spruce_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_warped_hyphae": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_warped_stem": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:structure_block": { + "properties": { + "mode": [ + "corner", + "data", + "load", + "save" + ] + }, + "defaultProperties": { + "mode": "load" + }, + "stateCount": 4 + }, + "minecraft:structure_void": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:sugar_cane": { + "properties": { + "age": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 16 + }, + "minecraft:sunflower": { + "properties": { + "half": [ + "lower", + "upper" + ] + }, + "defaultProperties": { + "half": "lower" + }, + "stateCount": 2 + }, + "minecraft:suspicious_gravel": { + "properties": { + "dusted": [ + "0", + "1", + "2", + "3" + ] + }, + "defaultProperties": { + "dusted": "0" + }, + "stateCount": 4 + }, + "minecraft:suspicious_sand": { + "properties": { + "dusted": [ + "0", + "1", + "2", + "3" + ] + }, + "defaultProperties": { + "dusted": "0" + }, + "stateCount": 4 + }, + "minecraft:sweet_berry_bush": { + "properties": { + "age": [ + "0", + "1", + "2", + "3" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 4 + }, + "minecraft:tall_grass": { + "properties": { + "half": [ + "lower", + "upper" + ] + }, + "defaultProperties": { + "half": "lower" + }, + "stateCount": 2 + }, + "minecraft:tall_seagrass": { + "properties": { + "half": [ + "lower", + "upper" + ] + }, + "defaultProperties": { + "half": "lower" + }, + "stateCount": 2 + }, + "minecraft:target": { + "properties": { + "power": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "power": "0" + }, + "stateCount": 16 + }, + "minecraft:terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:tinted_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:tnt": { + "properties": { + "unstable": [ + "false", + "true" + ] + }, + "defaultProperties": { + "unstable": "false" + }, + "stateCount": 2 + }, + "minecraft:torch": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:torchflower": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:torchflower_crop": { + "properties": { + "age": [ + "0", + "1" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 2 + }, + "minecraft:trapped_chest": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "type": [ + "left", + "right", + "single" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "type": "single", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:trial_spawner": { + "properties": { + "ominous": [ + "false", + "true" + ], + "trial_spawner_state": [ + "active", + "cooldown", + "ejecting_reward", + "inactive", + "waiting_for_players", + "waiting_for_reward_ejection" + ] + }, + "defaultProperties": { + "ominous": "false", + "trial_spawner_state": "inactive" + }, + "stateCount": 12 + }, + "minecraft:tripwire": { + "properties": { + "attached": [ + "false", + "true" + ], + "disarmed": [ + "false", + "true" + ], + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "attached": "false", + "disarmed": "false", + "east": "false", + "north": "false", + "powered": "false", + "south": "false", + "west": "false" + }, + "stateCount": 128 + }, + "minecraft:tripwire_hook": { + "properties": { + "attached": [ + "false", + "true" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "attached": "false", + "facing": "north", + "powered": "false" + }, + "stateCount": 16 + }, + "minecraft:tube_coral": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:tube_coral_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:tube_coral_fan": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:tube_coral_wall_fan": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "true" + }, + "stateCount": 8 + }, + "minecraft:tuff": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:tuff_brick_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:tuff_brick_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:tuff_brick_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:tuff_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:tuff_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:tuff_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:tuff_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:turtle_egg": { + "properties": { + "eggs": [ + "1", + "2", + "3", + "4" + ], + "hatch": [ + "0", + "1", + "2" + ] + }, + "defaultProperties": { + "eggs": "1", + "hatch": "0" + }, + "stateCount": 12 + }, + "minecraft:twisting_vines": { + "properties": { + "age": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "16", + "17", + "18", + "19", + "2", + "20", + "21", + "22", + "23", + "24", + "25", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 26 + }, + "minecraft:twisting_vines_plant": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:vault": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "ominous": [ + "false", + "true" + ], + "vault_state": [ + "active", + "ejecting", + "inactive", + "unlocking" + ] + }, + "defaultProperties": { + "facing": "north", + "ominous": "false", + "vault_state": "inactive" + }, + "stateCount": 32 + }, + "minecraft:verdant_froglight": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:vine": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "up": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "up": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:void_air": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:wall_torch": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:warped_button": { + "properties": { + "face": [ + "ceiling", + "floor", + "wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:warped_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:warped_fence": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:warped_fence_gate": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "in_wall": [ + "false", + "true" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "in_wall": "false", + "open": "false", + "powered": "false" + }, + "stateCount": 32 + }, + "minecraft:warped_fungus": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:warped_hanging_sign": { + "properties": { + "attached": [ + "false", + "true" + ], + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "attached": "false", + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:warped_hyphae": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:warped_nylium": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:warped_planks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:warped_pressure_plate": { + "properties": { + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:warped_roots": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:warped_sign": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:warped_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:warped_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:warped_stem": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:warped_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:warped_wall_hanging_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:warped_wall_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:warped_wart_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:water": { + "properties": { + "level": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "level": "0" + }, + "stateCount": 16 + }, + "minecraft:water_cauldron": { + "properties": { + "level": [ + "1", + "2", + "3" + ] + }, + "defaultProperties": { + "level": "1" + }, + "stateCount": 3 + }, + "minecraft:waxed_chiseled_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:waxed_copper_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:waxed_copper_bulb": { + "properties": { + "lit": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false", + "powered": "false" + }, + "stateCount": 4 + }, + "minecraft:waxed_copper_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:waxed_copper_grate": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "false" + }, + "stateCount": 2 + }, + "minecraft:waxed_copper_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:waxed_cut_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:waxed_cut_copper_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:waxed_cut_copper_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:waxed_exposed_chiseled_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:waxed_exposed_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:waxed_exposed_copper_bulb": { + "properties": { + "lit": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false", + "powered": "false" + }, + "stateCount": 4 + }, + "minecraft:waxed_exposed_copper_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:waxed_exposed_copper_grate": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "false" + }, + "stateCount": 2 + }, + "minecraft:waxed_exposed_copper_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:waxed_exposed_cut_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:waxed_exposed_cut_copper_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:waxed_exposed_cut_copper_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:waxed_oxidized_chiseled_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:waxed_oxidized_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:waxed_oxidized_copper_bulb": { + "properties": { + "lit": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false", + "powered": "false" + }, + "stateCount": 4 + }, + "minecraft:waxed_oxidized_copper_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:waxed_oxidized_copper_grate": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "false" + }, + "stateCount": 2 + }, + "minecraft:waxed_oxidized_copper_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:waxed_oxidized_cut_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:waxed_oxidized_cut_copper_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:waxed_oxidized_cut_copper_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:waxed_weathered_chiseled_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:waxed_weathered_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:waxed_weathered_copper_bulb": { + "properties": { + "lit": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false", + "powered": "false" + }, + "stateCount": 4 + }, + "minecraft:waxed_weathered_copper_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:waxed_weathered_copper_grate": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "false" + }, + "stateCount": 2 + }, + "minecraft:waxed_weathered_copper_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:waxed_weathered_cut_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:waxed_weathered_cut_copper_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:waxed_weathered_cut_copper_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:weathered_chiseled_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:weathered_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:weathered_copper_bulb": { + "properties": { + "lit": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false", + "powered": "false" + }, + "stateCount": 4 + }, + "minecraft:weathered_copper_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:weathered_copper_grate": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "false" + }, + "stateCount": 2 + }, + "minecraft:weathered_copper_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:weathered_cut_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:weathered_cut_copper_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:weathered_cut_copper_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:weeping_vines": { + "properties": { + "age": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "16", + "17", + "18", + "19", + "2", + "20", + "21", + "22", + "23", + "24", + "25", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 26 + }, + "minecraft:weeping_vines_plant": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:wet_sponge": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:wheat": { + "properties": { + "age": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 8 + }, + "minecraft:white_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:white_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:white_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:white_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:white_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:white_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:white_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:white_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:white_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:white_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:white_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:white_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:white_tulip": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:white_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:white_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:wither_rose": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:wither_skeleton_skull": { + "properties": { + "powered": [ + "false", + "true" + ], + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "powered": "false", + "rotation": "0" + }, + "stateCount": 32 + }, + "minecraft:wither_skeleton_wall_skull": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false" + }, + "stateCount": 8 + }, + "minecraft:yellow_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:yellow_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:yellow_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:yellow_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:yellow_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:yellow_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:yellow_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:yellow_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:yellow_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:yellow_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:yellow_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:yellow_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:yellow_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:yellow_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:zombie_head": { + "properties": { + "powered": [ + "false", + "true" + ], + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "powered": "false", + "rotation": "0" + }, + "stateCount": 32 + }, + "minecraft:zombie_wall_head": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false" + }, + "stateCount": 8 + } + } +} \ No newline at end of file diff --git a/src/main/resources/mapping/block_states/java_1_21_11.json b/src/main/resources/mapping/block_states/java_1_21_11.json new file mode 100644 index 00000000..277fcfe3 --- /dev/null +++ b/src/main/resources/mapping/block_states/java_1_21_11.json @@ -0,0 +1,19776 @@ +{ + "version": "1.21.11", + "dataVersion": 4671, + "source": "Mojang server reports/blocks.json generated from 1.21.11 server.jar", + "blocks": { + "minecraft:acacia_button": { + "properties": { + "face": [ + "ceiling", + "floor", + "wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:acacia_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:acacia_fence": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:acacia_fence_gate": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "in_wall": [ + "false", + "true" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "in_wall": "false", + "open": "false", + "powered": "false" + }, + "stateCount": 32 + }, + "minecraft:acacia_hanging_sign": { + "properties": { + "attached": [ + "false", + "true" + ], + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "attached": "false", + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:acacia_leaves": { + "properties": { + "distance": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ], + "persistent": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "distance": "7", + "persistent": "false", + "waterlogged": "false" + }, + "stateCount": 28 + }, + "minecraft:acacia_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:acacia_planks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:acacia_pressure_plate": { + "properties": { + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:acacia_sapling": { + "properties": { + "stage": [ + "0", + "1" + ] + }, + "defaultProperties": { + "stage": "0" + }, + "stateCount": 2 + }, + "minecraft:acacia_shelf": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ], + "side_chain": [ + "center", + "left", + "right", + "unconnected" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false", + "side_chain": "unconnected", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:acacia_sign": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:acacia_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:acacia_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:acacia_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:acacia_wall_hanging_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:acacia_wall_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:acacia_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:activator_rail": { + "properties": { + "powered": [ + "false", + "true" + ], + "shape": [ + "ascending_east", + "ascending_north", + "ascending_south", + "ascending_west", + "east_west", + "north_south" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false", + "shape": "north_south", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:air": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:allium": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:amethyst_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:amethyst_cluster": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "up", + "waterlogged": "false" + }, + "stateCount": 12 + }, + "minecraft:ancient_debris": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:andesite": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:andesite_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:andesite_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:andesite_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:anvil": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:attached_melon_stem": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:attached_pumpkin_stem": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:azalea": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:azalea_leaves": { + "properties": { + "distance": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ], + "persistent": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "distance": "7", + "persistent": "false", + "waterlogged": "false" + }, + "stateCount": 28 + }, + "minecraft:azure_bluet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:bamboo": { + "properties": { + "age": [ + "0", + "1" + ], + "leaves": [ + "large", + "none", + "small" + ], + "stage": [ + "0", + "1" + ] + }, + "defaultProperties": { + "age": "0", + "leaves": "none", + "stage": "0" + }, + "stateCount": 12 + }, + "minecraft:bamboo_block": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:bamboo_button": { + "properties": { + "face": [ + "ceiling", + "floor", + "wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:bamboo_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:bamboo_fence": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:bamboo_fence_gate": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "in_wall": [ + "false", + "true" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "in_wall": "false", + "open": "false", + "powered": "false" + }, + "stateCount": 32 + }, + "minecraft:bamboo_hanging_sign": { + "properties": { + "attached": [ + "false", + "true" + ], + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "attached": "false", + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:bamboo_mosaic": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:bamboo_mosaic_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:bamboo_mosaic_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:bamboo_planks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:bamboo_pressure_plate": { + "properties": { + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:bamboo_sapling": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:bamboo_shelf": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ], + "side_chain": [ + "center", + "left", + "right", + "unconnected" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false", + "side_chain": "unconnected", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:bamboo_sign": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:bamboo_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:bamboo_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:bamboo_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:bamboo_wall_hanging_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:bamboo_wall_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:barrel": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ], + "open": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "open": "false" + }, + "stateCount": 12 + }, + "minecraft:barrier": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "false" + }, + "stateCount": 2 + }, + "minecraft:basalt": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:beacon": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:bedrock": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:bee_nest": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "honey_level": [ + "0", + "1", + "2", + "3", + "4", + "5" + ] + }, + "defaultProperties": { + "facing": "north", + "honey_level": "0" + }, + "stateCount": 24 + }, + "minecraft:beehive": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "honey_level": [ + "0", + "1", + "2", + "3", + "4", + "5" + ] + }, + "defaultProperties": { + "facing": "north", + "honey_level": "0" + }, + "stateCount": 24 + }, + "minecraft:beetroots": { + "properties": { + "age": [ + "0", + "1", + "2", + "3" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 4 + }, + "minecraft:bell": { + "properties": { + "attachment": [ + "ceiling", + "double_wall", + "floor", + "single_wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "attachment": "floor", + "facing": "north", + "powered": "false" + }, + "stateCount": 32 + }, + "minecraft:big_dripleaf": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "tilt": [ + "full", + "none", + "partial", + "unstable" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "tilt": "none", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:big_dripleaf_stem": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:birch_button": { + "properties": { + "face": [ + "ceiling", + "floor", + "wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:birch_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:birch_fence": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:birch_fence_gate": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "in_wall": [ + "false", + "true" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "in_wall": "false", + "open": "false", + "powered": "false" + }, + "stateCount": 32 + }, + "minecraft:birch_hanging_sign": { + "properties": { + "attached": [ + "false", + "true" + ], + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "attached": "false", + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:birch_leaves": { + "properties": { + "distance": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ], + "persistent": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "distance": "7", + "persistent": "false", + "waterlogged": "false" + }, + "stateCount": 28 + }, + "minecraft:birch_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:birch_planks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:birch_pressure_plate": { + "properties": { + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:birch_sapling": { + "properties": { + "stage": [ + "0", + "1" + ] + }, + "defaultProperties": { + "stage": "0" + }, + "stateCount": 2 + }, + "minecraft:birch_shelf": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ], + "side_chain": [ + "center", + "left", + "right", + "unconnected" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false", + "side_chain": "unconnected", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:birch_sign": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:birch_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:birch_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:birch_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:birch_wall_hanging_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:birch_wall_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:birch_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:black_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:black_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:black_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:black_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:black_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:black_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:black_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:black_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:black_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:black_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:black_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:black_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:black_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:black_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:blackstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:blackstone_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:blackstone_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:blackstone_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:blast_furnace": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "lit": "false" + }, + "stateCount": 8 + }, + "minecraft:blue_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:blue_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:blue_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:blue_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:blue_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:blue_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:blue_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:blue_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:blue_ice": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:blue_orchid": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:blue_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:blue_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:blue_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:blue_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:blue_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:blue_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:bone_block": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:bookshelf": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:brain_coral": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:brain_coral_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:brain_coral_fan": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:brain_coral_wall_fan": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "true" + }, + "stateCount": 8 + }, + "minecraft:brewing_stand": { + "properties": { + "has_bottle_0": [ + "false", + "true" + ], + "has_bottle_1": [ + "false", + "true" + ], + "has_bottle_2": [ + "false", + "true" + ] + }, + "defaultProperties": { + "has_bottle_0": "false", + "has_bottle_1": "false", + "has_bottle_2": "false" + }, + "stateCount": 8 + }, + "minecraft:brick_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:brick_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:brick_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:brown_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:brown_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:brown_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:brown_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:brown_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:brown_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:brown_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:brown_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:brown_mushroom": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:brown_mushroom_block": { + "properties": { + "down": [ + "false", + "true" + ], + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "up": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "down": "true", + "east": "true", + "north": "true", + "south": "true", + "up": "true", + "west": "true" + }, + "stateCount": 64 + }, + "minecraft:brown_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:brown_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:brown_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:brown_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:brown_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:brown_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:bubble_column": { + "properties": { + "drag": [ + "false", + "true" + ] + }, + "defaultProperties": { + "drag": "true" + }, + "stateCount": 2 + }, + "minecraft:bubble_coral": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:bubble_coral_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:bubble_coral_fan": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:bubble_coral_wall_fan": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "true" + }, + "stateCount": 8 + }, + "minecraft:budding_amethyst": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:bush": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cactus": { + "properties": { + "age": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 16 + }, + "minecraft:cactus_flower": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cake": { + "properties": { + "bites": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6" + ] + }, + "defaultProperties": { + "bites": "0" + }, + "stateCount": 7 + }, + "minecraft:calcite": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:calibrated_sculk_sensor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "power": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "sculk_sensor_phase": [ + "active", + "cooldown", + "inactive" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "power": "0", + "sculk_sensor_phase": "inactive", + "waterlogged": "false" + }, + "stateCount": 384 + }, + "minecraft:campfire": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "lit": [ + "false", + "true" + ], + "signal_fire": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "lit": "true", + "signal_fire": "false", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:carrots": { + "properties": { + "age": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 8 + }, + "minecraft:cartography_table": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:carved_pumpkin": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:cauldron": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cave_air": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cave_vines": { + "properties": { + "age": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "16", + "17", + "18", + "19", + "2", + "20", + "21", + "22", + "23", + "24", + "25", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "berries": [ + "false", + "true" + ] + }, + "defaultProperties": { + "age": "0", + "berries": "false" + }, + "stateCount": 52 + }, + "minecraft:cave_vines_plant": { + "properties": { + "berries": [ + "false", + "true" + ] + }, + "defaultProperties": { + "berries": "false" + }, + "stateCount": 2 + }, + "minecraft:chain_command_block": { + "properties": { + "conditional": [ + "false", + "true" + ], + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "conditional": "false", + "facing": "north" + }, + "stateCount": 12 + }, + "minecraft:cherry_button": { + "properties": { + "face": [ + "ceiling", + "floor", + "wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:cherry_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:cherry_fence": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:cherry_fence_gate": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "in_wall": [ + "false", + "true" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "in_wall": "false", + "open": "false", + "powered": "false" + }, + "stateCount": 32 + }, + "minecraft:cherry_hanging_sign": { + "properties": { + "attached": [ + "false", + "true" + ], + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "attached": "false", + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:cherry_leaves": { + "properties": { + "distance": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ], + "persistent": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "distance": "7", + "persistent": "false", + "waterlogged": "false" + }, + "stateCount": 28 + }, + "minecraft:cherry_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:cherry_planks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cherry_pressure_plate": { + "properties": { + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:cherry_sapling": { + "properties": { + "stage": [ + "0", + "1" + ] + }, + "defaultProperties": { + "stage": "0" + }, + "stateCount": 2 + }, + "minecraft:cherry_shelf": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ], + "side_chain": [ + "center", + "left", + "right", + "unconnected" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false", + "side_chain": "unconnected", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:cherry_sign": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:cherry_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:cherry_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:cherry_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:cherry_wall_hanging_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:cherry_wall_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:cherry_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:chest": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "type": [ + "left", + "right", + "single" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "type": "single", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:chipped_anvil": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:chiseled_bookshelf": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "slot_0_occupied": [ + "false", + "true" + ], + "slot_1_occupied": [ + "false", + "true" + ], + "slot_2_occupied": [ + "false", + "true" + ], + "slot_3_occupied": [ + "false", + "true" + ], + "slot_4_occupied": [ + "false", + "true" + ], + "slot_5_occupied": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "slot_0_occupied": "false", + "slot_1_occupied": "false", + "slot_2_occupied": "false", + "slot_3_occupied": "false", + "slot_4_occupied": "false", + "slot_5_occupied": "false" + }, + "stateCount": 256 + }, + "minecraft:chiseled_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:chiseled_deepslate": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:chiseled_nether_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:chiseled_polished_blackstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:chiseled_quartz_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:chiseled_red_sandstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:chiseled_resin_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:chiseled_sandstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:chiseled_stone_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:chiseled_tuff": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:chiseled_tuff_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:chorus_flower": { + "properties": { + "age": [ + "0", + "1", + "2", + "3", + "4", + "5" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 6 + }, + "minecraft:chorus_plant": { + "properties": { + "down": [ + "false", + "true" + ], + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "up": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "down": "false", + "east": "false", + "north": "false", + "south": "false", + "up": "false", + "west": "false" + }, + "stateCount": 64 + }, + "minecraft:clay": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:closed_eyeblossom": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:coal_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:coal_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:coarse_dirt": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cobbled_deepslate": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cobbled_deepslate_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:cobbled_deepslate_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:cobbled_deepslate_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:cobblestone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cobblestone_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:cobblestone_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:cobblestone_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:cobweb": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cocoa": { + "properties": { + "age": [ + "0", + "1", + "2" + ], + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "age": "0", + "facing": "north" + }, + "stateCount": 12 + }, + "minecraft:command_block": { + "properties": { + "conditional": [ + "false", + "true" + ], + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "conditional": "false", + "facing": "north" + }, + "stateCount": 12 + }, + "minecraft:comparator": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "mode": [ + "compare", + "subtract" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "mode": "compare", + "powered": "false" + }, + "stateCount": 16 + }, + "minecraft:composter": { + "properties": { + "level": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8" + ] + }, + "defaultProperties": { + "level": "0" + }, + "stateCount": 9 + }, + "minecraft:conduit": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:copper_bars": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:copper_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:copper_bulb": { + "properties": { + "lit": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false", + "powered": "false" + }, + "stateCount": 4 + }, + "minecraft:copper_chain": { + "properties": { + "axis": [ + "x", + "y", + "z" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "axis": "y", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:copper_chest": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "type": [ + "left", + "right", + "single" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "type": "single", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:copper_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:copper_golem_statue": { + "properties": { + "copper_golem_pose": [ + "running", + "sitting", + "standing", + "star" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "copper_golem_pose": "standing", + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:copper_grate": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "false" + }, + "stateCount": 2 + }, + "minecraft:copper_lantern": { + "properties": { + "hanging": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "hanging": "false", + "waterlogged": "false" + }, + "stateCount": 4 + }, + "minecraft:copper_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:copper_torch": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:copper_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:copper_wall_torch": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:cornflower": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cracked_deepslate_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cracked_deepslate_tiles": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cracked_nether_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cracked_polished_blackstone_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cracked_stone_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:crafter": { + "properties": { + "crafting": [ + "false", + "true" + ], + "orientation": [ + "down_east", + "down_north", + "down_south", + "down_west", + "east_up", + "north_up", + "south_up", + "up_east", + "up_north", + "up_south", + "up_west", + "west_up" + ], + "triggered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "crafting": "false", + "orientation": "north_up", + "triggered": "false" + }, + "stateCount": 48 + }, + "minecraft:crafting_table": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:creaking_heart": { + "properties": { + "axis": [ + "x", + "y", + "z" + ], + "creaking_heart_state": [ + "awake", + "dormant", + "uprooted" + ], + "natural": [ + "false", + "true" + ] + }, + "defaultProperties": { + "axis": "y", + "creaking_heart_state": "uprooted", + "natural": "false" + }, + "stateCount": 18 + }, + "minecraft:creeper_head": { + "properties": { + "powered": [ + "false", + "true" + ], + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "powered": "false", + "rotation": "0" + }, + "stateCount": 32 + }, + "minecraft:creeper_wall_head": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false" + }, + "stateCount": 8 + }, + "minecraft:crimson_button": { + "properties": { + "face": [ + "ceiling", + "floor", + "wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:crimson_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:crimson_fence": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:crimson_fence_gate": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "in_wall": [ + "false", + "true" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "in_wall": "false", + "open": "false", + "powered": "false" + }, + "stateCount": 32 + }, + "minecraft:crimson_fungus": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:crimson_hanging_sign": { + "properties": { + "attached": [ + "false", + "true" + ], + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "attached": "false", + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:crimson_hyphae": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:crimson_nylium": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:crimson_planks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:crimson_pressure_plate": { + "properties": { + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:crimson_roots": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:crimson_shelf": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ], + "side_chain": [ + "center", + "left", + "right", + "unconnected" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false", + "side_chain": "unconnected", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:crimson_sign": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:crimson_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:crimson_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:crimson_stem": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:crimson_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:crimson_wall_hanging_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:crimson_wall_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:crying_obsidian": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cut_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cut_copper_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:cut_copper_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:cut_red_sandstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cut_red_sandstone_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:cut_sandstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cut_sandstone_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:cyan_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:cyan_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:cyan_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:cyan_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:cyan_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cyan_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cyan_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cyan_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:cyan_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:cyan_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cyan_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:cyan_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cyan_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:cyan_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:damaged_anvil": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:dandelion": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dark_oak_button": { + "properties": { + "face": [ + "ceiling", + "floor", + "wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:dark_oak_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:dark_oak_fence": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:dark_oak_fence_gate": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "in_wall": [ + "false", + "true" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "in_wall": "false", + "open": "false", + "powered": "false" + }, + "stateCount": 32 + }, + "minecraft:dark_oak_hanging_sign": { + "properties": { + "attached": [ + "false", + "true" + ], + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "attached": "false", + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:dark_oak_leaves": { + "properties": { + "distance": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ], + "persistent": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "distance": "7", + "persistent": "false", + "waterlogged": "false" + }, + "stateCount": 28 + }, + "minecraft:dark_oak_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:dark_oak_planks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dark_oak_pressure_plate": { + "properties": { + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:dark_oak_sapling": { + "properties": { + "stage": [ + "0", + "1" + ] + }, + "defaultProperties": { + "stage": "0" + }, + "stateCount": 2 + }, + "minecraft:dark_oak_shelf": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ], + "side_chain": [ + "center", + "left", + "right", + "unconnected" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false", + "side_chain": "unconnected", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:dark_oak_sign": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:dark_oak_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:dark_oak_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:dark_oak_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:dark_oak_wall_hanging_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:dark_oak_wall_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:dark_oak_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:dark_prismarine": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dark_prismarine_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:dark_prismarine_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:daylight_detector": { + "properties": { + "inverted": [ + "false", + "true" + ], + "power": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "inverted": "false", + "power": "0" + }, + "stateCount": 32 + }, + "minecraft:dead_brain_coral": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:dead_brain_coral_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dead_brain_coral_fan": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:dead_brain_coral_wall_fan": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "true" + }, + "stateCount": 8 + }, + "minecraft:dead_bubble_coral": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:dead_bubble_coral_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dead_bubble_coral_fan": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:dead_bubble_coral_wall_fan": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "true" + }, + "stateCount": 8 + }, + "minecraft:dead_bush": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dead_fire_coral": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:dead_fire_coral_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dead_fire_coral_fan": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:dead_fire_coral_wall_fan": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "true" + }, + "stateCount": 8 + }, + "minecraft:dead_horn_coral": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:dead_horn_coral_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dead_horn_coral_fan": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:dead_horn_coral_wall_fan": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "true" + }, + "stateCount": 8 + }, + "minecraft:dead_tube_coral": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:dead_tube_coral_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dead_tube_coral_fan": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:dead_tube_coral_wall_fan": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "true" + }, + "stateCount": 8 + }, + "minecraft:decorated_pot": { + "properties": { + "cracked": [ + "false", + "true" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "cracked": "false", + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:deepslate": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:deepslate_brick_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:deepslate_brick_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:deepslate_brick_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:deepslate_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:deepslate_coal_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:deepslate_copper_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:deepslate_diamond_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:deepslate_emerald_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:deepslate_gold_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:deepslate_iron_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:deepslate_lapis_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:deepslate_redstone_ore": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:deepslate_tile_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:deepslate_tile_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:deepslate_tile_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:deepslate_tiles": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:detector_rail": { + "properties": { + "powered": [ + "false", + "true" + ], + "shape": [ + "ascending_east", + "ascending_north", + "ascending_south", + "ascending_west", + "east_west", + "north_south" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false", + "shape": "north_south", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:diamond_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:diamond_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:diorite": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:diorite_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:diorite_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:diorite_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:dirt": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dirt_path": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dispenser": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ], + "triggered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "triggered": "false" + }, + "stateCount": 12 + }, + "minecraft:dragon_egg": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dragon_head": { + "properties": { + "powered": [ + "false", + "true" + ], + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "powered": "false", + "rotation": "0" + }, + "stateCount": 32 + }, + "minecraft:dragon_wall_head": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false" + }, + "stateCount": 8 + }, + "minecraft:dried_ghast": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "hydration": [ + "0", + "1", + "2", + "3" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "hydration": "0", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:dried_kelp_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dripstone_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dropper": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ], + "triggered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "triggered": "false" + }, + "stateCount": 12 + }, + "minecraft:emerald_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:emerald_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:enchanting_table": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:end_gateway": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:end_portal": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:end_portal_frame": { + "properties": { + "eye": [ + "false", + "true" + ], + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "eye": "false", + "facing": "north" + }, + "stateCount": 8 + }, + "minecraft:end_rod": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:end_stone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:end_stone_brick_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:end_stone_brick_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:end_stone_brick_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:end_stone_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:ender_chest": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:exposed_chiseled_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:exposed_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:exposed_copper_bars": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:exposed_copper_bulb": { + "properties": { + "lit": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false", + "powered": "false" + }, + "stateCount": 4 + }, + "minecraft:exposed_copper_chain": { + "properties": { + "axis": [ + "x", + "y", + "z" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "axis": "y", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:exposed_copper_chest": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "type": [ + "left", + "right", + "single" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "type": "single", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:exposed_copper_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:exposed_copper_golem_statue": { + "properties": { + "copper_golem_pose": [ + "running", + "sitting", + "standing", + "star" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "copper_golem_pose": "standing", + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:exposed_copper_grate": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "false" + }, + "stateCount": 2 + }, + "minecraft:exposed_copper_lantern": { + "properties": { + "hanging": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "hanging": "false", + "waterlogged": "false" + }, + "stateCount": 4 + }, + "minecraft:exposed_copper_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:exposed_cut_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:exposed_cut_copper_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:exposed_cut_copper_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:exposed_lightning_rod": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "up", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:farmland": { + "properties": { + "moisture": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ] + }, + "defaultProperties": { + "moisture": "0" + }, + "stateCount": 8 + }, + "minecraft:fern": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:fire": { + "properties": { + "age": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "up": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "age": "0", + "east": "false", + "north": "false", + "south": "false", + "up": "false", + "west": "false" + }, + "stateCount": 512 + }, + "minecraft:fire_coral": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:fire_coral_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:fire_coral_fan": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:fire_coral_wall_fan": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "true" + }, + "stateCount": 8 + }, + "minecraft:firefly_bush": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:fletching_table": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:flower_pot": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:flowering_azalea": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:flowering_azalea_leaves": { + "properties": { + "distance": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ], + "persistent": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "distance": "7", + "persistent": "false", + "waterlogged": "false" + }, + "stateCount": 28 + }, + "minecraft:frogspawn": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:frosted_ice": { + "properties": { + "age": [ + "0", + "1", + "2", + "3" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 4 + }, + "minecraft:furnace": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "lit": "false" + }, + "stateCount": 8 + }, + "minecraft:gilded_blackstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:glow_lichen": { + "properties": { + "down": [ + "false", + "true" + ], + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "down": "false", + "east": "false", + "north": "false", + "south": "false", + "up": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 128 + }, + "minecraft:glowstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:gold_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:gold_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:granite": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:granite_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:granite_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:granite_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:grass_block": { + "properties": { + "snowy": [ + "false", + "true" + ] + }, + "defaultProperties": { + "snowy": "false" + }, + "stateCount": 2 + }, + "minecraft:gravel": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:gray_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:gray_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:gray_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:gray_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:gray_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:gray_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:gray_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:gray_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:gray_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:gray_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:gray_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:gray_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:gray_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:gray_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:green_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:green_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:green_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:green_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:green_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:green_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:green_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:green_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:green_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:green_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:green_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:green_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:green_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:green_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:grindstone": { + "properties": { + "face": [ + "ceiling", + "floor", + "wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north" + }, + "stateCount": 12 + }, + "minecraft:hanging_roots": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "false" + }, + "stateCount": 2 + }, + "minecraft:hay_block": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:heavy_core": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "false" + }, + "stateCount": 2 + }, + "minecraft:heavy_weighted_pressure_plate": { + "properties": { + "power": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "power": "0" + }, + "stateCount": 16 + }, + "minecraft:honey_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:honeycomb_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:hopper": { + "properties": { + "enabled": [ + "false", + "true" + ], + "facing": [ + "down", + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "enabled": "true", + "facing": "down" + }, + "stateCount": 10 + }, + "minecraft:horn_coral": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:horn_coral_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:horn_coral_fan": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:horn_coral_wall_fan": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "true" + }, + "stateCount": 8 + }, + "minecraft:ice": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:infested_chiseled_stone_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:infested_cobblestone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:infested_cracked_stone_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:infested_deepslate": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:infested_mossy_stone_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:infested_stone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:infested_stone_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:iron_bars": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:iron_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:iron_chain": { + "properties": { + "axis": [ + "x", + "y", + "z" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "axis": "y", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:iron_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:iron_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:iron_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:jack_o_lantern": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:jigsaw": { + "properties": { + "orientation": [ + "down_east", + "down_north", + "down_south", + "down_west", + "east_up", + "north_up", + "south_up", + "up_east", + "up_north", + "up_south", + "up_west", + "west_up" + ] + }, + "defaultProperties": { + "orientation": "north_up" + }, + "stateCount": 12 + }, + "minecraft:jukebox": { + "properties": { + "has_record": [ + "false", + "true" + ] + }, + "defaultProperties": { + "has_record": "false" + }, + "stateCount": 2 + }, + "minecraft:jungle_button": { + "properties": { + "face": [ + "ceiling", + "floor", + "wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:jungle_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:jungle_fence": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:jungle_fence_gate": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "in_wall": [ + "false", + "true" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "in_wall": "false", + "open": "false", + "powered": "false" + }, + "stateCount": 32 + }, + "minecraft:jungle_hanging_sign": { + "properties": { + "attached": [ + "false", + "true" + ], + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "attached": "false", + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:jungle_leaves": { + "properties": { + "distance": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ], + "persistent": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "distance": "7", + "persistent": "false", + "waterlogged": "false" + }, + "stateCount": 28 + }, + "minecraft:jungle_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:jungle_planks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:jungle_pressure_plate": { + "properties": { + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:jungle_sapling": { + "properties": { + "stage": [ + "0", + "1" + ] + }, + "defaultProperties": { + "stage": "0" + }, + "stateCount": 2 + }, + "minecraft:jungle_shelf": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ], + "side_chain": [ + "center", + "left", + "right", + "unconnected" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false", + "side_chain": "unconnected", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:jungle_sign": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:jungle_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:jungle_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:jungle_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:jungle_wall_hanging_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:jungle_wall_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:jungle_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:kelp": { + "properties": { + "age": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "16", + "17", + "18", + "19", + "2", + "20", + "21", + "22", + "23", + "24", + "25", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 26 + }, + "minecraft:kelp_plant": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:ladder": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:lantern": { + "properties": { + "hanging": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "hanging": "false", + "waterlogged": "false" + }, + "stateCount": 4 + }, + "minecraft:lapis_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:lapis_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:large_amethyst_bud": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "up", + "waterlogged": "false" + }, + "stateCount": 12 + }, + "minecraft:large_fern": { + "properties": { + "half": [ + "lower", + "upper" + ] + }, + "defaultProperties": { + "half": "lower" + }, + "stateCount": 2 + }, + "minecraft:lava": { + "properties": { + "level": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "level": "0" + }, + "stateCount": 16 + }, + "minecraft:lava_cauldron": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:leaf_litter": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "segment_amount": [ + "1", + "2", + "3", + "4" + ] + }, + "defaultProperties": { + "facing": "north", + "segment_amount": "1" + }, + "stateCount": 16 + }, + "minecraft:lectern": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "has_book": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "has_book": "false", + "powered": "false" + }, + "stateCount": 16 + }, + "minecraft:lever": { + "properties": { + "face": [ + "ceiling", + "floor", + "wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:light": { + "properties": { + "level": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "level": "15", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:light_blue_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:light_blue_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:light_blue_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:light_blue_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:light_blue_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:light_blue_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:light_blue_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:light_blue_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:light_blue_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:light_blue_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:light_blue_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:light_blue_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:light_blue_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:light_blue_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:light_gray_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:light_gray_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:light_gray_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:light_gray_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:light_gray_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:light_gray_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:light_gray_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:light_gray_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:light_gray_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:light_gray_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:light_gray_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:light_gray_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:light_gray_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:light_gray_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:light_weighted_pressure_plate": { + "properties": { + "power": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "power": "0" + }, + "stateCount": 16 + }, + "minecraft:lightning_rod": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "up", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:lilac": { + "properties": { + "half": [ + "lower", + "upper" + ] + }, + "defaultProperties": { + "half": "lower" + }, + "stateCount": 2 + }, + "minecraft:lily_of_the_valley": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:lily_pad": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:lime_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:lime_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:lime_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:lime_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:lime_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:lime_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:lime_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:lime_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:lime_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:lime_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:lime_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:lime_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:lime_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:lime_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:lodestone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:loom": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:magenta_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:magenta_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:magenta_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:magenta_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:magenta_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:magenta_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:magenta_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:magenta_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:magenta_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:magenta_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:magenta_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:magenta_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:magenta_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:magenta_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:magma_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:mangrove_button": { + "properties": { + "face": [ + "ceiling", + "floor", + "wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:mangrove_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:mangrove_fence": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:mangrove_fence_gate": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "in_wall": [ + "false", + "true" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "in_wall": "false", + "open": "false", + "powered": "false" + }, + "stateCount": 32 + }, + "minecraft:mangrove_hanging_sign": { + "properties": { + "attached": [ + "false", + "true" + ], + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "attached": "false", + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:mangrove_leaves": { + "properties": { + "distance": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ], + "persistent": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "distance": "7", + "persistent": "false", + "waterlogged": "false" + }, + "stateCount": 28 + }, + "minecraft:mangrove_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:mangrove_planks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:mangrove_pressure_plate": { + "properties": { + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:mangrove_propagule": { + "properties": { + "age": [ + "0", + "1", + "2", + "3", + "4" + ], + "hanging": [ + "false", + "true" + ], + "stage": [ + "0", + "1" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "age": "0", + "hanging": "false", + "stage": "0", + "waterlogged": "false" + }, + "stateCount": 40 + }, + "minecraft:mangrove_roots": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "false" + }, + "stateCount": 2 + }, + "minecraft:mangrove_shelf": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ], + "side_chain": [ + "center", + "left", + "right", + "unconnected" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false", + "side_chain": "unconnected", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:mangrove_sign": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:mangrove_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:mangrove_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:mangrove_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:mangrove_wall_hanging_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:mangrove_wall_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:mangrove_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:medium_amethyst_bud": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "up", + "waterlogged": "false" + }, + "stateCount": 12 + }, + "minecraft:melon": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:melon_stem": { + "properties": { + "age": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 8 + }, + "minecraft:moss_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:moss_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:mossy_cobblestone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:mossy_cobblestone_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:mossy_cobblestone_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:mossy_cobblestone_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:mossy_stone_brick_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:mossy_stone_brick_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:mossy_stone_brick_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:mossy_stone_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:moving_piston": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ], + "type": [ + "normal", + "sticky" + ] + }, + "defaultProperties": { + "facing": "north", + "type": "normal" + }, + "stateCount": 12 + }, + "minecraft:mud": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:mud_brick_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:mud_brick_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:mud_brick_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:mud_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:muddy_mangrove_roots": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:mushroom_stem": { + "properties": { + "down": [ + "false", + "true" + ], + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "up": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "down": "true", + "east": "true", + "north": "true", + "south": "true", + "up": "true", + "west": "true" + }, + "stateCount": 64 + }, + "minecraft:mycelium": { + "properties": { + "snowy": [ + "false", + "true" + ] + }, + "defaultProperties": { + "snowy": "false" + }, + "stateCount": 2 + }, + "minecraft:nether_brick_fence": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:nether_brick_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:nether_brick_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:nether_brick_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:nether_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:nether_gold_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:nether_portal": { + "properties": { + "axis": [ + "x", + "z" + ] + }, + "defaultProperties": { + "axis": "x" + }, + "stateCount": 2 + }, + "minecraft:nether_quartz_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:nether_sprouts": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:nether_wart": { + "properties": { + "age": [ + "0", + "1", + "2", + "3" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 4 + }, + "minecraft:nether_wart_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:netherite_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:netherrack": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:note_block": { + "properties": { + "instrument": [ + "banjo", + "basedrum", + "bass", + "bell", + "bit", + "chime", + "cow_bell", + "creeper", + "custom_head", + "didgeridoo", + "dragon", + "flute", + "guitar", + "harp", + "hat", + "iron_xylophone", + "piglin", + "pling", + "skeleton", + "snare", + "wither_skeleton", + "xylophone", + "zombie" + ], + "note": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "16", + "17", + "18", + "19", + "2", + "20", + "21", + "22", + "23", + "24", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "instrument": "harp", + "note": "0", + "powered": "false" + }, + "stateCount": 1150 + }, + "minecraft:oak_button": { + "properties": { + "face": [ + "ceiling", + "floor", + "wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:oak_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:oak_fence": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:oak_fence_gate": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "in_wall": [ + "false", + "true" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "in_wall": "false", + "open": "false", + "powered": "false" + }, + "stateCount": 32 + }, + "minecraft:oak_hanging_sign": { + "properties": { + "attached": [ + "false", + "true" + ], + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "attached": "false", + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:oak_leaves": { + "properties": { + "distance": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ], + "persistent": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "distance": "7", + "persistent": "false", + "waterlogged": "false" + }, + "stateCount": 28 + }, + "minecraft:oak_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:oak_planks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:oak_pressure_plate": { + "properties": { + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:oak_sapling": { + "properties": { + "stage": [ + "0", + "1" + ] + }, + "defaultProperties": { + "stage": "0" + }, + "stateCount": 2 + }, + "minecraft:oak_shelf": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ], + "side_chain": [ + "center", + "left", + "right", + "unconnected" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false", + "side_chain": "unconnected", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:oak_sign": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:oak_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:oak_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:oak_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:oak_wall_hanging_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:oak_wall_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:oak_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:observer": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "south", + "powered": "false" + }, + "stateCount": 12 + }, + "minecraft:obsidian": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:ochre_froglight": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:open_eyeblossom": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:orange_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:orange_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:orange_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:orange_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:orange_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:orange_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:orange_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:orange_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:orange_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:orange_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:orange_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:orange_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:orange_tulip": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:orange_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:orange_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:oxeye_daisy": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:oxidized_chiseled_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:oxidized_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:oxidized_copper_bars": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:oxidized_copper_bulb": { + "properties": { + "lit": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false", + "powered": "false" + }, + "stateCount": 4 + }, + "minecraft:oxidized_copper_chain": { + "properties": { + "axis": [ + "x", + "y", + "z" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "axis": "y", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:oxidized_copper_chest": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "type": [ + "left", + "right", + "single" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "type": "single", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:oxidized_copper_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:oxidized_copper_golem_statue": { + "properties": { + "copper_golem_pose": [ + "running", + "sitting", + "standing", + "star" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "copper_golem_pose": "standing", + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:oxidized_copper_grate": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "false" + }, + "stateCount": 2 + }, + "minecraft:oxidized_copper_lantern": { + "properties": { + "hanging": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "hanging": "false", + "waterlogged": "false" + }, + "stateCount": 4 + }, + "minecraft:oxidized_copper_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:oxidized_cut_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:oxidized_cut_copper_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:oxidized_cut_copper_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:oxidized_lightning_rod": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "up", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:packed_ice": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:packed_mud": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:pale_hanging_moss": { + "properties": { + "tip": [ + "false", + "true" + ] + }, + "defaultProperties": { + "tip": "true" + }, + "stateCount": 2 + }, + "minecraft:pale_moss_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:pale_moss_carpet": { + "properties": { + "bottom": [ + "false", + "true" + ], + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "bottom": "true", + "east": "none", + "north": "none", + "south": "none", + "west": "none" + }, + "stateCount": 162 + }, + "minecraft:pale_oak_button": { + "properties": { + "face": [ + "ceiling", + "floor", + "wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:pale_oak_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:pale_oak_fence": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:pale_oak_fence_gate": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "in_wall": [ + "false", + "true" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "in_wall": "false", + "open": "false", + "powered": "false" + }, + "stateCount": 32 + }, + "minecraft:pale_oak_hanging_sign": { + "properties": { + "attached": [ + "false", + "true" + ], + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "attached": "false", + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:pale_oak_leaves": { + "properties": { + "distance": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ], + "persistent": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "distance": "7", + "persistent": "false", + "waterlogged": "false" + }, + "stateCount": 28 + }, + "minecraft:pale_oak_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:pale_oak_planks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:pale_oak_pressure_plate": { + "properties": { + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:pale_oak_sapling": { + "properties": { + "stage": [ + "0", + "1" + ] + }, + "defaultProperties": { + "stage": "0" + }, + "stateCount": 2 + }, + "minecraft:pale_oak_shelf": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ], + "side_chain": [ + "center", + "left", + "right", + "unconnected" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false", + "side_chain": "unconnected", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:pale_oak_sign": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:pale_oak_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:pale_oak_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:pale_oak_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:pale_oak_wall_hanging_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:pale_oak_wall_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:pale_oak_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:pearlescent_froglight": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:peony": { + "properties": { + "half": [ + "lower", + "upper" + ] + }, + "defaultProperties": { + "half": "lower" + }, + "stateCount": 2 + }, + "minecraft:petrified_oak_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:piglin_head": { + "properties": { + "powered": [ + "false", + "true" + ], + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "powered": "false", + "rotation": "0" + }, + "stateCount": 32 + }, + "minecraft:piglin_wall_head": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false" + }, + "stateCount": 8 + }, + "minecraft:pink_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:pink_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:pink_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:pink_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:pink_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:pink_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:pink_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:pink_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:pink_petals": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "flower_amount": [ + "1", + "2", + "3", + "4" + ] + }, + "defaultProperties": { + "facing": "north", + "flower_amount": "1" + }, + "stateCount": 16 + }, + "minecraft:pink_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:pink_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:pink_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:pink_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:pink_tulip": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:pink_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:pink_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:piston": { + "properties": { + "extended": [ + "false", + "true" + ], + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "extended": "false", + "facing": "north" + }, + "stateCount": 12 + }, + "minecraft:piston_head": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ], + "short": [ + "false", + "true" + ], + "type": [ + "normal", + "sticky" + ] + }, + "defaultProperties": { + "facing": "north", + "short": "false", + "type": "normal" + }, + "stateCount": 24 + }, + "minecraft:pitcher_crop": { + "properties": { + "age": [ + "0", + "1", + "2", + "3", + "4" + ], + "half": [ + "lower", + "upper" + ] + }, + "defaultProperties": { + "age": "0", + "half": "lower" + }, + "stateCount": 10 + }, + "minecraft:pitcher_plant": { + "properties": { + "half": [ + "lower", + "upper" + ] + }, + "defaultProperties": { + "half": "lower" + }, + "stateCount": 2 + }, + "minecraft:player_head": { + "properties": { + "powered": [ + "false", + "true" + ], + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "powered": "false", + "rotation": "0" + }, + "stateCount": 32 + }, + "minecraft:player_wall_head": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false" + }, + "stateCount": 8 + }, + "minecraft:podzol": { + "properties": { + "snowy": [ + "false", + "true" + ] + }, + "defaultProperties": { + "snowy": "false" + }, + "stateCount": 2 + }, + "minecraft:pointed_dripstone": { + "properties": { + "thickness": [ + "base", + "frustum", + "middle", + "tip", + "tip_merge" + ], + "vertical_direction": [ + "down", + "up" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "thickness": "tip", + "vertical_direction": "up", + "waterlogged": "false" + }, + "stateCount": 20 + }, + "minecraft:polished_andesite": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:polished_andesite_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:polished_andesite_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:polished_basalt": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:polished_blackstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:polished_blackstone_brick_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:polished_blackstone_brick_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:polished_blackstone_brick_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:polished_blackstone_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:polished_blackstone_button": { + "properties": { + "face": [ + "ceiling", + "floor", + "wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:polished_blackstone_pressure_plate": { + "properties": { + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:polished_blackstone_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:polished_blackstone_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:polished_blackstone_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:polished_deepslate": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:polished_deepslate_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:polished_deepslate_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:polished_deepslate_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:polished_diorite": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:polished_diorite_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:polished_diorite_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:polished_granite": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:polished_granite_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:polished_granite_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:polished_tuff": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:polished_tuff_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:polished_tuff_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:polished_tuff_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:poppy": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potatoes": { + "properties": { + "age": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 8 + }, + "minecraft:potted_acacia_sapling": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_allium": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_azalea_bush": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_azure_bluet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_bamboo": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_birch_sapling": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_blue_orchid": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_brown_mushroom": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_cactus": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_cherry_sapling": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_closed_eyeblossom": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_cornflower": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_crimson_fungus": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_crimson_roots": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_dandelion": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_dark_oak_sapling": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_dead_bush": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_fern": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_flowering_azalea_bush": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_jungle_sapling": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_lily_of_the_valley": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_mangrove_propagule": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_oak_sapling": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_open_eyeblossom": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_orange_tulip": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_oxeye_daisy": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_pale_oak_sapling": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_pink_tulip": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_poppy": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_red_mushroom": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_red_tulip": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_spruce_sapling": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_torchflower": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_warped_fungus": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_warped_roots": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_white_tulip": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_wither_rose": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:powder_snow": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:powder_snow_cauldron": { + "properties": { + "level": [ + "1", + "2", + "3" + ] + }, + "defaultProperties": { + "level": "1" + }, + "stateCount": 3 + }, + "minecraft:powered_rail": { + "properties": { + "powered": [ + "false", + "true" + ], + "shape": [ + "ascending_east", + "ascending_north", + "ascending_south", + "ascending_west", + "east_west", + "north_south" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false", + "shape": "north_south", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:prismarine": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:prismarine_brick_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:prismarine_brick_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:prismarine_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:prismarine_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:prismarine_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:prismarine_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:pumpkin": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:pumpkin_stem": { + "properties": { + "age": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 8 + }, + "minecraft:purple_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:purple_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:purple_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:purple_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:purple_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:purple_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:purple_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:purple_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:purple_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:purple_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:purple_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:purple_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:purple_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:purple_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:purpur_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:purpur_pillar": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:purpur_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:purpur_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:quartz_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:quartz_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:quartz_pillar": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:quartz_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:quartz_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:rail": { + "properties": { + "shape": [ + "ascending_east", + "ascending_north", + "ascending_south", + "ascending_west", + "east_west", + "north_east", + "north_south", + "north_west", + "south_east", + "south_west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "shape": "north_south", + "waterlogged": "false" + }, + "stateCount": 20 + }, + "minecraft:raw_copper_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:raw_gold_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:raw_iron_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:red_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:red_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:red_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:red_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:red_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:red_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:red_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:red_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:red_mushroom": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:red_mushroom_block": { + "properties": { + "down": [ + "false", + "true" + ], + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "up": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "down": "true", + "east": "true", + "north": "true", + "south": "true", + "up": "true", + "west": "true" + }, + "stateCount": 64 + }, + "minecraft:red_nether_brick_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:red_nether_brick_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:red_nether_brick_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:red_nether_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:red_sand": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:red_sandstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:red_sandstone_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:red_sandstone_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:red_sandstone_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:red_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:red_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:red_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:red_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:red_tulip": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:red_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:red_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:redstone_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:redstone_lamp": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:redstone_ore": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:redstone_torch": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "true" + }, + "stateCount": 2 + }, + "minecraft:redstone_wall_torch": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "lit": "true" + }, + "stateCount": 8 + }, + "minecraft:redstone_wire": { + "properties": { + "east": [ + "none", + "side", + "up" + ], + "north": [ + "none", + "side", + "up" + ], + "power": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "south": [ + "none", + "side", + "up" + ], + "west": [ + "none", + "side", + "up" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "power": "0", + "south": "none", + "west": "none" + }, + "stateCount": 1296 + }, + "minecraft:reinforced_deepslate": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:repeater": { + "properties": { + "delay": [ + "1", + "2", + "3", + "4" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "locked": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "delay": "1", + "facing": "north", + "locked": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:repeating_command_block": { + "properties": { + "conditional": [ + "false", + "true" + ], + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "conditional": "false", + "facing": "north" + }, + "stateCount": 12 + }, + "minecraft:resin_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:resin_brick_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:resin_brick_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:resin_brick_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:resin_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:resin_clump": { + "properties": { + "down": [ + "false", + "true" + ], + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "down": "false", + "east": "false", + "north": "false", + "south": "false", + "up": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 128 + }, + "minecraft:respawn_anchor": { + "properties": { + "charges": [ + "0", + "1", + "2", + "3", + "4" + ] + }, + "defaultProperties": { + "charges": "0" + }, + "stateCount": 5 + }, + "minecraft:rooted_dirt": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:rose_bush": { + "properties": { + "half": [ + "lower", + "upper" + ] + }, + "defaultProperties": { + "half": "lower" + }, + "stateCount": 2 + }, + "minecraft:sand": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:sandstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:sandstone_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:sandstone_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:sandstone_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:scaffolding": { + "properties": { + "bottom": [ + "false", + "true" + ], + "distance": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "bottom": "false", + "distance": "7", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:sculk": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:sculk_catalyst": { + "properties": { + "bloom": [ + "false", + "true" + ] + }, + "defaultProperties": { + "bloom": "false" + }, + "stateCount": 2 + }, + "minecraft:sculk_sensor": { + "properties": { + "power": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "sculk_sensor_phase": [ + "active", + "cooldown", + "inactive" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "power": "0", + "sculk_sensor_phase": "inactive", + "waterlogged": "false" + }, + "stateCount": 96 + }, + "minecraft:sculk_shrieker": { + "properties": { + "can_summon": [ + "false", + "true" + ], + "shrieking": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "can_summon": "false", + "shrieking": "false", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:sculk_vein": { + "properties": { + "down": [ + "false", + "true" + ], + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "down": "false", + "east": "false", + "north": "false", + "south": "false", + "up": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 128 + }, + "minecraft:sea_lantern": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:sea_pickle": { + "properties": { + "pickles": [ + "1", + "2", + "3", + "4" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "pickles": "1", + "waterlogged": "true" + }, + "stateCount": 8 + }, + "minecraft:seagrass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:short_dry_grass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:short_grass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:shroomlight": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:skeleton_skull": { + "properties": { + "powered": [ + "false", + "true" + ], + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "powered": "false", + "rotation": "0" + }, + "stateCount": 32 + }, + "minecraft:skeleton_wall_skull": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false" + }, + "stateCount": 8 + }, + "minecraft:slime_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:small_amethyst_bud": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "up", + "waterlogged": "false" + }, + "stateCount": 12 + }, + "minecraft:small_dripleaf": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:smithing_table": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:smoker": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "lit": "false" + }, + "stateCount": 8 + }, + "minecraft:smooth_basalt": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:smooth_quartz": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:smooth_quartz_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:smooth_quartz_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:smooth_red_sandstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:smooth_red_sandstone_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:smooth_red_sandstone_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:smooth_sandstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:smooth_sandstone_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:smooth_sandstone_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:smooth_stone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:smooth_stone_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:sniffer_egg": { + "properties": { + "hatch": [ + "0", + "1", + "2" + ] + }, + "defaultProperties": { + "hatch": "0" + }, + "stateCount": 3 + }, + "minecraft:snow": { + "properties": { + "layers": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8" + ] + }, + "defaultProperties": { + "layers": "1" + }, + "stateCount": 8 + }, + "minecraft:snow_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:soul_campfire": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "lit": [ + "false", + "true" + ], + "signal_fire": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "lit": "true", + "signal_fire": "false", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:soul_fire": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:soul_lantern": { + "properties": { + "hanging": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "hanging": "false", + "waterlogged": "false" + }, + "stateCount": 4 + }, + "minecraft:soul_sand": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:soul_soil": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:soul_torch": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:soul_wall_torch": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:spawner": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:sponge": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:spore_blossom": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:spruce_button": { + "properties": { + "face": [ + "ceiling", + "floor", + "wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:spruce_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:spruce_fence": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:spruce_fence_gate": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "in_wall": [ + "false", + "true" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "in_wall": "false", + "open": "false", + "powered": "false" + }, + "stateCount": 32 + }, + "minecraft:spruce_hanging_sign": { + "properties": { + "attached": [ + "false", + "true" + ], + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "attached": "false", + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:spruce_leaves": { + "properties": { + "distance": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ], + "persistent": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "distance": "7", + "persistent": "false", + "waterlogged": "false" + }, + "stateCount": 28 + }, + "minecraft:spruce_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:spruce_planks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:spruce_pressure_plate": { + "properties": { + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:spruce_sapling": { + "properties": { + "stage": [ + "0", + "1" + ] + }, + "defaultProperties": { + "stage": "0" + }, + "stateCount": 2 + }, + "minecraft:spruce_shelf": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ], + "side_chain": [ + "center", + "left", + "right", + "unconnected" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false", + "side_chain": "unconnected", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:spruce_sign": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:spruce_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:spruce_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:spruce_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:spruce_wall_hanging_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:spruce_wall_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:spruce_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:sticky_piston": { + "properties": { + "extended": [ + "false", + "true" + ], + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "extended": "false", + "facing": "north" + }, + "stateCount": 12 + }, + "minecraft:stone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:stone_brick_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:stone_brick_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:stone_brick_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:stone_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:stone_button": { + "properties": { + "face": [ + "ceiling", + "floor", + "wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:stone_pressure_plate": { + "properties": { + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:stone_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:stone_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:stonecutter": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:stripped_acacia_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_acacia_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_bamboo_block": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_birch_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_birch_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_cherry_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_cherry_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_crimson_hyphae": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_crimson_stem": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_dark_oak_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_dark_oak_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_jungle_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_jungle_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_mangrove_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_mangrove_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_oak_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_oak_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_pale_oak_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_pale_oak_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_spruce_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_spruce_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_warped_hyphae": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_warped_stem": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:structure_block": { + "properties": { + "mode": [ + "corner", + "data", + "load", + "save" + ] + }, + "defaultProperties": { + "mode": "load" + }, + "stateCount": 4 + }, + "minecraft:structure_void": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:sugar_cane": { + "properties": { + "age": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 16 + }, + "minecraft:sunflower": { + "properties": { + "half": [ + "lower", + "upper" + ] + }, + "defaultProperties": { + "half": "lower" + }, + "stateCount": 2 + }, + "minecraft:suspicious_gravel": { + "properties": { + "dusted": [ + "0", + "1", + "2", + "3" + ] + }, + "defaultProperties": { + "dusted": "0" + }, + "stateCount": 4 + }, + "minecraft:suspicious_sand": { + "properties": { + "dusted": [ + "0", + "1", + "2", + "3" + ] + }, + "defaultProperties": { + "dusted": "0" + }, + "stateCount": 4 + }, + "minecraft:sweet_berry_bush": { + "properties": { + "age": [ + "0", + "1", + "2", + "3" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 4 + }, + "minecraft:tall_dry_grass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:tall_grass": { + "properties": { + "half": [ + "lower", + "upper" + ] + }, + "defaultProperties": { + "half": "lower" + }, + "stateCount": 2 + }, + "minecraft:tall_seagrass": { + "properties": { + "half": [ + "lower", + "upper" + ] + }, + "defaultProperties": { + "half": "lower" + }, + "stateCount": 2 + }, + "minecraft:target": { + "properties": { + "power": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "power": "0" + }, + "stateCount": 16 + }, + "minecraft:terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:test_block": { + "properties": { + "mode": [ + "accept", + "fail", + "log", + "start" + ] + }, + "defaultProperties": { + "mode": "start" + }, + "stateCount": 4 + }, + "minecraft:test_instance_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:tinted_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:tnt": { + "properties": { + "unstable": [ + "false", + "true" + ] + }, + "defaultProperties": { + "unstable": "false" + }, + "stateCount": 2 + }, + "minecraft:torch": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:torchflower": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:torchflower_crop": { + "properties": { + "age": [ + "0", + "1" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 2 + }, + "minecraft:trapped_chest": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "type": [ + "left", + "right", + "single" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "type": "single", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:trial_spawner": { + "properties": { + "ominous": [ + "false", + "true" + ], + "trial_spawner_state": [ + "active", + "cooldown", + "ejecting_reward", + "inactive", + "waiting_for_players", + "waiting_for_reward_ejection" + ] + }, + "defaultProperties": { + "ominous": "false", + "trial_spawner_state": "inactive" + }, + "stateCount": 12 + }, + "minecraft:tripwire": { + "properties": { + "attached": [ + "false", + "true" + ], + "disarmed": [ + "false", + "true" + ], + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "attached": "false", + "disarmed": "false", + "east": "false", + "north": "false", + "powered": "false", + "south": "false", + "west": "false" + }, + "stateCount": 128 + }, + "minecraft:tripwire_hook": { + "properties": { + "attached": [ + "false", + "true" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "attached": "false", + "facing": "north", + "powered": "false" + }, + "stateCount": 16 + }, + "minecraft:tube_coral": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:tube_coral_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:tube_coral_fan": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:tube_coral_wall_fan": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "true" + }, + "stateCount": 8 + }, + "minecraft:tuff": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:tuff_brick_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:tuff_brick_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:tuff_brick_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:tuff_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:tuff_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:tuff_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:tuff_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:turtle_egg": { + "properties": { + "eggs": [ + "1", + "2", + "3", + "4" + ], + "hatch": [ + "0", + "1", + "2" + ] + }, + "defaultProperties": { + "eggs": "1", + "hatch": "0" + }, + "stateCount": 12 + }, + "minecraft:twisting_vines": { + "properties": { + "age": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "16", + "17", + "18", + "19", + "2", + "20", + "21", + "22", + "23", + "24", + "25", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 26 + }, + "minecraft:twisting_vines_plant": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:vault": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "ominous": [ + "false", + "true" + ], + "vault_state": [ + "active", + "ejecting", + "inactive", + "unlocking" + ] + }, + "defaultProperties": { + "facing": "north", + "ominous": "false", + "vault_state": "inactive" + }, + "stateCount": 32 + }, + "minecraft:verdant_froglight": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:vine": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "up": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "up": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:void_air": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:wall_torch": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:warped_button": { + "properties": { + "face": [ + "ceiling", + "floor", + "wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:warped_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:warped_fence": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:warped_fence_gate": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "in_wall": [ + "false", + "true" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "in_wall": "false", + "open": "false", + "powered": "false" + }, + "stateCount": 32 + }, + "minecraft:warped_fungus": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:warped_hanging_sign": { + "properties": { + "attached": [ + "false", + "true" + ], + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "attached": "false", + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:warped_hyphae": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:warped_nylium": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:warped_planks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:warped_pressure_plate": { + "properties": { + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:warped_roots": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:warped_shelf": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ], + "side_chain": [ + "center", + "left", + "right", + "unconnected" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false", + "side_chain": "unconnected", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:warped_sign": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:warped_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:warped_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:warped_stem": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:warped_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:warped_wall_hanging_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:warped_wall_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:warped_wart_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:water": { + "properties": { + "level": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "level": "0" + }, + "stateCount": 16 + }, + "minecraft:water_cauldron": { + "properties": { + "level": [ + "1", + "2", + "3" + ] + }, + "defaultProperties": { + "level": "1" + }, + "stateCount": 3 + }, + "minecraft:waxed_chiseled_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:waxed_copper_bars": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:waxed_copper_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:waxed_copper_bulb": { + "properties": { + "lit": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false", + "powered": "false" + }, + "stateCount": 4 + }, + "minecraft:waxed_copper_chain": { + "properties": { + "axis": [ + "x", + "y", + "z" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "axis": "y", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:waxed_copper_chest": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "type": [ + "left", + "right", + "single" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "type": "single", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:waxed_copper_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:waxed_copper_golem_statue": { + "properties": { + "copper_golem_pose": [ + "running", + "sitting", + "standing", + "star" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "copper_golem_pose": "standing", + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:waxed_copper_grate": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "false" + }, + "stateCount": 2 + }, + "minecraft:waxed_copper_lantern": { + "properties": { + "hanging": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "hanging": "false", + "waterlogged": "false" + }, + "stateCount": 4 + }, + "minecraft:waxed_copper_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:waxed_cut_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:waxed_cut_copper_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:waxed_cut_copper_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:waxed_exposed_chiseled_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:waxed_exposed_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:waxed_exposed_copper_bars": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:waxed_exposed_copper_bulb": { + "properties": { + "lit": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false", + "powered": "false" + }, + "stateCount": 4 + }, + "minecraft:waxed_exposed_copper_chain": { + "properties": { + "axis": [ + "x", + "y", + "z" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "axis": "y", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:waxed_exposed_copper_chest": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "type": [ + "left", + "right", + "single" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "type": "single", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:waxed_exposed_copper_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:waxed_exposed_copper_golem_statue": { + "properties": { + "copper_golem_pose": [ + "running", + "sitting", + "standing", + "star" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "copper_golem_pose": "standing", + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:waxed_exposed_copper_grate": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "false" + }, + "stateCount": 2 + }, + "minecraft:waxed_exposed_copper_lantern": { + "properties": { + "hanging": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "hanging": "false", + "waterlogged": "false" + }, + "stateCount": 4 + }, + "minecraft:waxed_exposed_copper_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:waxed_exposed_cut_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:waxed_exposed_cut_copper_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:waxed_exposed_cut_copper_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:waxed_exposed_lightning_rod": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "up", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:waxed_lightning_rod": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "up", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:waxed_oxidized_chiseled_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:waxed_oxidized_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:waxed_oxidized_copper_bars": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:waxed_oxidized_copper_bulb": { + "properties": { + "lit": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false", + "powered": "false" + }, + "stateCount": 4 + }, + "minecraft:waxed_oxidized_copper_chain": { + "properties": { + "axis": [ + "x", + "y", + "z" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "axis": "y", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:waxed_oxidized_copper_chest": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "type": [ + "left", + "right", + "single" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "type": "single", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:waxed_oxidized_copper_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:waxed_oxidized_copper_golem_statue": { + "properties": { + "copper_golem_pose": [ + "running", + "sitting", + "standing", + "star" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "copper_golem_pose": "standing", + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:waxed_oxidized_copper_grate": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "false" + }, + "stateCount": 2 + }, + "minecraft:waxed_oxidized_copper_lantern": { + "properties": { + "hanging": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "hanging": "false", + "waterlogged": "false" + }, + "stateCount": 4 + }, + "minecraft:waxed_oxidized_copper_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:waxed_oxidized_cut_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:waxed_oxidized_cut_copper_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:waxed_oxidized_cut_copper_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:waxed_oxidized_lightning_rod": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "up", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:waxed_weathered_chiseled_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:waxed_weathered_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:waxed_weathered_copper_bars": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:waxed_weathered_copper_bulb": { + "properties": { + "lit": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false", + "powered": "false" + }, + "stateCount": 4 + }, + "minecraft:waxed_weathered_copper_chain": { + "properties": { + "axis": [ + "x", + "y", + "z" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "axis": "y", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:waxed_weathered_copper_chest": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "type": [ + "left", + "right", + "single" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "type": "single", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:waxed_weathered_copper_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:waxed_weathered_copper_golem_statue": { + "properties": { + "copper_golem_pose": [ + "running", + "sitting", + "standing", + "star" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "copper_golem_pose": "standing", + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:waxed_weathered_copper_grate": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "false" + }, + "stateCount": 2 + }, + "minecraft:waxed_weathered_copper_lantern": { + "properties": { + "hanging": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "hanging": "false", + "waterlogged": "false" + }, + "stateCount": 4 + }, + "minecraft:waxed_weathered_copper_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:waxed_weathered_cut_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:waxed_weathered_cut_copper_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:waxed_weathered_cut_copper_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:waxed_weathered_lightning_rod": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "up", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:weathered_chiseled_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:weathered_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:weathered_copper_bars": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:weathered_copper_bulb": { + "properties": { + "lit": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false", + "powered": "false" + }, + "stateCount": 4 + }, + "minecraft:weathered_copper_chain": { + "properties": { + "axis": [ + "x", + "y", + "z" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "axis": "y", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:weathered_copper_chest": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "type": [ + "left", + "right", + "single" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "type": "single", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:weathered_copper_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:weathered_copper_golem_statue": { + "properties": { + "copper_golem_pose": [ + "running", + "sitting", + "standing", + "star" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "copper_golem_pose": "standing", + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:weathered_copper_grate": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "false" + }, + "stateCount": 2 + }, + "minecraft:weathered_copper_lantern": { + "properties": { + "hanging": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "hanging": "false", + "waterlogged": "false" + }, + "stateCount": 4 + }, + "minecraft:weathered_copper_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:weathered_cut_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:weathered_cut_copper_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:weathered_cut_copper_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:weathered_lightning_rod": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "up", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:weeping_vines": { + "properties": { + "age": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "16", + "17", + "18", + "19", + "2", + "20", + "21", + "22", + "23", + "24", + "25", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 26 + }, + "minecraft:weeping_vines_plant": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:wet_sponge": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:wheat": { + "properties": { + "age": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 8 + }, + "minecraft:white_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:white_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:white_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:white_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:white_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:white_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:white_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:white_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:white_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:white_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:white_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:white_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:white_tulip": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:white_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:white_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:wildflowers": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "flower_amount": [ + "1", + "2", + "3", + "4" + ] + }, + "defaultProperties": { + "facing": "north", + "flower_amount": "1" + }, + "stateCount": 16 + }, + "minecraft:wither_rose": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:wither_skeleton_skull": { + "properties": { + "powered": [ + "false", + "true" + ], + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "powered": "false", + "rotation": "0" + }, + "stateCount": 32 + }, + "minecraft:wither_skeleton_wall_skull": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false" + }, + "stateCount": 8 + }, + "minecraft:yellow_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:yellow_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:yellow_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:yellow_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:yellow_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:yellow_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:yellow_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:yellow_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:yellow_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:yellow_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:yellow_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:yellow_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:yellow_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:yellow_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:zombie_head": { + "properties": { + "powered": [ + "false", + "true" + ], + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "powered": "false", + "rotation": "0" + }, + "stateCount": 32 + }, + "minecraft:zombie_wall_head": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false" + }, + "stateCount": 8 + } + } +} \ No newline at end of file diff --git a/src/main/resources/mapping/block_states/java_1_21_9.json b/src/main/resources/mapping/block_states/java_1_21_9.json new file mode 100644 index 00000000..8abeed93 --- /dev/null +++ b/src/main/resources/mapping/block_states/java_1_21_9.json @@ -0,0 +1,19776 @@ +{ + "version": "1.21.9", + "dataVersion": 4554, + "source": "Mojang server reports/blocks.json generated from 1.21.9 server.jar", + "blocks": { + "minecraft:acacia_button": { + "properties": { + "face": [ + "floor", + "wall", + "ceiling" + ], + "facing": [ + "north", + "south", + "west", + "east" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:acacia_door": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "upper", + "lower" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:acacia_fence": { + "properties": { + "east": [ + "true", + "false" + ], + "north": [ + "true", + "false" + ], + "south": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "true", + "false" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:acacia_fence_gate": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "in_wall": [ + "true", + "false" + ], + "open": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "in_wall": "false", + "open": "false", + "powered": "false" + }, + "stateCount": 32 + }, + "minecraft:acacia_hanging_sign": { + "properties": { + "attached": [ + "true", + "false" + ], + "rotation": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "attached": "false", + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:acacia_leaves": { + "properties": { + "distance": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ], + "persistent": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "distance": "7", + "persistent": "false", + "waterlogged": "false" + }, + "stateCount": 28 + }, + "minecraft:acacia_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:acacia_planks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:acacia_pressure_plate": { + "properties": { + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:acacia_sapling": { + "properties": { + "stage": [ + "0", + "1" + ] + }, + "defaultProperties": { + "stage": "0" + }, + "stateCount": 2 + }, + "minecraft:acacia_shelf": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "powered": [ + "true", + "false" + ], + "side_chain": [ + "unconnected", + "right", + "center", + "left" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false", + "side_chain": "unconnected", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:acacia_sign": { + "properties": { + "rotation": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:acacia_slab": { + "properties": { + "type": [ + "top", + "bottom", + "double" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:acacia_stairs": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "shape": [ + "straight", + "inner_left", + "inner_right", + "outer_left", + "outer_right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:acacia_trapdoor": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "open": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:acacia_wall_hanging_sign": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:acacia_wall_sign": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:acacia_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:activator_rail": { + "properties": { + "powered": [ + "true", + "false" + ], + "shape": [ + "north_south", + "east_west", + "ascending_east", + "ascending_west", + "ascending_north", + "ascending_south" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "powered": "false", + "shape": "north_south", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:air": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:allium": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:amethyst_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:amethyst_cluster": { + "properties": { + "facing": [ + "north", + "east", + "south", + "west", + "up", + "down" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "up", + "waterlogged": "false" + }, + "stateCount": 12 + }, + "minecraft:ancient_debris": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:andesite": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:andesite_slab": { + "properties": { + "type": [ + "top", + "bottom", + "double" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:andesite_stairs": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "shape": [ + "straight", + "inner_left", + "inner_right", + "outer_left", + "outer_right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:andesite_wall": { + "properties": { + "east": [ + "none", + "low", + "tall" + ], + "north": [ + "none", + "low", + "tall" + ], + "south": [ + "none", + "low", + "tall" + ], + "up": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "none", + "low", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:anvil": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:attached_melon_stem": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:attached_pumpkin_stem": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:azalea": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:azalea_leaves": { + "properties": { + "distance": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ], + "persistent": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "distance": "7", + "persistent": "false", + "waterlogged": "false" + }, + "stateCount": 28 + }, + "minecraft:azure_bluet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:bamboo": { + "properties": { + "age": [ + "0", + "1" + ], + "leaves": [ + "none", + "small", + "large" + ], + "stage": [ + "0", + "1" + ] + }, + "defaultProperties": { + "age": "0", + "leaves": "none", + "stage": "0" + }, + "stateCount": 12 + }, + "minecraft:bamboo_block": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:bamboo_button": { + "properties": { + "face": [ + "floor", + "wall", + "ceiling" + ], + "facing": [ + "north", + "south", + "west", + "east" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:bamboo_door": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "upper", + "lower" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:bamboo_fence": { + "properties": { + "east": [ + "true", + "false" + ], + "north": [ + "true", + "false" + ], + "south": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "true", + "false" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:bamboo_fence_gate": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "in_wall": [ + "true", + "false" + ], + "open": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "in_wall": "false", + "open": "false", + "powered": "false" + }, + "stateCount": 32 + }, + "minecraft:bamboo_hanging_sign": { + "properties": { + "attached": [ + "true", + "false" + ], + "rotation": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "attached": "false", + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:bamboo_mosaic": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:bamboo_mosaic_slab": { + "properties": { + "type": [ + "top", + "bottom", + "double" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:bamboo_mosaic_stairs": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "shape": [ + "straight", + "inner_left", + "inner_right", + "outer_left", + "outer_right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:bamboo_planks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:bamboo_pressure_plate": { + "properties": { + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:bamboo_sapling": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:bamboo_shelf": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "powered": [ + "true", + "false" + ], + "side_chain": [ + "unconnected", + "right", + "center", + "left" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false", + "side_chain": "unconnected", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:bamboo_sign": { + "properties": { + "rotation": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:bamboo_slab": { + "properties": { + "type": [ + "top", + "bottom", + "double" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:bamboo_stairs": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "shape": [ + "straight", + "inner_left", + "inner_right", + "outer_left", + "outer_right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:bamboo_trapdoor": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "open": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:bamboo_wall_hanging_sign": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:bamboo_wall_sign": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:barrel": { + "properties": { + "facing": [ + "north", + "east", + "south", + "west", + "up", + "down" + ], + "open": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "open": "false" + }, + "stateCount": 12 + }, + "minecraft:barrier": { + "properties": { + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "waterlogged": "false" + }, + "stateCount": 2 + }, + "minecraft:basalt": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:beacon": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:bedrock": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:bee_nest": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "honey_level": [ + "0", + "1", + "2", + "3", + "4", + "5" + ] + }, + "defaultProperties": { + "facing": "north", + "honey_level": "0" + }, + "stateCount": 24 + }, + "minecraft:beehive": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "honey_level": [ + "0", + "1", + "2", + "3", + "4", + "5" + ] + }, + "defaultProperties": { + "facing": "north", + "honey_level": "0" + }, + "stateCount": 24 + }, + "minecraft:beetroots": { + "properties": { + "age": [ + "0", + "1", + "2", + "3" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 4 + }, + "minecraft:bell": { + "properties": { + "attachment": [ + "floor", + "ceiling", + "single_wall", + "double_wall" + ], + "facing": [ + "north", + "south", + "west", + "east" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "attachment": "floor", + "facing": "north", + "powered": "false" + }, + "stateCount": 32 + }, + "minecraft:big_dripleaf": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "tilt": [ + "none", + "unstable", + "partial", + "full" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "tilt": "none", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:big_dripleaf_stem": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:birch_button": { + "properties": { + "face": [ + "floor", + "wall", + "ceiling" + ], + "facing": [ + "north", + "south", + "west", + "east" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:birch_door": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "upper", + "lower" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:birch_fence": { + "properties": { + "east": [ + "true", + "false" + ], + "north": [ + "true", + "false" + ], + "south": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "true", + "false" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:birch_fence_gate": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "in_wall": [ + "true", + "false" + ], + "open": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "in_wall": "false", + "open": "false", + "powered": "false" + }, + "stateCount": 32 + }, + "minecraft:birch_hanging_sign": { + "properties": { + "attached": [ + "true", + "false" + ], + "rotation": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "attached": "false", + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:birch_leaves": { + "properties": { + "distance": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ], + "persistent": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "distance": "7", + "persistent": "false", + "waterlogged": "false" + }, + "stateCount": 28 + }, + "minecraft:birch_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:birch_planks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:birch_pressure_plate": { + "properties": { + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:birch_sapling": { + "properties": { + "stage": [ + "0", + "1" + ] + }, + "defaultProperties": { + "stage": "0" + }, + "stateCount": 2 + }, + "minecraft:birch_shelf": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "powered": [ + "true", + "false" + ], + "side_chain": [ + "unconnected", + "right", + "center", + "left" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false", + "side_chain": "unconnected", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:birch_sign": { + "properties": { + "rotation": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:birch_slab": { + "properties": { + "type": [ + "top", + "bottom", + "double" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:birch_stairs": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "shape": [ + "straight", + "inner_left", + "inner_right", + "outer_left", + "outer_right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:birch_trapdoor": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "open": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:birch_wall_hanging_sign": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:birch_wall_sign": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:birch_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:black_banner": { + "properties": { + "rotation": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:black_bed": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "occupied": [ + "true", + "false" + ], + "part": [ + "head", + "foot" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:black_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:black_candle_cake": { + "properties": { + "lit": [ + "true", + "false" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:black_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:black_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:black_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:black_glazed_terracotta": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:black_shulker_box": { + "properties": { + "facing": [ + "north", + "east", + "south", + "west", + "up", + "down" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:black_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:black_stained_glass_pane": { + "properties": { + "east": [ + "true", + "false" + ], + "north": [ + "true", + "false" + ], + "south": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "true", + "false" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:black_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:black_wall_banner": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:black_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:blackstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:blackstone_slab": { + "properties": { + "type": [ + "top", + "bottom", + "double" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:blackstone_stairs": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "shape": [ + "straight", + "inner_left", + "inner_right", + "outer_left", + "outer_right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:blackstone_wall": { + "properties": { + "east": [ + "none", + "low", + "tall" + ], + "north": [ + "none", + "low", + "tall" + ], + "south": [ + "none", + "low", + "tall" + ], + "up": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "none", + "low", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:blast_furnace": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "lit": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "lit": "false" + }, + "stateCount": 8 + }, + "minecraft:blue_banner": { + "properties": { + "rotation": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:blue_bed": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "occupied": [ + "true", + "false" + ], + "part": [ + "head", + "foot" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:blue_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:blue_candle_cake": { + "properties": { + "lit": [ + "true", + "false" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:blue_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:blue_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:blue_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:blue_glazed_terracotta": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:blue_ice": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:blue_orchid": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:blue_shulker_box": { + "properties": { + "facing": [ + "north", + "east", + "south", + "west", + "up", + "down" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:blue_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:blue_stained_glass_pane": { + "properties": { + "east": [ + "true", + "false" + ], + "north": [ + "true", + "false" + ], + "south": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "true", + "false" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:blue_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:blue_wall_banner": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:blue_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:bone_block": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:bookshelf": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:brain_coral": { + "properties": { + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:brain_coral_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:brain_coral_fan": { + "properties": { + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:brain_coral_wall_fan": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "true" + }, + "stateCount": 8 + }, + "minecraft:brewing_stand": { + "properties": { + "has_bottle_0": [ + "true", + "false" + ], + "has_bottle_1": [ + "true", + "false" + ], + "has_bottle_2": [ + "true", + "false" + ] + }, + "defaultProperties": { + "has_bottle_0": "false", + "has_bottle_1": "false", + "has_bottle_2": "false" + }, + "stateCount": 8 + }, + "minecraft:brick_slab": { + "properties": { + "type": [ + "top", + "bottom", + "double" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:brick_stairs": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "shape": [ + "straight", + "inner_left", + "inner_right", + "outer_left", + "outer_right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:brick_wall": { + "properties": { + "east": [ + "none", + "low", + "tall" + ], + "north": [ + "none", + "low", + "tall" + ], + "south": [ + "none", + "low", + "tall" + ], + "up": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "none", + "low", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:brown_banner": { + "properties": { + "rotation": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:brown_bed": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "occupied": [ + "true", + "false" + ], + "part": [ + "head", + "foot" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:brown_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:brown_candle_cake": { + "properties": { + "lit": [ + "true", + "false" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:brown_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:brown_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:brown_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:brown_glazed_terracotta": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:brown_mushroom": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:brown_mushroom_block": { + "properties": { + "down": [ + "true", + "false" + ], + "east": [ + "true", + "false" + ], + "north": [ + "true", + "false" + ], + "south": [ + "true", + "false" + ], + "up": [ + "true", + "false" + ], + "west": [ + "true", + "false" + ] + }, + "defaultProperties": { + "down": "true", + "east": "true", + "north": "true", + "south": "true", + "up": "true", + "west": "true" + }, + "stateCount": 64 + }, + "minecraft:brown_shulker_box": { + "properties": { + "facing": [ + "north", + "east", + "south", + "west", + "up", + "down" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:brown_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:brown_stained_glass_pane": { + "properties": { + "east": [ + "true", + "false" + ], + "north": [ + "true", + "false" + ], + "south": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "true", + "false" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:brown_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:brown_wall_banner": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:brown_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:bubble_column": { + "properties": { + "drag": [ + "true", + "false" + ] + }, + "defaultProperties": { + "drag": "true" + }, + "stateCount": 2 + }, + "minecraft:bubble_coral": { + "properties": { + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:bubble_coral_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:bubble_coral_fan": { + "properties": { + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:bubble_coral_wall_fan": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "true" + }, + "stateCount": 8 + }, + "minecraft:budding_amethyst": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:bush": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cactus": { + "properties": { + "age": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 16 + }, + "minecraft:cactus_flower": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cake": { + "properties": { + "bites": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6" + ] + }, + "defaultProperties": { + "bites": "0" + }, + "stateCount": 7 + }, + "minecraft:calcite": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:calibrated_sculk_sensor": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "power": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15" + ], + "sculk_sensor_phase": [ + "inactive", + "active", + "cooldown" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "power": "0", + "sculk_sensor_phase": "inactive", + "waterlogged": "false" + }, + "stateCount": 384 + }, + "minecraft:campfire": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "lit": [ + "true", + "false" + ], + "signal_fire": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "lit": "true", + "signal_fire": "false", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:candle_cake": { + "properties": { + "lit": [ + "true", + "false" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:carrots": { + "properties": { + "age": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 8 + }, + "minecraft:cartography_table": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:carved_pumpkin": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:cauldron": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cave_air": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cave_vines": { + "properties": { + "age": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15", + "16", + "17", + "18", + "19", + "20", + "21", + "22", + "23", + "24", + "25" + ], + "berries": [ + "true", + "false" + ] + }, + "defaultProperties": { + "age": "0", + "berries": "false" + }, + "stateCount": 52 + }, + "minecraft:cave_vines_plant": { + "properties": { + "berries": [ + "true", + "false" + ] + }, + "defaultProperties": { + "berries": "false" + }, + "stateCount": 2 + }, + "minecraft:chain_command_block": { + "properties": { + "conditional": [ + "true", + "false" + ], + "facing": [ + "north", + "east", + "south", + "west", + "up", + "down" + ] + }, + "defaultProperties": { + "conditional": "false", + "facing": "north" + }, + "stateCount": 12 + }, + "minecraft:cherry_button": { + "properties": { + "face": [ + "floor", + "wall", + "ceiling" + ], + "facing": [ + "north", + "south", + "west", + "east" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:cherry_door": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "upper", + "lower" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:cherry_fence": { + "properties": { + "east": [ + "true", + "false" + ], + "north": [ + "true", + "false" + ], + "south": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "true", + "false" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:cherry_fence_gate": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "in_wall": [ + "true", + "false" + ], + "open": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "in_wall": "false", + "open": "false", + "powered": "false" + }, + "stateCount": 32 + }, + "minecraft:cherry_hanging_sign": { + "properties": { + "attached": [ + "true", + "false" + ], + "rotation": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "attached": "false", + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:cherry_leaves": { + "properties": { + "distance": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ], + "persistent": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "distance": "7", + "persistent": "false", + "waterlogged": "false" + }, + "stateCount": 28 + }, + "minecraft:cherry_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:cherry_planks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cherry_pressure_plate": { + "properties": { + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:cherry_sapling": { + "properties": { + "stage": [ + "0", + "1" + ] + }, + "defaultProperties": { + "stage": "0" + }, + "stateCount": 2 + }, + "minecraft:cherry_shelf": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "powered": [ + "true", + "false" + ], + "side_chain": [ + "unconnected", + "right", + "center", + "left" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false", + "side_chain": "unconnected", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:cherry_sign": { + "properties": { + "rotation": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:cherry_slab": { + "properties": { + "type": [ + "top", + "bottom", + "double" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:cherry_stairs": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "shape": [ + "straight", + "inner_left", + "inner_right", + "outer_left", + "outer_right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:cherry_trapdoor": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "open": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:cherry_wall_hanging_sign": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:cherry_wall_sign": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:cherry_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:chest": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "type": [ + "single", + "left", + "right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "type": "single", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:chipped_anvil": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:chiseled_bookshelf": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "slot_0_occupied": [ + "true", + "false" + ], + "slot_1_occupied": [ + "true", + "false" + ], + "slot_2_occupied": [ + "true", + "false" + ], + "slot_3_occupied": [ + "true", + "false" + ], + "slot_4_occupied": [ + "true", + "false" + ], + "slot_5_occupied": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "slot_0_occupied": "false", + "slot_1_occupied": "false", + "slot_2_occupied": "false", + "slot_3_occupied": "false", + "slot_4_occupied": "false", + "slot_5_occupied": "false" + }, + "stateCount": 256 + }, + "minecraft:chiseled_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:chiseled_deepslate": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:chiseled_nether_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:chiseled_polished_blackstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:chiseled_quartz_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:chiseled_red_sandstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:chiseled_resin_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:chiseled_sandstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:chiseled_stone_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:chiseled_tuff": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:chiseled_tuff_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:chorus_flower": { + "properties": { + "age": [ + "0", + "1", + "2", + "3", + "4", + "5" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 6 + }, + "minecraft:chorus_plant": { + "properties": { + "down": [ + "true", + "false" + ], + "east": [ + "true", + "false" + ], + "north": [ + "true", + "false" + ], + "south": [ + "true", + "false" + ], + "up": [ + "true", + "false" + ], + "west": [ + "true", + "false" + ] + }, + "defaultProperties": { + "down": "false", + "east": "false", + "north": "false", + "south": "false", + "up": "false", + "west": "false" + }, + "stateCount": 64 + }, + "minecraft:clay": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:closed_eyeblossom": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:coal_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:coal_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:coarse_dirt": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cobbled_deepslate": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cobbled_deepslate_slab": { + "properties": { + "type": [ + "top", + "bottom", + "double" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:cobbled_deepslate_stairs": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "shape": [ + "straight", + "inner_left", + "inner_right", + "outer_left", + "outer_right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:cobbled_deepslate_wall": { + "properties": { + "east": [ + "none", + "low", + "tall" + ], + "north": [ + "none", + "low", + "tall" + ], + "south": [ + "none", + "low", + "tall" + ], + "up": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "none", + "low", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:cobblestone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cobblestone_slab": { + "properties": { + "type": [ + "top", + "bottom", + "double" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:cobblestone_stairs": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "shape": [ + "straight", + "inner_left", + "inner_right", + "outer_left", + "outer_right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:cobblestone_wall": { + "properties": { + "east": [ + "none", + "low", + "tall" + ], + "north": [ + "none", + "low", + "tall" + ], + "south": [ + "none", + "low", + "tall" + ], + "up": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "none", + "low", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:cobweb": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cocoa": { + "properties": { + "age": [ + "0", + "1", + "2" + ], + "facing": [ + "north", + "south", + "west", + "east" + ] + }, + "defaultProperties": { + "age": "0", + "facing": "north" + }, + "stateCount": 12 + }, + "minecraft:command_block": { + "properties": { + "conditional": [ + "true", + "false" + ], + "facing": [ + "north", + "east", + "south", + "west", + "up", + "down" + ] + }, + "defaultProperties": { + "conditional": "false", + "facing": "north" + }, + "stateCount": 12 + }, + "minecraft:comparator": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "mode": [ + "compare", + "subtract" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "mode": "compare", + "powered": "false" + }, + "stateCount": 16 + }, + "minecraft:composter": { + "properties": { + "level": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8" + ] + }, + "defaultProperties": { + "level": "0" + }, + "stateCount": 9 + }, + "minecraft:conduit": { + "properties": { + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:copper_bars": { + "properties": { + "east": [ + "true", + "false" + ], + "north": [ + "true", + "false" + ], + "south": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "true", + "false" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:copper_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:copper_bulb": { + "properties": { + "lit": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "lit": "false", + "powered": "false" + }, + "stateCount": 4 + }, + "minecraft:copper_chain": { + "properties": { + "axis": [ + "x", + "y", + "z" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "axis": "y", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:copper_chest": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "type": [ + "single", + "left", + "right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "type": "single", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:copper_door": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "upper", + "lower" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:copper_golem_statue": { + "properties": { + "copper_golem_pose": [ + "standing", + "sitting", + "running", + "star" + ], + "facing": [ + "north", + "south", + "west", + "east" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "copper_golem_pose": "standing", + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:copper_grate": { + "properties": { + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "waterlogged": "false" + }, + "stateCount": 2 + }, + "minecraft:copper_lantern": { + "properties": { + "hanging": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "hanging": "false", + "waterlogged": "false" + }, + "stateCount": 4 + }, + "minecraft:copper_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:copper_torch": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:copper_trapdoor": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "open": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:copper_wall_torch": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:cornflower": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cracked_deepslate_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cracked_deepslate_tiles": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cracked_nether_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cracked_polished_blackstone_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cracked_stone_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:crafter": { + "properties": { + "crafting": [ + "true", + "false" + ], + "orientation": [ + "down_east", + "down_north", + "down_south", + "down_west", + "up_east", + "up_north", + "up_south", + "up_west", + "west_up", + "east_up", + "north_up", + "south_up" + ], + "triggered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "crafting": "false", + "orientation": "north_up", + "triggered": "false" + }, + "stateCount": 48 + }, + "minecraft:crafting_table": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:creaking_heart": { + "properties": { + "axis": [ + "x", + "y", + "z" + ], + "creaking_heart_state": [ + "uprooted", + "dormant", + "awake" + ], + "natural": [ + "true", + "false" + ] + }, + "defaultProperties": { + "axis": "y", + "creaking_heart_state": "uprooted", + "natural": "false" + }, + "stateCount": 18 + }, + "minecraft:creeper_head": { + "properties": { + "powered": [ + "true", + "false" + ], + "rotation": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15" + ] + }, + "defaultProperties": { + "powered": "false", + "rotation": "0" + }, + "stateCount": 32 + }, + "minecraft:creeper_wall_head": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false" + }, + "stateCount": 8 + }, + "minecraft:crimson_button": { + "properties": { + "face": [ + "floor", + "wall", + "ceiling" + ], + "facing": [ + "north", + "south", + "west", + "east" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:crimson_door": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "upper", + "lower" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:crimson_fence": { + "properties": { + "east": [ + "true", + "false" + ], + "north": [ + "true", + "false" + ], + "south": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "true", + "false" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:crimson_fence_gate": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "in_wall": [ + "true", + "false" + ], + "open": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "in_wall": "false", + "open": "false", + "powered": "false" + }, + "stateCount": 32 + }, + "minecraft:crimson_fungus": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:crimson_hanging_sign": { + "properties": { + "attached": [ + "true", + "false" + ], + "rotation": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "attached": "false", + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:crimson_hyphae": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:crimson_nylium": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:crimson_planks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:crimson_pressure_plate": { + "properties": { + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:crimson_roots": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:crimson_shelf": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "powered": [ + "true", + "false" + ], + "side_chain": [ + "unconnected", + "right", + "center", + "left" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false", + "side_chain": "unconnected", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:crimson_sign": { + "properties": { + "rotation": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:crimson_slab": { + "properties": { + "type": [ + "top", + "bottom", + "double" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:crimson_stairs": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "shape": [ + "straight", + "inner_left", + "inner_right", + "outer_left", + "outer_right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:crimson_stem": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:crimson_trapdoor": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "open": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:crimson_wall_hanging_sign": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:crimson_wall_sign": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:crying_obsidian": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cut_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cut_copper_slab": { + "properties": { + "type": [ + "top", + "bottom", + "double" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:cut_copper_stairs": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "shape": [ + "straight", + "inner_left", + "inner_right", + "outer_left", + "outer_right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:cut_red_sandstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cut_red_sandstone_slab": { + "properties": { + "type": [ + "top", + "bottom", + "double" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:cut_sandstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cut_sandstone_slab": { + "properties": { + "type": [ + "top", + "bottom", + "double" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:cyan_banner": { + "properties": { + "rotation": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:cyan_bed": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "occupied": [ + "true", + "false" + ], + "part": [ + "head", + "foot" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:cyan_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:cyan_candle_cake": { + "properties": { + "lit": [ + "true", + "false" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:cyan_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cyan_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cyan_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cyan_glazed_terracotta": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:cyan_shulker_box": { + "properties": { + "facing": [ + "north", + "east", + "south", + "west", + "up", + "down" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:cyan_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cyan_stained_glass_pane": { + "properties": { + "east": [ + "true", + "false" + ], + "north": [ + "true", + "false" + ], + "south": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "true", + "false" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:cyan_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cyan_wall_banner": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:cyan_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:damaged_anvil": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:dandelion": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dark_oak_button": { + "properties": { + "face": [ + "floor", + "wall", + "ceiling" + ], + "facing": [ + "north", + "south", + "west", + "east" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:dark_oak_door": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "upper", + "lower" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:dark_oak_fence": { + "properties": { + "east": [ + "true", + "false" + ], + "north": [ + "true", + "false" + ], + "south": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "true", + "false" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:dark_oak_fence_gate": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "in_wall": [ + "true", + "false" + ], + "open": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "in_wall": "false", + "open": "false", + "powered": "false" + }, + "stateCount": 32 + }, + "minecraft:dark_oak_hanging_sign": { + "properties": { + "attached": [ + "true", + "false" + ], + "rotation": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "attached": "false", + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:dark_oak_leaves": { + "properties": { + "distance": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ], + "persistent": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "distance": "7", + "persistent": "false", + "waterlogged": "false" + }, + "stateCount": 28 + }, + "minecraft:dark_oak_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:dark_oak_planks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dark_oak_pressure_plate": { + "properties": { + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:dark_oak_sapling": { + "properties": { + "stage": [ + "0", + "1" + ] + }, + "defaultProperties": { + "stage": "0" + }, + "stateCount": 2 + }, + "minecraft:dark_oak_shelf": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "powered": [ + "true", + "false" + ], + "side_chain": [ + "unconnected", + "right", + "center", + "left" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false", + "side_chain": "unconnected", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:dark_oak_sign": { + "properties": { + "rotation": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:dark_oak_slab": { + "properties": { + "type": [ + "top", + "bottom", + "double" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:dark_oak_stairs": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "shape": [ + "straight", + "inner_left", + "inner_right", + "outer_left", + "outer_right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:dark_oak_trapdoor": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "open": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:dark_oak_wall_hanging_sign": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:dark_oak_wall_sign": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:dark_oak_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:dark_prismarine": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dark_prismarine_slab": { + "properties": { + "type": [ + "top", + "bottom", + "double" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:dark_prismarine_stairs": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "shape": [ + "straight", + "inner_left", + "inner_right", + "outer_left", + "outer_right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:daylight_detector": { + "properties": { + "inverted": [ + "true", + "false" + ], + "power": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15" + ] + }, + "defaultProperties": { + "inverted": "false", + "power": "0" + }, + "stateCount": 32 + }, + "minecraft:dead_brain_coral": { + "properties": { + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:dead_brain_coral_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dead_brain_coral_fan": { + "properties": { + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:dead_brain_coral_wall_fan": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "true" + }, + "stateCount": 8 + }, + "minecraft:dead_bubble_coral": { + "properties": { + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:dead_bubble_coral_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dead_bubble_coral_fan": { + "properties": { + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:dead_bubble_coral_wall_fan": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "true" + }, + "stateCount": 8 + }, + "minecraft:dead_bush": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dead_fire_coral": { + "properties": { + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:dead_fire_coral_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dead_fire_coral_fan": { + "properties": { + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:dead_fire_coral_wall_fan": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "true" + }, + "stateCount": 8 + }, + "minecraft:dead_horn_coral": { + "properties": { + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:dead_horn_coral_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dead_horn_coral_fan": { + "properties": { + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:dead_horn_coral_wall_fan": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "true" + }, + "stateCount": 8 + }, + "minecraft:dead_tube_coral": { + "properties": { + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:dead_tube_coral_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dead_tube_coral_fan": { + "properties": { + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:dead_tube_coral_wall_fan": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "true" + }, + "stateCount": 8 + }, + "minecraft:decorated_pot": { + "properties": { + "cracked": [ + "true", + "false" + ], + "facing": [ + "north", + "south", + "west", + "east" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "cracked": "false", + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:deepslate": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:deepslate_brick_slab": { + "properties": { + "type": [ + "top", + "bottom", + "double" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:deepslate_brick_stairs": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "shape": [ + "straight", + "inner_left", + "inner_right", + "outer_left", + "outer_right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:deepslate_brick_wall": { + "properties": { + "east": [ + "none", + "low", + "tall" + ], + "north": [ + "none", + "low", + "tall" + ], + "south": [ + "none", + "low", + "tall" + ], + "up": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "none", + "low", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:deepslate_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:deepslate_coal_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:deepslate_copper_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:deepslate_diamond_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:deepslate_emerald_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:deepslate_gold_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:deepslate_iron_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:deepslate_lapis_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:deepslate_redstone_ore": { + "properties": { + "lit": [ + "true", + "false" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:deepslate_tile_slab": { + "properties": { + "type": [ + "top", + "bottom", + "double" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:deepslate_tile_stairs": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "shape": [ + "straight", + "inner_left", + "inner_right", + "outer_left", + "outer_right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:deepslate_tile_wall": { + "properties": { + "east": [ + "none", + "low", + "tall" + ], + "north": [ + "none", + "low", + "tall" + ], + "south": [ + "none", + "low", + "tall" + ], + "up": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "none", + "low", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:deepslate_tiles": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:detector_rail": { + "properties": { + "powered": [ + "true", + "false" + ], + "shape": [ + "north_south", + "east_west", + "ascending_east", + "ascending_west", + "ascending_north", + "ascending_south" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "powered": "false", + "shape": "north_south", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:diamond_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:diamond_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:diorite": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:diorite_slab": { + "properties": { + "type": [ + "top", + "bottom", + "double" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:diorite_stairs": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "shape": [ + "straight", + "inner_left", + "inner_right", + "outer_left", + "outer_right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:diorite_wall": { + "properties": { + "east": [ + "none", + "low", + "tall" + ], + "north": [ + "none", + "low", + "tall" + ], + "south": [ + "none", + "low", + "tall" + ], + "up": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "none", + "low", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:dirt": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dirt_path": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dispenser": { + "properties": { + "facing": [ + "north", + "east", + "south", + "west", + "up", + "down" + ], + "triggered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "triggered": "false" + }, + "stateCount": 12 + }, + "minecraft:dragon_egg": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dragon_head": { + "properties": { + "powered": [ + "true", + "false" + ], + "rotation": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15" + ] + }, + "defaultProperties": { + "powered": "false", + "rotation": "0" + }, + "stateCount": 32 + }, + "minecraft:dragon_wall_head": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false" + }, + "stateCount": 8 + }, + "minecraft:dried_ghast": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "hydration": [ + "0", + "1", + "2", + "3" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "hydration": "0", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:dried_kelp_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dripstone_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dropper": { + "properties": { + "facing": [ + "north", + "east", + "south", + "west", + "up", + "down" + ], + "triggered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "triggered": "false" + }, + "stateCount": 12 + }, + "minecraft:emerald_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:emerald_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:enchanting_table": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:end_gateway": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:end_portal": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:end_portal_frame": { + "properties": { + "eye": [ + "true", + "false" + ], + "facing": [ + "north", + "south", + "west", + "east" + ] + }, + "defaultProperties": { + "eye": "false", + "facing": "north" + }, + "stateCount": 8 + }, + "minecraft:end_rod": { + "properties": { + "facing": [ + "north", + "east", + "south", + "west", + "up", + "down" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:end_stone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:end_stone_brick_slab": { + "properties": { + "type": [ + "top", + "bottom", + "double" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:end_stone_brick_stairs": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "shape": [ + "straight", + "inner_left", + "inner_right", + "outer_left", + "outer_right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:end_stone_brick_wall": { + "properties": { + "east": [ + "none", + "low", + "tall" + ], + "north": [ + "none", + "low", + "tall" + ], + "south": [ + "none", + "low", + "tall" + ], + "up": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "none", + "low", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:end_stone_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:ender_chest": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:exposed_chiseled_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:exposed_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:exposed_copper_bars": { + "properties": { + "east": [ + "true", + "false" + ], + "north": [ + "true", + "false" + ], + "south": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "true", + "false" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:exposed_copper_bulb": { + "properties": { + "lit": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "lit": "false", + "powered": "false" + }, + "stateCount": 4 + }, + "minecraft:exposed_copper_chain": { + "properties": { + "axis": [ + "x", + "y", + "z" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "axis": "y", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:exposed_copper_chest": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "type": [ + "single", + "left", + "right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "type": "single", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:exposed_copper_door": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "upper", + "lower" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:exposed_copper_golem_statue": { + "properties": { + "copper_golem_pose": [ + "standing", + "sitting", + "running", + "star" + ], + "facing": [ + "north", + "south", + "west", + "east" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "copper_golem_pose": "standing", + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:exposed_copper_grate": { + "properties": { + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "waterlogged": "false" + }, + "stateCount": 2 + }, + "minecraft:exposed_copper_lantern": { + "properties": { + "hanging": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "hanging": "false", + "waterlogged": "false" + }, + "stateCount": 4 + }, + "minecraft:exposed_copper_trapdoor": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "open": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:exposed_cut_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:exposed_cut_copper_slab": { + "properties": { + "type": [ + "top", + "bottom", + "double" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:exposed_cut_copper_stairs": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "shape": [ + "straight", + "inner_left", + "inner_right", + "outer_left", + "outer_right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:exposed_lightning_rod": { + "properties": { + "facing": [ + "north", + "east", + "south", + "west", + "up", + "down" + ], + "powered": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "up", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:farmland": { + "properties": { + "moisture": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ] + }, + "defaultProperties": { + "moisture": "0" + }, + "stateCount": 8 + }, + "minecraft:fern": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:fire": { + "properties": { + "age": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15" + ], + "east": [ + "true", + "false" + ], + "north": [ + "true", + "false" + ], + "south": [ + "true", + "false" + ], + "up": [ + "true", + "false" + ], + "west": [ + "true", + "false" + ] + }, + "defaultProperties": { + "age": "0", + "east": "false", + "north": "false", + "south": "false", + "up": "false", + "west": "false" + }, + "stateCount": 512 + }, + "minecraft:fire_coral": { + "properties": { + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:fire_coral_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:fire_coral_fan": { + "properties": { + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:fire_coral_wall_fan": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "true" + }, + "stateCount": 8 + }, + "minecraft:firefly_bush": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:fletching_table": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:flower_pot": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:flowering_azalea": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:flowering_azalea_leaves": { + "properties": { + "distance": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ], + "persistent": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "distance": "7", + "persistent": "false", + "waterlogged": "false" + }, + "stateCount": 28 + }, + "minecraft:frogspawn": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:frosted_ice": { + "properties": { + "age": [ + "0", + "1", + "2", + "3" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 4 + }, + "minecraft:furnace": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "lit": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "lit": "false" + }, + "stateCount": 8 + }, + "minecraft:gilded_blackstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:glass_pane": { + "properties": { + "east": [ + "true", + "false" + ], + "north": [ + "true", + "false" + ], + "south": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "true", + "false" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:glow_lichen": { + "properties": { + "down": [ + "true", + "false" + ], + "east": [ + "true", + "false" + ], + "north": [ + "true", + "false" + ], + "south": [ + "true", + "false" + ], + "up": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "true", + "false" + ] + }, + "defaultProperties": { + "down": "false", + "east": "false", + "north": "false", + "south": "false", + "up": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 128 + }, + "minecraft:glowstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:gold_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:gold_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:granite": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:granite_slab": { + "properties": { + "type": [ + "top", + "bottom", + "double" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:granite_stairs": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "shape": [ + "straight", + "inner_left", + "inner_right", + "outer_left", + "outer_right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:granite_wall": { + "properties": { + "east": [ + "none", + "low", + "tall" + ], + "north": [ + "none", + "low", + "tall" + ], + "south": [ + "none", + "low", + "tall" + ], + "up": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "none", + "low", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:grass_block": { + "properties": { + "snowy": [ + "true", + "false" + ] + }, + "defaultProperties": { + "snowy": "false" + }, + "stateCount": 2 + }, + "minecraft:gravel": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:gray_banner": { + "properties": { + "rotation": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:gray_bed": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "occupied": [ + "true", + "false" + ], + "part": [ + "head", + "foot" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:gray_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:gray_candle_cake": { + "properties": { + "lit": [ + "true", + "false" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:gray_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:gray_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:gray_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:gray_glazed_terracotta": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:gray_shulker_box": { + "properties": { + "facing": [ + "north", + "east", + "south", + "west", + "up", + "down" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:gray_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:gray_stained_glass_pane": { + "properties": { + "east": [ + "true", + "false" + ], + "north": [ + "true", + "false" + ], + "south": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "true", + "false" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:gray_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:gray_wall_banner": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:gray_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:green_banner": { + "properties": { + "rotation": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:green_bed": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "occupied": [ + "true", + "false" + ], + "part": [ + "head", + "foot" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:green_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:green_candle_cake": { + "properties": { + "lit": [ + "true", + "false" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:green_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:green_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:green_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:green_glazed_terracotta": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:green_shulker_box": { + "properties": { + "facing": [ + "north", + "east", + "south", + "west", + "up", + "down" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:green_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:green_stained_glass_pane": { + "properties": { + "east": [ + "true", + "false" + ], + "north": [ + "true", + "false" + ], + "south": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "true", + "false" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:green_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:green_wall_banner": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:green_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:grindstone": { + "properties": { + "face": [ + "floor", + "wall", + "ceiling" + ], + "facing": [ + "north", + "south", + "west", + "east" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north" + }, + "stateCount": 12 + }, + "minecraft:hanging_roots": { + "properties": { + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "waterlogged": "false" + }, + "stateCount": 2 + }, + "minecraft:hay_block": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:heavy_core": { + "properties": { + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "waterlogged": "false" + }, + "stateCount": 2 + }, + "minecraft:heavy_weighted_pressure_plate": { + "properties": { + "power": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15" + ] + }, + "defaultProperties": { + "power": "0" + }, + "stateCount": 16 + }, + "minecraft:honey_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:honeycomb_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:hopper": { + "properties": { + "enabled": [ + "true", + "false" + ], + "facing": [ + "down", + "north", + "south", + "west", + "east" + ] + }, + "defaultProperties": { + "enabled": "true", + "facing": "down" + }, + "stateCount": 10 + }, + "minecraft:horn_coral": { + "properties": { + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:horn_coral_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:horn_coral_fan": { + "properties": { + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:horn_coral_wall_fan": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "true" + }, + "stateCount": 8 + }, + "minecraft:ice": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:infested_chiseled_stone_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:infested_cobblestone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:infested_cracked_stone_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:infested_deepslate": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:infested_mossy_stone_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:infested_stone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:infested_stone_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:iron_bars": { + "properties": { + "east": [ + "true", + "false" + ], + "north": [ + "true", + "false" + ], + "south": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "true", + "false" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:iron_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:iron_chain": { + "properties": { + "axis": [ + "x", + "y", + "z" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "axis": "y", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:iron_door": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "upper", + "lower" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:iron_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:iron_trapdoor": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "open": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:jack_o_lantern": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:jigsaw": { + "properties": { + "orientation": [ + "down_east", + "down_north", + "down_south", + "down_west", + "up_east", + "up_north", + "up_south", + "up_west", + "west_up", + "east_up", + "north_up", + "south_up" + ] + }, + "defaultProperties": { + "orientation": "north_up" + }, + "stateCount": 12 + }, + "minecraft:jukebox": { + "properties": { + "has_record": [ + "true", + "false" + ] + }, + "defaultProperties": { + "has_record": "false" + }, + "stateCount": 2 + }, + "minecraft:jungle_button": { + "properties": { + "face": [ + "floor", + "wall", + "ceiling" + ], + "facing": [ + "north", + "south", + "west", + "east" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:jungle_door": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "upper", + "lower" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:jungle_fence": { + "properties": { + "east": [ + "true", + "false" + ], + "north": [ + "true", + "false" + ], + "south": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "true", + "false" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:jungle_fence_gate": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "in_wall": [ + "true", + "false" + ], + "open": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "in_wall": "false", + "open": "false", + "powered": "false" + }, + "stateCount": 32 + }, + "minecraft:jungle_hanging_sign": { + "properties": { + "attached": [ + "true", + "false" + ], + "rotation": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "attached": "false", + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:jungle_leaves": { + "properties": { + "distance": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ], + "persistent": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "distance": "7", + "persistent": "false", + "waterlogged": "false" + }, + "stateCount": 28 + }, + "minecraft:jungle_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:jungle_planks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:jungle_pressure_plate": { + "properties": { + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:jungle_sapling": { + "properties": { + "stage": [ + "0", + "1" + ] + }, + "defaultProperties": { + "stage": "0" + }, + "stateCount": 2 + }, + "minecraft:jungle_shelf": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "powered": [ + "true", + "false" + ], + "side_chain": [ + "unconnected", + "right", + "center", + "left" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false", + "side_chain": "unconnected", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:jungle_sign": { + "properties": { + "rotation": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:jungle_slab": { + "properties": { + "type": [ + "top", + "bottom", + "double" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:jungle_stairs": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "shape": [ + "straight", + "inner_left", + "inner_right", + "outer_left", + "outer_right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:jungle_trapdoor": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "open": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:jungle_wall_hanging_sign": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:jungle_wall_sign": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:jungle_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:kelp": { + "properties": { + "age": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15", + "16", + "17", + "18", + "19", + "20", + "21", + "22", + "23", + "24", + "25" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 26 + }, + "minecraft:kelp_plant": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:ladder": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:lantern": { + "properties": { + "hanging": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "hanging": "false", + "waterlogged": "false" + }, + "stateCount": 4 + }, + "minecraft:lapis_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:lapis_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:large_amethyst_bud": { + "properties": { + "facing": [ + "north", + "east", + "south", + "west", + "up", + "down" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "up", + "waterlogged": "false" + }, + "stateCount": 12 + }, + "minecraft:large_fern": { + "properties": { + "half": [ + "upper", + "lower" + ] + }, + "defaultProperties": { + "half": "lower" + }, + "stateCount": 2 + }, + "minecraft:lava": { + "properties": { + "level": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15" + ] + }, + "defaultProperties": { + "level": "0" + }, + "stateCount": 16 + }, + "minecraft:lava_cauldron": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:leaf_litter": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "segment_amount": [ + "1", + "2", + "3", + "4" + ] + }, + "defaultProperties": { + "facing": "north", + "segment_amount": "1" + }, + "stateCount": 16 + }, + "minecraft:lectern": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "has_book": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "has_book": "false", + "powered": "false" + }, + "stateCount": 16 + }, + "minecraft:lever": { + "properties": { + "face": [ + "floor", + "wall", + "ceiling" + ], + "facing": [ + "north", + "south", + "west", + "east" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:light": { + "properties": { + "level": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "level": "15", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:light_blue_banner": { + "properties": { + "rotation": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:light_blue_bed": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "occupied": [ + "true", + "false" + ], + "part": [ + "head", + "foot" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:light_blue_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:light_blue_candle_cake": { + "properties": { + "lit": [ + "true", + "false" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:light_blue_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:light_blue_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:light_blue_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:light_blue_glazed_terracotta": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:light_blue_shulker_box": { + "properties": { + "facing": [ + "north", + "east", + "south", + "west", + "up", + "down" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:light_blue_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:light_blue_stained_glass_pane": { + "properties": { + "east": [ + "true", + "false" + ], + "north": [ + "true", + "false" + ], + "south": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "true", + "false" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:light_blue_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:light_blue_wall_banner": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:light_blue_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:light_gray_banner": { + "properties": { + "rotation": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:light_gray_bed": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "occupied": [ + "true", + "false" + ], + "part": [ + "head", + "foot" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:light_gray_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:light_gray_candle_cake": { + "properties": { + "lit": [ + "true", + "false" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:light_gray_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:light_gray_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:light_gray_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:light_gray_glazed_terracotta": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:light_gray_shulker_box": { + "properties": { + "facing": [ + "north", + "east", + "south", + "west", + "up", + "down" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:light_gray_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:light_gray_stained_glass_pane": { + "properties": { + "east": [ + "true", + "false" + ], + "north": [ + "true", + "false" + ], + "south": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "true", + "false" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:light_gray_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:light_gray_wall_banner": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:light_gray_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:light_weighted_pressure_plate": { + "properties": { + "power": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15" + ] + }, + "defaultProperties": { + "power": "0" + }, + "stateCount": 16 + }, + "minecraft:lightning_rod": { + "properties": { + "facing": [ + "north", + "east", + "south", + "west", + "up", + "down" + ], + "powered": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "up", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:lilac": { + "properties": { + "half": [ + "upper", + "lower" + ] + }, + "defaultProperties": { + "half": "lower" + }, + "stateCount": 2 + }, + "minecraft:lily_of_the_valley": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:lily_pad": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:lime_banner": { + "properties": { + "rotation": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:lime_bed": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "occupied": [ + "true", + "false" + ], + "part": [ + "head", + "foot" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:lime_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:lime_candle_cake": { + "properties": { + "lit": [ + "true", + "false" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:lime_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:lime_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:lime_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:lime_glazed_terracotta": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:lime_shulker_box": { + "properties": { + "facing": [ + "north", + "east", + "south", + "west", + "up", + "down" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:lime_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:lime_stained_glass_pane": { + "properties": { + "east": [ + "true", + "false" + ], + "north": [ + "true", + "false" + ], + "south": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "true", + "false" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:lime_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:lime_wall_banner": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:lime_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:lodestone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:loom": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:magenta_banner": { + "properties": { + "rotation": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:magenta_bed": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "occupied": [ + "true", + "false" + ], + "part": [ + "head", + "foot" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:magenta_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:magenta_candle_cake": { + "properties": { + "lit": [ + "true", + "false" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:magenta_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:magenta_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:magenta_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:magenta_glazed_terracotta": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:magenta_shulker_box": { + "properties": { + "facing": [ + "north", + "east", + "south", + "west", + "up", + "down" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:magenta_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:magenta_stained_glass_pane": { + "properties": { + "east": [ + "true", + "false" + ], + "north": [ + "true", + "false" + ], + "south": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "true", + "false" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:magenta_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:magenta_wall_banner": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:magenta_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:magma_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:mangrove_button": { + "properties": { + "face": [ + "floor", + "wall", + "ceiling" + ], + "facing": [ + "north", + "south", + "west", + "east" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:mangrove_door": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "upper", + "lower" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:mangrove_fence": { + "properties": { + "east": [ + "true", + "false" + ], + "north": [ + "true", + "false" + ], + "south": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "true", + "false" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:mangrove_fence_gate": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "in_wall": [ + "true", + "false" + ], + "open": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "in_wall": "false", + "open": "false", + "powered": "false" + }, + "stateCount": 32 + }, + "minecraft:mangrove_hanging_sign": { + "properties": { + "attached": [ + "true", + "false" + ], + "rotation": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "attached": "false", + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:mangrove_leaves": { + "properties": { + "distance": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ], + "persistent": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "distance": "7", + "persistent": "false", + "waterlogged": "false" + }, + "stateCount": 28 + }, + "minecraft:mangrove_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:mangrove_planks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:mangrove_pressure_plate": { + "properties": { + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:mangrove_propagule": { + "properties": { + "age": [ + "0", + "1", + "2", + "3", + "4" + ], + "hanging": [ + "true", + "false" + ], + "stage": [ + "0", + "1" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "age": "0", + "hanging": "false", + "stage": "0", + "waterlogged": "false" + }, + "stateCount": 40 + }, + "minecraft:mangrove_roots": { + "properties": { + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "waterlogged": "false" + }, + "stateCount": 2 + }, + "minecraft:mangrove_shelf": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "powered": [ + "true", + "false" + ], + "side_chain": [ + "unconnected", + "right", + "center", + "left" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false", + "side_chain": "unconnected", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:mangrove_sign": { + "properties": { + "rotation": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:mangrove_slab": { + "properties": { + "type": [ + "top", + "bottom", + "double" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:mangrove_stairs": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "shape": [ + "straight", + "inner_left", + "inner_right", + "outer_left", + "outer_right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:mangrove_trapdoor": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "open": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:mangrove_wall_hanging_sign": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:mangrove_wall_sign": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:mangrove_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:medium_amethyst_bud": { + "properties": { + "facing": [ + "north", + "east", + "south", + "west", + "up", + "down" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "up", + "waterlogged": "false" + }, + "stateCount": 12 + }, + "minecraft:melon": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:melon_stem": { + "properties": { + "age": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 8 + }, + "minecraft:moss_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:moss_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:mossy_cobblestone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:mossy_cobblestone_slab": { + "properties": { + "type": [ + "top", + "bottom", + "double" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:mossy_cobblestone_stairs": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "shape": [ + "straight", + "inner_left", + "inner_right", + "outer_left", + "outer_right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:mossy_cobblestone_wall": { + "properties": { + "east": [ + "none", + "low", + "tall" + ], + "north": [ + "none", + "low", + "tall" + ], + "south": [ + "none", + "low", + "tall" + ], + "up": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "none", + "low", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:mossy_stone_brick_slab": { + "properties": { + "type": [ + "top", + "bottom", + "double" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:mossy_stone_brick_stairs": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "shape": [ + "straight", + "inner_left", + "inner_right", + "outer_left", + "outer_right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:mossy_stone_brick_wall": { + "properties": { + "east": [ + "none", + "low", + "tall" + ], + "north": [ + "none", + "low", + "tall" + ], + "south": [ + "none", + "low", + "tall" + ], + "up": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "none", + "low", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:mossy_stone_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:moving_piston": { + "properties": { + "facing": [ + "north", + "east", + "south", + "west", + "up", + "down" + ], + "type": [ + "normal", + "sticky" + ] + }, + "defaultProperties": { + "facing": "north", + "type": "normal" + }, + "stateCount": 12 + }, + "minecraft:mud": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:mud_brick_slab": { + "properties": { + "type": [ + "top", + "bottom", + "double" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:mud_brick_stairs": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "shape": [ + "straight", + "inner_left", + "inner_right", + "outer_left", + "outer_right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:mud_brick_wall": { + "properties": { + "east": [ + "none", + "low", + "tall" + ], + "north": [ + "none", + "low", + "tall" + ], + "south": [ + "none", + "low", + "tall" + ], + "up": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "none", + "low", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:mud_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:muddy_mangrove_roots": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:mushroom_stem": { + "properties": { + "down": [ + "true", + "false" + ], + "east": [ + "true", + "false" + ], + "north": [ + "true", + "false" + ], + "south": [ + "true", + "false" + ], + "up": [ + "true", + "false" + ], + "west": [ + "true", + "false" + ] + }, + "defaultProperties": { + "down": "true", + "east": "true", + "north": "true", + "south": "true", + "up": "true", + "west": "true" + }, + "stateCount": 64 + }, + "minecraft:mycelium": { + "properties": { + "snowy": [ + "true", + "false" + ] + }, + "defaultProperties": { + "snowy": "false" + }, + "stateCount": 2 + }, + "minecraft:nether_brick_fence": { + "properties": { + "east": [ + "true", + "false" + ], + "north": [ + "true", + "false" + ], + "south": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "true", + "false" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:nether_brick_slab": { + "properties": { + "type": [ + "top", + "bottom", + "double" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:nether_brick_stairs": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "shape": [ + "straight", + "inner_left", + "inner_right", + "outer_left", + "outer_right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:nether_brick_wall": { + "properties": { + "east": [ + "none", + "low", + "tall" + ], + "north": [ + "none", + "low", + "tall" + ], + "south": [ + "none", + "low", + "tall" + ], + "up": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "none", + "low", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:nether_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:nether_gold_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:nether_portal": { + "properties": { + "axis": [ + "x", + "z" + ] + }, + "defaultProperties": { + "axis": "x" + }, + "stateCount": 2 + }, + "minecraft:nether_quartz_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:nether_sprouts": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:nether_wart": { + "properties": { + "age": [ + "0", + "1", + "2", + "3" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 4 + }, + "minecraft:nether_wart_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:netherite_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:netherrack": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:note_block": { + "properties": { + "instrument": [ + "harp", + "basedrum", + "snare", + "hat", + "bass", + "flute", + "bell", + "guitar", + "chime", + "xylophone", + "iron_xylophone", + "cow_bell", + "didgeridoo", + "bit", + "banjo", + "pling", + "zombie", + "skeleton", + "creeper", + "dragon", + "wither_skeleton", + "piglin", + "custom_head" + ], + "note": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15", + "16", + "17", + "18", + "19", + "20", + "21", + "22", + "23", + "24" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "instrument": "harp", + "note": "0", + "powered": "false" + }, + "stateCount": 1150 + }, + "minecraft:oak_button": { + "properties": { + "face": [ + "floor", + "wall", + "ceiling" + ], + "facing": [ + "north", + "south", + "west", + "east" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:oak_door": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "upper", + "lower" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:oak_fence": { + "properties": { + "east": [ + "true", + "false" + ], + "north": [ + "true", + "false" + ], + "south": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "true", + "false" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:oak_fence_gate": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "in_wall": [ + "true", + "false" + ], + "open": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "in_wall": "false", + "open": "false", + "powered": "false" + }, + "stateCount": 32 + }, + "minecraft:oak_hanging_sign": { + "properties": { + "attached": [ + "true", + "false" + ], + "rotation": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "attached": "false", + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:oak_leaves": { + "properties": { + "distance": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ], + "persistent": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "distance": "7", + "persistent": "false", + "waterlogged": "false" + }, + "stateCount": 28 + }, + "minecraft:oak_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:oak_planks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:oak_pressure_plate": { + "properties": { + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:oak_sapling": { + "properties": { + "stage": [ + "0", + "1" + ] + }, + "defaultProperties": { + "stage": "0" + }, + "stateCount": 2 + }, + "minecraft:oak_shelf": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "powered": [ + "true", + "false" + ], + "side_chain": [ + "unconnected", + "right", + "center", + "left" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false", + "side_chain": "unconnected", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:oak_sign": { + "properties": { + "rotation": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:oak_slab": { + "properties": { + "type": [ + "top", + "bottom", + "double" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:oak_stairs": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "shape": [ + "straight", + "inner_left", + "inner_right", + "outer_left", + "outer_right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:oak_trapdoor": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "open": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:oak_wall_hanging_sign": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:oak_wall_sign": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:oak_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:observer": { + "properties": { + "facing": [ + "north", + "east", + "south", + "west", + "up", + "down" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "south", + "powered": "false" + }, + "stateCount": 12 + }, + "minecraft:obsidian": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:ochre_froglight": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:open_eyeblossom": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:orange_banner": { + "properties": { + "rotation": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:orange_bed": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "occupied": [ + "true", + "false" + ], + "part": [ + "head", + "foot" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:orange_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:orange_candle_cake": { + "properties": { + "lit": [ + "true", + "false" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:orange_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:orange_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:orange_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:orange_glazed_terracotta": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:orange_shulker_box": { + "properties": { + "facing": [ + "north", + "east", + "south", + "west", + "up", + "down" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:orange_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:orange_stained_glass_pane": { + "properties": { + "east": [ + "true", + "false" + ], + "north": [ + "true", + "false" + ], + "south": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "true", + "false" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:orange_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:orange_tulip": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:orange_wall_banner": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:orange_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:oxeye_daisy": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:oxidized_chiseled_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:oxidized_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:oxidized_copper_bars": { + "properties": { + "east": [ + "true", + "false" + ], + "north": [ + "true", + "false" + ], + "south": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "true", + "false" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:oxidized_copper_bulb": { + "properties": { + "lit": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "lit": "false", + "powered": "false" + }, + "stateCount": 4 + }, + "minecraft:oxidized_copper_chain": { + "properties": { + "axis": [ + "x", + "y", + "z" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "axis": "y", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:oxidized_copper_chest": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "type": [ + "single", + "left", + "right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "type": "single", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:oxidized_copper_door": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "upper", + "lower" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:oxidized_copper_golem_statue": { + "properties": { + "copper_golem_pose": [ + "standing", + "sitting", + "running", + "star" + ], + "facing": [ + "north", + "south", + "west", + "east" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "copper_golem_pose": "standing", + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:oxidized_copper_grate": { + "properties": { + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "waterlogged": "false" + }, + "stateCount": 2 + }, + "minecraft:oxidized_copper_lantern": { + "properties": { + "hanging": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "hanging": "false", + "waterlogged": "false" + }, + "stateCount": 4 + }, + "minecraft:oxidized_copper_trapdoor": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "open": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:oxidized_cut_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:oxidized_cut_copper_slab": { + "properties": { + "type": [ + "top", + "bottom", + "double" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:oxidized_cut_copper_stairs": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "shape": [ + "straight", + "inner_left", + "inner_right", + "outer_left", + "outer_right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:oxidized_lightning_rod": { + "properties": { + "facing": [ + "north", + "east", + "south", + "west", + "up", + "down" + ], + "powered": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "up", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:packed_ice": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:packed_mud": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:pale_hanging_moss": { + "properties": { + "tip": [ + "true", + "false" + ] + }, + "defaultProperties": { + "tip": "true" + }, + "stateCount": 2 + }, + "minecraft:pale_moss_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:pale_moss_carpet": { + "properties": { + "bottom": [ + "true", + "false" + ], + "east": [ + "none", + "low", + "tall" + ], + "north": [ + "none", + "low", + "tall" + ], + "south": [ + "none", + "low", + "tall" + ], + "west": [ + "none", + "low", + "tall" + ] + }, + "defaultProperties": { + "bottom": "true", + "east": "none", + "north": "none", + "south": "none", + "west": "none" + }, + "stateCount": 162 + }, + "minecraft:pale_oak_button": { + "properties": { + "face": [ + "floor", + "wall", + "ceiling" + ], + "facing": [ + "north", + "south", + "west", + "east" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:pale_oak_door": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "upper", + "lower" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:pale_oak_fence": { + "properties": { + "east": [ + "true", + "false" + ], + "north": [ + "true", + "false" + ], + "south": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "true", + "false" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:pale_oak_fence_gate": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "in_wall": [ + "true", + "false" + ], + "open": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "in_wall": "false", + "open": "false", + "powered": "false" + }, + "stateCount": 32 + }, + "minecraft:pale_oak_hanging_sign": { + "properties": { + "attached": [ + "true", + "false" + ], + "rotation": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "attached": "false", + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:pale_oak_leaves": { + "properties": { + "distance": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ], + "persistent": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "distance": "7", + "persistent": "false", + "waterlogged": "false" + }, + "stateCount": 28 + }, + "minecraft:pale_oak_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:pale_oak_planks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:pale_oak_pressure_plate": { + "properties": { + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:pale_oak_sapling": { + "properties": { + "stage": [ + "0", + "1" + ] + }, + "defaultProperties": { + "stage": "0" + }, + "stateCount": 2 + }, + "minecraft:pale_oak_shelf": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "powered": [ + "true", + "false" + ], + "side_chain": [ + "unconnected", + "right", + "center", + "left" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false", + "side_chain": "unconnected", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:pale_oak_sign": { + "properties": { + "rotation": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:pale_oak_slab": { + "properties": { + "type": [ + "top", + "bottom", + "double" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:pale_oak_stairs": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "shape": [ + "straight", + "inner_left", + "inner_right", + "outer_left", + "outer_right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:pale_oak_trapdoor": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "open": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:pale_oak_wall_hanging_sign": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:pale_oak_wall_sign": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:pale_oak_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:pearlescent_froglight": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:peony": { + "properties": { + "half": [ + "upper", + "lower" + ] + }, + "defaultProperties": { + "half": "lower" + }, + "stateCount": 2 + }, + "minecraft:petrified_oak_slab": { + "properties": { + "type": [ + "top", + "bottom", + "double" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:piglin_head": { + "properties": { + "powered": [ + "true", + "false" + ], + "rotation": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15" + ] + }, + "defaultProperties": { + "powered": "false", + "rotation": "0" + }, + "stateCount": 32 + }, + "minecraft:piglin_wall_head": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false" + }, + "stateCount": 8 + }, + "minecraft:pink_banner": { + "properties": { + "rotation": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:pink_bed": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "occupied": [ + "true", + "false" + ], + "part": [ + "head", + "foot" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:pink_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:pink_candle_cake": { + "properties": { + "lit": [ + "true", + "false" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:pink_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:pink_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:pink_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:pink_glazed_terracotta": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:pink_petals": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "flower_amount": [ + "1", + "2", + "3", + "4" + ] + }, + "defaultProperties": { + "facing": "north", + "flower_amount": "1" + }, + "stateCount": 16 + }, + "minecraft:pink_shulker_box": { + "properties": { + "facing": [ + "north", + "east", + "south", + "west", + "up", + "down" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:pink_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:pink_stained_glass_pane": { + "properties": { + "east": [ + "true", + "false" + ], + "north": [ + "true", + "false" + ], + "south": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "true", + "false" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:pink_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:pink_tulip": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:pink_wall_banner": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:pink_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:piston": { + "properties": { + "extended": [ + "true", + "false" + ], + "facing": [ + "north", + "east", + "south", + "west", + "up", + "down" + ] + }, + "defaultProperties": { + "extended": "false", + "facing": "north" + }, + "stateCount": 12 + }, + "minecraft:piston_head": { + "properties": { + "facing": [ + "north", + "east", + "south", + "west", + "up", + "down" + ], + "short": [ + "true", + "false" + ], + "type": [ + "normal", + "sticky" + ] + }, + "defaultProperties": { + "facing": "north", + "short": "false", + "type": "normal" + }, + "stateCount": 24 + }, + "minecraft:pitcher_crop": { + "properties": { + "age": [ + "0", + "1", + "2", + "3", + "4" + ], + "half": [ + "upper", + "lower" + ] + }, + "defaultProperties": { + "age": "0", + "half": "lower" + }, + "stateCount": 10 + }, + "minecraft:pitcher_plant": { + "properties": { + "half": [ + "upper", + "lower" + ] + }, + "defaultProperties": { + "half": "lower" + }, + "stateCount": 2 + }, + "minecraft:player_head": { + "properties": { + "powered": [ + "true", + "false" + ], + "rotation": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15" + ] + }, + "defaultProperties": { + "powered": "false", + "rotation": "0" + }, + "stateCount": 32 + }, + "minecraft:player_wall_head": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false" + }, + "stateCount": 8 + }, + "minecraft:podzol": { + "properties": { + "snowy": [ + "true", + "false" + ] + }, + "defaultProperties": { + "snowy": "false" + }, + "stateCount": 2 + }, + "minecraft:pointed_dripstone": { + "properties": { + "thickness": [ + "tip_merge", + "tip", + "frustum", + "middle", + "base" + ], + "vertical_direction": [ + "up", + "down" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "thickness": "tip", + "vertical_direction": "up", + "waterlogged": "false" + }, + "stateCount": 20 + }, + "minecraft:polished_andesite": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:polished_andesite_slab": { + "properties": { + "type": [ + "top", + "bottom", + "double" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:polished_andesite_stairs": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "shape": [ + "straight", + "inner_left", + "inner_right", + "outer_left", + "outer_right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:polished_basalt": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:polished_blackstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:polished_blackstone_brick_slab": { + "properties": { + "type": [ + "top", + "bottom", + "double" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:polished_blackstone_brick_stairs": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "shape": [ + "straight", + "inner_left", + "inner_right", + "outer_left", + "outer_right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:polished_blackstone_brick_wall": { + "properties": { + "east": [ + "none", + "low", + "tall" + ], + "north": [ + "none", + "low", + "tall" + ], + "south": [ + "none", + "low", + "tall" + ], + "up": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "none", + "low", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:polished_blackstone_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:polished_blackstone_button": { + "properties": { + "face": [ + "floor", + "wall", + "ceiling" + ], + "facing": [ + "north", + "south", + "west", + "east" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:polished_blackstone_pressure_plate": { + "properties": { + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:polished_blackstone_slab": { + "properties": { + "type": [ + "top", + "bottom", + "double" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:polished_blackstone_stairs": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "shape": [ + "straight", + "inner_left", + "inner_right", + "outer_left", + "outer_right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:polished_blackstone_wall": { + "properties": { + "east": [ + "none", + "low", + "tall" + ], + "north": [ + "none", + "low", + "tall" + ], + "south": [ + "none", + "low", + "tall" + ], + "up": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "none", + "low", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:polished_deepslate": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:polished_deepslate_slab": { + "properties": { + "type": [ + "top", + "bottom", + "double" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:polished_deepslate_stairs": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "shape": [ + "straight", + "inner_left", + "inner_right", + "outer_left", + "outer_right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:polished_deepslate_wall": { + "properties": { + "east": [ + "none", + "low", + "tall" + ], + "north": [ + "none", + "low", + "tall" + ], + "south": [ + "none", + "low", + "tall" + ], + "up": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "none", + "low", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:polished_diorite": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:polished_diorite_slab": { + "properties": { + "type": [ + "top", + "bottom", + "double" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:polished_diorite_stairs": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "shape": [ + "straight", + "inner_left", + "inner_right", + "outer_left", + "outer_right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:polished_granite": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:polished_granite_slab": { + "properties": { + "type": [ + "top", + "bottom", + "double" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:polished_granite_stairs": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "shape": [ + "straight", + "inner_left", + "inner_right", + "outer_left", + "outer_right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:polished_tuff": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:polished_tuff_slab": { + "properties": { + "type": [ + "top", + "bottom", + "double" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:polished_tuff_stairs": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "shape": [ + "straight", + "inner_left", + "inner_right", + "outer_left", + "outer_right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:polished_tuff_wall": { + "properties": { + "east": [ + "none", + "low", + "tall" + ], + "north": [ + "none", + "low", + "tall" + ], + "south": [ + "none", + "low", + "tall" + ], + "up": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "none", + "low", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:poppy": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potatoes": { + "properties": { + "age": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 8 + }, + "minecraft:potted_acacia_sapling": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_allium": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_azalea_bush": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_azure_bluet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_bamboo": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_birch_sapling": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_blue_orchid": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_brown_mushroom": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_cactus": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_cherry_sapling": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_closed_eyeblossom": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_cornflower": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_crimson_fungus": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_crimson_roots": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_dandelion": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_dark_oak_sapling": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_dead_bush": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_fern": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_flowering_azalea_bush": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_jungle_sapling": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_lily_of_the_valley": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_mangrove_propagule": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_oak_sapling": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_open_eyeblossom": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_orange_tulip": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_oxeye_daisy": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_pale_oak_sapling": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_pink_tulip": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_poppy": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_red_mushroom": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_red_tulip": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_spruce_sapling": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_torchflower": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_warped_fungus": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_warped_roots": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_white_tulip": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_wither_rose": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:powder_snow": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:powder_snow_cauldron": { + "properties": { + "level": [ + "1", + "2", + "3" + ] + }, + "defaultProperties": { + "level": "1" + }, + "stateCount": 3 + }, + "minecraft:powered_rail": { + "properties": { + "powered": [ + "true", + "false" + ], + "shape": [ + "north_south", + "east_west", + "ascending_east", + "ascending_west", + "ascending_north", + "ascending_south" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "powered": "false", + "shape": "north_south", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:prismarine": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:prismarine_brick_slab": { + "properties": { + "type": [ + "top", + "bottom", + "double" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:prismarine_brick_stairs": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "shape": [ + "straight", + "inner_left", + "inner_right", + "outer_left", + "outer_right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:prismarine_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:prismarine_slab": { + "properties": { + "type": [ + "top", + "bottom", + "double" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:prismarine_stairs": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "shape": [ + "straight", + "inner_left", + "inner_right", + "outer_left", + "outer_right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:prismarine_wall": { + "properties": { + "east": [ + "none", + "low", + "tall" + ], + "north": [ + "none", + "low", + "tall" + ], + "south": [ + "none", + "low", + "tall" + ], + "up": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "none", + "low", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:pumpkin": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:pumpkin_stem": { + "properties": { + "age": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 8 + }, + "minecraft:purple_banner": { + "properties": { + "rotation": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:purple_bed": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "occupied": [ + "true", + "false" + ], + "part": [ + "head", + "foot" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:purple_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:purple_candle_cake": { + "properties": { + "lit": [ + "true", + "false" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:purple_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:purple_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:purple_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:purple_glazed_terracotta": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:purple_shulker_box": { + "properties": { + "facing": [ + "north", + "east", + "south", + "west", + "up", + "down" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:purple_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:purple_stained_glass_pane": { + "properties": { + "east": [ + "true", + "false" + ], + "north": [ + "true", + "false" + ], + "south": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "true", + "false" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:purple_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:purple_wall_banner": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:purple_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:purpur_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:purpur_pillar": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:purpur_slab": { + "properties": { + "type": [ + "top", + "bottom", + "double" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:purpur_stairs": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "shape": [ + "straight", + "inner_left", + "inner_right", + "outer_left", + "outer_right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:quartz_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:quartz_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:quartz_pillar": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:quartz_slab": { + "properties": { + "type": [ + "top", + "bottom", + "double" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:quartz_stairs": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "shape": [ + "straight", + "inner_left", + "inner_right", + "outer_left", + "outer_right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:rail": { + "properties": { + "shape": [ + "north_south", + "east_west", + "ascending_east", + "ascending_west", + "ascending_north", + "ascending_south", + "south_east", + "south_west", + "north_west", + "north_east" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "shape": "north_south", + "waterlogged": "false" + }, + "stateCount": 20 + }, + "minecraft:raw_copper_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:raw_gold_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:raw_iron_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:red_banner": { + "properties": { + "rotation": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:red_bed": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "occupied": [ + "true", + "false" + ], + "part": [ + "head", + "foot" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:red_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:red_candle_cake": { + "properties": { + "lit": [ + "true", + "false" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:red_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:red_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:red_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:red_glazed_terracotta": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:red_mushroom": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:red_mushroom_block": { + "properties": { + "down": [ + "true", + "false" + ], + "east": [ + "true", + "false" + ], + "north": [ + "true", + "false" + ], + "south": [ + "true", + "false" + ], + "up": [ + "true", + "false" + ], + "west": [ + "true", + "false" + ] + }, + "defaultProperties": { + "down": "true", + "east": "true", + "north": "true", + "south": "true", + "up": "true", + "west": "true" + }, + "stateCount": 64 + }, + "minecraft:red_nether_brick_slab": { + "properties": { + "type": [ + "top", + "bottom", + "double" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:red_nether_brick_stairs": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "shape": [ + "straight", + "inner_left", + "inner_right", + "outer_left", + "outer_right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:red_nether_brick_wall": { + "properties": { + "east": [ + "none", + "low", + "tall" + ], + "north": [ + "none", + "low", + "tall" + ], + "south": [ + "none", + "low", + "tall" + ], + "up": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "none", + "low", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:red_nether_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:red_sand": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:red_sandstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:red_sandstone_slab": { + "properties": { + "type": [ + "top", + "bottom", + "double" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:red_sandstone_stairs": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "shape": [ + "straight", + "inner_left", + "inner_right", + "outer_left", + "outer_right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:red_sandstone_wall": { + "properties": { + "east": [ + "none", + "low", + "tall" + ], + "north": [ + "none", + "low", + "tall" + ], + "south": [ + "none", + "low", + "tall" + ], + "up": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "none", + "low", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:red_shulker_box": { + "properties": { + "facing": [ + "north", + "east", + "south", + "west", + "up", + "down" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:red_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:red_stained_glass_pane": { + "properties": { + "east": [ + "true", + "false" + ], + "north": [ + "true", + "false" + ], + "south": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "true", + "false" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:red_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:red_tulip": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:red_wall_banner": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:red_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:redstone_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:redstone_lamp": { + "properties": { + "lit": [ + "true", + "false" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:redstone_ore": { + "properties": { + "lit": [ + "true", + "false" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:redstone_torch": { + "properties": { + "lit": [ + "true", + "false" + ] + }, + "defaultProperties": { + "lit": "true" + }, + "stateCount": 2 + }, + "minecraft:redstone_wall_torch": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "lit": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "lit": "true" + }, + "stateCount": 8 + }, + "minecraft:redstone_wire": { + "properties": { + "east": [ + "up", + "side", + "none" + ], + "north": [ + "up", + "side", + "none" + ], + "power": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15" + ], + "south": [ + "up", + "side", + "none" + ], + "west": [ + "up", + "side", + "none" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "power": "0", + "south": "none", + "west": "none" + }, + "stateCount": 1296 + }, + "minecraft:reinforced_deepslate": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:repeater": { + "properties": { + "delay": [ + "1", + "2", + "3", + "4" + ], + "facing": [ + "north", + "south", + "west", + "east" + ], + "locked": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "delay": "1", + "facing": "north", + "locked": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:repeating_command_block": { + "properties": { + "conditional": [ + "true", + "false" + ], + "facing": [ + "north", + "east", + "south", + "west", + "up", + "down" + ] + }, + "defaultProperties": { + "conditional": "false", + "facing": "north" + }, + "stateCount": 12 + }, + "minecraft:resin_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:resin_brick_slab": { + "properties": { + "type": [ + "top", + "bottom", + "double" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:resin_brick_stairs": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "shape": [ + "straight", + "inner_left", + "inner_right", + "outer_left", + "outer_right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:resin_brick_wall": { + "properties": { + "east": [ + "none", + "low", + "tall" + ], + "north": [ + "none", + "low", + "tall" + ], + "south": [ + "none", + "low", + "tall" + ], + "up": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "none", + "low", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:resin_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:resin_clump": { + "properties": { + "down": [ + "true", + "false" + ], + "east": [ + "true", + "false" + ], + "north": [ + "true", + "false" + ], + "south": [ + "true", + "false" + ], + "up": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "true", + "false" + ] + }, + "defaultProperties": { + "down": "false", + "east": "false", + "north": "false", + "south": "false", + "up": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 128 + }, + "minecraft:respawn_anchor": { + "properties": { + "charges": [ + "0", + "1", + "2", + "3", + "4" + ] + }, + "defaultProperties": { + "charges": "0" + }, + "stateCount": 5 + }, + "minecraft:rooted_dirt": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:rose_bush": { + "properties": { + "half": [ + "upper", + "lower" + ] + }, + "defaultProperties": { + "half": "lower" + }, + "stateCount": 2 + }, + "minecraft:sand": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:sandstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:sandstone_slab": { + "properties": { + "type": [ + "top", + "bottom", + "double" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:sandstone_stairs": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "shape": [ + "straight", + "inner_left", + "inner_right", + "outer_left", + "outer_right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:sandstone_wall": { + "properties": { + "east": [ + "none", + "low", + "tall" + ], + "north": [ + "none", + "low", + "tall" + ], + "south": [ + "none", + "low", + "tall" + ], + "up": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "none", + "low", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:scaffolding": { + "properties": { + "bottom": [ + "true", + "false" + ], + "distance": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "bottom": "false", + "distance": "7", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:sculk": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:sculk_catalyst": { + "properties": { + "bloom": [ + "true", + "false" + ] + }, + "defaultProperties": { + "bloom": "false" + }, + "stateCount": 2 + }, + "minecraft:sculk_sensor": { + "properties": { + "power": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15" + ], + "sculk_sensor_phase": [ + "inactive", + "active", + "cooldown" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "power": "0", + "sculk_sensor_phase": "inactive", + "waterlogged": "false" + }, + "stateCount": 96 + }, + "minecraft:sculk_shrieker": { + "properties": { + "can_summon": [ + "true", + "false" + ], + "shrieking": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "can_summon": "false", + "shrieking": "false", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:sculk_vein": { + "properties": { + "down": [ + "true", + "false" + ], + "east": [ + "true", + "false" + ], + "north": [ + "true", + "false" + ], + "south": [ + "true", + "false" + ], + "up": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "true", + "false" + ] + }, + "defaultProperties": { + "down": "false", + "east": "false", + "north": "false", + "south": "false", + "up": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 128 + }, + "minecraft:sea_lantern": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:sea_pickle": { + "properties": { + "pickles": [ + "1", + "2", + "3", + "4" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "pickles": "1", + "waterlogged": "true" + }, + "stateCount": 8 + }, + "minecraft:seagrass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:short_dry_grass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:short_grass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:shroomlight": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:shulker_box": { + "properties": { + "facing": [ + "north", + "east", + "south", + "west", + "up", + "down" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:skeleton_skull": { + "properties": { + "powered": [ + "true", + "false" + ], + "rotation": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15" + ] + }, + "defaultProperties": { + "powered": "false", + "rotation": "0" + }, + "stateCount": 32 + }, + "minecraft:skeleton_wall_skull": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false" + }, + "stateCount": 8 + }, + "minecraft:slime_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:small_amethyst_bud": { + "properties": { + "facing": [ + "north", + "east", + "south", + "west", + "up", + "down" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "up", + "waterlogged": "false" + }, + "stateCount": 12 + }, + "minecraft:small_dripleaf": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "upper", + "lower" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:smithing_table": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:smoker": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "lit": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "lit": "false" + }, + "stateCount": 8 + }, + "minecraft:smooth_basalt": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:smooth_quartz": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:smooth_quartz_slab": { + "properties": { + "type": [ + "top", + "bottom", + "double" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:smooth_quartz_stairs": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "shape": [ + "straight", + "inner_left", + "inner_right", + "outer_left", + "outer_right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:smooth_red_sandstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:smooth_red_sandstone_slab": { + "properties": { + "type": [ + "top", + "bottom", + "double" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:smooth_red_sandstone_stairs": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "shape": [ + "straight", + "inner_left", + "inner_right", + "outer_left", + "outer_right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:smooth_sandstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:smooth_sandstone_slab": { + "properties": { + "type": [ + "top", + "bottom", + "double" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:smooth_sandstone_stairs": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "shape": [ + "straight", + "inner_left", + "inner_right", + "outer_left", + "outer_right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:smooth_stone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:smooth_stone_slab": { + "properties": { + "type": [ + "top", + "bottom", + "double" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:sniffer_egg": { + "properties": { + "hatch": [ + "0", + "1", + "2" + ] + }, + "defaultProperties": { + "hatch": "0" + }, + "stateCount": 3 + }, + "minecraft:snow": { + "properties": { + "layers": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8" + ] + }, + "defaultProperties": { + "layers": "1" + }, + "stateCount": 8 + }, + "minecraft:snow_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:soul_campfire": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "lit": [ + "true", + "false" + ], + "signal_fire": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "lit": "true", + "signal_fire": "false", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:soul_fire": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:soul_lantern": { + "properties": { + "hanging": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "hanging": "false", + "waterlogged": "false" + }, + "stateCount": 4 + }, + "minecraft:soul_sand": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:soul_soil": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:soul_torch": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:soul_wall_torch": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:spawner": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:sponge": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:spore_blossom": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:spruce_button": { + "properties": { + "face": [ + "floor", + "wall", + "ceiling" + ], + "facing": [ + "north", + "south", + "west", + "east" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:spruce_door": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "upper", + "lower" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:spruce_fence": { + "properties": { + "east": [ + "true", + "false" + ], + "north": [ + "true", + "false" + ], + "south": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "true", + "false" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:spruce_fence_gate": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "in_wall": [ + "true", + "false" + ], + "open": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "in_wall": "false", + "open": "false", + "powered": "false" + }, + "stateCount": 32 + }, + "minecraft:spruce_hanging_sign": { + "properties": { + "attached": [ + "true", + "false" + ], + "rotation": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "attached": "false", + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:spruce_leaves": { + "properties": { + "distance": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ], + "persistent": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "distance": "7", + "persistent": "false", + "waterlogged": "false" + }, + "stateCount": 28 + }, + "minecraft:spruce_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:spruce_planks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:spruce_pressure_plate": { + "properties": { + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:spruce_sapling": { + "properties": { + "stage": [ + "0", + "1" + ] + }, + "defaultProperties": { + "stage": "0" + }, + "stateCount": 2 + }, + "minecraft:spruce_shelf": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "powered": [ + "true", + "false" + ], + "side_chain": [ + "unconnected", + "right", + "center", + "left" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false", + "side_chain": "unconnected", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:spruce_sign": { + "properties": { + "rotation": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:spruce_slab": { + "properties": { + "type": [ + "top", + "bottom", + "double" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:spruce_stairs": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "shape": [ + "straight", + "inner_left", + "inner_right", + "outer_left", + "outer_right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:spruce_trapdoor": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "open": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:spruce_wall_hanging_sign": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:spruce_wall_sign": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:spruce_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:sticky_piston": { + "properties": { + "extended": [ + "true", + "false" + ], + "facing": [ + "north", + "east", + "south", + "west", + "up", + "down" + ] + }, + "defaultProperties": { + "extended": "false", + "facing": "north" + }, + "stateCount": 12 + }, + "minecraft:stone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:stone_brick_slab": { + "properties": { + "type": [ + "top", + "bottom", + "double" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:stone_brick_stairs": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "shape": [ + "straight", + "inner_left", + "inner_right", + "outer_left", + "outer_right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:stone_brick_wall": { + "properties": { + "east": [ + "none", + "low", + "tall" + ], + "north": [ + "none", + "low", + "tall" + ], + "south": [ + "none", + "low", + "tall" + ], + "up": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "none", + "low", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:stone_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:stone_button": { + "properties": { + "face": [ + "floor", + "wall", + "ceiling" + ], + "facing": [ + "north", + "south", + "west", + "east" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:stone_pressure_plate": { + "properties": { + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:stone_slab": { + "properties": { + "type": [ + "top", + "bottom", + "double" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:stone_stairs": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "shape": [ + "straight", + "inner_left", + "inner_right", + "outer_left", + "outer_right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:stonecutter": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:stripped_acacia_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_acacia_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_bamboo_block": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_birch_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_birch_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_cherry_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_cherry_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_crimson_hyphae": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_crimson_stem": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_dark_oak_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_dark_oak_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_jungle_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_jungle_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_mangrove_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_mangrove_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_oak_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_oak_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_pale_oak_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_pale_oak_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_spruce_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_spruce_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_warped_hyphae": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_warped_stem": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:structure_block": { + "properties": { + "mode": [ + "save", + "load", + "corner", + "data" + ] + }, + "defaultProperties": { + "mode": "load" + }, + "stateCount": 4 + }, + "minecraft:structure_void": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:sugar_cane": { + "properties": { + "age": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 16 + }, + "minecraft:sunflower": { + "properties": { + "half": [ + "upper", + "lower" + ] + }, + "defaultProperties": { + "half": "lower" + }, + "stateCount": 2 + }, + "minecraft:suspicious_gravel": { + "properties": { + "dusted": [ + "0", + "1", + "2", + "3" + ] + }, + "defaultProperties": { + "dusted": "0" + }, + "stateCount": 4 + }, + "minecraft:suspicious_sand": { + "properties": { + "dusted": [ + "0", + "1", + "2", + "3" + ] + }, + "defaultProperties": { + "dusted": "0" + }, + "stateCount": 4 + }, + "minecraft:sweet_berry_bush": { + "properties": { + "age": [ + "0", + "1", + "2", + "3" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 4 + }, + "minecraft:tall_dry_grass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:tall_grass": { + "properties": { + "half": [ + "upper", + "lower" + ] + }, + "defaultProperties": { + "half": "lower" + }, + "stateCount": 2 + }, + "minecraft:tall_seagrass": { + "properties": { + "half": [ + "upper", + "lower" + ] + }, + "defaultProperties": { + "half": "lower" + }, + "stateCount": 2 + }, + "minecraft:target": { + "properties": { + "power": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15" + ] + }, + "defaultProperties": { + "power": "0" + }, + "stateCount": 16 + }, + "minecraft:terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:test_block": { + "properties": { + "mode": [ + "start", + "log", + "fail", + "accept" + ] + }, + "defaultProperties": { + "mode": "start" + }, + "stateCount": 4 + }, + "minecraft:test_instance_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:tinted_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:tnt": { + "properties": { + "unstable": [ + "true", + "false" + ] + }, + "defaultProperties": { + "unstable": "false" + }, + "stateCount": 2 + }, + "minecraft:torch": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:torchflower": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:torchflower_crop": { + "properties": { + "age": [ + "0", + "1" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 2 + }, + "minecraft:trapped_chest": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "type": [ + "single", + "left", + "right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "type": "single", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:trial_spawner": { + "properties": { + "ominous": [ + "true", + "false" + ], + "trial_spawner_state": [ + "inactive", + "waiting_for_players", + "active", + "waiting_for_reward_ejection", + "ejecting_reward", + "cooldown" + ] + }, + "defaultProperties": { + "ominous": "false", + "trial_spawner_state": "inactive" + }, + "stateCount": 12 + }, + "minecraft:tripwire": { + "properties": { + "attached": [ + "true", + "false" + ], + "disarmed": [ + "true", + "false" + ], + "east": [ + "true", + "false" + ], + "north": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ], + "south": [ + "true", + "false" + ], + "west": [ + "true", + "false" + ] + }, + "defaultProperties": { + "attached": "false", + "disarmed": "false", + "east": "false", + "north": "false", + "powered": "false", + "south": "false", + "west": "false" + }, + "stateCount": 128 + }, + "minecraft:tripwire_hook": { + "properties": { + "attached": [ + "true", + "false" + ], + "facing": [ + "north", + "south", + "west", + "east" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "attached": "false", + "facing": "north", + "powered": "false" + }, + "stateCount": 16 + }, + "minecraft:tube_coral": { + "properties": { + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:tube_coral_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:tube_coral_fan": { + "properties": { + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:tube_coral_wall_fan": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "true" + }, + "stateCount": 8 + }, + "minecraft:tuff": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:tuff_brick_slab": { + "properties": { + "type": [ + "top", + "bottom", + "double" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:tuff_brick_stairs": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "shape": [ + "straight", + "inner_left", + "inner_right", + "outer_left", + "outer_right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:tuff_brick_wall": { + "properties": { + "east": [ + "none", + "low", + "tall" + ], + "north": [ + "none", + "low", + "tall" + ], + "south": [ + "none", + "low", + "tall" + ], + "up": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "none", + "low", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:tuff_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:tuff_slab": { + "properties": { + "type": [ + "top", + "bottom", + "double" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:tuff_stairs": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "shape": [ + "straight", + "inner_left", + "inner_right", + "outer_left", + "outer_right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:tuff_wall": { + "properties": { + "east": [ + "none", + "low", + "tall" + ], + "north": [ + "none", + "low", + "tall" + ], + "south": [ + "none", + "low", + "tall" + ], + "up": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "none", + "low", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:turtle_egg": { + "properties": { + "eggs": [ + "1", + "2", + "3", + "4" + ], + "hatch": [ + "0", + "1", + "2" + ] + }, + "defaultProperties": { + "eggs": "1", + "hatch": "0" + }, + "stateCount": 12 + }, + "minecraft:twisting_vines": { + "properties": { + "age": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15", + "16", + "17", + "18", + "19", + "20", + "21", + "22", + "23", + "24", + "25" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 26 + }, + "minecraft:twisting_vines_plant": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:vault": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "ominous": [ + "true", + "false" + ], + "vault_state": [ + "inactive", + "active", + "unlocking", + "ejecting" + ] + }, + "defaultProperties": { + "facing": "north", + "ominous": "false", + "vault_state": "inactive" + }, + "stateCount": 32 + }, + "minecraft:verdant_froglight": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:vine": { + "properties": { + "east": [ + "true", + "false" + ], + "north": [ + "true", + "false" + ], + "south": [ + "true", + "false" + ], + "up": [ + "true", + "false" + ], + "west": [ + "true", + "false" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "up": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:void_air": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:wall_torch": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:warped_button": { + "properties": { + "face": [ + "floor", + "wall", + "ceiling" + ], + "facing": [ + "north", + "south", + "west", + "east" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:warped_door": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "upper", + "lower" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:warped_fence": { + "properties": { + "east": [ + "true", + "false" + ], + "north": [ + "true", + "false" + ], + "south": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "true", + "false" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:warped_fence_gate": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "in_wall": [ + "true", + "false" + ], + "open": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "in_wall": "false", + "open": "false", + "powered": "false" + }, + "stateCount": 32 + }, + "minecraft:warped_fungus": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:warped_hanging_sign": { + "properties": { + "attached": [ + "true", + "false" + ], + "rotation": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "attached": "false", + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:warped_hyphae": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:warped_nylium": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:warped_planks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:warped_pressure_plate": { + "properties": { + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:warped_roots": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:warped_shelf": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "powered": [ + "true", + "false" + ], + "side_chain": [ + "unconnected", + "right", + "center", + "left" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false", + "side_chain": "unconnected", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:warped_sign": { + "properties": { + "rotation": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "rotation": "0", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:warped_slab": { + "properties": { + "type": [ + "top", + "bottom", + "double" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:warped_stairs": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "shape": [ + "straight", + "inner_left", + "inner_right", + "outer_left", + "outer_right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:warped_stem": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:warped_trapdoor": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "open": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:warped_wall_hanging_sign": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:warped_wall_sign": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:warped_wart_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:water": { + "properties": { + "level": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15" + ] + }, + "defaultProperties": { + "level": "0" + }, + "stateCount": 16 + }, + "minecraft:water_cauldron": { + "properties": { + "level": [ + "1", + "2", + "3" + ] + }, + "defaultProperties": { + "level": "1" + }, + "stateCount": 3 + }, + "minecraft:waxed_chiseled_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:waxed_copper_bars": { + "properties": { + "east": [ + "true", + "false" + ], + "north": [ + "true", + "false" + ], + "south": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "true", + "false" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:waxed_copper_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:waxed_copper_bulb": { + "properties": { + "lit": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "lit": "false", + "powered": "false" + }, + "stateCount": 4 + }, + "minecraft:waxed_copper_chain": { + "properties": { + "axis": [ + "x", + "y", + "z" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "axis": "y", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:waxed_copper_chest": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "type": [ + "single", + "left", + "right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "type": "single", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:waxed_copper_door": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "upper", + "lower" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:waxed_copper_golem_statue": { + "properties": { + "copper_golem_pose": [ + "standing", + "sitting", + "running", + "star" + ], + "facing": [ + "north", + "south", + "west", + "east" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "copper_golem_pose": "standing", + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:waxed_copper_grate": { + "properties": { + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "waterlogged": "false" + }, + "stateCount": 2 + }, + "minecraft:waxed_copper_lantern": { + "properties": { + "hanging": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "hanging": "false", + "waterlogged": "false" + }, + "stateCount": 4 + }, + "minecraft:waxed_copper_trapdoor": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "open": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:waxed_cut_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:waxed_cut_copper_slab": { + "properties": { + "type": [ + "top", + "bottom", + "double" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:waxed_cut_copper_stairs": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "shape": [ + "straight", + "inner_left", + "inner_right", + "outer_left", + "outer_right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:waxed_exposed_chiseled_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:waxed_exposed_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:waxed_exposed_copper_bars": { + "properties": { + "east": [ + "true", + "false" + ], + "north": [ + "true", + "false" + ], + "south": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "true", + "false" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:waxed_exposed_copper_bulb": { + "properties": { + "lit": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "lit": "false", + "powered": "false" + }, + "stateCount": 4 + }, + "minecraft:waxed_exposed_copper_chain": { + "properties": { + "axis": [ + "x", + "y", + "z" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "axis": "y", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:waxed_exposed_copper_chest": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "type": [ + "single", + "left", + "right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "type": "single", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:waxed_exposed_copper_door": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "upper", + "lower" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:waxed_exposed_copper_golem_statue": { + "properties": { + "copper_golem_pose": [ + "standing", + "sitting", + "running", + "star" + ], + "facing": [ + "north", + "south", + "west", + "east" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "copper_golem_pose": "standing", + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:waxed_exposed_copper_grate": { + "properties": { + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "waterlogged": "false" + }, + "stateCount": 2 + }, + "minecraft:waxed_exposed_copper_lantern": { + "properties": { + "hanging": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "hanging": "false", + "waterlogged": "false" + }, + "stateCount": 4 + }, + "minecraft:waxed_exposed_copper_trapdoor": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "open": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:waxed_exposed_cut_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:waxed_exposed_cut_copper_slab": { + "properties": { + "type": [ + "top", + "bottom", + "double" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:waxed_exposed_cut_copper_stairs": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "shape": [ + "straight", + "inner_left", + "inner_right", + "outer_left", + "outer_right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:waxed_exposed_lightning_rod": { + "properties": { + "facing": [ + "north", + "east", + "south", + "west", + "up", + "down" + ], + "powered": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "up", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:waxed_lightning_rod": { + "properties": { + "facing": [ + "north", + "east", + "south", + "west", + "up", + "down" + ], + "powered": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "up", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:waxed_oxidized_chiseled_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:waxed_oxidized_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:waxed_oxidized_copper_bars": { + "properties": { + "east": [ + "true", + "false" + ], + "north": [ + "true", + "false" + ], + "south": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "true", + "false" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:waxed_oxidized_copper_bulb": { + "properties": { + "lit": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "lit": "false", + "powered": "false" + }, + "stateCount": 4 + }, + "minecraft:waxed_oxidized_copper_chain": { + "properties": { + "axis": [ + "x", + "y", + "z" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "axis": "y", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:waxed_oxidized_copper_chest": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "type": [ + "single", + "left", + "right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "type": "single", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:waxed_oxidized_copper_door": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "upper", + "lower" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:waxed_oxidized_copper_golem_statue": { + "properties": { + "copper_golem_pose": [ + "standing", + "sitting", + "running", + "star" + ], + "facing": [ + "north", + "south", + "west", + "east" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "copper_golem_pose": "standing", + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:waxed_oxidized_copper_grate": { + "properties": { + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "waterlogged": "false" + }, + "stateCount": 2 + }, + "minecraft:waxed_oxidized_copper_lantern": { + "properties": { + "hanging": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "hanging": "false", + "waterlogged": "false" + }, + "stateCount": 4 + }, + "minecraft:waxed_oxidized_copper_trapdoor": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "open": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:waxed_oxidized_cut_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:waxed_oxidized_cut_copper_slab": { + "properties": { + "type": [ + "top", + "bottom", + "double" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:waxed_oxidized_cut_copper_stairs": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "shape": [ + "straight", + "inner_left", + "inner_right", + "outer_left", + "outer_right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:waxed_oxidized_lightning_rod": { + "properties": { + "facing": [ + "north", + "east", + "south", + "west", + "up", + "down" + ], + "powered": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "up", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:waxed_weathered_chiseled_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:waxed_weathered_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:waxed_weathered_copper_bars": { + "properties": { + "east": [ + "true", + "false" + ], + "north": [ + "true", + "false" + ], + "south": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "true", + "false" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:waxed_weathered_copper_bulb": { + "properties": { + "lit": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "lit": "false", + "powered": "false" + }, + "stateCount": 4 + }, + "minecraft:waxed_weathered_copper_chain": { + "properties": { + "axis": [ + "x", + "y", + "z" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "axis": "y", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:waxed_weathered_copper_chest": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "type": [ + "single", + "left", + "right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "type": "single", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:waxed_weathered_copper_door": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "upper", + "lower" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:waxed_weathered_copper_golem_statue": { + "properties": { + "copper_golem_pose": [ + "standing", + "sitting", + "running", + "star" + ], + "facing": [ + "north", + "south", + "west", + "east" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "copper_golem_pose": "standing", + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:waxed_weathered_copper_grate": { + "properties": { + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "waterlogged": "false" + }, + "stateCount": 2 + }, + "minecraft:waxed_weathered_copper_lantern": { + "properties": { + "hanging": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "hanging": "false", + "waterlogged": "false" + }, + "stateCount": 4 + }, + "minecraft:waxed_weathered_copper_trapdoor": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "open": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:waxed_weathered_cut_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:waxed_weathered_cut_copper_slab": { + "properties": { + "type": [ + "top", + "bottom", + "double" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:waxed_weathered_cut_copper_stairs": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "shape": [ + "straight", + "inner_left", + "inner_right", + "outer_left", + "outer_right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:waxed_weathered_lightning_rod": { + "properties": { + "facing": [ + "north", + "east", + "south", + "west", + "up", + "down" + ], + "powered": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "up", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:weathered_chiseled_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:weathered_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:weathered_copper_bars": { + "properties": { + "east": [ + "true", + "false" + ], + "north": [ + "true", + "false" + ], + "south": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "true", + "false" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:weathered_copper_bulb": { + "properties": { + "lit": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "lit": "false", + "powered": "false" + }, + "stateCount": 4 + }, + "minecraft:weathered_copper_chain": { + "properties": { + "axis": [ + "x", + "y", + "z" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "axis": "y", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:weathered_copper_chest": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "type": [ + "single", + "left", + "right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "type": "single", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:weathered_copper_door": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "upper", + "lower" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:weathered_copper_golem_statue": { + "properties": { + "copper_golem_pose": [ + "standing", + "sitting", + "running", + "star" + ], + "facing": [ + "north", + "south", + "west", + "east" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "copper_golem_pose": "standing", + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:weathered_copper_grate": { + "properties": { + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "waterlogged": "false" + }, + "stateCount": 2 + }, + "minecraft:weathered_copper_lantern": { + "properties": { + "hanging": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "hanging": "false", + "waterlogged": "false" + }, + "stateCount": 4 + }, + "minecraft:weathered_copper_trapdoor": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "open": [ + "true", + "false" + ], + "powered": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:weathered_cut_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:weathered_cut_copper_slab": { + "properties": { + "type": [ + "top", + "bottom", + "double" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:weathered_cut_copper_stairs": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "half": [ + "top", + "bottom" + ], + "shape": [ + "straight", + "inner_left", + "inner_right", + "outer_left", + "outer_right" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:weathered_lightning_rod": { + "properties": { + "facing": [ + "north", + "east", + "south", + "west", + "up", + "down" + ], + "powered": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "up", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:weeping_vines": { + "properties": { + "age": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15", + "16", + "17", + "18", + "19", + "20", + "21", + "22", + "23", + "24", + "25" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 26 + }, + "minecraft:weeping_vines_plant": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:wet_sponge": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:wheat": { + "properties": { + "age": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 8 + }, + "minecraft:white_banner": { + "properties": { + "rotation": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:white_bed": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "occupied": [ + "true", + "false" + ], + "part": [ + "head", + "foot" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:white_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:white_candle_cake": { + "properties": { + "lit": [ + "true", + "false" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:white_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:white_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:white_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:white_glazed_terracotta": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:white_shulker_box": { + "properties": { + "facing": [ + "north", + "east", + "south", + "west", + "up", + "down" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:white_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:white_stained_glass_pane": { + "properties": { + "east": [ + "true", + "false" + ], + "north": [ + "true", + "false" + ], + "south": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "true", + "false" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:white_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:white_tulip": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:white_wall_banner": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:white_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:wildflowers": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "flower_amount": [ + "1", + "2", + "3", + "4" + ] + }, + "defaultProperties": { + "facing": "north", + "flower_amount": "1" + }, + "stateCount": 16 + }, + "minecraft:wither_rose": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:wither_skeleton_skull": { + "properties": { + "powered": [ + "true", + "false" + ], + "rotation": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15" + ] + }, + "defaultProperties": { + "powered": "false", + "rotation": "0" + }, + "stateCount": 32 + }, + "minecraft:wither_skeleton_wall_skull": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false" + }, + "stateCount": 8 + }, + "minecraft:yellow_banner": { + "properties": { + "rotation": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15" + ] + }, + "defaultProperties": { + "rotation": "0" + }, + "stateCount": 16 + }, + "minecraft:yellow_bed": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "occupied": [ + "true", + "false" + ], + "part": [ + "head", + "foot" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:yellow_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:yellow_candle_cake": { + "properties": { + "lit": [ + "true", + "false" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:yellow_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:yellow_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:yellow_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:yellow_glazed_terracotta": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:yellow_shulker_box": { + "properties": { + "facing": [ + "north", + "east", + "south", + "west", + "up", + "down" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:yellow_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:yellow_stained_glass_pane": { + "properties": { + "east": [ + "true", + "false" + ], + "north": [ + "true", + "false" + ], + "south": [ + "true", + "false" + ], + "waterlogged": [ + "true", + "false" + ], + "west": [ + "true", + "false" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:yellow_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:yellow_wall_banner": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:yellow_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:zombie_head": { + "properties": { + "powered": [ + "true", + "false" + ], + "rotation": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "14", + "15" + ] + }, + "defaultProperties": { + "powered": "false", + "rotation": "0" + }, + "stateCount": 32 + }, + "minecraft:zombie_wall_head": { + "properties": { + "facing": [ + "north", + "south", + "west", + "east" + ], + "powered": [ + "true", + "false" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false" + }, + "stateCount": 8 + } + } +} diff --git a/src/main/resources/mapping/block_states/java_26_2.json b/src/main/resources/mapping/block_states/java_26_2.json new file mode 100644 index 00000000..eb133641 --- /dev/null +++ b/src/main/resources/mapping/block_states/java_26_2.json @@ -0,0 +1,20416 @@ +{ + "version": "26.2", + "dataVersion": 4903, + "source": "Mojang server reports/blocks.json generated from 26.2 server.jar", + "blocks": { + "minecraft:acacia_button": { + "properties": { + "face": [ + "ceiling", + "floor", + "wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:acacia_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:acacia_fence": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:acacia_fence_gate": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "in_wall": [ + "false", + "true" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "in_wall": "false", + "open": "false", + "powered": "false" + }, + "stateCount": 32 + }, + "minecraft:acacia_hanging_sign": { + "properties": { + "attached": [ + "false", + "true" + ], + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "attached": "false", + "rotation": "8", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:acacia_leaves": { + "properties": { + "distance": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ], + "persistent": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "distance": "7", + "persistent": "false", + "waterlogged": "false" + }, + "stateCount": 28 + }, + "minecraft:acacia_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:acacia_planks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:acacia_pressure_plate": { + "properties": { + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:acacia_sapling": { + "properties": { + "stage": [ + "0", + "1" + ] + }, + "defaultProperties": { + "stage": "0" + }, + "stateCount": 2 + }, + "minecraft:acacia_shelf": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ], + "side_chain": [ + "center", + "left", + "right", + "unconnected" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false", + "side_chain": "unconnected", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:acacia_sign": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "rotation": "8", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:acacia_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:acacia_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:acacia_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:acacia_wall_hanging_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:acacia_wall_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:acacia_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:activator_rail": { + "properties": { + "powered": [ + "false", + "true" + ], + "shape": [ + "ascending_east", + "ascending_north", + "ascending_south", + "ascending_west", + "east_west", + "north_south" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false", + "shape": "north_south", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:air": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:allium": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:amethyst_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:amethyst_cluster": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "up", + "waterlogged": "false" + }, + "stateCount": 12 + }, + "minecraft:ancient_debris": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:andesite": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:andesite_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:andesite_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:andesite_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:anvil": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:attached_melon_stem": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:attached_pumpkin_stem": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:azalea": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:azalea_leaves": { + "properties": { + "distance": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ], + "persistent": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "distance": "7", + "persistent": "false", + "waterlogged": "false" + }, + "stateCount": 28 + }, + "minecraft:azure_bluet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:bamboo": { + "properties": { + "age": [ + "0", + "1" + ], + "leaves": [ + "large", + "none", + "small" + ], + "stage": [ + "0", + "1" + ] + }, + "defaultProperties": { + "age": "0", + "leaves": "none", + "stage": "0" + }, + "stateCount": 12 + }, + "minecraft:bamboo_block": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:bamboo_button": { + "properties": { + "face": [ + "ceiling", + "floor", + "wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:bamboo_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:bamboo_fence": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:bamboo_fence_gate": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "in_wall": [ + "false", + "true" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "in_wall": "false", + "open": "false", + "powered": "false" + }, + "stateCount": 32 + }, + "minecraft:bamboo_hanging_sign": { + "properties": { + "attached": [ + "false", + "true" + ], + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "attached": "false", + "rotation": "8", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:bamboo_mosaic": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:bamboo_mosaic_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:bamboo_mosaic_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:bamboo_planks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:bamboo_pressure_plate": { + "properties": { + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:bamboo_sapling": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:bamboo_shelf": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ], + "side_chain": [ + "center", + "left", + "right", + "unconnected" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false", + "side_chain": "unconnected", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:bamboo_sign": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "rotation": "8", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:bamboo_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:bamboo_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:bamboo_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:bamboo_wall_hanging_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:bamboo_wall_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:barrel": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ], + "open": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "open": "false" + }, + "stateCount": 12 + }, + "minecraft:barrier": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "false" + }, + "stateCount": 2 + }, + "minecraft:basalt": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:beacon": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:bedrock": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:bee_nest": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "honey_level": [ + "0", + "1", + "2", + "3", + "4", + "5" + ] + }, + "defaultProperties": { + "facing": "north", + "honey_level": "0" + }, + "stateCount": 24 + }, + "minecraft:beehive": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "honey_level": [ + "0", + "1", + "2", + "3", + "4", + "5" + ] + }, + "defaultProperties": { + "facing": "north", + "honey_level": "0" + }, + "stateCount": 24 + }, + "minecraft:beetroots": { + "properties": { + "age": [ + "0", + "1", + "2", + "3" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 4 + }, + "minecraft:bell": { + "properties": { + "attachment": [ + "ceiling", + "double_wall", + "floor", + "single_wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "attachment": "floor", + "facing": "north", + "powered": "false" + }, + "stateCount": 32 + }, + "minecraft:big_dripleaf": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "tilt": [ + "full", + "none", + "partial", + "unstable" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "tilt": "none", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:big_dripleaf_stem": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:birch_button": { + "properties": { + "face": [ + "ceiling", + "floor", + "wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:birch_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:birch_fence": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:birch_fence_gate": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "in_wall": [ + "false", + "true" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "in_wall": "false", + "open": "false", + "powered": "false" + }, + "stateCount": 32 + }, + "minecraft:birch_hanging_sign": { + "properties": { + "attached": [ + "false", + "true" + ], + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "attached": "false", + "rotation": "8", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:birch_leaves": { + "properties": { + "distance": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ], + "persistent": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "distance": "7", + "persistent": "false", + "waterlogged": "false" + }, + "stateCount": 28 + }, + "minecraft:birch_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:birch_planks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:birch_pressure_plate": { + "properties": { + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:birch_sapling": { + "properties": { + "stage": [ + "0", + "1" + ] + }, + "defaultProperties": { + "stage": "0" + }, + "stateCount": 2 + }, + "minecraft:birch_shelf": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ], + "side_chain": [ + "center", + "left", + "right", + "unconnected" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false", + "side_chain": "unconnected", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:birch_sign": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "rotation": "8", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:birch_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:birch_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:birch_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:birch_wall_hanging_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:birch_wall_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:birch_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:black_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "8" + }, + "stateCount": 16 + }, + "minecraft:black_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:black_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:black_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:black_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:black_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:black_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:black_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:black_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:black_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:black_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:black_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:black_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:black_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:blackstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:blackstone_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:blackstone_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:blackstone_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:blast_furnace": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "lit": "false" + }, + "stateCount": 8 + }, + "minecraft:blue_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "8" + }, + "stateCount": 16 + }, + "minecraft:blue_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:blue_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:blue_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:blue_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:blue_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:blue_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:blue_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:blue_ice": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:blue_orchid": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:blue_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:blue_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:blue_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:blue_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:blue_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:blue_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:bone_block": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:bookshelf": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:brain_coral": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:brain_coral_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:brain_coral_fan": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:brain_coral_wall_fan": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "true" + }, + "stateCount": 8 + }, + "minecraft:brewing_stand": { + "properties": { + "has_bottle_0": [ + "false", + "true" + ], + "has_bottle_1": [ + "false", + "true" + ], + "has_bottle_2": [ + "false", + "true" + ] + }, + "defaultProperties": { + "has_bottle_0": "false", + "has_bottle_1": "false", + "has_bottle_2": "false" + }, + "stateCount": 8 + }, + "minecraft:brick_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:brick_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:brick_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:brown_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "8" + }, + "stateCount": 16 + }, + "minecraft:brown_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:brown_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:brown_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:brown_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:brown_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:brown_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:brown_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:brown_mushroom": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:brown_mushroom_block": { + "properties": { + "down": [ + "false", + "true" + ], + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "up": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "down": "true", + "east": "true", + "north": "true", + "south": "true", + "up": "true", + "west": "true" + }, + "stateCount": 64 + }, + "minecraft:brown_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:brown_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:brown_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:brown_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:brown_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:brown_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:bubble_column": { + "properties": { + "drag": [ + "false", + "true" + ] + }, + "defaultProperties": { + "drag": "true" + }, + "stateCount": 2 + }, + "minecraft:bubble_coral": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:bubble_coral_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:bubble_coral_fan": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:bubble_coral_wall_fan": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "true" + }, + "stateCount": 8 + }, + "minecraft:budding_amethyst": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:bush": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cactus": { + "properties": { + "age": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 16 + }, + "minecraft:cactus_flower": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cake": { + "properties": { + "bites": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6" + ] + }, + "defaultProperties": { + "bites": "0" + }, + "stateCount": 7 + }, + "minecraft:calcite": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:calibrated_sculk_sensor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "power": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "sculk_sensor_phase": [ + "active", + "cooldown", + "inactive" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "power": "0", + "sculk_sensor_phase": "inactive", + "waterlogged": "false" + }, + "stateCount": 384 + }, + "minecraft:campfire": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "lit": [ + "false", + "true" + ], + "signal_fire": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "lit": "true", + "signal_fire": "false", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:carrots": { + "properties": { + "age": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 8 + }, + "minecraft:cartography_table": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:carved_pumpkin": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:cauldron": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cave_air": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cave_vines": { + "properties": { + "age": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "16", + "17", + "18", + "19", + "2", + "20", + "21", + "22", + "23", + "24", + "25", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "berries": [ + "false", + "true" + ] + }, + "defaultProperties": { + "age": "0", + "berries": "false" + }, + "stateCount": 52 + }, + "minecraft:cave_vines_plant": { + "properties": { + "berries": [ + "false", + "true" + ] + }, + "defaultProperties": { + "berries": "false" + }, + "stateCount": 2 + }, + "minecraft:chain_command_block": { + "properties": { + "conditional": [ + "false", + "true" + ], + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "conditional": "false", + "facing": "north" + }, + "stateCount": 12 + }, + "minecraft:cherry_button": { + "properties": { + "face": [ + "ceiling", + "floor", + "wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:cherry_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:cherry_fence": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:cherry_fence_gate": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "in_wall": [ + "false", + "true" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "in_wall": "false", + "open": "false", + "powered": "false" + }, + "stateCount": 32 + }, + "minecraft:cherry_hanging_sign": { + "properties": { + "attached": [ + "false", + "true" + ], + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "attached": "false", + "rotation": "8", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:cherry_leaves": { + "properties": { + "distance": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ], + "persistent": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "distance": "7", + "persistent": "false", + "waterlogged": "false" + }, + "stateCount": 28 + }, + "minecraft:cherry_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:cherry_planks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cherry_pressure_plate": { + "properties": { + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:cherry_sapling": { + "properties": { + "stage": [ + "0", + "1" + ] + }, + "defaultProperties": { + "stage": "0" + }, + "stateCount": 2 + }, + "minecraft:cherry_shelf": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ], + "side_chain": [ + "center", + "left", + "right", + "unconnected" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false", + "side_chain": "unconnected", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:cherry_sign": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "rotation": "8", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:cherry_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:cherry_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:cherry_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:cherry_wall_hanging_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:cherry_wall_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:cherry_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:chest": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "type": [ + "left", + "right", + "single" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "type": "single", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:chipped_anvil": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:chiseled_bookshelf": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "slot_0_occupied": [ + "false", + "true" + ], + "slot_1_occupied": [ + "false", + "true" + ], + "slot_2_occupied": [ + "false", + "true" + ], + "slot_3_occupied": [ + "false", + "true" + ], + "slot_4_occupied": [ + "false", + "true" + ], + "slot_5_occupied": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "slot_0_occupied": "false", + "slot_1_occupied": "false", + "slot_2_occupied": "false", + "slot_3_occupied": "false", + "slot_4_occupied": "false", + "slot_5_occupied": "false" + }, + "stateCount": 256 + }, + "minecraft:chiseled_cinnabar": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:chiseled_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:chiseled_deepslate": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:chiseled_nether_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:chiseled_polished_blackstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:chiseled_quartz_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:chiseled_red_sandstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:chiseled_resin_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:chiseled_sandstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:chiseled_stone_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:chiseled_sulfur": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:chiseled_tuff": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:chiseled_tuff_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:chorus_flower": { + "properties": { + "age": [ + "0", + "1", + "2", + "3", + "4", + "5" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 6 + }, + "minecraft:chorus_plant": { + "properties": { + "down": [ + "false", + "true" + ], + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "up": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "down": "false", + "east": "false", + "north": "false", + "south": "false", + "up": "false", + "west": "false" + }, + "stateCount": 64 + }, + "minecraft:cinnabar": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cinnabar_brick_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:cinnabar_brick_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:cinnabar_brick_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:cinnabar_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cinnabar_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:cinnabar_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:cinnabar_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:clay": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:closed_eyeblossom": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:coal_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:coal_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:coarse_dirt": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cobbled_deepslate": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cobbled_deepslate_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:cobbled_deepslate_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:cobbled_deepslate_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:cobblestone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cobblestone_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:cobblestone_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:cobblestone_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:cobweb": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cocoa": { + "properties": { + "age": [ + "0", + "1", + "2" + ], + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "age": "0", + "facing": "north" + }, + "stateCount": 12 + }, + "minecraft:command_block": { + "properties": { + "conditional": [ + "false", + "true" + ], + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "conditional": "false", + "facing": "north" + }, + "stateCount": 12 + }, + "minecraft:comparator": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "mode": [ + "compare", + "subtract" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "mode": "compare", + "powered": "false" + }, + "stateCount": 16 + }, + "minecraft:composter": { + "properties": { + "level": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8" + ] + }, + "defaultProperties": { + "level": "0" + }, + "stateCount": 9 + }, + "minecraft:conduit": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:copper_bars": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:copper_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:copper_bulb": { + "properties": { + "lit": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false", + "powered": "false" + }, + "stateCount": 4 + }, + "minecraft:copper_chain": { + "properties": { + "axis": [ + "x", + "y", + "z" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "axis": "y", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:copper_chest": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "type": [ + "left", + "right", + "single" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "type": "single", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:copper_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:copper_golem_statue": { + "properties": { + "copper_golem_pose": [ + "running", + "sitting", + "standing", + "star" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "copper_golem_pose": "standing", + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:copper_grate": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "false" + }, + "stateCount": 2 + }, + "minecraft:copper_lantern": { + "properties": { + "hanging": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "hanging": "false", + "waterlogged": "false" + }, + "stateCount": 4 + }, + "minecraft:copper_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:copper_torch": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:copper_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:copper_wall_torch": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:cornflower": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cracked_deepslate_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cracked_deepslate_tiles": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cracked_nether_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cracked_polished_blackstone_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cracked_stone_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:crafter": { + "properties": { + "crafting": [ + "false", + "true" + ], + "orientation": [ + "down_east", + "down_north", + "down_south", + "down_west", + "east_up", + "north_up", + "south_up", + "up_east", + "up_north", + "up_south", + "up_west", + "west_up" + ], + "triggered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "crafting": "false", + "orientation": "north_up", + "triggered": "false" + }, + "stateCount": 48 + }, + "minecraft:crafting_table": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:creaking_heart": { + "properties": { + "axis": [ + "x", + "y", + "z" + ], + "creaking_heart_state": [ + "awake", + "dormant", + "uprooted" + ], + "natural": [ + "false", + "true" + ] + }, + "defaultProperties": { + "axis": "y", + "creaking_heart_state": "uprooted", + "natural": "false" + }, + "stateCount": 18 + }, + "minecraft:creeper_head": { + "properties": { + "powered": [ + "false", + "true" + ], + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "powered": "false", + "rotation": "0" + }, + "stateCount": 32 + }, + "minecraft:creeper_wall_head": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false" + }, + "stateCount": 8 + }, + "minecraft:crimson_button": { + "properties": { + "face": [ + "ceiling", + "floor", + "wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:crimson_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:crimson_fence": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:crimson_fence_gate": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "in_wall": [ + "false", + "true" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "in_wall": "false", + "open": "false", + "powered": "false" + }, + "stateCount": 32 + }, + "minecraft:crimson_fungus": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:crimson_hanging_sign": { + "properties": { + "attached": [ + "false", + "true" + ], + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "attached": "false", + "rotation": "8", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:crimson_hyphae": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:crimson_nylium": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:crimson_planks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:crimson_pressure_plate": { + "properties": { + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:crimson_roots": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:crimson_shelf": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ], + "side_chain": [ + "center", + "left", + "right", + "unconnected" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false", + "side_chain": "unconnected", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:crimson_sign": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "rotation": "8", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:crimson_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:crimson_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:crimson_stem": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:crimson_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:crimson_wall_hanging_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:crimson_wall_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:crying_obsidian": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cut_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cut_copper_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:cut_copper_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:cut_red_sandstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cut_red_sandstone_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:cut_sandstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cut_sandstone_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:cyan_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "8" + }, + "stateCount": 16 + }, + "minecraft:cyan_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:cyan_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:cyan_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:cyan_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cyan_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cyan_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cyan_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:cyan_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:cyan_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cyan_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:cyan_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:cyan_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:cyan_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:damaged_anvil": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:dandelion": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dark_oak_button": { + "properties": { + "face": [ + "ceiling", + "floor", + "wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:dark_oak_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:dark_oak_fence": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:dark_oak_fence_gate": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "in_wall": [ + "false", + "true" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "in_wall": "false", + "open": "false", + "powered": "false" + }, + "stateCount": 32 + }, + "minecraft:dark_oak_hanging_sign": { + "properties": { + "attached": [ + "false", + "true" + ], + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "attached": "false", + "rotation": "8", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:dark_oak_leaves": { + "properties": { + "distance": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ], + "persistent": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "distance": "7", + "persistent": "false", + "waterlogged": "false" + }, + "stateCount": 28 + }, + "minecraft:dark_oak_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:dark_oak_planks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dark_oak_pressure_plate": { + "properties": { + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:dark_oak_sapling": { + "properties": { + "stage": [ + "0", + "1" + ] + }, + "defaultProperties": { + "stage": "0" + }, + "stateCount": 2 + }, + "minecraft:dark_oak_shelf": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ], + "side_chain": [ + "center", + "left", + "right", + "unconnected" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false", + "side_chain": "unconnected", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:dark_oak_sign": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "rotation": "8", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:dark_oak_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:dark_oak_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:dark_oak_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:dark_oak_wall_hanging_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:dark_oak_wall_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:dark_oak_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:dark_prismarine": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dark_prismarine_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:dark_prismarine_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:daylight_detector": { + "properties": { + "inverted": [ + "false", + "true" + ], + "power": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "inverted": "false", + "power": "0" + }, + "stateCount": 32 + }, + "minecraft:dead_brain_coral": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:dead_brain_coral_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dead_brain_coral_fan": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:dead_brain_coral_wall_fan": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "true" + }, + "stateCount": 8 + }, + "minecraft:dead_bubble_coral": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:dead_bubble_coral_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dead_bubble_coral_fan": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:dead_bubble_coral_wall_fan": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "true" + }, + "stateCount": 8 + }, + "minecraft:dead_bush": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dead_fire_coral": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:dead_fire_coral_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dead_fire_coral_fan": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:dead_fire_coral_wall_fan": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "true" + }, + "stateCount": 8 + }, + "minecraft:dead_horn_coral": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:dead_horn_coral_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dead_horn_coral_fan": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:dead_horn_coral_wall_fan": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "true" + }, + "stateCount": 8 + }, + "minecraft:dead_tube_coral": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:dead_tube_coral_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dead_tube_coral_fan": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:dead_tube_coral_wall_fan": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "true" + }, + "stateCount": 8 + }, + "minecraft:decorated_pot": { + "properties": { + "cracked": [ + "false", + "true" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "cracked": "false", + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:deepslate": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:deepslate_brick_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:deepslate_brick_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:deepslate_brick_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:deepslate_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:deepslate_coal_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:deepslate_copper_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:deepslate_diamond_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:deepslate_emerald_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:deepslate_gold_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:deepslate_iron_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:deepslate_lapis_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:deepslate_redstone_ore": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:deepslate_tile_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:deepslate_tile_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:deepslate_tile_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:deepslate_tiles": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:detector_rail": { + "properties": { + "powered": [ + "false", + "true" + ], + "shape": [ + "ascending_east", + "ascending_north", + "ascending_south", + "ascending_west", + "east_west", + "north_south" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false", + "shape": "north_south", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:diamond_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:diamond_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:diorite": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:diorite_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:diorite_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:diorite_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:dirt": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dirt_path": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dispenser": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ], + "triggered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "triggered": "false" + }, + "stateCount": 12 + }, + "minecraft:dragon_egg": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dragon_head": { + "properties": { + "powered": [ + "false", + "true" + ], + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "powered": "false", + "rotation": "0" + }, + "stateCount": 32 + }, + "minecraft:dragon_wall_head": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false" + }, + "stateCount": 8 + }, + "minecraft:dried_ghast": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "hydration": [ + "0", + "1", + "2", + "3" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "hydration": "0", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:dried_kelp_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dripstone_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:dropper": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ], + "triggered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "triggered": "false" + }, + "stateCount": 12 + }, + "minecraft:emerald_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:emerald_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:enchanting_table": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:end_gateway": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:end_portal": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:end_portal_frame": { + "properties": { + "eye": [ + "false", + "true" + ], + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "eye": "false", + "facing": "north" + }, + "stateCount": 8 + }, + "minecraft:end_rod": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:end_stone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:end_stone_brick_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:end_stone_brick_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:end_stone_brick_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:end_stone_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:ender_chest": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:exposed_chiseled_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:exposed_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:exposed_copper_bars": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:exposed_copper_bulb": { + "properties": { + "lit": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false", + "powered": "false" + }, + "stateCount": 4 + }, + "minecraft:exposed_copper_chain": { + "properties": { + "axis": [ + "x", + "y", + "z" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "axis": "y", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:exposed_copper_chest": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "type": [ + "left", + "right", + "single" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "type": "single", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:exposed_copper_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:exposed_copper_golem_statue": { + "properties": { + "copper_golem_pose": [ + "running", + "sitting", + "standing", + "star" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "copper_golem_pose": "standing", + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:exposed_copper_grate": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "false" + }, + "stateCount": 2 + }, + "minecraft:exposed_copper_lantern": { + "properties": { + "hanging": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "hanging": "false", + "waterlogged": "false" + }, + "stateCount": 4 + }, + "minecraft:exposed_copper_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:exposed_cut_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:exposed_cut_copper_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:exposed_cut_copper_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:exposed_lightning_rod": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "up", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:farmland": { + "properties": { + "moisture": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ] + }, + "defaultProperties": { + "moisture": "0" + }, + "stateCount": 8 + }, + "minecraft:fern": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:fire": { + "properties": { + "age": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "up": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "age": "0", + "east": "false", + "north": "false", + "south": "false", + "up": "false", + "west": "false" + }, + "stateCount": 512 + }, + "minecraft:fire_coral": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:fire_coral_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:fire_coral_fan": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:fire_coral_wall_fan": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "true" + }, + "stateCount": 8 + }, + "minecraft:firefly_bush": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:fletching_table": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:flower_pot": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:flowering_azalea": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:flowering_azalea_leaves": { + "properties": { + "distance": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ], + "persistent": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "distance": "7", + "persistent": "false", + "waterlogged": "false" + }, + "stateCount": 28 + }, + "minecraft:frogspawn": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:frosted_ice": { + "properties": { + "age": [ + "0", + "1", + "2", + "3" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 4 + }, + "minecraft:furnace": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "lit": "false" + }, + "stateCount": 8 + }, + "minecraft:gilded_blackstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:glow_lichen": { + "properties": { + "down": [ + "false", + "true" + ], + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "down": "false", + "east": "false", + "north": "false", + "south": "false", + "up": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 128 + }, + "minecraft:glowstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:gold_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:gold_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:golden_dandelion": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:granite": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:granite_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:granite_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:granite_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:grass_block": { + "properties": { + "snowy": [ + "false", + "true" + ] + }, + "defaultProperties": { + "snowy": "false" + }, + "stateCount": 2 + }, + "minecraft:gravel": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:gray_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "8" + }, + "stateCount": 16 + }, + "minecraft:gray_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:gray_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:gray_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:gray_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:gray_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:gray_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:gray_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:gray_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:gray_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:gray_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:gray_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:gray_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:gray_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:green_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "8" + }, + "stateCount": 16 + }, + "minecraft:green_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:green_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:green_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:green_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:green_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:green_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:green_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:green_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:green_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:green_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:green_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:green_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:green_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:grindstone": { + "properties": { + "face": [ + "ceiling", + "floor", + "wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north" + }, + "stateCount": 12 + }, + "minecraft:hanging_roots": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "false" + }, + "stateCount": 2 + }, + "minecraft:hay_block": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:heavy_core": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "false" + }, + "stateCount": 2 + }, + "minecraft:heavy_weighted_pressure_plate": { + "properties": { + "power": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "power": "0" + }, + "stateCount": 16 + }, + "minecraft:honey_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:honeycomb_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:hopper": { + "properties": { + "enabled": [ + "false", + "true" + ], + "facing": [ + "down", + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "enabled": "true", + "facing": "down" + }, + "stateCount": 10 + }, + "minecraft:horn_coral": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:horn_coral_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:horn_coral_fan": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:horn_coral_wall_fan": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "true" + }, + "stateCount": 8 + }, + "minecraft:ice": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:infested_chiseled_stone_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:infested_cobblestone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:infested_cracked_stone_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:infested_deepslate": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:infested_mossy_stone_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:infested_stone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:infested_stone_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:iron_bars": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:iron_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:iron_chain": { + "properties": { + "axis": [ + "x", + "y", + "z" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "axis": "y", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:iron_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:iron_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:iron_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:jack_o_lantern": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:jigsaw": { + "properties": { + "orientation": [ + "down_east", + "down_north", + "down_south", + "down_west", + "east_up", + "north_up", + "south_up", + "up_east", + "up_north", + "up_south", + "up_west", + "west_up" + ] + }, + "defaultProperties": { + "orientation": "north_up" + }, + "stateCount": 12 + }, + "minecraft:jukebox": { + "properties": { + "has_record": [ + "false", + "true" + ] + }, + "defaultProperties": { + "has_record": "false" + }, + "stateCount": 2 + }, + "minecraft:jungle_button": { + "properties": { + "face": [ + "ceiling", + "floor", + "wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:jungle_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:jungle_fence": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:jungle_fence_gate": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "in_wall": [ + "false", + "true" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "in_wall": "false", + "open": "false", + "powered": "false" + }, + "stateCount": 32 + }, + "minecraft:jungle_hanging_sign": { + "properties": { + "attached": [ + "false", + "true" + ], + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "attached": "false", + "rotation": "8", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:jungle_leaves": { + "properties": { + "distance": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ], + "persistent": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "distance": "7", + "persistent": "false", + "waterlogged": "false" + }, + "stateCount": 28 + }, + "minecraft:jungle_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:jungle_planks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:jungle_pressure_plate": { + "properties": { + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:jungle_sapling": { + "properties": { + "stage": [ + "0", + "1" + ] + }, + "defaultProperties": { + "stage": "0" + }, + "stateCount": 2 + }, + "minecraft:jungle_shelf": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ], + "side_chain": [ + "center", + "left", + "right", + "unconnected" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false", + "side_chain": "unconnected", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:jungle_sign": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "rotation": "8", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:jungle_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:jungle_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:jungle_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:jungle_wall_hanging_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:jungle_wall_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:jungle_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:kelp": { + "properties": { + "age": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "16", + "17", + "18", + "19", + "2", + "20", + "21", + "22", + "23", + "24", + "25", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 26 + }, + "minecraft:kelp_plant": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:ladder": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:lantern": { + "properties": { + "hanging": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "hanging": "false", + "waterlogged": "false" + }, + "stateCount": 4 + }, + "minecraft:lapis_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:lapis_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:large_amethyst_bud": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "up", + "waterlogged": "false" + }, + "stateCount": 12 + }, + "minecraft:large_fern": { + "properties": { + "half": [ + "lower", + "upper" + ] + }, + "defaultProperties": { + "half": "lower" + }, + "stateCount": 2 + }, + "minecraft:lava": { + "properties": { + "level": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "level": "0" + }, + "stateCount": 16 + }, + "minecraft:lava_cauldron": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:leaf_litter": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "segment_amount": [ + "1", + "2", + "3", + "4" + ] + }, + "defaultProperties": { + "facing": "north", + "segment_amount": "1" + }, + "stateCount": 16 + }, + "minecraft:lectern": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "has_book": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "has_book": "false", + "powered": "false" + }, + "stateCount": 16 + }, + "minecraft:lever": { + "properties": { + "face": [ + "ceiling", + "floor", + "wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:light": { + "properties": { + "level": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "level": "15", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:light_blue_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "8" + }, + "stateCount": 16 + }, + "minecraft:light_blue_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:light_blue_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:light_blue_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:light_blue_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:light_blue_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:light_blue_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:light_blue_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:light_blue_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:light_blue_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:light_blue_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:light_blue_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:light_blue_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:light_blue_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:light_gray_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "8" + }, + "stateCount": 16 + }, + "minecraft:light_gray_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:light_gray_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:light_gray_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:light_gray_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:light_gray_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:light_gray_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:light_gray_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:light_gray_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:light_gray_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:light_gray_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:light_gray_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:light_gray_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:light_gray_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:light_weighted_pressure_plate": { + "properties": { + "power": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "power": "0" + }, + "stateCount": 16 + }, + "minecraft:lightning_rod": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "up", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:lilac": { + "properties": { + "half": [ + "lower", + "upper" + ] + }, + "defaultProperties": { + "half": "lower" + }, + "stateCount": 2 + }, + "minecraft:lily_of_the_valley": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:lily_pad": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:lime_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "8" + }, + "stateCount": 16 + }, + "minecraft:lime_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:lime_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:lime_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:lime_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:lime_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:lime_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:lime_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:lime_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:lime_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:lime_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:lime_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:lime_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:lime_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:lodestone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:loom": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:magenta_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "8" + }, + "stateCount": 16 + }, + "minecraft:magenta_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:magenta_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:magenta_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:magenta_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:magenta_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:magenta_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:magenta_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:magenta_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:magenta_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:magenta_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:magenta_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:magenta_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:magenta_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:magma_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:mangrove_button": { + "properties": { + "face": [ + "ceiling", + "floor", + "wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:mangrove_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:mangrove_fence": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:mangrove_fence_gate": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "in_wall": [ + "false", + "true" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "in_wall": "false", + "open": "false", + "powered": "false" + }, + "stateCount": 32 + }, + "minecraft:mangrove_hanging_sign": { + "properties": { + "attached": [ + "false", + "true" + ], + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "attached": "false", + "rotation": "8", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:mangrove_leaves": { + "properties": { + "distance": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ], + "persistent": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "distance": "7", + "persistent": "false", + "waterlogged": "false" + }, + "stateCount": 28 + }, + "minecraft:mangrove_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:mangrove_planks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:mangrove_pressure_plate": { + "properties": { + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:mangrove_propagule": { + "properties": { + "age": [ + "0", + "1", + "2", + "3", + "4" + ], + "hanging": [ + "false", + "true" + ], + "stage": [ + "0", + "1" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "age": "0", + "hanging": "false", + "stage": "0", + "waterlogged": "false" + }, + "stateCount": 40 + }, + "minecraft:mangrove_roots": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "false" + }, + "stateCount": 2 + }, + "minecraft:mangrove_shelf": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ], + "side_chain": [ + "center", + "left", + "right", + "unconnected" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false", + "side_chain": "unconnected", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:mangrove_sign": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "rotation": "8", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:mangrove_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:mangrove_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:mangrove_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:mangrove_wall_hanging_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:mangrove_wall_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:mangrove_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:medium_amethyst_bud": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "up", + "waterlogged": "false" + }, + "stateCount": 12 + }, + "minecraft:melon": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:melon_stem": { + "properties": { + "age": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 8 + }, + "minecraft:moss_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:moss_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:mossy_cobblestone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:mossy_cobblestone_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:mossy_cobblestone_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:mossy_cobblestone_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:mossy_stone_brick_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:mossy_stone_brick_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:mossy_stone_brick_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:mossy_stone_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:moving_piston": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ], + "type": [ + "normal", + "sticky" + ] + }, + "defaultProperties": { + "facing": "north", + "type": "normal" + }, + "stateCount": 12 + }, + "minecraft:mud": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:mud_brick_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:mud_brick_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:mud_brick_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:mud_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:muddy_mangrove_roots": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:mushroom_stem": { + "properties": { + "down": [ + "false", + "true" + ], + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "up": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "down": "true", + "east": "true", + "north": "true", + "south": "true", + "up": "true", + "west": "true" + }, + "stateCount": 64 + }, + "minecraft:mycelium": { + "properties": { + "snowy": [ + "false", + "true" + ] + }, + "defaultProperties": { + "snowy": "false" + }, + "stateCount": 2 + }, + "minecraft:nether_brick_fence": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:nether_brick_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:nether_brick_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:nether_brick_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:nether_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:nether_gold_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:nether_portal": { + "properties": { + "axis": [ + "x", + "z" + ] + }, + "defaultProperties": { + "axis": "x" + }, + "stateCount": 2 + }, + "minecraft:nether_quartz_ore": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:nether_sprouts": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:nether_wart": { + "properties": { + "age": [ + "0", + "1", + "2", + "3" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 4 + }, + "minecraft:nether_wart_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:netherite_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:netherrack": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:note_block": { + "properties": { + "instrument": [ + "banjo", + "basedrum", + "bass", + "bell", + "bit", + "chime", + "cow_bell", + "creeper", + "custom_head", + "didgeridoo", + "dragon", + "flute", + "guitar", + "harp", + "hat", + "iron_xylophone", + "piglin", + "pling", + "skeleton", + "snare", + "trumpet", + "trumpet_exposed", + "trumpet_oxidized", + "trumpet_weathered", + "wither_skeleton", + "xylophone", + "zombie" + ], + "note": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "16", + "17", + "18", + "19", + "2", + "20", + "21", + "22", + "23", + "24", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "instrument": "harp", + "note": "0", + "powered": "false" + }, + "stateCount": 1350 + }, + "minecraft:oak_button": { + "properties": { + "face": [ + "ceiling", + "floor", + "wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:oak_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:oak_fence": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:oak_fence_gate": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "in_wall": [ + "false", + "true" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "in_wall": "false", + "open": "false", + "powered": "false" + }, + "stateCount": 32 + }, + "minecraft:oak_hanging_sign": { + "properties": { + "attached": [ + "false", + "true" + ], + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "attached": "false", + "rotation": "8", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:oak_leaves": { + "properties": { + "distance": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ], + "persistent": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "distance": "7", + "persistent": "false", + "waterlogged": "false" + }, + "stateCount": 28 + }, + "minecraft:oak_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:oak_planks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:oak_pressure_plate": { + "properties": { + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:oak_sapling": { + "properties": { + "stage": [ + "0", + "1" + ] + }, + "defaultProperties": { + "stage": "0" + }, + "stateCount": 2 + }, + "minecraft:oak_shelf": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ], + "side_chain": [ + "center", + "left", + "right", + "unconnected" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false", + "side_chain": "unconnected", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:oak_sign": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "rotation": "8", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:oak_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:oak_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:oak_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:oak_wall_hanging_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:oak_wall_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:oak_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:observer": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "south", + "powered": "false" + }, + "stateCount": 12 + }, + "minecraft:obsidian": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:ochre_froglight": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:open_eyeblossom": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:orange_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "8" + }, + "stateCount": 16 + }, + "minecraft:orange_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:orange_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:orange_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:orange_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:orange_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:orange_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:orange_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:orange_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:orange_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:orange_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:orange_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:orange_tulip": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:orange_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:orange_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:oxeye_daisy": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:oxidized_chiseled_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:oxidized_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:oxidized_copper_bars": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:oxidized_copper_bulb": { + "properties": { + "lit": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false", + "powered": "false" + }, + "stateCount": 4 + }, + "minecraft:oxidized_copper_chain": { + "properties": { + "axis": [ + "x", + "y", + "z" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "axis": "y", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:oxidized_copper_chest": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "type": [ + "left", + "right", + "single" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "type": "single", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:oxidized_copper_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:oxidized_copper_golem_statue": { + "properties": { + "copper_golem_pose": [ + "running", + "sitting", + "standing", + "star" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "copper_golem_pose": "standing", + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:oxidized_copper_grate": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "false" + }, + "stateCount": 2 + }, + "minecraft:oxidized_copper_lantern": { + "properties": { + "hanging": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "hanging": "false", + "waterlogged": "false" + }, + "stateCount": 4 + }, + "minecraft:oxidized_copper_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:oxidized_cut_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:oxidized_cut_copper_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:oxidized_cut_copper_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:oxidized_lightning_rod": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "up", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:packed_ice": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:packed_mud": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:pale_hanging_moss": { + "properties": { + "tip": [ + "false", + "true" + ] + }, + "defaultProperties": { + "tip": "true" + }, + "stateCount": 2 + }, + "minecraft:pale_moss_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:pale_moss_carpet": { + "properties": { + "bottom": [ + "false", + "true" + ], + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "bottom": "true", + "east": "none", + "north": "none", + "south": "none", + "west": "none" + }, + "stateCount": 162 + }, + "minecraft:pale_oak_button": { + "properties": { + "face": [ + "ceiling", + "floor", + "wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:pale_oak_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:pale_oak_fence": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:pale_oak_fence_gate": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "in_wall": [ + "false", + "true" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "in_wall": "false", + "open": "false", + "powered": "false" + }, + "stateCount": 32 + }, + "minecraft:pale_oak_hanging_sign": { + "properties": { + "attached": [ + "false", + "true" + ], + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "attached": "false", + "rotation": "8", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:pale_oak_leaves": { + "properties": { + "distance": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ], + "persistent": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "distance": "7", + "persistent": "false", + "waterlogged": "false" + }, + "stateCount": 28 + }, + "minecraft:pale_oak_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:pale_oak_planks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:pale_oak_pressure_plate": { + "properties": { + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:pale_oak_sapling": { + "properties": { + "stage": [ + "0", + "1" + ] + }, + "defaultProperties": { + "stage": "0" + }, + "stateCount": 2 + }, + "minecraft:pale_oak_shelf": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ], + "side_chain": [ + "center", + "left", + "right", + "unconnected" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false", + "side_chain": "unconnected", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:pale_oak_sign": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "rotation": "8", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:pale_oak_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:pale_oak_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:pale_oak_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:pale_oak_wall_hanging_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:pale_oak_wall_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:pale_oak_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:pearlescent_froglight": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:peony": { + "properties": { + "half": [ + "lower", + "upper" + ] + }, + "defaultProperties": { + "half": "lower" + }, + "stateCount": 2 + }, + "minecraft:petrified_oak_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:piglin_head": { + "properties": { + "powered": [ + "false", + "true" + ], + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "powered": "false", + "rotation": "0" + }, + "stateCount": 32 + }, + "minecraft:piglin_wall_head": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false" + }, + "stateCount": 8 + }, + "minecraft:pink_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "8" + }, + "stateCount": 16 + }, + "minecraft:pink_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:pink_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:pink_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:pink_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:pink_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:pink_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:pink_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:pink_petals": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "flower_amount": [ + "1", + "2", + "3", + "4" + ] + }, + "defaultProperties": { + "facing": "north", + "flower_amount": "1" + }, + "stateCount": 16 + }, + "minecraft:pink_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:pink_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:pink_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:pink_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:pink_tulip": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:pink_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:pink_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:piston": { + "properties": { + "extended": [ + "false", + "true" + ], + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "extended": "false", + "facing": "north" + }, + "stateCount": 12 + }, + "minecraft:piston_head": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ], + "short": [ + "false", + "true" + ], + "type": [ + "normal", + "sticky" + ] + }, + "defaultProperties": { + "facing": "north", + "short": "false", + "type": "normal" + }, + "stateCount": 24 + }, + "minecraft:pitcher_crop": { + "properties": { + "age": [ + "0", + "1", + "2", + "3", + "4" + ], + "half": [ + "lower", + "upper" + ] + }, + "defaultProperties": { + "age": "0", + "half": "lower" + }, + "stateCount": 10 + }, + "minecraft:pitcher_plant": { + "properties": { + "half": [ + "lower", + "upper" + ] + }, + "defaultProperties": { + "half": "lower" + }, + "stateCount": 2 + }, + "minecraft:player_head": { + "properties": { + "powered": [ + "false", + "true" + ], + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "powered": "false", + "rotation": "0" + }, + "stateCount": 32 + }, + "minecraft:player_wall_head": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false" + }, + "stateCount": 8 + }, + "minecraft:podzol": { + "properties": { + "snowy": [ + "false", + "true" + ] + }, + "defaultProperties": { + "snowy": "false" + }, + "stateCount": 2 + }, + "minecraft:pointed_dripstone": { + "properties": { + "thickness": [ + "base", + "frustum", + "middle", + "tip", + "tip_merge" + ], + "vertical_direction": [ + "down", + "up" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "thickness": "tip", + "vertical_direction": "up", + "waterlogged": "false" + }, + "stateCount": 20 + }, + "minecraft:polished_andesite": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:polished_andesite_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:polished_andesite_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:polished_basalt": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:polished_blackstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:polished_blackstone_brick_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:polished_blackstone_brick_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:polished_blackstone_brick_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:polished_blackstone_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:polished_blackstone_button": { + "properties": { + "face": [ + "ceiling", + "floor", + "wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:polished_blackstone_pressure_plate": { + "properties": { + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:polished_blackstone_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:polished_blackstone_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:polished_blackstone_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:polished_cinnabar": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:polished_cinnabar_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:polished_cinnabar_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:polished_cinnabar_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:polished_deepslate": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:polished_deepslate_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:polished_deepslate_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:polished_deepslate_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:polished_diorite": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:polished_diorite_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:polished_diorite_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:polished_granite": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:polished_granite_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:polished_granite_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:polished_sulfur": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:polished_sulfur_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:polished_sulfur_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:polished_sulfur_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:polished_tuff": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:polished_tuff_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:polished_tuff_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:polished_tuff_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:poppy": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potatoes": { + "properties": { + "age": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 8 + }, + "minecraft:potent_sulfur": { + "properties": { + "potent_sulfur_state": [ + "continuous", + "dormant", + "dry", + "erupting", + "wet" + ] + }, + "defaultProperties": { + "potent_sulfur_state": "dry" + }, + "stateCount": 5 + }, + "minecraft:potted_acacia_sapling": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_allium": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_azalea_bush": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_azure_bluet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_bamboo": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_birch_sapling": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_blue_orchid": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_brown_mushroom": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_cactus": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_cherry_sapling": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_closed_eyeblossom": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_cornflower": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_crimson_fungus": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_crimson_roots": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_dandelion": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_dark_oak_sapling": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_dead_bush": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_fern": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_flowering_azalea_bush": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_golden_dandelion": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_jungle_sapling": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_lily_of_the_valley": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_mangrove_propagule": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_oak_sapling": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_open_eyeblossom": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_orange_tulip": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_oxeye_daisy": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_pale_oak_sapling": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_pink_tulip": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_poppy": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_red_mushroom": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_red_tulip": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_spruce_sapling": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_torchflower": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_warped_fungus": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_warped_roots": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_white_tulip": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:potted_wither_rose": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:powder_snow": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:powder_snow_cauldron": { + "properties": { + "level": [ + "1", + "2", + "3" + ] + }, + "defaultProperties": { + "level": "1" + }, + "stateCount": 3 + }, + "minecraft:powered_rail": { + "properties": { + "powered": [ + "false", + "true" + ], + "shape": [ + "ascending_east", + "ascending_north", + "ascending_south", + "ascending_west", + "east_west", + "north_south" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false", + "shape": "north_south", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:prismarine": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:prismarine_brick_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:prismarine_brick_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:prismarine_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:prismarine_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:prismarine_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:prismarine_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:pumpkin": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:pumpkin_stem": { + "properties": { + "age": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 8 + }, + "minecraft:purple_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "8" + }, + "stateCount": 16 + }, + "minecraft:purple_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:purple_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:purple_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:purple_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:purple_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:purple_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:purple_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:purple_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:purple_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:purple_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:purple_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:purple_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:purple_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:purpur_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:purpur_pillar": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:purpur_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:purpur_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:quartz_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:quartz_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:quartz_pillar": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:quartz_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:quartz_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:rail": { + "properties": { + "shape": [ + "ascending_east", + "ascending_north", + "ascending_south", + "ascending_west", + "east_west", + "north_east", + "north_south", + "north_west", + "south_east", + "south_west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "shape": "north_south", + "waterlogged": "false" + }, + "stateCount": 20 + }, + "minecraft:raw_copper_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:raw_gold_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:raw_iron_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:red_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "8" + }, + "stateCount": 16 + }, + "minecraft:red_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:red_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:red_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:red_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:red_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:red_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:red_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:red_mushroom": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:red_mushroom_block": { + "properties": { + "down": [ + "false", + "true" + ], + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "up": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "down": "true", + "east": "true", + "north": "true", + "south": "true", + "up": "true", + "west": "true" + }, + "stateCount": 64 + }, + "minecraft:red_nether_brick_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:red_nether_brick_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:red_nether_brick_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:red_nether_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:red_sand": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:red_sandstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:red_sandstone_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:red_sandstone_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:red_sandstone_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:red_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:red_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:red_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:red_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:red_tulip": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:red_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:red_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:redstone_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:redstone_lamp": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:redstone_ore": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:redstone_torch": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "true" + }, + "stateCount": 2 + }, + "minecraft:redstone_wall_torch": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "lit": "true" + }, + "stateCount": 8 + }, + "minecraft:redstone_wire": { + "properties": { + "east": [ + "none", + "side", + "up" + ], + "north": [ + "none", + "side", + "up" + ], + "power": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "south": [ + "none", + "side", + "up" + ], + "west": [ + "none", + "side", + "up" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "power": "0", + "south": "none", + "west": "none" + }, + "stateCount": 1296 + }, + "minecraft:reinforced_deepslate": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:repeater": { + "properties": { + "delay": [ + "1", + "2", + "3", + "4" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "locked": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "delay": "1", + "facing": "north", + "locked": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:repeating_command_block": { + "properties": { + "conditional": [ + "false", + "true" + ], + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "conditional": "false", + "facing": "north" + }, + "stateCount": 12 + }, + "minecraft:resin_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:resin_brick_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:resin_brick_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:resin_brick_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:resin_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:resin_clump": { + "properties": { + "down": [ + "false", + "true" + ], + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "down": "false", + "east": "false", + "north": "false", + "south": "false", + "up": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 128 + }, + "minecraft:respawn_anchor": { + "properties": { + "charges": [ + "0", + "1", + "2", + "3", + "4" + ] + }, + "defaultProperties": { + "charges": "0" + }, + "stateCount": 5 + }, + "minecraft:rooted_dirt": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:rose_bush": { + "properties": { + "half": [ + "lower", + "upper" + ] + }, + "defaultProperties": { + "half": "lower" + }, + "stateCount": 2 + }, + "minecraft:sand": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:sandstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:sandstone_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:sandstone_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:sandstone_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:scaffolding": { + "properties": { + "bottom": [ + "false", + "true" + ], + "distance": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "bottom": "false", + "distance": "7", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:sculk": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:sculk_catalyst": { + "properties": { + "bloom": [ + "false", + "true" + ] + }, + "defaultProperties": { + "bloom": "false" + }, + "stateCount": 2 + }, + "minecraft:sculk_sensor": { + "properties": { + "power": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "sculk_sensor_phase": [ + "active", + "cooldown", + "inactive" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "power": "0", + "sculk_sensor_phase": "inactive", + "waterlogged": "false" + }, + "stateCount": 96 + }, + "minecraft:sculk_shrieker": { + "properties": { + "can_summon": [ + "false", + "true" + ], + "shrieking": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "can_summon": "false", + "shrieking": "false", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:sculk_vein": { + "properties": { + "down": [ + "false", + "true" + ], + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "down": "false", + "east": "false", + "north": "false", + "south": "false", + "up": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 128 + }, + "minecraft:sea_lantern": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:sea_pickle": { + "properties": { + "pickles": [ + "1", + "2", + "3", + "4" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "pickles": "1", + "waterlogged": "true" + }, + "stateCount": 8 + }, + "minecraft:seagrass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:short_dry_grass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:short_grass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:shroomlight": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:skeleton_skull": { + "properties": { + "powered": [ + "false", + "true" + ], + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "powered": "false", + "rotation": "0" + }, + "stateCount": 32 + }, + "minecraft:skeleton_wall_skull": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false" + }, + "stateCount": 8 + }, + "minecraft:slime_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:small_amethyst_bud": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "up", + "waterlogged": "false" + }, + "stateCount": 12 + }, + "minecraft:small_dripleaf": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:smithing_table": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:smoker": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "lit": "false" + }, + "stateCount": 8 + }, + "minecraft:smooth_basalt": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:smooth_quartz": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:smooth_quartz_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:smooth_quartz_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:smooth_red_sandstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:smooth_red_sandstone_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:smooth_red_sandstone_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:smooth_sandstone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:smooth_sandstone_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:smooth_sandstone_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:smooth_stone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:smooth_stone_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:sniffer_egg": { + "properties": { + "hatch": [ + "0", + "1", + "2" + ] + }, + "defaultProperties": { + "hatch": "0" + }, + "stateCount": 3 + }, + "minecraft:snow": { + "properties": { + "layers": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8" + ] + }, + "defaultProperties": { + "layers": "1" + }, + "stateCount": 8 + }, + "minecraft:snow_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:soul_campfire": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "lit": [ + "false", + "true" + ], + "signal_fire": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "lit": "true", + "signal_fire": "false", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:soul_fire": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:soul_lantern": { + "properties": { + "hanging": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "hanging": "false", + "waterlogged": "false" + }, + "stateCount": 4 + }, + "minecraft:soul_sand": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:soul_soil": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:soul_torch": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:soul_wall_torch": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:spawner": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:sponge": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:spore_blossom": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:spruce_button": { + "properties": { + "face": [ + "ceiling", + "floor", + "wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:spruce_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:spruce_fence": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:spruce_fence_gate": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "in_wall": [ + "false", + "true" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "in_wall": "false", + "open": "false", + "powered": "false" + }, + "stateCount": 32 + }, + "minecraft:spruce_hanging_sign": { + "properties": { + "attached": [ + "false", + "true" + ], + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "attached": "false", + "rotation": "8", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:spruce_leaves": { + "properties": { + "distance": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ], + "persistent": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "distance": "7", + "persistent": "false", + "waterlogged": "false" + }, + "stateCount": 28 + }, + "minecraft:spruce_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:spruce_planks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:spruce_pressure_plate": { + "properties": { + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:spruce_sapling": { + "properties": { + "stage": [ + "0", + "1" + ] + }, + "defaultProperties": { + "stage": "0" + }, + "stateCount": 2 + }, + "minecraft:spruce_shelf": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ], + "side_chain": [ + "center", + "left", + "right", + "unconnected" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false", + "side_chain": "unconnected", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:spruce_sign": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "rotation": "8", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:spruce_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:spruce_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:spruce_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:spruce_wall_hanging_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:spruce_wall_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:spruce_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:sticky_piston": { + "properties": { + "extended": [ + "false", + "true" + ], + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "extended": "false", + "facing": "north" + }, + "stateCount": 12 + }, + "minecraft:stone": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:stone_brick_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:stone_brick_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:stone_brick_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:stone_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:stone_button": { + "properties": { + "face": [ + "ceiling", + "floor", + "wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:stone_pressure_plate": { + "properties": { + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:stone_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:stone_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:stonecutter": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:stripped_acacia_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_acacia_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_bamboo_block": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_birch_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_birch_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_cherry_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_cherry_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_crimson_hyphae": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_crimson_stem": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_dark_oak_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_dark_oak_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_jungle_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_jungle_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_mangrove_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_mangrove_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_oak_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_oak_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_pale_oak_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_pale_oak_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_spruce_log": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_spruce_wood": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_warped_hyphae": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:stripped_warped_stem": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:structure_block": { + "properties": { + "mode": [ + "corner", + "data", + "load", + "save" + ] + }, + "defaultProperties": { + "mode": "load" + }, + "stateCount": 4 + }, + "minecraft:structure_void": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:sugar_cane": { + "properties": { + "age": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 16 + }, + "minecraft:sulfur": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:sulfur_brick_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:sulfur_brick_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:sulfur_brick_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:sulfur_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:sulfur_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:sulfur_spike": { + "properties": { + "thickness": [ + "base", + "frustum", + "middle", + "tip", + "tip_merge" + ], + "vertical_direction": [ + "down", + "up" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "thickness": "tip", + "vertical_direction": "up", + "waterlogged": "false" + }, + "stateCount": 20 + }, + "minecraft:sulfur_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:sulfur_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:sunflower": { + "properties": { + "half": [ + "lower", + "upper" + ] + }, + "defaultProperties": { + "half": "lower" + }, + "stateCount": 2 + }, + "minecraft:suspicious_gravel": { + "properties": { + "dusted": [ + "0", + "1", + "2", + "3" + ] + }, + "defaultProperties": { + "dusted": "0" + }, + "stateCount": 4 + }, + "minecraft:suspicious_sand": { + "properties": { + "dusted": [ + "0", + "1", + "2", + "3" + ] + }, + "defaultProperties": { + "dusted": "0" + }, + "stateCount": 4 + }, + "minecraft:sweet_berry_bush": { + "properties": { + "age": [ + "0", + "1", + "2", + "3" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 4 + }, + "minecraft:tall_dry_grass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:tall_grass": { + "properties": { + "half": [ + "lower", + "upper" + ] + }, + "defaultProperties": { + "half": "lower" + }, + "stateCount": 2 + }, + "minecraft:tall_seagrass": { + "properties": { + "half": [ + "lower", + "upper" + ] + }, + "defaultProperties": { + "half": "lower" + }, + "stateCount": 2 + }, + "minecraft:target": { + "properties": { + "power": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "power": "0" + }, + "stateCount": 16 + }, + "minecraft:terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:test_block": { + "properties": { + "mode": [ + "accept", + "fail", + "log", + "start" + ] + }, + "defaultProperties": { + "mode": "start" + }, + "stateCount": 4 + }, + "minecraft:test_instance_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:tinted_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:tnt": { + "properties": { + "unstable": [ + "false", + "true" + ] + }, + "defaultProperties": { + "unstable": "false" + }, + "stateCount": 2 + }, + "minecraft:torch": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:torchflower": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:torchflower_crop": { + "properties": { + "age": [ + "0", + "1" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 2 + }, + "minecraft:trapped_chest": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "type": [ + "left", + "right", + "single" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "type": "single", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:trial_spawner": { + "properties": { + "ominous": [ + "false", + "true" + ], + "trial_spawner_state": [ + "active", + "cooldown", + "ejecting_reward", + "inactive", + "waiting_for_players", + "waiting_for_reward_ejection" + ] + }, + "defaultProperties": { + "ominous": "false", + "trial_spawner_state": "inactive" + }, + "stateCount": 12 + }, + "minecraft:tripwire": { + "properties": { + "attached": [ + "false", + "true" + ], + "disarmed": [ + "false", + "true" + ], + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "attached": "false", + "disarmed": "false", + "east": "false", + "north": "false", + "powered": "false", + "south": "false", + "west": "false" + }, + "stateCount": 128 + }, + "minecraft:tripwire_hook": { + "properties": { + "attached": [ + "false", + "true" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "attached": "false", + "facing": "north", + "powered": "false" + }, + "stateCount": 16 + }, + "minecraft:tube_coral": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:tube_coral_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:tube_coral_fan": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "true" + }, + "stateCount": 2 + }, + "minecraft:tube_coral_wall_fan": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "true" + }, + "stateCount": 8 + }, + "minecraft:tuff": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:tuff_brick_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:tuff_brick_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:tuff_brick_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:tuff_bricks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:tuff_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:tuff_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:tuff_wall": { + "properties": { + "east": [ + "low", + "none", + "tall" + ], + "north": [ + "low", + "none", + "tall" + ], + "south": [ + "low", + "none", + "tall" + ], + "up": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "low", + "none", + "tall" + ] + }, + "defaultProperties": { + "east": "none", + "north": "none", + "south": "none", + "up": "true", + "waterlogged": "false", + "west": "none" + }, + "stateCount": 324 + }, + "minecraft:turtle_egg": { + "properties": { + "eggs": [ + "1", + "2", + "3", + "4" + ], + "hatch": [ + "0", + "1", + "2" + ] + }, + "defaultProperties": { + "eggs": "1", + "hatch": "0" + }, + "stateCount": 12 + }, + "minecraft:twisting_vines": { + "properties": { + "age": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "16", + "17", + "18", + "19", + "2", + "20", + "21", + "22", + "23", + "24", + "25", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 26 + }, + "minecraft:twisting_vines_plant": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:vault": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "ominous": [ + "false", + "true" + ], + "vault_state": [ + "active", + "ejecting", + "inactive", + "unlocking" + ] + }, + "defaultProperties": { + "facing": "north", + "ominous": "false", + "vault_state": "inactive" + }, + "stateCount": 32 + }, + "minecraft:verdant_froglight": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:vine": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "up": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "up": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:void_air": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:wall_torch": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:warped_button": { + "properties": { + "face": [ + "ceiling", + "floor", + "wall" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "face": "wall", + "facing": "north", + "powered": "false" + }, + "stateCount": 24 + }, + "minecraft:warped_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:warped_fence": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:warped_fence_gate": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "in_wall": [ + "false", + "true" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "in_wall": "false", + "open": "false", + "powered": "false" + }, + "stateCount": 32 + }, + "minecraft:warped_fungus": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:warped_hanging_sign": { + "properties": { + "attached": [ + "false", + "true" + ], + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "attached": "false", + "rotation": "8", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:warped_hyphae": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:warped_nylium": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:warped_planks": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:warped_pressure_plate": { + "properties": { + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "powered": "false" + }, + "stateCount": 2 + }, + "minecraft:warped_roots": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:warped_shelf": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ], + "side_chain": [ + "center", + "left", + "right", + "unconnected" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false", + "side_chain": "unconnected", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:warped_sign": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "rotation": "8", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:warped_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:warped_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:warped_stem": { + "properties": { + "axis": [ + "x", + "y", + "z" + ] + }, + "defaultProperties": { + "axis": "y" + }, + "stateCount": 3 + }, + "minecraft:warped_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:warped_wall_hanging_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:warped_wall_sign": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 8 + }, + "minecraft:warped_wart_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:water": { + "properties": { + "level": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "level": "0" + }, + "stateCount": 16 + }, + "minecraft:water_cauldron": { + "properties": { + "level": [ + "1", + "2", + "3" + ] + }, + "defaultProperties": { + "level": "1" + }, + "stateCount": 3 + }, + "minecraft:waxed_chiseled_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:waxed_copper_bars": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:waxed_copper_block": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:waxed_copper_bulb": { + "properties": { + "lit": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false", + "powered": "false" + }, + "stateCount": 4 + }, + "minecraft:waxed_copper_chain": { + "properties": { + "axis": [ + "x", + "y", + "z" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "axis": "y", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:waxed_copper_chest": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "type": [ + "left", + "right", + "single" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "type": "single", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:waxed_copper_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:waxed_copper_golem_statue": { + "properties": { + "copper_golem_pose": [ + "running", + "sitting", + "standing", + "star" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "copper_golem_pose": "standing", + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:waxed_copper_grate": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "false" + }, + "stateCount": 2 + }, + "minecraft:waxed_copper_lantern": { + "properties": { + "hanging": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "hanging": "false", + "waterlogged": "false" + }, + "stateCount": 4 + }, + "minecraft:waxed_copper_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:waxed_cut_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:waxed_cut_copper_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:waxed_cut_copper_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:waxed_exposed_chiseled_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:waxed_exposed_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:waxed_exposed_copper_bars": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:waxed_exposed_copper_bulb": { + "properties": { + "lit": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false", + "powered": "false" + }, + "stateCount": 4 + }, + "minecraft:waxed_exposed_copper_chain": { + "properties": { + "axis": [ + "x", + "y", + "z" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "axis": "y", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:waxed_exposed_copper_chest": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "type": [ + "left", + "right", + "single" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "type": "single", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:waxed_exposed_copper_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:waxed_exposed_copper_golem_statue": { + "properties": { + "copper_golem_pose": [ + "running", + "sitting", + "standing", + "star" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "copper_golem_pose": "standing", + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:waxed_exposed_copper_grate": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "false" + }, + "stateCount": 2 + }, + "minecraft:waxed_exposed_copper_lantern": { + "properties": { + "hanging": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "hanging": "false", + "waterlogged": "false" + }, + "stateCount": 4 + }, + "minecraft:waxed_exposed_copper_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:waxed_exposed_cut_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:waxed_exposed_cut_copper_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:waxed_exposed_cut_copper_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:waxed_exposed_lightning_rod": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "up", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:waxed_lightning_rod": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "up", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:waxed_oxidized_chiseled_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:waxed_oxidized_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:waxed_oxidized_copper_bars": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:waxed_oxidized_copper_bulb": { + "properties": { + "lit": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false", + "powered": "false" + }, + "stateCount": 4 + }, + "minecraft:waxed_oxidized_copper_chain": { + "properties": { + "axis": [ + "x", + "y", + "z" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "axis": "y", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:waxed_oxidized_copper_chest": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "type": [ + "left", + "right", + "single" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "type": "single", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:waxed_oxidized_copper_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:waxed_oxidized_copper_golem_statue": { + "properties": { + "copper_golem_pose": [ + "running", + "sitting", + "standing", + "star" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "copper_golem_pose": "standing", + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:waxed_oxidized_copper_grate": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "false" + }, + "stateCount": 2 + }, + "minecraft:waxed_oxidized_copper_lantern": { + "properties": { + "hanging": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "hanging": "false", + "waterlogged": "false" + }, + "stateCount": 4 + }, + "minecraft:waxed_oxidized_copper_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:waxed_oxidized_cut_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:waxed_oxidized_cut_copper_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:waxed_oxidized_cut_copper_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:waxed_oxidized_lightning_rod": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "up", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:waxed_weathered_chiseled_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:waxed_weathered_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:waxed_weathered_copper_bars": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:waxed_weathered_copper_bulb": { + "properties": { + "lit": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false", + "powered": "false" + }, + "stateCount": 4 + }, + "minecraft:waxed_weathered_copper_chain": { + "properties": { + "axis": [ + "x", + "y", + "z" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "axis": "y", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:waxed_weathered_copper_chest": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "type": [ + "left", + "right", + "single" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "type": "single", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:waxed_weathered_copper_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:waxed_weathered_copper_golem_statue": { + "properties": { + "copper_golem_pose": [ + "running", + "sitting", + "standing", + "star" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "copper_golem_pose": "standing", + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:waxed_weathered_copper_grate": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "false" + }, + "stateCount": 2 + }, + "minecraft:waxed_weathered_copper_lantern": { + "properties": { + "hanging": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "hanging": "false", + "waterlogged": "false" + }, + "stateCount": 4 + }, + "minecraft:waxed_weathered_copper_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:waxed_weathered_cut_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:waxed_weathered_cut_copper_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:waxed_weathered_cut_copper_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:waxed_weathered_lightning_rod": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "up", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:weathered_chiseled_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:weathered_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:weathered_copper_bars": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:weathered_copper_bulb": { + "properties": { + "lit": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false", + "powered": "false" + }, + "stateCount": 4 + }, + "minecraft:weathered_copper_chain": { + "properties": { + "axis": [ + "x", + "y", + "z" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "axis": "y", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:weathered_copper_chest": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "type": [ + "left", + "right", + "single" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "type": "single", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:weathered_copper_door": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "lower", + "upper" + ], + "hinge": [ + "left", + "right" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "lower", + "hinge": "left", + "open": "false", + "powered": "false" + }, + "stateCount": 64 + }, + "minecraft:weathered_copper_golem_statue": { + "properties": { + "copper_golem_pose": [ + "running", + "sitting", + "standing", + "star" + ], + "facing": [ + "east", + "north", + "south", + "west" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "copper_golem_pose": "standing", + "facing": "north", + "waterlogged": "false" + }, + "stateCount": 32 + }, + "minecraft:weathered_copper_grate": { + "properties": { + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "waterlogged": "false" + }, + "stateCount": 2 + }, + "minecraft:weathered_copper_lantern": { + "properties": { + "hanging": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "hanging": "false", + "waterlogged": "false" + }, + "stateCount": 4 + }, + "minecraft:weathered_copper_trapdoor": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "open": [ + "false", + "true" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "open": "false", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 64 + }, + "minecraft:weathered_cut_copper": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:weathered_cut_copper_slab": { + "properties": { + "type": [ + "bottom", + "double", + "top" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "type": "bottom", + "waterlogged": "false" + }, + "stateCount": 6 + }, + "minecraft:weathered_cut_copper_stairs": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "half": [ + "bottom", + "top" + ], + "shape": [ + "inner_left", + "inner_right", + "outer_left", + "outer_right", + "straight" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "half": "bottom", + "shape": "straight", + "waterlogged": "false" + }, + "stateCount": 80 + }, + "minecraft:weathered_lightning_rod": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ], + "powered": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "up", + "powered": "false", + "waterlogged": "false" + }, + "stateCount": 24 + }, + "minecraft:weeping_vines": { + "properties": { + "age": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "16", + "17", + "18", + "19", + "2", + "20", + "21", + "22", + "23", + "24", + "25", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 26 + }, + "minecraft:weeping_vines_plant": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:wet_sponge": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:wheat": { + "properties": { + "age": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7" + ] + }, + "defaultProperties": { + "age": "0" + }, + "stateCount": 8 + }, + "minecraft:white_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "8" + }, + "stateCount": 16 + }, + "minecraft:white_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:white_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:white_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:white_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:white_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:white_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:white_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:white_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:white_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:white_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:white_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:white_tulip": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:white_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:white_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:wildflowers": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "flower_amount": [ + "1", + "2", + "3", + "4" + ] + }, + "defaultProperties": { + "facing": "north", + "flower_amount": "1" + }, + "stateCount": 16 + }, + "minecraft:wither_rose": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:wither_skeleton_skull": { + "properties": { + "powered": [ + "false", + "true" + ], + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "powered": "false", + "rotation": "0" + }, + "stateCount": 32 + }, + "minecraft:wither_skeleton_wall_skull": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false" + }, + "stateCount": 8 + }, + "minecraft:yellow_banner": { + "properties": { + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "rotation": "8" + }, + "stateCount": 16 + }, + "minecraft:yellow_bed": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "occupied": [ + "false", + "true" + ], + "part": [ + "foot", + "head" + ] + }, + "defaultProperties": { + "facing": "north", + "occupied": "false", + "part": "foot" + }, + "stateCount": 16 + }, + "minecraft:yellow_candle": { + "properties": { + "candles": [ + "1", + "2", + "3", + "4" + ], + "lit": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ] + }, + "defaultProperties": { + "candles": "1", + "lit": "false", + "waterlogged": "false" + }, + "stateCount": 16 + }, + "minecraft:yellow_candle_cake": { + "properties": { + "lit": [ + "false", + "true" + ] + }, + "defaultProperties": { + "lit": "false" + }, + "stateCount": 2 + }, + "minecraft:yellow_carpet": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:yellow_concrete": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:yellow_concrete_powder": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:yellow_glazed_terracotta": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:yellow_shulker_box": { + "properties": { + "facing": [ + "down", + "east", + "north", + "south", + "up", + "west" + ] + }, + "defaultProperties": { + "facing": "up" + }, + "stateCount": 6 + }, + "minecraft:yellow_stained_glass": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:yellow_stained_glass_pane": { + "properties": { + "east": [ + "false", + "true" + ], + "north": [ + "false", + "true" + ], + "south": [ + "false", + "true" + ], + "waterlogged": [ + "false", + "true" + ], + "west": [ + "false", + "true" + ] + }, + "defaultProperties": { + "east": "false", + "north": "false", + "south": "false", + "waterlogged": "false", + "west": "false" + }, + "stateCount": 32 + }, + "minecraft:yellow_terracotta": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:yellow_wall_banner": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ] + }, + "defaultProperties": { + "facing": "north" + }, + "stateCount": 4 + }, + "minecraft:yellow_wool": { + "properties": {}, + "defaultProperties": {}, + "stateCount": 1 + }, + "minecraft:zombie_head": { + "properties": { + "powered": [ + "false", + "true" + ], + "rotation": [ + "0", + "1", + "10", + "11", + "12", + "13", + "14", + "15", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ] + }, + "defaultProperties": { + "powered": "false", + "rotation": "0" + }, + "stateCount": 32 + }, + "minecraft:zombie_wall_head": { + "properties": { + "facing": [ + "east", + "north", + "south", + "west" + ], + "powered": [ + "false", + "true" + ] + }, + "defaultProperties": { + "facing": "north", + "powered": "false" + }, + "stateCount": 8 + } + } +} \ No newline at end of file diff --git a/src/main/resources/style/component/change-nbt-dialog.css b/src/main/resources/style/component/change-nbt-dialog.css index 5f350a31..a289a0d7 100644 --- a/src/main/resources/style/component/change-nbt-dialog.css +++ b/src/main/resources/style/component/change-nbt-dialog.css @@ -1,6 +1,9 @@ * { -color-field-valid-shadow: #00ff40; -color-field-valid-background: #489d5e; + -color-field-invalid-shadow: #ff4000; + -color-field-invalid-background: #9e494a; + -color-field-warning-text: #f0c36a; } .change-nbt-dialog-pane .text-field { @@ -23,7 +26,7 @@ -fx-background-color: -color-field-cell-odd; } -.change-nbt-dialog-pane .field-view .field-cell .label { +.change-nbt-dialog-pane .field-view .field-cell .field-cell-input > .label { -fx-text-fill: -color-text-light; -fx-pref-width: 150; -fx-min-width: 150; @@ -34,10 +37,248 @@ -fx-effect: dropshadow(gaussian, -color-field-valid-shadow, 4, 0, 0, 0); } +.change-nbt-dialog-pane .field-view .field-cell-text:invalid { + -fx-background-color: -color-field-invalid-background; + -fx-effect: dropshadow(gaussian, -color-field-invalid-shadow, 4, 0, 0, 0); +} + .change-nbt-dialog-pane .field-view .field-cell-text { -fx-min-width: 130; } +.change-nbt-dialog-pane .field-view .field-cell-validation { + -fx-padding: 2 5 3 155; + -fx-wrap-text: true; + -fx-text-fill: -color-error-text; +} + +.change-nbt-dialog-pane .field-view .field-cell-validation:warning { + -fx-text-fill: -color-field-warning-text; +} + +.change-nbt-dialog-pane .change-query-validation { + -fx-padding: 3 5 0 5; + -fx-wrap-text: true; + -fx-text-fill: -color-error-text; +} + +.replace-blocks-builder-pane .replace-blocks-builder-validation { + -fx-wrap-text: true; + -fx-text-fill: -color-error-text; +} + +.replace-blocks-builder-pane .replace-blocks-builder-validation:warning { + -fx-text-fill: -color-field-warning-text; +} + +.replace-blocks-builder-pane .replace-blocks-builder-validation:success { + -fx-text-fill: #8fd694; +} + +.replace-blocks-builder-pane .replace-blocks-builder-toolbar { + -fx-padding: 0 0 2 0; +} + +.replace-blocks-builder-pane .replace-blocks-builder-source-constraints { + -fx-padding: 2 0 0 0; +} + +.replace-blocks-builder-pane .replace-blocks-builder-source-constraints-title { + -fx-font-weight: bold; + -fx-text-fill: -color-text-light; +} + +.replace-blocks-builder-pane .replace-blocks-builder-empty-placeholder { + -fx-padding: 12; + -fx-text-fill: -color-button-text; +} + +.replace-blocks-builder-pane .replace-blocks-builder-preset-action:disabled { + -fx-opacity: 0.55; + -fx-text-fill: -color-button-disabled-text; +} + +.replace-blocks-builder-pane .replace-blocks-builder-catalog-note { + -fx-opacity: 0.75; +} + +.replace-blocks-builder-pane .replace-blocks-builder-block { + -fx-min-width: 300; +} + +.replace-blocks-builder-pane .replace-blocks-builder-input { + -fx-padding: 0 0 2 0; +} + +.replace-blocks-builder-pane .replace-blocks-builder-add-actions { + -fx-spacing: 4; +} + +.replace-blocks-builder-pane .replace-blocks-builder-presets .label { + -fx-text-fill: -color-text-light; +} + +.replace-blocks-builder-pane .replace-blocks-builder-preset-combo { + -fx-min-width: 260; +} + +.replace-blocks-builder-pane .replace-blocks-builder-rule-actions { + -fx-spacing: 6; +} + +.replace-blocks-builder-pane .replace-blocks-builder-properties .label { + -fx-text-fill: -color-text-light; +} + +.replace-blocks-builder-pane .replace-blocks-builder-y-range .label { + -fx-text-fill: -color-text-light; +} + +.replace-blocks-builder-pane .replace-blocks-builder-biome .label { + -fx-text-fill: -color-text-light; +} + +.replace-blocks-builder-pane .replace-blocks-builder-rules-table { + -fx-background-color: -color-field-cell-even; + -fx-control-inner-background: -color-field-cell-even; + -fx-table-cell-border-color: -color-scroll-pane-border; +} + +.replace-blocks-builder-pane .replace-blocks-builder-rules-table .column-header, +.replace-blocks-builder-pane .replace-blocks-builder-rules-table .column-header .filler, +.replace-blocks-builder-pane .replace-blocks-builder-rules-table .column-header-background .filler { + -fx-background-color: -color-dialog-header-background; + -fx-border-width: 0 0 1 0; + -fx-border-color: -color-scroll-pane-border; +} + +.replace-blocks-builder-pane .replace-blocks-builder-rules-table .column-header .label { + -fx-text-fill: -color-text-light; +} + +.replace-blocks-builder-pane .replace-blocks-builder-rules-table .placeholder { + -fx-background-color: -color-field-cell-even; +} + +.replace-blocks-builder-pane .replace-blocks-builder-rules-table .virtual-flow, +.replace-blocks-builder-pane .replace-blocks-builder-rules-table .virtual-flow .clipped-container, +.replace-blocks-builder-pane .replace-blocks-builder-rules-table .virtual-flow .sheet { + -fx-background-color: -color-field-cell-even; +} + +.replace-blocks-builder-pane .replace-blocks-builder-rules-table .table-cell { + -fx-text-fill: -color-text-light; +} + +.replace-blocks-builder-pane .replace-blocks-builder-result { + -fx-text-fill: -color-text-light; + -fx-control-inner-background: -color-field-cell-even; + -fx-background-color: -color-field-cell-even; + -fx-font-family: monospace; +} + +.replace-blocks-builder-pane .replace-blocks-builder-rules-table .table-row-cell:even { + -fx-background-color: -color-field-cell-even; +} + +.replace-blocks-builder-pane .replace-blocks-builder-rules-table .table-row-cell:odd { + -fx-background-color: -color-field-cell-odd; +} + +.replace-blocks-builder-pane .replace-blocks-builder-rules-table .table-row-cell:selected { + -fx-background-color: -color-button-hover-background; +} + +.replace-blocks-builder-pane .replace-blocks-builder-rules-table .table-row-cell:empty { + -fx-background-color: -color-field-cell-even; +} + +.replace-blocks-builder-pane .replace-blocks-builder-rules-table .table-row-cell:empty .table-cell { + -fx-border-color: transparent; +} + +.replace-blocks-builder-pane .replace-blocks-builder-rule-marquee { + -fx-fill: rgba(74, 163, 255, 0.12); + -fx-stroke: #4aa3ff; + -fx-stroke-width: 1; +} + +.combo-box-popup .list-view .list-cell:filled { + -fx-text-fill: -color-text-light; +} + +.combo-box-popup .list-view .list-cell:filled .text { + -fx-fill: -color-text-light; +} + +.combo-box-popup .list-view .list-cell:filled:hover, +.combo-box-popup .list-view .list-cell:filled:focused, +.combo-box-popup .list-view .list-cell:filled:selected { + -fx-background-color: -color-menu-hover-background; +} + +.combo-box-popup .list-view .list-cell:filled:hover, +.combo-box-popup .list-view .list-cell:filled:focused, +.combo-box-popup .list-view .list-cell:filled:selected, +.combo-box-popup .list-view .list-cell:filled:hover .text, +.combo-box-popup .list-view .list-cell:filled:focused .text, +.combo-box-popup .list-view .list-cell:filled:selected .text { + -fx-text-fill: -color-text-light; + -fx-fill: -color-text-light; +} + +.replace-blocks-builder-suggestion-normal { + -fx-fill: -color-text-light; +} + +.replace-blocks-builder-suggestion-highlight { + -fx-fill: #4aa3ff; + -fx-font-weight: bold; +} + +.combo-box-popup .replace-blocks-builder-dropdown { + -fx-border-width: 0; +} + +.combo-box-popup .replace-blocks-builder-dropdown .list-cell:filled:hover { + -fx-background-color: rgba(74, 163, 255, 0.32); + -fx-background-insets: 0; +} + +.combo-box-popup .replace-blocks-builder-dropdown .list-cell:filled:focused, +.combo-box-popup .replace-blocks-builder-dropdown .list-cell:filled:selected, +.combo-box-popup .replace-blocks-builder-dropdown .list-cell:filled:autocomplete-highlighted { + -fx-background-color: #3188dc, #4aa3ff; + -fx-background-insets: 0, 1; + -fx-text-fill: white; +} + +.combo-box-popup .replace-blocks-builder-dropdown .list-cell:filled:hover .text, +.combo-box-popup .replace-blocks-builder-dropdown .list-cell:filled:focused .text, +.combo-box-popup .replace-blocks-builder-dropdown .list-cell:filled:selected .text, +.combo-box-popup .replace-blocks-builder-dropdown .list-cell:filled:autocomplete-highlighted .text { + -fx-fill: white; +} + +.combo-box-popup .replace-blocks-builder-dropdown .list-cell:filled:focused .replace-blocks-builder-suggestion-highlight, +.combo-box-popup .replace-blocks-builder-dropdown .list-cell:filled:selected .replace-blocks-builder-suggestion-highlight, +.combo-box-popup .replace-blocks-builder-dropdown .list-cell:filled:autocomplete-highlighted .replace-blocks-builder-suggestion-highlight { + -fx-fill: white; +} + +.replace-blocks-builder-help-pane .replace-blocks-builder-help { + -fx-background-color: -color-dialog-background; +} + +.replace-blocks-builder-help-pane .replace-blocks-builder-help-heading { + -fx-font-weight: bold; + -fx-text-fill: -color-text-light; +} + +.replace-blocks-builder-help-pane .replace-blocks-builder-help-text { + -fx-text-fill: -color-text-light; +} + .change-nbt-dialog-pane .scroll-pane { -fx-pref-height: 1000; -fx-max-height: 1000; @@ -45,4 +286,4 @@ .change-nbt-dialog-pane { -fx-pref-height: 500; -} \ No newline at end of file +} diff --git a/src/test/java/net/querz/mcaselector/changer/fields/ReplaceBlocksFieldTest.java b/src/test/java/net/querz/mcaselector/changer/fields/ReplaceBlocksFieldTest.java new file mode 100644 index 00000000..10923f2a --- /dev/null +++ b/src/test/java/net/querz/mcaselector/changer/fields/ReplaceBlocksFieldTest.java @@ -0,0 +1,574 @@ +package net.querz.mcaselector.changer.fields; + +import net.querz.mcaselector.io.mca.ChunkData; +import net.querz.mcaselector.io.mca.RegionChunk; +import net.querz.mcaselector.util.point.Point2i; +import net.querz.mcaselector.version.ChunkFilter; +import net.querz.mcaselector.version.VersionHandler; +import net.querz.mcaselector.version.java_1_9.ChunkFilter_15w32a; +import net.querz.nbt.CompoundTag; +import net.querz.nbt.ListTag; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotEquals; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +class ReplaceBlocksFieldTest { + + @BeforeAll + static void initializeVersionHandlers() { + VersionHandler.init(); + } + + @Test + void keepsLegacyNameSourcesAsRegexMode() { + ReplaceBlocksField field = parse("minecraft:stone=minecraft:dirt"); + ChunkFilter.BlockReplaceSource source = onlySource(field); + + assertEquals(ChunkFilter.BlockReplaceSourceType.LEGACY_REGEX_NAME, source.getType()); + assertEquals("minecraft:stone=minecraft:dirt", field.valueToString()); + assertTrue(source.matches(state("minecraft:stone"))); + assertFalse(source.matches(state("minecraft:deepslate"))); + } + + @Test + void keepsQuotedCustomSourcesAsLegacyRegexMode() { + ReplaceBlocksField field = parse("'custom:block'=minecraft:stone"); + ChunkFilter.BlockReplaceSource source = onlySource(field); + + assertEquals(ChunkFilter.BlockReplaceSourceType.LEGACY_REGEX_NAME, source.getType()); + assertEquals("'custom:block'=minecraft:stone", field.valueToString()); + assertTrue(source.matches(state("custom:block"))); + } + + @Test + void parsesExplicitRegexSourceMode() { + ReplaceBlocksField field = parse("regex(minecraft:.*_log)=minecraft:stone"); + ChunkFilter.BlockReplaceSource source = onlySource(field); + + assertEquals(ChunkFilter.BlockReplaceSourceType.REGEX_NAME, source.getType()); + assertEquals("regex(minecraft:.*_log)=minecraft:stone", field.valueToString()); + assertTrue(source.matches(state("minecraft:oak_log"))); + assertFalse(source.matches(state("minecraft:stone"))); + } + + @Test + void supportsQuotedRegexWrapperArguments() { + ReplaceBlocksField field = parse("regex('minecraft:(oak|birch)_log')=minecraft:stone"); + ChunkFilter.BlockReplaceSource source = onlySource(field); + + assertEquals(ChunkFilter.BlockReplaceSourceType.REGEX_NAME, source.getType()); + assertEquals("regex('minecraft:(oak|birch)_log')=minecraft:stone", field.valueToString()); + assertTrue(source.matches(state("minecraft:oak_log"))); + assertTrue(source.matches(state("minecraft:birch_log"))); + assertFalse(source.matches(state("minecraft:spruce_log"))); + } + + @Test + void parsesQuotedTargetWithTileAndFollowingRule() { + ReplaceBlocksField field = new ReplaceBlocksField(); + + assertTrue(field.parseNewValue( + "literal(stone)='example:target';{id:\"example:tile\"}, literal(dirt)=minecraft:gold_block")); + List targets = new ArrayList<>(field.getNewValue().values()); + assertEquals(2, targets.size()); + assertEquals("example:target", targets.get(0).getName()); + assertEquals("example:tile", targets.get(0).getTile().getString("id")); + assertEquals("minecraft:gold_block", targets.get(1).getName()); + } + + @Test + void rejectsNonCompoundTargetTileInsteadOfThrowing() { + ReplaceBlocksField field = new ReplaceBlocksField(); + + assertFalse(field.parseNewValue("literal(stone)=minecraft:dirt;\"not_a_compound\"")); + } + + @Test + void rejectsInvalidExplicitRegex() { + ReplaceBlocksField field = new ReplaceBlocksField(); + + assertFalse(field.parseNewValue("regex(*)=minecraft:stone")); + } + + @Test + void parsesExplicitLiteralSourceMode() { + ReplaceBlocksField field = parse("literal(stone)=minecraft:dirt"); + ChunkFilter.BlockReplaceSource source = onlySource(field); + + assertEquals(ChunkFilter.BlockReplaceSourceType.LITERAL_NAME, source.getType()); + assertEquals("literal(minecraft:stone)=minecraft:dirt", field.valueToString()); + assertTrue(source.matches(state("minecraft:stone"))); + assertFalse(source.matches(state("minecraft:stone_slab"))); + } + + @Test + void acceptsSyntacticallyValidVanillaIdsOutsideTheBundledRegistry() { + ReplaceBlocksField field = new ReplaceBlocksField(); + + assertTrue(field.parseNewValue("literal(minecraft:future_block)=minecraft:future_target")); + assertEquals("literal(minecraft:future_block)=minecraft:future_target", field.valueToString()); + } + + @Test + void literalModeDoesNotInterpretRegexMetacharacters() { + ReplaceBlocksField field = parse("literal(example:block.name)=minecraft:dirt"); + ChunkFilter.BlockReplaceSource source = onlySource(field); + + assertEquals(ChunkFilter.BlockReplaceSourceType.LITERAL_NAME, source.getType()); + assertTrue(source.matches(state("example:block.name"))); + assertFalse(source.matches(state("example:blockXname"))); + } + + @Test + void keepsSourceStateMatchingExact() { + ReplaceBlocksField field = parse("{Name:\"minecraft:oak_stairs\",Properties:{facing:\"north\"}}=minecraft:stone"); + ChunkFilter.BlockReplaceSource source = onlySource(field); + + assertEquals(ChunkFilter.BlockReplaceSourceType.EXACT_STATE, source.getType()); + assertTrue(source.matches(state("minecraft:oak_stairs", Map.of("facing", "north")))); + assertFalse(source.matches(state("minecraft:oak_stairs", Map.of("facing", "north", "half", "bottom")))); + } + + @Test + void parsesSelectedPropertiesMode() { + ReplaceBlocksField field = parse("props({Name:\"minecraft:oak_stairs\",Properties:{facing:\"north\"}})=minecraft:stone"); + ChunkFilter.BlockReplaceSource source = onlySource(field); + + assertEquals(ChunkFilter.BlockReplaceSourceType.SELECTED_PROPERTIES, source.getType()); + assertTrue(field.valueToString().startsWith("props(")); + assertTrue(new ReplaceBlocksField().parseNewValue(field.valueToString())); + assertTrue(source.matches(state("minecraft:oak_stairs", Map.of( + "facing", "north", + "half", "bottom", + "shape", "straight", + "waterlogged", "false")))); + assertFalse(source.matches(state("minecraft:oak_stairs", Map.of("facing", "south", "half", "bottom")))); + assertFalse(source.matches(state("minecraft:oak_slab", Map.of("facing", "north")))); + assertFalse(source.matches(state("minecraft:oak_stairs"))); + } + + @Test + void rejectsEmptySelectedPropertiesMode() { + ReplaceBlocksField field = new ReplaceBlocksField(); + + assertFalse(field.parseNewValue("props({Name:\"minecraft:stone\"})=minecraft:dirt")); + assertFalse(field.parseNewValue("props({Name:\"minecraft:stone\",Properties:{}})=minecraft:dirt")); + } + + @Test + void matchesAirUsesSourceModeSemantics() { + assertTrue(onlySource(parse("literal(air)=minecraft:glass")).matchesAir()); + assertTrue(onlySource(parse("regex(minecraft:.*)=minecraft:glass")).matchesAir()); + assertFalse(onlySource(parse("literal(minecraft:stone)=minecraft:glass")).matchesAir()); + } + + @Test + void parsesTileEntitySourceFilters() { + ReplaceBlocksField tileOnly = parse("tile(literal(chest))=minecraft:stone"); + ChunkFilter.BlockReplaceSource tileSource = onlySource(tileOnly); + + assertEquals(ChunkFilter.BlockReplaceSourceType.LITERAL_NAME, tileSource.getType()); + assertEquals(ChunkFilter.BlockReplaceTileEntityMode.REQUIRE_TILE_ENTITY, tileSource.getTileEntityMode()); + assertEquals("tile(literal(minecraft:chest))=minecraft:stone", tileOnly.valueToString()); + assertTrue(tileSource.matches(state("minecraft:chest"), true)); + assertFalse(tileSource.matches(state("minecraft:chest"), false)); + + ReplaceBlocksField noTile = parse("no_tile(props({Name:\"minecraft:oak_stairs\",Properties:{facing:\"north\"}}))=minecraft:stone"); + ChunkFilter.BlockReplaceSource noTileSource = onlySource(noTile); + + assertEquals(ChunkFilter.BlockReplaceSourceType.SELECTED_PROPERTIES, noTileSource.getType()); + assertEquals(ChunkFilter.BlockReplaceTileEntityMode.EXCLUDE_TILE_ENTITY, noTileSource.getTileEntityMode()); + assertTrue(noTileSource.matches(state("minecraft:oak_stairs", Map.of("facing", "north", "half", "bottom")), false)); + assertFalse(noTileSource.matches(state("minecraft:oak_stairs", Map.of("facing", "north", "half", "bottom")), true)); + assertTrue(new ReplaceBlocksField().parseNewValue(noTile.valueToString())); + } + + @Test + void tileEntitySourceFiltersParticipateInAirMatching() { + assertFalse(onlySource(parse("tile(literal(air))=minecraft:glass")).matchesAir()); + assertTrue(onlySource(parse("no_tile(literal(air))=minecraft:glass")).matchesAir()); + } + + @Test + void parsesBuilderPresetGeneratedRules() { + assertEquals("literal(minecraft:air)=minecraft:stone", parse("literal(minecraft:air)=minecraft:stone").valueToString()); + + ChunkFilter.BlockReplaceSource fluids = onlySource(parse("regex(minecraft:(water|lava))=minecraft:air")); + assertTrue(fluids.matches(state("minecraft:water"))); + assertTrue(fluids.matches(state("minecraft:lava"))); + assertFalse(fluids.matches(state("minecraft:stone"))); + + ChunkFilter.BlockReplaceSource logsLeaves = onlySource(parse("regex(minecraft:.*_(log|wood|stem|hyphae|leaves))=minecraft:air")); + assertTrue(logsLeaves.matches(state("minecraft:oak_log"))); + assertTrue(logsLeaves.matches(state("minecraft:crimson_stem"))); + assertTrue(logsLeaves.matches(state("minecraft:oak_leaves"))); + assertFalse(logsLeaves.matches(state("minecraft:stone"))); + + ChunkFilter.BlockReplaceSource ores = onlySource(parse("regex(minecraft:.*_ore)=minecraft:stone")); + assertTrue(ores.matches(state("minecraft:diamond_ore"))); + assertTrue(ores.matches(state("minecraft:deepslate_diamond_ore"))); + assertFalse(ores.matches(state("minecraft:stone"))); + + ChunkFilter.BlockReplaceSource containers = onlySource(parse("tile(regex(minecraft:.*(chest|barrel|furnace|smoker|hopper|dispenser|dropper|shulker_box)))=minecraft:air")); + assertEquals(ChunkFilter.BlockReplaceTileEntityMode.REQUIRE_TILE_ENTITY, containers.getTileEntityMode()); + assertTrue(containers.matches(state("minecraft:chest"), true)); + assertTrue(containers.matches(state("minecraft:white_shulker_box"), true)); + assertFalse(containers.matches(state("minecraft:chest"), false)); + } + + @Test + void parsesYRangeSourceFilter() { + ReplaceBlocksField field = parse("y(-64..64, literal(stone))=minecraft:dirt"); + ChunkFilter.BlockReplaceSource source = onlySource(field); + + assertEquals("y(-64..64, literal(minecraft:stone))=minecraft:dirt", field.valueToString()); + assertEquals(-64, source.getMinY()); + assertEquals(64, source.getMaxY()); + assertTrue(source.matches(state("minecraft:stone"), false, -64)); + assertTrue(source.matches(state("minecraft:stone"), false, 64)); + assertFalse(source.matches(state("minecraft:stone"), false, 65)); + assertFalse(source.matches(state("minecraft:dirt"), false, 0)); + } + + @Test + void parsesOpenEndedYRangeSourceFilters() { + ChunkFilter.BlockReplaceSource minOnly = onlySource(parse("y(64.., literal(stone))=minecraft:dirt")); + assertEquals(64, minOnly.getMinY()); + assertNull(minOnly.getMaxY()); + assertFalse(minOnly.matches(state("minecraft:stone"), false, 63)); + assertTrue(minOnly.matches(state("minecraft:stone"), false, 64)); + + ChunkFilter.BlockReplaceSource maxOnly = onlySource(parse("y(..-1, literal(stone))=minecraft:dirt")); + assertNull(maxOnly.getMinY()); + assertEquals(-1, maxOnly.getMaxY()); + assertTrue(maxOnly.matches(state("minecraft:stone"), false, -1)); + assertFalse(maxOnly.matches(state("minecraft:stone"), false, 0)); + } + + @Test + void combinesYRangeWithTileSourceFilters() { + ReplaceBlocksField field = parse("tile(y(0..15, literal(chest)))=minecraft:stone"); + ChunkFilter.BlockReplaceSource source = onlySource(field); + + assertEquals(ChunkFilter.BlockReplaceTileEntityMode.REQUIRE_TILE_ENTITY, source.getTileEntityMode()); + assertEquals("y(0..15, tile(literal(minecraft:chest)))=minecraft:stone", field.valueToString()); + assertTrue(source.matches(state("minecraft:chest"), true, 0)); + assertFalse(source.matches(state("minecraft:chest"), false, 0)); + assertFalse(source.matches(state("minecraft:chest"), true, 16)); + } + + @Test + void parsesBiomeSourceFilter() { + ReplaceBlocksField field = parse("biome(plains;minecraft:forest, literal(stone))=minecraft:dirt"); + ChunkFilter.BlockReplaceSource source = onlySource(field); + + assertEquals(Set.of("minecraft:plains", "minecraft:forest"), source.getBiomes()); + assertEquals("biome(minecraft:plains;minecraft:forest, literal(minecraft:stone))=minecraft:dirt", field.valueToString()); + assertTrue(source.matches(state("minecraft:stone"), false, 0, "minecraft:plains")); + assertTrue(source.matches(state("minecraft:stone"), false, 0, "minecraft:forest")); + assertFalse(source.matches(state("minecraft:stone"), false, 0, "minecraft:desert")); + assertFalse(source.matches(state("minecraft:stone"), false, 0)); + + ReplaceBlocksField custom = parse("biome(example:glowing_grove, literal(stone))=minecraft:dirt"); + assertEquals(Set.of("example:glowing_grove"), onlySource(custom).getBiomes()); + } + + @Test + void combinesBiomeWithYRangeAndTileSourceFilters() { + ReplaceBlocksField field = parse("biome(minecraft:plains, y(0..15, tile(literal(chest))))=minecraft:stone"); + ChunkFilter.BlockReplaceSource source = onlySource(field); + + assertEquals("biome(minecraft:plains, y(0..15, tile(literal(minecraft:chest))))=minecraft:stone", field.valueToString()); + assertTrue(source.matches(state("minecraft:chest"), true, 0, "minecraft:plains")); + assertFalse(source.matches(state("minecraft:chest"), false, 0, "minecraft:plains")); + assertFalse(source.matches(state("minecraft:chest"), true, 16, "minecraft:plains")); + assertFalse(source.matches(state("minecraft:chest"), true, 0, "minecraft:forest")); + } + + @Test + void conditionalSourcesFailClosedWithoutRequiredContext() { + CompoundTag chest = state("minecraft:chest"); + ChunkFilter.BlockReplaceSource tile = ChunkFilter.BlockReplaceSource.literalName("minecraft:chest") + .withTileEntityMode(ChunkFilter.BlockReplaceTileEntityMode.EXCLUDE_TILE_ENTITY); + ChunkFilter.BlockReplaceSource yRange = ChunkFilter.BlockReplaceSource.literalName("minecraft:chest") + .withYRange(0, 15); + ChunkFilter.BlockReplaceSource biome = ChunkFilter.BlockReplaceSource.literalName("minecraft:chest") + .withBiomes(Set.of("minecraft:plains")); + + assertTrue(tile.requiresLocationContext()); + assertFalse(tile.matches(chest)); + assertFalse(yRange.matches(chest)); + assertFalse(biome.matches(chest)); + assertTrue(tile.matches(chest, false)); + assertTrue(yRange.matches(chest, false, 8)); + assertTrue(biome.matches(chest, false, 8, "minecraft:plains")); + } + + @Test + void duplicateSourcesKeepTheLastTarget() { + ReplaceBlocksField field = parse( + "literal(stone)=minecraft:dirt, literal(minecraft:stone)=minecraft:gold_block"); + + assertEquals(1, field.getNewValue().size()); + assertEquals("minecraft:gold_block", field.getNewValue().values().iterator().next().getName()); + assertEquals("literal(minecraft:stone)=minecraft:gold_block", field.valueToString()); + } + + @Test + void blockReplaceSourcesUseAllMatchingConditionsAsStableValueIdentity() { + CompoundTag firstState = state("minecraft:oak_stairs"); + CompoundTag firstProperties = new CompoundTag(); + firstProperties.putString("facing", "north"); + firstProperties.putString("half", "top"); + firstState.put("Properties", firstProperties); + CompoundTag reorderedState = state("minecraft:oak_stairs"); + CompoundTag reorderedProperties = new CompoundTag(); + reorderedProperties.putString("half", "top"); + reorderedProperties.putString("facing", "north"); + reorderedState.put("Properties", reorderedProperties); + + ChunkFilter.BlockReplaceSource first = ChunkFilter.BlockReplaceSource.selectedProperties(firstState) + .withTileEntityMode(ChunkFilter.BlockReplaceTileEntityMode.REQUIRE_TILE_ENTITY) + .withYRange(-16, 31) + .withBiomes(List.of("minecraft:plains", "minecraft:forest")); + ChunkFilter.BlockReplaceSource reordered = ChunkFilter.BlockReplaceSource.selectedProperties(reorderedState) + .withTileEntityMode(ChunkFilter.BlockReplaceTileEntityMode.REQUIRE_TILE_ENTITY) + .withYRange(-16, 31) + .withBiomes(List.of("minecraft:forest", "minecraft:plains")); + + assertEquals(first, reordered); + assertEquals(first.hashCode(), reordered.hashCode()); + assertNotEquals(first, reordered.withYRange(-15, 31)); + assertNotEquals(first, ChunkFilter.BlockReplaceSource.literalName("minecraft:oak_stairs") + .withTileEntityMode(ChunkFilter.BlockReplaceTileEntityMode.REQUIRE_TILE_ENTITY) + .withYRange(-16, 31) + .withBiomes(List.of("minecraft:plains", "minecraft:forest"))); + } + + @Test + void blockReplaceSourceStateCannotMutateAfterMapInsertion() { + CompoundTag originalState = state("minecraft:stone", Map.of("variant", "smooth")); + ChunkFilter.BlockReplaceSource source = new ChunkFilter.BlockReplaceSource(originalState); + Map sources = new HashMap<>(); + sources.put(source, "target"); + + originalState.putString("Name", "minecraft:dirt"); + source.getState().putString("Name", "minecraft:gold_block"); + + ChunkFilter.BlockReplaceSource equivalent = new ChunkFilter.BlockReplaceSource( + state("minecraft:stone", Map.of("variant", "smooth"))); + assertEquals(source, equivalent); + assertEquals("target", sources.get(equivalent)); + assertEquals("minecraft:stone", source.getState().getString("Name")); + } + + @Test + void rejectsInvalidYRangeSourceFilters() { + ReplaceBlocksField field = new ReplaceBlocksField(); + + assertFalse(field.parseNewValue("y(.., literal(stone))=minecraft:dirt")); + assertFalse(field.parseNewValue("y(10..0, literal(stone))=minecraft:dirt")); + assertFalse(field.parseNewValue("y(foo..10, literal(stone))=minecraft:dirt")); + assertFalse(field.parseNewValue("y(0..10)=minecraft:dirt")); + } + + @Test + void rejectsInvalidBiomeSourceFilters() { + ReplaceBlocksField field = new ReplaceBlocksField(); + + assertFalse(field.parseNewValue("biome(, literal(stone))=minecraft:dirt")); + assertFalse(field.parseNewValue("biome(minecraft:not_a_biome, literal(stone))=minecraft:dirt")); + assertFalse(field.parseNewValue("biome(minecraft:plains)=minecraft:dirt")); + assertFalse(field.parseNewValue("biome(minecraft:plains,)=minecraft:dirt")); + } + + @Test + void marksModernChunksForRelightingAfterReplacement() { + CompoundTag root = modernRoot(); + + changeStoneToDirt(root); + + assertEquals(0, root.getByte("isLightOn")); + } + + @Test + void noMatchLeavesModernChunkMetadataUnchanged() { + CompoundTag root = modernRoot(); + CompoundTag section = root.getListTag("sections").getCompound(0); + section.putByteArray("BlockLight", new byte[] { 1 }); + section.putByteArray("SkyLight", new byte[] { 1 }); + CompoundTag heightmaps = new CompoundTag(); + heightmaps.putLongArray("WORLD_SURFACE", new long[] { 7 }); + root.put("Heightmaps", heightmaps); + CompoundTag before = (CompoundTag) root.copy(); + + parse("literal(minecraft:diamond_block)=minecraft:dirt").change(chunkData(root)); + + assertEquals(before, root); + } + + @Test + void noMatchLeavesEarlyFlatChunkMetadataUnchanged() { + CompoundTag root = new CompoundTag(); + root.putInt("DataVersion", 2834); + CompoundTag level = new CompoundTag(); + level.putInt("xPos", 0); + level.putInt("zPos", 0); + level.putByte("isLightOn", (byte) 1); + ListTag sections = modernSections(); + sections.getCompound(0).putByteArray("BlockLight", new byte[] { 1 }); + sections.getCompound(0).putByteArray("SkyLight", new byte[] { 1 }); + level.put("Sections", sections); + CompoundTag heightmaps = new CompoundTag(); + heightmaps.putLongArray("WORLD_SURFACE", new long[] { 7 }); + level.put("Heightmaps", heightmaps); + root.put("Level", level); + CompoundTag before = (CompoundTag) root.copy(); + + parse("literal(minecraft:diamond_block)=minecraft:dirt").change(chunkData(root)); + + assertEquals(before, root); + } + + @Test + void blocksReplacementContractReportsWhetherAnythingChanged() throws NoSuchMethodException { + Method replaceBlocks = ChunkFilter.Blocks.class.getDeclaredMethod("replaceBlocks", ChunkData.class, Map.class); + assertEquals(boolean.class, replaceBlocks.getReturnType()); + } + + @Test + void reportsWhetherAReplaceBlocksFieldActuallyMatched() { + ReplaceBlocksField field = parse("literal(minecraft:diamond_block)=minecraft:dirt"); + assertFalse(field.applyWithResult(chunkData(modernRoot()), false)); + + field = parse("literal(minecraft:stone)=minecraft:dirt"); + assertTrue(field.applyWithResult(chunkData(modernRoot()), false)); + } + + @Test + void chunkDataTracksReplaceBlocksSeparatelyFromOtherFields() { + ReplaceBlocksField field = parse("literal(minecraft:stone)=minecraft:dirt"); + + ChunkData.FieldChangeResult result = chunkData(modernRoot()).applyFieldChangesTracked(List.of(field), false); + + assertTrue(result.changed()); + assertTrue(result.replaceBlocksChanged()); + } + + @Test + void forceProducesTheSameReplacementAsChange() { + CompoundTag changed = modernRoot(); + CompoundTag forced = modernRoot(); + ReplaceBlocksField field = parse("literal(minecraft:stone)=minecraft:dirt"); + + field.change(chunkData(changed)); + field.force(chunkData(forced)); + + assertEquals(changed, forced); + } + + @Test + void marksEarlyFlatChunksForRelightingWithAByteTag() { + CompoundTag root = new CompoundTag(); + root.putInt("DataVersion", 2834); + CompoundTag level = new CompoundTag(); + level.putInt("xPos", 0); + level.putInt("zPos", 0); + level.putByte("isLightOn", (byte) 1); + level.put("Sections", modernSections()); + root.put("Level", level); + + changeStoneToDirt(root); + + assertEquals(0, level.getByte("isLightOn")); + assertEquals(net.querz.nbt.Tag.Type.BYTE, level.get("isLightOn").getType()); + } + + @Test + void writesLegacyLightPopulatedAsAByteTag() { + CompoundTag root = new CompoundTag(); + CompoundTag level = new CompoundTag(); + level.putByte("LightPopulated", (byte) 1); + root.put("Level", level); + RegionChunk region = new RegionChunk(new Point2i(0, 0)); + region.setData(root); + + new ChunkFilter_15w32a.LightPopulated().setLightPopulated( + new ChunkData(new Point2i(0, 0), region, null, null, true), (byte) 0); + + assertEquals(0, level.getByte("LightPopulated")); + assertEquals(net.querz.nbt.Tag.Type.BYTE, level.get("LightPopulated").getType()); + } + + private void changeStoneToDirt(CompoundTag root) { + parse("literal(minecraft:stone)=minecraft:dirt").change(chunkData(root)); + } + + private ChunkData chunkData(CompoundTag root) { + RegionChunk region = new RegionChunk(new Point2i(0, 0)); + region.setData(root); + return new ChunkData(new Point2i(0, 0), region, null, null, true); + } + + private CompoundTag modernRoot() { + CompoundTag root = new CompoundTag(); + root.putInt("DataVersion", 4671); + root.putInt("xPos", 0); + root.putInt("zPos", 0); + root.putByte("isLightOn", (byte) 1); + root.put("sections", modernSections()); + return root; + } + + private ListTag modernSections() { + ListTag palette = new ListTag(); + palette.add(state("minecraft:stone")); + CompoundTag blockStates = new CompoundTag(); + blockStates.put("palette", palette); + CompoundTag section = new CompoundTag(); + section.putByte("Y", (byte) 0); + section.put("block_states", blockStates); + ListTag sections = new ListTag(); + sections.add(section); + return sections; + } + + private ReplaceBlocksField parse(String value) { + ReplaceBlocksField field = new ReplaceBlocksField(); + assertTrue(field.parseNewValue(value)); + return field; + } + + private ChunkFilter.BlockReplaceSource onlySource(ReplaceBlocksField field) { + assertEquals(1, field.getNewValue().size()); + return field.getNewValue().keySet().iterator().next(); + } + + private CompoundTag state(String name) { + CompoundTag state = new CompoundTag(); + state.putString("Name", name); + return state; + } + + private CompoundTag state(String name, Map properties) { + CompoundTag state = state(name); + CompoundTag props = new CompoundTag(); + for (Map.Entry property : properties.entrySet()) { + props.putString(property.getKey(), property.getValue()); + } + state.put("Properties", props); + return state; + } +} diff --git a/src/test/java/net/querz/mcaselector/changer/fields/ReplaceBlocksParserTest.java b/src/test/java/net/querz/mcaselector/changer/fields/ReplaceBlocksParserTest.java new file mode 100644 index 00000000..7c6139c6 --- /dev/null +++ b/src/test/java/net/querz/mcaselector/changer/fields/ReplaceBlocksParserTest.java @@ -0,0 +1,52 @@ +package net.querz.mcaselector.changer.fields; + +import net.querz.mcaselector.version.ChunkFilter; +import org.junit.jupiter.api.Test; +import java.util.List; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertInstanceOf; + +class ReplaceBlocksParserTest { + + @Test + void parsesOrderedRulesWithQuotedTargetTiles() { + ReplaceBlocksParser.Result result = ReplaceBlocksParser.parse( + "literal(stone)='example:target';{id:\"example:tile\"}, literal(dirt)=minecraft:gold_block"); + + ReplaceBlocksParser.Success success = assertInstanceOf(ReplaceBlocksParser.Success.class, result); + List rules = success.rules(); + assertEquals(2, rules.size()); + assertEquals("example:target", rules.get(0).target().getName()); + assertEquals("example:tile", rules.get(0).target().getTile().getString("id")); + assertEquals(ChunkFilter.BlockReplaceSourceType.LITERAL_NAME, rules.get(1).source().getType()); + } + + @Test + void acceptsSyntacticallyValidFutureVanillaIdsWithoutRegistryMembership() { + ReplaceBlocksParser.Result result = ReplaceBlocksParser.parse( + "literal(minecraft:future_block)=minecraft:future_target"); + + ReplaceBlocksParser.Success success = assertInstanceOf(ReplaceBlocksParser.Success.class, result); + assertEquals("minecraft:future_block", success.rules().get(0).source().getName()); + assertEquals("minecraft:future_target", success.rules().get(0).target().getName()); + } + + @Test + void rejectsInvalidLegacyRegexBeforeExecution() { + ReplaceBlocksParser.Result result = ReplaceBlocksParser.parse( + "'minecraft:['=minecraft:stone"); + + ReplaceBlocksParser.Failure failure = assertInstanceOf(ReplaceBlocksParser.Failure.class, result); + assertEquals("INVALID_REGEX", failure.error().code().name()); + assertEquals(0, failure.error().offset()); + } + + @Test + void reportsInvalidTargetTileSeparatelyFromInvalidTarget() { + ReplaceBlocksParser.Result result = ReplaceBlocksParser.parse( + "literal(minecraft:stone)=minecraft:barrel;not_snbt"); + + ReplaceBlocksParser.Failure failure = assertInstanceOf(ReplaceBlocksParser.Failure.class, result); + assertEquals(ReplaceBlocksParser.ErrorCode.INVALID_TILE, failure.error().code()); + } +} diff --git a/src/test/java/net/querz/mcaselector/io/job/FieldChangerIntegrationTest.java b/src/test/java/net/querz/mcaselector/io/job/FieldChangerIntegrationTest.java new file mode 100644 index 00000000..d84e81d9 --- /dev/null +++ b/src/test/java/net/querz/mcaselector/io/job/FieldChangerIntegrationTest.java @@ -0,0 +1,244 @@ +package net.querz.mcaselector.io.job; + +import net.querz.mcaselector.changer.fields.ReplaceBlocksField; +import net.querz.mcaselector.io.FileHelper; +import net.querz.mcaselector.io.JobHandler; +import net.querz.mcaselector.io.RegionDirectories; +import net.querz.mcaselector.io.WorldDirectories; +import net.querz.mcaselector.io.mca.CompressionType; +import net.querz.mcaselector.io.mca.Region; +import net.querz.mcaselector.io.mca.RegionChunk; +import net.querz.mcaselector.io.mca.RegionMCAFile; +import net.querz.mcaselector.selection.Selection; +import net.querz.mcaselector.util.point.Point2i; +import net.querz.mcaselector.util.progress.Progress; +import net.querz.mcaselector.version.VersionHandler; +import net.querz.nbt.CompoundTag; +import net.querz.nbt.ListTag; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.attribute.FileTime; +import java.time.Duration; +import java.time.Instant; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.atomic.AtomicInteger; + +import static org.junit.jupiter.api.Assertions.assertArrayEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +class FieldChangerIntegrationTest { + + @BeforeAll + static void initializeVersionHandlers() { + VersionHandler.init(); + } + + @Test + void savesTheChangedChunkThenRelightsExistingCrossRegionNeighborsWithoutSidecars(@TempDir Path tempDir) + throws Exception { + WorldDirectories world = createWorld(tempDir); + Point2i center = new Point2i(31, 31); + List chunks = squareAround(center); + writeRegionChunks(world, chunks); + Map sidecars = writeSidecarSentinels(world, chunks); + Selection selection = new Selection(); + selection.addChunk(center); + + FieldChanger.changeNBTFields(world, List.of(parse("literal(minecraft:stone)=minecraft:dirt")), false, + selection, new TestProgress(), true); + waitForJobs(); + + for (Point2i chunk : chunks) { + CompoundTag root = loadChunk(world, chunk); + assertEquals(0, root.getByte("isLightOn"), "relight flag for " + chunk); + assertEquals(chunk.equals(center) ? "minecraft:dirt" : "minecraft:stone", firstPaletteName(root)); + } + for (Map.Entry sidecar : sidecars.entrySet()) { + assertSnapshot(sidecar.getKey(), sidecar.getValue()); + } + } + + @Test + void zeroMatchDoesNotRewriteAnyRegionOrCreateSidecars(@TempDir Path tempDir) throws Exception { + WorldDirectories world = createWorld(tempDir); + Point2i center = new Point2i(31, 31); + List chunks = squareAround(center); + writeRegionChunks(world, chunks); + ageRegionFiles(world); + Map before = snapshotRegionFiles(world); + Selection selection = new Selection(); + selection.addChunk(center); + + FieldChanger.changeNBTFields(world, List.of(parse("literal(minecraft:diamond_block)=minecraft:dirt")), false, + selection, new TestProgress(), true); + waitForJobs(); + + assertEquals(before.keySet(), snapshotRegionFiles(world).keySet()); + for (Map.Entry file : before.entrySet()) { + assertSnapshot(file.getKey(), file.getValue()); + } + assertTrue(isDirectoryEmpty(world.getPoi().toPath())); + assertTrue(isDirectoryEmpty(world.getEntities().toPath())); + } + + private WorldDirectories createWorld(Path root) throws IOException { + Path region = Files.createDirectories(root.resolve("region")); + Path poi = Files.createDirectories(root.resolve("poi")); + Path entities = Files.createDirectories(root.resolve("entities")); + return new WorldDirectories(region.toFile(), poi.toFile(), entities.toFile()); + } + + private void writeRegionChunks(WorldDirectories world, List chunks) throws IOException { + Map> grouped = new HashMap<>(); + for (Point2i chunk : chunks) { + grouped.computeIfAbsent(chunk.chunkToRegion(), ignored -> new ArrayList<>()).add(chunk); + } + for (Map.Entry> entry : grouped.entrySet()) { + File file = new File(world.getRegion(), FileHelper.createMCAFileName(entry.getKey())); + RegionMCAFile mca = new RegionMCAFile(file); + for (Point2i location : entry.getValue()) { + RegionChunk chunk = new RegionChunk(location); + chunk.setData(modernRoot(location)); + chunk.setCompressionType(CompressionType.ZLIB); + mca.setChunkAt(location, chunk); + } + mca.saveWithTempFile(); + } + } + + private Map writeSidecarSentinels(WorldDirectories world, List chunks) throws IOException { + Map result = new HashMap<>(); + for (Point2i region : chunks.stream().map(Point2i::chunkToRegion).distinct().toList()) { + String name = FileHelper.createMCAFileName(region); + Path poi = world.getPoi().toPath().resolve(name); + Path entities = world.getEntities().toPath().resolve(name); + Files.writeString(poi, "poi sentinel " + region); + Files.writeString(entities, "entities sentinel " + region); + setOldModifiedTime(poi); + setOldModifiedTime(entities); + result.put(poi, snapshot(poi)); + result.put(entities, snapshot(entities)); + } + return result; + } + + private Map snapshotRegionFiles(WorldDirectories world) throws IOException { + Map result = new HashMap<>(); + try (var files = Files.list(world.getRegion().toPath())) { + for (Path file : files.toList()) { + result.put(file, snapshot(file)); + } + } + return result; + } + + private void ageRegionFiles(WorldDirectories world) throws IOException { + try (var files = Files.list(world.getRegion().toPath())) { + for (Path file : files.toList()) { + setOldModifiedTime(file); + } + } + } + + private void setOldModifiedTime(Path file) throws IOException { + Files.setLastModifiedTime(file, FileTime.from(Instant.parse("2020-01-01T00:00:00Z"))); + } + + private FileSnapshot snapshot(Path file) throws IOException { + return new FileSnapshot(Files.readAllBytes(file), Files.getLastModifiedTime(file)); + } + + private void assertSnapshot(Path file, FileSnapshot expected) throws IOException { + assertArrayEquals(expected.contents(), Files.readAllBytes(file)); + assertEquals(expected.modified(), Files.getLastModifiedTime(file)); + } + + private boolean isDirectoryEmpty(Path directory) throws IOException { + try (var files = Files.list(directory)) { + return files.findAny().isEmpty(); + } + } + + private CompoundTag loadChunk(WorldDirectories world, Point2i location) throws IOException { + RegionDirectories dirs = world.makeRegionDirectories(location.chunkToRegion()); + Region region = Region.loadRegionFile(dirs); + return region.getRegion().getChunkAt(location).getData(); + } + + private void waitForJobs() throws InterruptedException { + Instant deadline = Instant.now().plus(Duration.ofSeconds(10)); + while (JobHandler.getActiveJobs() > 0 && Instant.now().isBefore(deadline)) { + Thread.sleep(10); + } + assertEquals(0, JobHandler.getActiveJobs(), "field change jobs did not finish"); + } + + private List squareAround(Point2i center) { + List result = new ArrayList<>(); + for (int x = -1; x <= 1; x++) { + for (int z = -1; z <= 1; z++) { + result.add(center.add(x, z)); + } + } + return result; + } + + private ReplaceBlocksField parse(String value) { + ReplaceBlocksField field = new ReplaceBlocksField(); + assertTrue(field.parseNewValue(value)); + return field; + } + + private CompoundTag modernRoot(Point2i location) { + CompoundTag root = new CompoundTag(); + root.putInt("DataVersion", 4671); + root.putInt("xPos", location.getX()); + root.putInt("zPos", location.getZ()); + root.putByte("isLightOn", (byte) 1); + CompoundTag state = new CompoundTag(); + state.putString("Name", "minecraft:stone"); + ListTag palette = new ListTag(); + palette.add(state); + CompoundTag blockStates = new CompoundTag(); + blockStates.put("palette", palette); + CompoundTag section = new CompoundTag(); + section.putByte("Y", (byte) 0); + section.put("block_states", blockStates); + ListTag sections = new ListTag(); + sections.add(section); + root.put("sections", sections); + return root; + } + + private String firstPaletteName(CompoundTag root) { + return root.getListTag("sections").getCompound(0) + .getCompoundTag("block_states").getListTag("palette").getCompound(0).getString("Name"); + } + + private static final class TestProgress implements Progress { + + private final AtomicInteger current = new AtomicInteger(); + private volatile boolean cancelled; + + @Override public void setMax(int max) {} + @Override public void updateProgress(String msg, int progress) { current.set(progress); } + @Override public void done(String msg) {} + @Override public boolean taskCancelled() { return cancelled; } + @Override public void cancelTask() { cancelled = true; } + @Override public void incrementProgress(String msg) { current.incrementAndGet(); } + @Override public void incrementProgress(String msg, int progress) { current.addAndGet(progress); } + @Override public void setMessage(String msg) {} + } + + private record FileSnapshot(byte[] contents, FileTime modified) {} +} diff --git a/src/test/java/net/querz/mcaselector/io/job/FieldChangerTest.java b/src/test/java/net/querz/mcaselector/io/job/FieldChangerTest.java new file mode 100644 index 00000000..f21782a6 --- /dev/null +++ b/src/test/java/net/querz/mcaselector/io/job/FieldChangerTest.java @@ -0,0 +1,108 @@ +package net.querz.mcaselector.io.job; + +import net.querz.mcaselector.selection.Selection; +import net.querz.mcaselector.util.point.Point2i; +import net.querz.mcaselector.version.ChunkFilter; +import org.junit.jupiter.api.Test; + +import java.util.ArrayList; +import java.util.List; +import java.util.Set; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +class FieldChangerTest { + + @Test + void returnsOnlyTheEightAdjacentRelightChunks() { + Point2i changed = new Point2i(10, 20); + + Set adjacent = FieldChanger.getAdjacentRelightChunks(Set.of(changed)); + + assertEquals(8, adjacent.size()); + assertFalse(adjacent.contains(changed)); + for (int x = 9; x <= 11; x++) { + for (int z = 19; z <= 21; z++) { + if (x != 10 || z != 20) { + assertTrue(adjacent.contains(new Point2i(x, z))); + } + } + } + } + + @Test + void adjacentRelightChunksCrossRegionBoundaries() { + Point2i changed = new Point2i(31, 31); + + Set adjacent = FieldChanger.getAdjacentRelightChunks(Set.of(changed)); + + assertEquals(8, adjacent.size()); + assertTrue(adjacent.contains(new Point2i(32, 31))); + assertTrue(adjacent.contains(new Point2i(31, 32))); + assertTrue(adjacent.contains(new Point2i(32, 32))); + } + + @Test + void adjacentRelightChunksExcludeEveryChangedCenter() { + Point2i first = new Point2i(10, 20); + Point2i second = new Point2i(11, 20); + + Set adjacent = FieldChanger.getAdjacentRelightChunks(Set.of(first, second)); + + assertEquals(10, adjacent.size()); + assertFalse(adjacent.contains(first)); + assertFalse(adjacent.contains(second)); + } + + @Test + void primaryCoordinatorWaitsForEveryRegionBeforeRelighting() { + List> completed = new ArrayList<>(); + FieldChanger.PrimaryStageCoordinator coordinator = new FieldChanger.PrimaryStageCoordinator(2, completed::add); + Point2i changed = new Point2i(10, 20); + + coordinator.primaryCompleted(Set.of(changed), true); + assertTrue(completed.isEmpty()); + + coordinator.primaryCompleted(Set.of(), false); + assertEquals(List.of(Set.of(changed)), completed); + } + + @Test + void primaryCoordinatorPublishesOnlySuccessfullySavedRegionChanges() { + List> completed = new ArrayList<>(); + FieldChanger.PrimaryStageCoordinator coordinator = new FieldChanger.PrimaryStageCoordinator(2, completed::add); + + coordinator.primaryCompleted(Set.of(new Point2i(1, 1)), false); + coordinator.primaryCompleted(Set.of(new Point2i(2, 2)), true); + + assertEquals(List.of(Set.of(new Point2i(2, 2))), completed); + } + + @Test + void primaryCoordinatorDoesNotStartRelightAfterCancellation() { + List> completed = new ArrayList<>(); + FieldChanger.PrimaryStageCoordinator coordinator = new FieldChanger.PrimaryStageCoordinator(2, completed::add); + + coordinator.primaryCancelled(); + coordinator.primaryCompleted(Set.of(new Point2i(2, 2)), true); + + assertTrue(completed.isEmpty()); + } + + @Test + void previewReportsPotentialAdjacentRelightChunksOutsideSelection() { + Point2i affected = new Point2i(10, 20); + Selection selection = new Selection(); + selection.addChunk(affected); + ChunkFilter.BlockReplacePreviewData chunkPreview = ChunkFilter.BlockReplacePreviewData.supported(); + chunkPreview.addSection(1); + ReplaceBlocksPreviewer.Result result = new ReplaceBlocksPreviewer.Result(); + + result.addChunk(affected, chunkPreview); + result.finish(selection); + + assertEquals(8, result.getPotentialAdjacentRelightChunks()); + } +} diff --git a/src/test/java/net/querz/mcaselector/io/job/ReplaceBlocksPreviewerCancellationTest.java b/src/test/java/net/querz/mcaselector/io/job/ReplaceBlocksPreviewerCancellationTest.java new file mode 100644 index 00000000..eefd8661 --- /dev/null +++ b/src/test/java/net/querz/mcaselector/io/job/ReplaceBlocksPreviewerCancellationTest.java @@ -0,0 +1,103 @@ +package net.querz.mcaselector.io.job; + +import net.querz.mcaselector.changer.fields.ReplaceBlocksField; +import net.querz.mcaselector.io.mca.ChunkData; +import net.querz.mcaselector.io.mca.Region; +import net.querz.mcaselector.io.mca.RegionChunk; +import net.querz.mcaselector.util.point.Point2i; +import net.querz.mcaselector.util.progress.Progress; +import net.querz.mcaselector.version.VersionHandler; +import net.querz.nbt.CompoundTag; +import net.querz.nbt.ListTag; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + +import java.lang.reflect.Method; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.fail; + +class ReplaceBlocksPreviewerCancellationTest { + + @BeforeAll + static void initializeVersionHandlers() { + VersionHandler.init(); + } + + @Test + void cancellationStopsScanningAtTheNextChunkBoundary() { + TestProgress progress = new TestProgress(); + CancellingRegion region = new CancellingRegion(progress, chunk()); + ReplaceBlocksField field = new ReplaceBlocksField(); + field.parseNewValue("literal(minecraft:stone)=minecraft:dirt"); + + try { + Method scanRegion = ReplaceBlocksPreviewer.class.getDeclaredMethod( + "scanRegion", Region.class, Point2i.class, ReplaceBlocksField.class, + net.querz.mcaselector.selection.Selection.class, + ReplaceBlocksPreviewer.Result.class, Progress.class); + scanRegion.setAccessible(true); + scanRegion.invoke(null, region, new Point2i(0, 0), field, null, + new ReplaceBlocksPreviewer.Result(), progress); + } catch (ReflectiveOperationException ex) { + fail("preview scan must accept and check the cancellation token", ex); + } + + assertEquals(1, region.getChunkCalls); + } + + private RegionChunk chunk() { + CompoundTag root = new CompoundTag(); + root.putInt("DataVersion", 4671); + root.putInt("xPos", 0); + root.putInt("zPos", 0); + CompoundTag stone = new CompoundTag(); + stone.putString("Name", "minecraft:stone"); + ListTag palette = new ListTag(); + palette.add(stone); + CompoundTag blockStates = new CompoundTag(); + blockStates.put("palette", palette); + CompoundTag section = new CompoundTag(); + section.putByte("Y", (byte) 0); + section.put("block_states", blockStates); + ListTag sections = new ListTag(); + sections.add(section); + root.put("sections", sections); + RegionChunk chunk = new RegionChunk(new Point2i(0, 0)); + chunk.setData(root); + return chunk; + } + + private static class CancellingRegion extends Region { + + private final TestProgress progress; + private final RegionChunk chunk; + private int getChunkCalls; + + private CancellingRegion(TestProgress progress, RegionChunk chunk) { + this.progress = progress; + this.chunk = chunk; + } + + @Override + public ChunkData getChunkDataAt(Point2i location, boolean selected) { + getChunkCalls++; + progress.cancelTask(); + return new ChunkData(location, chunk, null, null, selected); + } + } + + private static class TestProgress implements Progress { + + private volatile boolean cancelled; + + @Override public void setMax(int max) {} + @Override public void updateProgress(String msg, int progress) {} + @Override public void done(String msg) {} + @Override public boolean taskCancelled() { return cancelled; } + @Override public void cancelTask() { cancelled = true; } + @Override public void incrementProgress(String msg) {} + @Override public void incrementProgress(String msg, int progress) {} + @Override public void setMessage(String msg) {} + } +} diff --git a/src/test/java/net/querz/mcaselector/io/mca/RegionFieldChangeTest.java b/src/test/java/net/querz/mcaselector/io/mca/RegionFieldChangeTest.java new file mode 100644 index 00000000..2b14cf5d --- /dev/null +++ b/src/test/java/net/querz/mcaselector/io/mca/RegionFieldChangeTest.java @@ -0,0 +1,198 @@ +package net.querz.mcaselector.io.mca; + +import net.querz.mcaselector.changer.Field; +import net.querz.mcaselector.changer.FieldType; +import net.querz.mcaselector.changer.fields.ReplaceBlocksField; +import net.querz.mcaselector.io.RegionDirectories; +import net.querz.mcaselector.selection.Selection; +import net.querz.mcaselector.util.point.Point2i; +import net.querz.mcaselector.version.VersionHandler; +import net.querz.nbt.CompoundTag; +import net.querz.nbt.ListTag; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Path; +import java.util.List; +import java.util.Set; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.assertThrows; + +class RegionFieldChangeTest { + + @BeforeAll + static void initializeVersionHandlers() { + VersionHandler.init(); + } + + @Test + void tracksAndSavesOnlyActuallyChangedReplaceBlocksChunks(@TempDir Path tempDir) throws IOException { + Point2i location = new Point2i(0, 0); + RegionDirectories directories = createRegion(tempDir, location, modernRoot(location, "minecraft:stone")); + Region region = Region.loadRegionFile(directories); + Selection selection = new Selection(); + selection.addChunk(location); + + Region.FieldChangeResult result = region.applyFieldChangesTracked( + List.of(parse("literal(minecraft:stone)=minecraft:dirt")), false, selection, () -> false); + + assertTrue(result.dirty()); + assertFalse(result.cancelled()); + assertEquals(Set.of(location), result.replaceBlocksChangedChunks()); + region.saveRegionWithTempFile(); + + Region reloaded = Region.loadRegionFile(directories); + assertEquals("minecraft:dirt", firstPaletteName(reloaded.getRegion().getChunkAt(location).getData())); + } + + @Test + void unmatchedReplaceBlocksLeavesRegionClean(@TempDir Path tempDir) throws IOException { + Point2i location = new Point2i(0, 0); + RegionDirectories directories = createRegion(tempDir, location, modernRoot(location, "minecraft:stone")); + Region region = Region.loadRegionFile(directories); + Selection selection = new Selection(); + selection.addChunk(location); + + Region.FieldChangeResult result = region.applyFieldChangesTracked( + List.of(parse("literal(minecraft:diamond_block)=minecraft:dirt")), false, selection, () -> false); + + assertFalse(result.dirty()); + assertFalse(result.cancelled()); + assertTrue(result.replaceBlocksChangedChunks().isEmpty()); + } + + @Test + void relightsOnlyExistingTargetsWhoseFlagIsStillSet(@TempDir Path tempDir) throws IOException { + Point2i existing = new Point2i(32, 31); + Point2i missing = new Point2i(33, 31); + RegionDirectories directories = createRegion(tempDir, existing, modernRoot(existing, "minecraft:stone")); + Region region = Region.loadRegionFile(directories); + + Region.RelightResult result = region.relightChunks(Set.of(existing, missing), () -> false); + + assertTrue(result.dirty()); + assertFalse(result.cancelled()); + region.saveRegionWithTempFile(); + + Region reloaded = Region.loadRegionFile(directories); + assertEquals(0, reloaded.getRegion().getChunkAt(existing).getData().getByte("isLightOn")); + assertFalse(reloaded.relightChunks(Set.of(existing), () -> false).dirty()); + } + + @Test + void preservesLegacyDirtySaveWhenALaterMixedFieldThrows(@TempDir Path tempDir) throws IOException { + Point2i location = new Point2i(0, 0); + RegionDirectories directories = createRegion(tempDir, location, modernRoot(location, "minecraft:stone")); + Region region = Region.loadRegionFile(directories); + Selection selection = new Selection(); + selection.addChunk(location); + Field mutating = testField(data -> data.region().getData().putInt("testMarker", 1)); + Field throwing = testField(data -> { throw new IllegalStateException("expected"); }); + + Region.FieldChangeResult result = region.applyFieldChangesTracked( + List.of(mutating, throwing), false, selection, () -> false); + + assertTrue(result.dirty()); + assertEquals(1, region.getRegion().getChunkAt(location).getData().getInt("testMarker")); + } + + @Test + void replaceBlocksOnlyFailureAbortsTheRegionWithChunkCoordinates(@TempDir Path tempDir) throws IOException { + Point2i first = new Point2i(0, 0); + Point2i second = new Point2i(1, 0); + RegionDirectories directories = createRegion(tempDir, first, + modernRoot(first, "minecraft:stone"), second, modernRoot(second, "minecraft:stone")); + Region region = Region.loadRegionFile(directories); + Selection selection = new Selection(); + selection.addChunk(first); + selection.addChunk(second); + ReplaceBlocksField throwing = new ReplaceBlocksField() { + private int calls; + + @Override + public boolean applyWithResult(ChunkData data, boolean force) { + if (++calls == 2) { + throw new IllegalStateException("expected"); + } + data.region().getData().putInt("testMarker", 1); + return true; + } + }; + + Region.FieldChangeException failure = assertThrows(Region.FieldChangeException.class, + () -> region.applyFieldChangesTracked(List.of(throwing), false, selection, () -> false)); + + assertEquals(second, failure.chunk()); + Region reloaded = Region.loadRegionFile(directories); + assertFalse(reloaded.getRegion().getChunkAt(first).getData().containsKey("testMarker")); + } + + private RegionDirectories createRegion(Path tempDir, Point2i chunkLocation, CompoundTag root) throws IOException { + return createRegion(tempDir, chunkLocation, root, null, null); + } + + private RegionDirectories createRegion(Path tempDir, Point2i chunkLocation, CompoundTag root, + Point2i secondLocation, CompoundTag secondRoot) throws IOException { + Point2i regionLocation = chunkLocation.chunkToRegion(); + File regionFile = tempDir.resolve("r." + regionLocation.getX() + "." + regionLocation.getZ() + ".mca").toFile(); + RegionMCAFile mca = new RegionMCAFile(regionFile); + RegionChunk chunk = new RegionChunk(chunkLocation); + chunk.setData(root); + chunk.setCompressionType(CompressionType.ZLIB); + mca.setChunkAt(chunkLocation, chunk); + if (secondLocation != null) { + RegionChunk second = new RegionChunk(secondLocation); + second.setData(secondRoot); + second.setCompressionType(CompressionType.ZLIB); + mca.setChunkAt(secondLocation, second); + } + mca.saveWithTempFile(); + return new RegionDirectories(regionLocation, regionFile, null, null); + } + + private ReplaceBlocksField parse(String value) { + ReplaceBlocksField field = new ReplaceBlocksField(); + assertTrue(field.parseNewValue(value)); + return field; + } + + private Field testField(java.util.function.Consumer change) { + return new Field<>(FieldType.CUSTOM, 1) { + @Override public Integer getOldValue(ChunkData data) { return null; } + @Override public void change(ChunkData data) { change.accept(data); } + @Override public void force(ChunkData data) { change(data); } + }; + } + + private CompoundTag modernRoot(Point2i location, String blockName) { + CompoundTag root = new CompoundTag(); + root.putInt("DataVersion", 4671); + root.putInt("xPos", location.getX()); + root.putInt("zPos", location.getZ()); + root.putByte("isLightOn", (byte) 1); + ListTag palette = new ListTag(); + CompoundTag state = new CompoundTag(); + state.putString("Name", blockName); + palette.add(state); + CompoundTag blockStates = new CompoundTag(); + blockStates.put("palette", palette); + CompoundTag section = new CompoundTag(); + section.putByte("Y", (byte) 0); + section.put("block_states", blockStates); + ListTag sections = new ListTag(); + sections.add(section); + root.put("sections", sections); + return root; + } + + private String firstPaletteName(CompoundTag root) { + return root.getListTag("sections").getCompound(0) + .getCompoundTag("block_states").getListTag("palette").getCompound(0).getString("Name"); + } +} diff --git a/src/test/java/net/querz/mcaselector/logging/LoggingTest.java b/src/test/java/net/querz/mcaselector/logging/LoggingTest.java new file mode 100644 index 00000000..a707e246 --- /dev/null +++ b/src/test/java/net/querz/mcaselector/logging/LoggingTest.java @@ -0,0 +1,39 @@ +package net.querz.mcaselector.logging; + +import org.junit.jupiter.api.Test; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import java.nio.charset.StandardCharsets; +import java.util.concurrent.atomic.AtomicReference; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertSame; +import static org.junit.jupiter.api.Assertions.assertTrue; + +class LoggingTest { + + @Test + void uncaughtExceptionsReachTheLogAndStandardError() { + AtomicReference loggedThread = new AtomicReference<>(); + AtomicReference loggedThrowable = new AtomicReference<>(); + ByteArrayOutputStream standardError = new ByteArrayOutputStream(); + RuntimeException failure = new RuntimeException("builder popup failure"); + + Thread.UncaughtExceptionHandler handler = Logging.createUncaughtExceptionHandler( + (threadName, throwable) -> { + loggedThread.set(threadName); + loggedThrowable.set(throwable); + }, + new PrintStream(standardError, true, StandardCharsets.UTF_8) + ); + + handler.uncaughtException(new Thread("JavaFX Application Thread"), failure); + + assertEquals("JavaFX Application Thread", loggedThread.get()); + assertSame(failure, loggedThrowable.get()); + String capturedError = standardError.toString(StandardCharsets.UTF_8); + assertTrue(capturedError.contains("java.lang.RuntimeException: builder popup failure")); + assertTrue(capturedError.contains("LoggingTest.uncaughtExceptionsReachTheLogAndStandardError")); + } +} diff --git a/src/test/java/net/querz/mcaselector/ui/dialog/CancellableProgressDialogCancellationTest.java b/src/test/java/net/querz/mcaselector/ui/dialog/CancellableProgressDialogCancellationTest.java new file mode 100644 index 00000000..4154710a --- /dev/null +++ b/src/test/java/net/querz/mcaselector/ui/dialog/CancellableProgressDialogCancellationTest.java @@ -0,0 +1,50 @@ +package net.querz.mcaselector.ui.dialog; + +import net.querz.mcaselector.ui.ProgressTask; +import org.junit.jupiter.api.Test; + +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import java.util.Arrays; +import java.util.concurrent.atomic.AtomicInteger; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.fail; + +class CancellableProgressDialogCancellationTest { + + @Test + void currentTaskScopeSelectsOnlyLocalCancellation() { + Class scopeType = Arrays.stream(CancellableProgressDialog.class.getDeclaredClasses()) + .filter(type -> type.getSimpleName().equals("CancellationScope")) + .findFirst() + .orElse(null); + assertNotNull(scopeType, "CancellableProgressDialog must expose a cancellation scope"); + + try { + @SuppressWarnings({"unchecked", "rawtypes"}) + Object currentTask = Enum.valueOf((Class) scopeType, "CURRENT_TASK"); + Method selector = CancellableProgressDialog.class.getDeclaredMethod( + "cancellationAction", scopeType, Runnable.class, Runnable.class); + selector.setAccessible(true); + AtomicInteger globalCalls = new AtomicInteger(); + AtomicInteger localCalls = new AtomicInteger(); + + Runnable selected = (Runnable) selector.invoke( + null, currentTask, (Runnable) globalCalls::incrementAndGet, (Runnable) localCalls::incrementAndGet); + selected.run(); + + assertEquals(0, globalCalls.get()); + assertEquals(1, localCalls.get()); + } catch (ReflectiveOperationException ex) { + fail("missing task-scoped cancellation policy", ex); + } + } + + @Test + void progressCancellationTokenIsVisibleAcrossThreads() throws NoSuchFieldException { + assertTrue(Modifier.isVolatile(ProgressTask.class.getDeclaredField("cancelled").getModifiers())); + } +} diff --git a/src/test/java/net/querz/mcaselector/ui/dialog/ReplaceBlocksCatalogModelTest.java b/src/test/java/net/querz/mcaselector/ui/dialog/ReplaceBlocksCatalogModelTest.java new file mode 100644 index 00000000..0d2f6239 --- /dev/null +++ b/src/test/java/net/querz/mcaselector/ui/dialog/ReplaceBlocksCatalogModelTest.java @@ -0,0 +1,56 @@ +package net.querz.mcaselector.ui.dialog; + +import net.querz.mcaselector.version.mapping.blockstate.BlockStateCatalog; +import org.junit.jupiter.api.Test; +import java.io.StringReader; +import java.util.List; +import static org.junit.jupiter.api.Assertions.*; + +class ReplaceBlocksCatalogModelTest { + + @Test + void defaultsToLatestAndAllowsManualCatalogSwitching() { + BlockStateCatalog oldCatalog = catalog("1.18.2", 2975, "minecraft:stone"); + BlockStateCatalog latestCatalog = catalog("1.21.9", 4554, "minecraft:stone", "minecraft:resin_block"); + ReplaceBlocksCatalogModel model = new ReplaceBlocksCatalogModel(List.of(latestCatalog, oldCatalog)); + + assertSame(latestCatalog, model.selected()); + assertTrue(model.select("1.18.2")); + assertSame(oldCatalog, model.selected()); + assertFalse(model.selected().containsBlock("minecraft:resin_block")); + } + + @Test + void reportsUnknownIdsWithoutRejectingThem() { + ReplaceBlocksCatalogModel model = new ReplaceBlocksCatalogModel(List.of( + catalog("1.21.9", 4554, "minecraft:stone"))); + + assertEquals(ReplaceBlocksCatalogModel.Compatibility.KNOWN, + model.compatibility("minecraft:stone", false)); + assertEquals(ReplaceBlocksCatalogModel.Compatibility.UNKNOWN_SOURCE, + model.compatibility("minecraft:future_block", true)); + assertEquals(ReplaceBlocksCatalogModel.Compatibility.UNKNOWN_TARGET, + model.compatibility("example:custom_block", false)); + } + + @Test + void exposesCompactCatalogLabelForTheBuilderToolbar() { + BlockStateCatalog catalog = catalog("26.2", 4671, "minecraft:stone"); + ReplaceBlocksCatalogModel model = new ReplaceBlocksCatalogModel(List.of(catalog)); + + assertEquals("Java 26.2", model.shortLabel(catalog)); + assertEquals("Java 26.2 (DataVersion 4671)", model.label(catalog)); + } + + private BlockStateCatalog catalog(String version, int dataVersion, String... names) { + StringBuilder blocks = new StringBuilder(); + for (String name : names) { + if (!blocks.isEmpty()) { + blocks.append(','); + } + blocks.append('"').append(name).append("\":{\"properties\":{},\"defaultProperties\":{},\"stateCount\":1}"); + } + return BlockStateCatalog.load(new StringReader("{\"version\":\"" + version + + "\",\"dataVersion\":" + dataVersion + ",\"source\":\"test\",\"blocks\":{" + blocks + "}}")); + } +} diff --git a/src/test/java/net/querz/mcaselector/ui/dialog/ReplaceBlocksDiagnosticsTest.java b/src/test/java/net/querz/mcaselector/ui/dialog/ReplaceBlocksDiagnosticsTest.java new file mode 100644 index 00000000..1e067f80 --- /dev/null +++ b/src/test/java/net/querz/mcaselector/ui/dialog/ReplaceBlocksDiagnosticsTest.java @@ -0,0 +1,91 @@ +package net.querz.mcaselector.ui.dialog; + +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +class ReplaceBlocksDiagnosticsTest { + + @Test + void acceptsExplicitSourceModeSyntaxWithoutLegacyRegexWarning() { + assertTrue(ReplaceBlocksDiagnostics + .diagnoseValue("regex(minecraft:.*_log)=minecraft:stone", true) + .isNone()); + assertTrue(ReplaceBlocksDiagnostics + .diagnoseValue("literal(minecraft:stone)=minecraft:dirt", true) + .isNone()); + assertTrue(ReplaceBlocksDiagnostics + .diagnoseValue("props({Name:\"minecraft:oak_stairs\",Properties:{facing:\"north\"}})=minecraft:stone", true) + .isNone()); + assertTrue(ReplaceBlocksDiagnostics + .diagnoseValue("tile(literal(minecraft:chest))=minecraft:stone", true) + .isNone()); + assertTrue(ReplaceBlocksDiagnostics + .diagnoseValue("no_tile(props({Name:\"minecraft:oak_stairs\",Properties:{facing:\"north\"}}))=minecraft:stone", true) + .isNone()); + assertTrue(ReplaceBlocksDiagnostics + .diagnoseValue("y(-64..64, literal(minecraft:stone))=minecraft:dirt", true) + .isNone()); + assertTrue(ReplaceBlocksDiagnostics + .diagnoseValue("y(64.., tile(literal(minecraft:chest)))=minecraft:stone", true) + .isNone()); + assertTrue(ReplaceBlocksDiagnostics + .diagnoseValue("biome(minecraft:plains;minecraft:forest, y(64.., literal(minecraft:stone)))=minecraft:dirt", true) + .isNone()); + } + + @Test + void keepsLegacyRegexSourcesAsWarnings() { + assertTrue(ReplaceBlocksDiagnostics + .diagnoseValue("minecraft:.*_log=minecraft:stone", true) + .isWarning()); + } + + @Test + void reportsInvalidExplicitSourceModeSyntaxAsErrors() { + assertTrue(ReplaceBlocksDiagnostics + .diagnoseValue("regex(*)=minecraft:stone", false) + .isError()); + assertTrue(ReplaceBlocksDiagnostics + .diagnoseValue("literal(minecraft:not_a_block)=minecraft:stone", false) + .isError()); + assertTrue(ReplaceBlocksDiagnostics + .diagnoseValue("props({Name:\"minecraft:stone\"})=minecraft:dirt", false) + .isError()); + assertTrue(ReplaceBlocksDiagnostics + .diagnoseValue("tile(props({Name:\"minecraft:stone\"}))=minecraft:dirt", false) + .isError()); + assertTrue(ReplaceBlocksDiagnostics + .diagnoseValue("y(10..0, literal(minecraft:stone))=minecraft:dirt", false) + .isError()); + assertTrue(ReplaceBlocksDiagnostics + .diagnoseValue("y(foo..10, literal(minecraft:stone))=minecraft:dirt", false) + .isError()); + assertTrue(ReplaceBlocksDiagnostics + .diagnoseValue("biome(minecraft:not_a_biome, literal(minecraft:stone))=minecraft:dirt", false) + .isError()); + assertTrue(ReplaceBlocksDiagnostics + .diagnoseValue("biome(minecraft:plains)=minecraft:dirt", false) + .isError()); + } + + @Test + void consumesSharedParserForQuotedTargetTileAndFollowingRule() { + assertTrue(ReplaceBlocksDiagnostics.diagnoseValue( + "literal(stone)='example:target';{id:\"example:tile\"}, literal(dirt)=minecraft:gold_block", + true).isNone()); + } + + @Test + void acceptsSyntacticallyValidFutureAndModdedBuilderNames() { + ReplaceBlocksDiagnostics.NameResult future = ReplaceBlocksDiagnostics.normalizeBuilderName( + "minecraft:future_block", false); + ReplaceBlocksDiagnostics.NameResult modded = ReplaceBlocksDiagnostics.normalizeBuilderName( + "example:custom_block", true); + + assertEquals("minecraft:future_block", future.name()); + assertTrue(future.diagnostic().isNone()); + assertEquals("example:custom_block", modded.name()); + assertTrue(modded.diagnostic().isNone()); + } +} diff --git a/src/test/java/net/querz/mcaselector/ui/dialog/ReplaceBlocksPresetRepositoryTest.java b/src/test/java/net/querz/mcaselector/ui/dialog/ReplaceBlocksPresetRepositoryTest.java new file mode 100644 index 00000000..31dbaf91 --- /dev/null +++ b/src/test/java/net/querz/mcaselector/ui/dialog/ReplaceBlocksPresetRepositoryTest.java @@ -0,0 +1,42 @@ +package net.querz.mcaselector.ui.dialog; + +import net.querz.mcaselector.config.GlobalConfig; +import org.junit.jupiter.api.Test; +import java.util.ArrayList; +import java.util.List; +import static org.junit.jupiter.api.Assertions.*; + +class ReplaceBlocksPresetRepositoryTest { + + @Test + void rollsBackSaveWhenConfigWriteFails() { + List presets = new ArrayList<>(List.of( + new GlobalConfig.ReplaceBlocksUserPreset("Existing", "stone=dirt"))); + ReplaceBlocksPresetRepository repository = new ReplaceBlocksPresetRepository(presets, () -> false); + + assertFalse(repository.save("Existing", "stone=air")); + assertEquals(List.of(new GlobalConfig.ReplaceBlocksUserPreset("Existing", "stone=dirt")), presets); + } + + @Test + void rollsBackDeleteWhenConfigWriteFails() { + List presets = new ArrayList<>(List.of( + new GlobalConfig.ReplaceBlocksUserPreset("Existing", "stone=dirt"))); + ReplaceBlocksPresetRepository repository = new ReplaceBlocksPresetRepository(presets, () -> false); + + assertFalse(repository.delete("Existing")); + assertEquals(1, presets.size()); + assertEquals("Existing", presets.getFirst().name()); + } + + @Test + void rollsBackWhenConfigWriterThrows() { + List presets = new ArrayList<>(); + ReplaceBlocksPresetRepository repository = new ReplaceBlocksPresetRepository(presets, () -> { + throw new IllegalStateException("expected"); + }); + + assertFalse(repository.save("New", "stone=dirt")); + assertTrue(presets.isEmpty()); + } +} diff --git a/src/test/java/net/querz/mcaselector/ui/dialog/ReplaceBlocksRuleBuilderModelTest.java b/src/test/java/net/querz/mcaselector/ui/dialog/ReplaceBlocksRuleBuilderModelTest.java new file mode 100644 index 00000000..912f92ec --- /dev/null +++ b/src/test/java/net/querz/mcaselector/ui/dialog/ReplaceBlocksRuleBuilderModelTest.java @@ -0,0 +1,1997 @@ +package net.querz.mcaselector.ui.dialog; + +import javafx.animation.AnimationTimer; +import javafx.application.Platform; +import javafx.beans.value.ChangeListener; +import javafx.collections.FXCollections; +import javafx.event.ActionEvent; +import javafx.event.Event; +import javafx.geometry.Bounds; +import javafx.geometry.BoundingBox; +import javafx.geometry.Rectangle2D; +import javafx.scene.Node; +import javafx.scene.Scene; +import javafx.scene.control.ComboBox; +import javafx.scene.control.ComboBoxBase; +import javafx.scene.control.Button; +import javafx.scene.control.ButtonBar; +import javafx.scene.control.ButtonType; +import javafx.scene.control.DialogPane; +import javafx.scene.control.Label; +import javafx.scene.control.ListCell; +import javafx.scene.control.ListView; +import javafx.scene.control.TableView; +import javafx.scene.control.TextArea; +import javafx.scene.control.TextField; +import javafx.scene.control.skin.ComboBoxListViewSkin; +import javafx.scene.input.KeyCode; +import javafx.scene.input.KeyEvent; +import javafx.scene.input.MouseButton; +import javafx.scene.input.MouseEvent; +import javafx.scene.layout.HBox; +import javafx.scene.layout.GridPane; +import javafx.scene.layout.Priority; +import javafx.scene.layout.Region; +import javafx.scene.layout.StackPane; +import javafx.scene.layout.VBox; +import javafx.scene.shape.Rectangle; +import javafx.scene.text.TextFlow; +import javafx.stage.Screen; +import javafx.stage.Stage; +import javafx.stage.Window; +import javafx.stage.WindowEvent; +import net.querz.mcaselector.config.GlobalConfig; +import net.querz.mcaselector.text.Translation; +import net.querz.mcaselector.version.ChunkFilter; +import net.querz.mcaselector.version.mapping.blockstate.BlockStateCatalog; +import net.querz.nbt.CompoundTag; +import org.junit.jupiter.api.Test; +import java.io.InputStream; +import java.lang.reflect.Constructor; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.nio.charset.StandardCharsets; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.atomic.AtomicReference; +import java.util.function.BooleanSupplier; +import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assumptions.assumeTrue; + +@SuppressWarnings("unchecked") +class ReplaceBlocksRuleBuilderModelTest { + + private static final Object javaFxStartupLock = new Object(); + private static final double POPUP_ATTACHMENT_TOLERANCE = 2.0; + private static boolean javaFxStarted; + + @Test + void restoresLiteralSourceAndNamedTarget() { + ReplaceBlocksRuleBuilderDialog.ParsedRule parsed = ReplaceBlocksRuleBuilderDialog.parseEditableRule( + "literal(minecraft:acacia_stairs)", + "minecraft:andesite_stairs"); + + assertNotNull(parsed); + assertEquals(ChunkFilter.BlockReplaceSourceType.LITERAL_NAME, parsed.source().getType()); + assertEquals("minecraft:acacia_stairs", parsed.source().getName()); + assertEquals(ChunkFilter.BlockReplaceType.NAME, parsed.target().getType()); + assertEquals("minecraft:andesite_stairs", parsed.target().getName()); + } + + @Test + void restoresSelectedPropertiesAndSourceConditions() { + ReplaceBlocksRuleBuilderDialog.ParsedRule parsed = ReplaceBlocksRuleBuilderDialog.parseEditableRule( + "biome(minecraft:forest, y(-16..31, tile(props({Name:\"minecraft:acacia_stairs\",Properties:{facing:\"north\",half:\"top\"}}))))", + "{Name:\"minecraft:andesite_stairs\",Properties:{facing:\"south\",half:\"bottom\"}}"); + + assertNotNull(parsed); + assertEquals(ChunkFilter.BlockReplaceSourceType.SELECTED_PROPERTIES, parsed.source().getType()); + assertEquals(ChunkFilter.BlockReplaceTileEntityMode.REQUIRE_TILE_ENTITY, parsed.source().getTileEntityMode()); + assertEquals(-16, parsed.source().getMinY()); + assertEquals(31, parsed.source().getMaxY()); + assertEquals(Map.of("facing", "north", "half", "top"), + ReplaceBlocksRuleBuilderDialog.editableStateProperties(parsed.source().getState())); + assertEquals(Map.of("facing", "south", "half", "bottom"), + ReplaceBlocksRuleBuilderDialog.editableStateProperties(parsed.target().getState())); + assertEquals(java.util.Set.of("minecraft:forest"), parsed.source().getBiomes()); + } + + @Test + void keepsAdvancedStateAndTileTargetsAsFallbackData() { + ReplaceBlocksRuleBuilderDialog.ParsedRule parsed = ReplaceBlocksRuleBuilderDialog.parseEditableRule( + "{Name:\"minecraft:chest\",Properties:{facing:\"north\"},Custom:1b}", + "minecraft:barrel;{id:\"minecraft:barrel\"}"); + + assertNotNull(parsed); + assertEquals(ChunkFilter.BlockReplaceSourceType.EXACT_STATE, parsed.source().getType()); + assertNull(ReplaceBlocksRuleBuilderDialog.editableStateProperties(parsed.source().getState())); + assertEquals(ChunkFilter.BlockReplaceType.NAME_TILE, parsed.target().getType()); + assertNotNull(parsed.target().getTile()); + } + + @Test + void wrapsPlainTableSourcesAsLiteralWhenLoadingForEdit() { + ReplaceBlocksRuleBuilderDialog.ParsedRule parsed = ReplaceBlocksRuleBuilderDialog.parseEditableRule( + "minecraft:stone", + "minecraft:dirt"); + + assertNotNull(parsed); + assertEquals(ChunkFilter.BlockReplaceSourceType.LITERAL_NAME, parsed.source().getType()); + assertEquals("minecraft:stone", parsed.source().getName()); + } + + @Test + void rejectsMalformedRules() { + assertNull(ReplaceBlocksRuleBuilderDialog.parseEditableRule("literal(", "minecraft:stone")); + } + + @Test + void parsesEveryRuleFromMultiRulePresetWithoutLosingState() { + List rules = ReplaceBlocksRuleBuilderDialog.parseSimpleRules( + "props({Name:\"minecraft:acacia_stairs\",Properties:{facing:\"north\"}})=" + + "{Name:\"minecraft:andesite_stairs\",Properties:{facing:\"south\"}}, " + + "biome(minecraft:plains, literal(minecraft:stone))=minecraft:dirt"); + + assertEquals(2, rules.size()); + ReplaceBlocksRuleBuilderDialog.ParsedRule stateRule = ReplaceBlocksRuleBuilderDialog.parseEditableRule( + rules.get(0).from(), rules.get(0).to()); + assertNotNull(stateRule); + assertEquals(Map.of("facing", "north"), + ReplaceBlocksRuleBuilderDialog.editableStateProperties(stateRule.source().getState())); + assertEquals(Map.of("facing", "south"), + ReplaceBlocksRuleBuilderDialog.editableStateProperties(stateRule.target().getState())); + } + + @Test + void duplicatePresetSourcesKeepOnlyTheLastTarget() { + String value = "literal(stone)=minecraft:dirt, literal(minecraft:stone)=minecraft:gold_block"; + + assertEquals("literal(minecraft:stone)=minecraft:gold_block", + ReplaceBlocksRuleBuilderDialog.normalizeRulesValue(value)); + List rules = ReplaceBlocksRuleBuilderDialog.parseSimpleRules(value); + assertEquals(1, rules.size()); + assertEquals("literal(minecraft:stone)", rules.get(0).from()); + assertEquals("minecraft:gold_block", rules.get(0).to()); + } + + @Test + void customPresetAppendsUnknownExactTargetAndShowsTargetWarning() throws Throwable { + runOnJavaFxThread(() -> { + Stage primaryStage = showPrimaryStage(); + ReplaceBlocksRuleBuilderDialog dialog = showDialog(primaryStage, ""); + try { + String unknownTarget = "minecraft:task2_missing_target"; + + applyCustomPreset(dialog, "literal(minecraft:stone)=" + unknownTarget); + + assertEquals(1, fieldValue(dialog, "ruleItems", List.class).size()); + assertTrue(fieldValue(dialog, "result", TextArea.class).getText().contains(unknownTarget)); + BlockStateCatalog catalog = fieldValue(dialog, "catalog", BlockStateCatalog.class); + assertEquals(Translation.DIALOG_REPLACE_BLOCKS_BUILDER_CATALOG_TARGET_UNKNOWN + .format(unknownTarget, catalog.version()), + fieldValue(dialog, "validation", Label.class).getText()); + } finally { + closeDialog(dialog, primaryStage); + } + }); + } + + @Test + void customPresetWarnsForEachDeterminableExactSourceWhenTargetsAreKnown() throws Throwable { + runOnJavaFxThread(() -> { + Stage primaryStage = showPrimaryStage(); + ReplaceBlocksRuleBuilderDialog dialog = showDialog(primaryStage, ""); + try { + List unknownSources = List.of( + "minecraft:task2_missing_literal", + "minecraft:task2_missing_properties", + "minecraft:task2_missing_state"); + List presetValues = List.of( + "literal(" + unknownSources.get(0) + ")=minecraft:stone", + "props({Name:\"" + unknownSources.get(1) + "\",Properties:{axis:\"x\"}})=minecraft:stone", + "{Name:\"" + unknownSources.get(2) + "\",Properties:{axis:\"x\"}}=minecraft:stone"); + BlockStateCatalog catalog = fieldValue(dialog, "catalog", BlockStateCatalog.class); + + for (int i = 0; i < presetValues.size(); i++) { + applyCustomPreset(dialog, presetValues.get(i)); + + assertEquals(i + 1, fieldValue(dialog, "ruleItems", List.class).size()); + assertEquals(Translation.DIALOG_REPLACE_BLOCKS_BUILDER_CATALOG_SOURCE_UNKNOWN + .format(unknownSources.get(i), catalog.version()), + fieldValue(dialog, "validation", Label.class).getText()); + } + } finally { + closeDialog(dialog, primaryStage); + } + }); + } + + @Test + void customPresetDoesNotGuessUnknownSourceFromRegex() throws Throwable { + runOnJavaFxThread(() -> { + Stage primaryStage = showPrimaryStage(); + ReplaceBlocksRuleBuilderDialog dialog = showDialog(primaryStage, ""); + try { + String unknownLookingRegex = "minecraft:task2_missing_.*"; + + applyCustomPreset(dialog, "regex(" + unknownLookingRegex + ")=minecraft:stone"); + + assertEquals(1, fieldValue(dialog, "ruleItems", List.class).size()); + TextArea result = fieldValue(dialog, "result", TextArea.class); + assertEquals(ReplaceBlocksDiagnostics.diagnoseValue(result.getText(), true).message(), + fieldValue(dialog, "validation", Label.class).getText()); + } finally { + closeDialog(dialog, primaryStage); + } + }); + } + + @Test + void customPresetDoesNotTreatBareLegacyRegexAsExactSource() throws Throwable { + runOnJavaFxThread(() -> { + Stage primaryStage = showPrimaryStage(); + ReplaceBlocksRuleBuilderDialog dialog = showDialog(primaryStage, ""); + try { + applyCustomPreset(dialog, "minecraft:task2_missing_.*=minecraft:stone"); + + assertEquals(1, fieldValue(dialog, "ruleItems", List.class).size()); + TextArea result = fieldValue(dialog, "result", TextArea.class); + assertEquals(ReplaceBlocksDiagnostics.diagnoseValue(result.getText(), true).message(), + fieldValue(dialog, "validation", Label.class).getText()); + } finally { + closeDialog(dialog, primaryStage); + } + }); + } + + @Test + void customPresetPreservesValidLookingBareLegacyRegexSemantics() throws Throwable { + runOnJavaFxThread(() -> { + Stage primaryStage = showPrimaryStage(); + ReplaceBlocksRuleBuilderDialog dialog = showDialog(primaryStage, ""); + try { + applyCustomPreset(dialog, "minecraft:task2_missing_block=minecraft:stone"); + + assertEquals(1, fieldValue(dialog, "ruleItems", List.class).size()); + TextArea result = fieldValue(dialog, "result", TextArea.class); + assertEquals(ReplaceBlocksDiagnostics.diagnoseValue(result.getText(), true).message(), + fieldValue(dialog, "validation", Label.class).getText()); + } finally { + closeDialog(dialog, primaryStage); + } + }); + } + + @Test + void customPresetDoesNotTreatQuotedLegacyRegexAsExactSource() throws Throwable { + runOnJavaFxThread(() -> { + Stage primaryStage = showPrimaryStage(); + ReplaceBlocksRuleBuilderDialog dialog = showDialog(primaryStage, ""); + try { + applyCustomPreset(dialog, "'task2:missing_.*'=minecraft:stone"); + + assertEquals(1, fieldValue(dialog, "ruleItems", List.class).size()); + TextArea result = fieldValue(dialog, "result", TextArea.class); + assertEquals(ReplaceBlocksDiagnostics.diagnoseValue(result.getText(), true).message(), + fieldValue(dialog, "validation", Label.class).getText()); + } finally { + closeDialog(dialog, primaryStage); + } + }); + } + + @Test + void customPresetTargetWarningWinsOverEarlierSourceWarning() throws Throwable { + runOnJavaFxThread(() -> { + Stage primaryStage = showPrimaryStage(); + ReplaceBlocksRuleBuilderDialog dialog = showDialog(primaryStage, ""); + try { + String unknownSource = "minecraft:task2_missing_source_first"; + String unknownTarget = "minecraft:task2_missing_target_second"; + + applyCustomPreset(dialog, + "literal(" + unknownSource + ")=minecraft:stone, " + + "literal(minecraft:dirt)=" + unknownTarget); + + assertEquals(2, fieldValue(dialog, "ruleItems", List.class).size()); + BlockStateCatalog catalog = fieldValue(dialog, "catalog", BlockStateCatalog.class); + assertEquals(Translation.DIALOG_REPLACE_BLOCKS_BUILDER_CATALOG_TARGET_UNKNOWN + .format(unknownTarget, catalog.version()), + fieldValue(dialog, "validation", Label.class).getText()); + } finally { + closeDialog(dialog, primaryStage); + } + }); + } + + @Test + void customPresetDoesNotWarnForDuplicateUnknownRuleThatWasSkipped() throws Throwable { + runOnJavaFxThread(() -> { + String duplicateSource = "minecraft:task2_duplicate_unknown_source"; + Stage primaryStage = showPrimaryStage(); + ReplaceBlocksRuleBuilderDialog dialog = showDialog(primaryStage, + "literal(" + duplicateSource + ")=minecraft:stone"); + try { + String skippedUnknownTarget = "minecraft:task2_skipped_unknown_target"; + + applyCustomPreset(dialog, + "literal(" + duplicateSource + ")=" + skippedUnknownTarget + ", " + + "literal(minecraft:dirt)=minecraft:stone"); + + assertEquals(2, fieldValue(dialog, "ruleItems", List.class).size()); + TextArea result = fieldValue(dialog, "result", TextArea.class); + assertFalse(result.getText().contains(skippedUnknownTarget)); + assertEquals(ReplaceBlocksDiagnostics.diagnoseValue(result.getText(), true).message(), + fieldValue(dialog, "validation", Label.class).getText()); + } finally { + closeDialog(dialog, primaryStage); + } + }); + } + + @Test + void biomeCompletionUsesTokenAtCaret() { + String value = "minecraft:birch_forest;minecraft:pla"; + + assertEquals("minecraft:pla", ReplaceBlocksRuleBuilderDialog.biomeToken(value, value.length())); + assertEquals("minecraft:birch_forest", ReplaceBlocksRuleBuilderDialog.biomeToken(value, 8)); + assertEquals("", ReplaceBlocksRuleBuilderDialog.biomeToken("minecraft:plains;", 17)); + } + + @Test + void normalizesEquivalentStateRulesForDuplicateDetection() { + String first = ReplaceBlocksRuleBuilderDialog.normalizeRule( + "tile(props({Name:\"minecraft:acacia_log\",Properties:{axis:\"y\"}}))", + "{Name:\"minecraft:acacia_leaves\",Properties:{waterlogged:\"true\",distance:\"2\",persistent:\"false\"}}"); + String reordered = ReplaceBlocksRuleBuilderDialog.normalizeRule( + "tile( props( { Properties: { axis: \"y\" }, Name: \"minecraft:acacia_log\" } ) )", + "{ Properties: { persistent: \"false\", distance: \"2\", waterlogged: \"true\" }, Name: \"minecraft:acacia_leaves\" }"); + + assertEquals(first, reordered); + } + + @Test + void formatsOnlyTheSelectedRulesForPresetSaving() { + List selected = List.of( + new ReplaceBlocksRuleBuilderDialog.Rule("minecraft:stone", "minecraft:dirt"), + new ReplaceBlocksRuleBuilderDialog.Rule("minecraft:oak_log", "minecraft:air")); + + assertEquals("literal(minecraft:stone)=minecraft:dirt, literal(minecraft:oak_log)=minecraft:air", + ReplaceBlocksRuleBuilderDialog.formatRulesValue(selected)); + } + + @Test + void returnsEveryVisibleRuleIntersectingTheMarquee() { + List rows = List.of( + new ReplaceBlocksRuleBuilderDialog.VisibleRuleBounds(0, new Rectangle2D(0, 0, 600, 24)), + new ReplaceBlocksRuleBuilderDialog.VisibleRuleBounds(1, new Rectangle2D(0, 24, 600, 24)), + new ReplaceBlocksRuleBuilderDialog.VisibleRuleBounds(2, new Rectangle2D(0, 48, 600, 24))); + + assertEquals(List.of(0, 1), ReplaceBlocksRuleBuilderDialog.intersectingRuleIndices( + new Rectangle2D(16, 8, 120, 38), rows)); + } + + @Test + void recognizesControlEnterForAddingRules() { + assertTrue(ReplaceBlocksRuleBuilderDialog.isBuilderAddShortcut(KeyCode.ENTER, true)); + assertTrue(ReplaceBlocksRuleBuilderDialog.isBuilderAddShortcut(KeyCode.SEPARATOR, true)); + assertFalse(ReplaceBlocksRuleBuilderDialog.isBuilderAddShortcut(KeyCode.ENTER, false)); + assertFalse(ReplaceBlocksRuleBuilderDialog.isBuilderAddShortcut(KeyCode.DOWN, true)); + } + + @Test + void permitsMarqueeFromRulesAndBlankTableAreas() { + assertTrue(ReplaceBlocksRuleBuilderDialog.canStartRuleMarquee(true, false)); + assertFalse(ReplaceBlocksRuleBuilderDialog.canStartRuleMarquee(true, true)); + assertFalse(ReplaceBlocksRuleBuilderDialog.canStartRuleMarquee(false, false)); + } + + @Test + void movesAutocompleteHighlightWithoutChangingTheQuery() { + assertEquals(0, ReplaceBlocksRuleBuilderDialog.popupSelectionTarget(KeyCode.DOWN, -1, 20, 12)); + assertEquals(11, ReplaceBlocksRuleBuilderDialog.popupSelectionTarget(KeyCode.PAGE_DOWN, 0, 20, 12)); + assertEquals(0, ReplaceBlocksRuleBuilderDialog.popupSelectionTarget(KeyCode.PAGE_UP, 11, 20, 12)); + assertEquals(-1, ReplaceBlocksRuleBuilderDialog.popupSelectionTarget(KeyCode.ENTER, 0, 20, 12)); + } + + @Test + void revealsAutocompleteHighlightOnlyOutsideTheVisibleRange() { + assertFalse(ReplaceBlocksRuleBuilderDialog.popupNeedsReveal(0, 0, 4)); + assertFalse(ReplaceBlocksRuleBuilderDialog.popupNeedsReveal(3, 0, 4)); + assertFalse(ReplaceBlocksRuleBuilderDialog.popupNeedsReveal(4, 0, 4)); + assertTrue(ReplaceBlocksRuleBuilderDialog.popupNeedsReveal(5, 0, 4)); + assertTrue(ReplaceBlocksRuleBuilderDialog.popupNeedsReveal(4, 5, 9)); + } + + @Test + void pageNavigationUsesTheActuallyVisiblePopupRows() { + assertEquals(5, ReplaceBlocksRuleBuilderDialog.popupPageSize(3, 7, 12)); + assertEquals(12, ReplaceBlocksRuleBuilderDialog.popupPageSize(3, 2, 12)); + assertEquals(1, ReplaceBlocksRuleBuilderDialog.popupPageSize(3, 2, 0)); + } + + @Test + void treatsPartiallyClippedPopupRowsAsOutsideTheVisibleRange() { + BoundingBox viewport = new BoundingBox(0, 0, 320, 120); + + assertTrue(ReplaceBlocksRuleBuilderDialog.isPopupCellFullyVisible( + new BoundingBox(0, 0, 300, 24), viewport)); + assertFalse(ReplaceBlocksRuleBuilderDialog.isPopupCellFullyVisible( + new BoundingBox(0, -1, 300, 24), viewport)); + assertFalse(ReplaceBlocksRuleBuilderDialog.isPopupCellFullyVisible( + new BoundingBox(0, 100, 300, 24), viewport)); + } + + @Test + void clearedAutocompleteIndexDoesNotLeaveAHighlightedCell() { + assertTrue(ReplaceBlocksRuleBuilderDialog.isAutocompleteCellHighlighted(2, 2, false)); + assertFalse(ReplaceBlocksRuleBuilderDialog.isAutocompleteCellHighlighted(2, -1, false)); + assertFalse(ReplaceBlocksRuleBuilderDialog.isAutocompleteCellHighlighted(2, 2, true)); + } + + @Test + void emptySuggestionsRequireExplicitExpansion() { + List names = List.of("minecraft:acacia", "minecraft:stone"); + + assertEquals(List.of(), ReplaceBlocksRuleBuilderDialog.suggestionsForQuery(names, "", false)); + assertEquals(names, ReplaceBlocksRuleBuilderDialog.suggestionsForQuery(names, "", true)); + assertEquals(List.of("minecraft:acacia"), + ReplaceBlocksRuleBuilderDialog.suggestionsForQuery(names, "aca", false)); + } + + @Test + void clearsAnExplicitEmptyCatalogAfterItsPopupCloses() throws Throwable { + runOnJavaFxThread(() -> { + ComboBox comboBox = new ComboBox<>(FXCollections.observableArrayList( + "minecraft:acacia", "minecraft:stone")); + comboBox.setEditable(true); + comboBox.getSelectionModel().select(0); + comboBox.getEditor().clear(); + + ReplaceBlocksRuleBuilderDialog.clearEmptyExplicitCatalog(comboBox); + + assertTrue(comboBox.getItems().isEmpty()); + assertEquals(-1, comboBox.getSelectionModel().getSelectedIndex()); + assertNull(comboBox.getValue()); + assertEquals("", comboBox.getEditor().getText()); + comboBox.getSelectionModel().selectNext(); + assertEquals(-1, comboBox.getSelectionModel().getSelectedIndex()); + }); + } + + @Test + void clearsOnlyTheCatalogFromTheMatchingExplicitClose() { + assertTrue(ReplaceBlocksRuleBuilderDialog.shouldClearExplicitCatalog(true, false, "")); + assertFalse(ReplaceBlocksRuleBuilderDialog.shouldClearExplicitCatalog(false, false, "")); + assertFalse(ReplaceBlocksRuleBuilderDialog.shouldClearExplicitCatalog(true, true, "")); + assertFalse(ReplaceBlocksRuleBuilderDialog.shouldClearExplicitCatalog(true, false, "minecraft:stone")); + } + + @Test + void recognizesOnlyTheComboBoxArrowAsExplicitExpansion() { + HBox arrowButton = new HBox(); + arrowButton.getStyleClass().add("arrow-button"); + StackPane arrow = new StackPane(); + arrowButton.getChildren().add(arrow); + + assertTrue(ReplaceBlocksRuleBuilderDialog.isComboBoxArrowTarget(arrow)); + assertFalse(ReplaceBlocksRuleBuilderDialog.isComboBoxArrowTarget(new StackPane())); + } + + @Test + void popupHighlightDoesNotUseEditableComboBoxFocusOrSelection() throws Throwable { + runOnJavaFxThread(() -> { + ComboBox comboBox = new ComboBox<>(FXCollections.observableArrayList( + "minecraft:acacia_button", + "minecraft:acacia_door", + "minecraft:acacia_fence")); + comboBox.setEditable(true); + comboBox.setSkin(new ComboBoxListViewSkin<>(comboBox)); + StackPane root = new StackPane(comboBox); + new Scene(root); + root.applyCss(); + comboBox.getEditor().setText("aca"); + + assertTrue(ReplaceBlocksRuleBuilderDialog.focusPopupSuggestion(comboBox, 1)); + assertEquals("aca", comboBox.getEditor().getText()); + assertNull(comboBox.getValue()); + assertEquals(-1, comboBox.getSelectionModel().getSelectedIndex()); + ListView popup = (ListView) ((ComboBoxListViewSkin) comboBox.getSkin()).getPopupContent(); + assertEquals(-1, popup.getFocusModel().getFocusedIndex()); + }); + } + + @Test + void movingAutocompleteHighlightClearsNativePopupSelection() throws Throwable { + runOnJavaFxThread(() -> { + ComboBox comboBox = new ComboBox<>(FXCollections.observableArrayList( + "minecraft:acacia_button", + "minecraft:acacia_door", + "minecraft:acacia_fence")); + comboBox.setEditable(true); + comboBox.setSkin(new ComboBoxListViewSkin<>(comboBox)); + StackPane root = new StackPane(comboBox); + new Scene(root); + root.applyCss(); + + ListView popup = (ListView) ((ComboBoxListViewSkin) comboBox.getSkin()).getPopupContent(); + popup.getSelectionModel().select(0); + popup.getFocusModel().focus(0); + + assertTrue(ReplaceBlocksRuleBuilderDialog.focusPopupSuggestion(comboBox, 2)); + assertEquals(-1, popup.getSelectionModel().getSelectedIndex()); + assertEquals(-1, popup.getFocusModel().getFocusedIndex()); + }); + } + + @Test + void builderComboBoxAddsBuilderOnlyPopupStyle() throws Throwable { + runOnJavaFxThread(() -> { + ComboBox comboBox = new ComboBox<>(FXCollections.observableArrayList("one", "two")); + ReplaceBlocksRuleBuilderDialog.configureBuilderComboBox(comboBox); + comboBox.setSkin(new ComboBoxListViewSkin<>(comboBox)); + + ListView popup = (ListView) ((ComboBoxListViewSkin) comboBox.getSkin()).getPopupContent(); + assertTrue(popup.getStyleClass().contains("replace-blocks-builder-dropdown")); + + comboBox.setSkin(new ComboBoxListViewSkin<>(comboBox)); + ListView replacementPopup = (ListView) ((ComboBoxListViewSkin) comboBox.getSkin()).getPopupContent(); + assertTrue(replacementPopup.getStyleClass().contains("replace-blocks-builder-dropdown")); + }); + } + + @Test + void autocompleteComboBoxesLimitPopupWidthMeasurement() throws Throwable { + runOnJavaFxThread(() -> { + Stage primaryStage = new Stage(); + primaryStage.setScene(new Scene(new StackPane())); + try { + ReplaceBlocksRuleBuilderDialog dialog = new ReplaceBlocksRuleBuilderDialog(primaryStage, ""); + Object from = fieldValue(dialog, "from", Object.class); + Object to = fieldValue(dialog, "to", Object.class); + + assertEquals(32, fieldValue(from, "block", ComboBox.class).getProperties() + .get("comboBoxRowsToMeasureWidth")); + assertEquals(32, fieldValue(to, "block", ComboBox.class).getProperties() + .get("comboBoxRowsToMeasureWidth")); + assertEquals(32, fieldValue(from, "biomeNames", ComboBox.class).getProperties() + .get("comboBoxRowsToMeasureWidth")); + assertNull(fieldValue(dialog, "presets", ComboBox.class).getProperties() + .get("comboBoxRowsToMeasureWidth")); + } finally { + primaryStage.close(); + } + }); + } + + @Test + void emptyAutocompleteCatalogCellsUsePlainText() throws Throwable { + runOnJavaFxThread(() -> { + Stage primaryStage = new Stage(); + primaryStage.setScene(new Scene(new StackPane())); + try { + ReplaceBlocksRuleBuilderDialog dialog = new ReplaceBlocksRuleBuilderDialog(primaryStage, ""); + Object from = fieldValue(dialog, "from", Object.class); + assertEmptyQueryCellUsesPlainText(fieldValue(from, "block", ComboBox.class), + "minecraft:acacia_button"); + assertEmptyQueryCellUsesPlainText(fieldValue(from, "biomeNames", ComboBox.class), + "minecraft:badlands"); + } finally { + primaryStage.close(); + } + }); + } + + private static void assertEmptyQueryCellUsesPlainText(ComboBox comboBox, String item) + throws Exception { + ListCell cell = comboBox.getCellFactory().call(new ListView<>()); + Method updateItem = declaredMethod(cell, "updateItem", Object.class, boolean.class); + + comboBox.getEditor().clear(); + updateItem.invoke(cell, item, false); + assertEquals(item, cell.getText()); + assertNull(cell.getGraphic()); + + comboBox.getEditor().setText("a"); + updateItem.invoke(cell, item, false); + assertNull(cell.getText()); + assertInstanceOf(TextFlow.class, cell.getGraphic()); + } + + @Test + void catalogControlExplainsThatItDoesNotMigrateIds() throws Throwable { + runOnJavaFxThread(() -> { + Translation.load(Locale.UK); + Stage primaryStage = new Stage(); + primaryStage.setScene(new Scene(new StackPane())); + try { + ReplaceBlocksRuleBuilderDialog dialog = new ReplaceBlocksRuleBuilderDialog(primaryStage, ""); + Label note = (Label) dialog.getDialogPane().lookup(".replace-blocks-builder-catalog-note"); + + assertNotNull(note); + assertTrue(note.isWrapText()); + assertTrue(note.getText().contains("IDs are not converted")); + assertTrue(note.getText().contains("If the Builder has content")); + assertTrue(note.getText().contains("switching asks for confirmation")); + } finally { + primaryStage.close(); + } + }); + } + + @Test + void changeDialogPreloadsBlockCatalogOnADaemonThread() throws Exception { + Thread loader = ChangeNBTDialog.BlockCatalogPreloader.preload(); + + assertTrue(loader.isDaemon()); + assertEquals("replace-blocks-catalog-preload", loader.getName()); + loader.join(TimeUnit.SECONDS.toMillis(10)); + assertFalse(loader.isAlive()); + assertFalse(BlockStateCatalog.available().isEmpty()); + } + + @Test + void restoredBuilderContentIsACleanBaselineUntilTheDraftChanges() throws Throwable { + runOnJavaFxThread(() -> { + Stage primaryStage = showPrimaryStage(); + ReplaceBlocksRuleBuilderDialog dialog = showDialog(primaryStage, + "literal(minecraft:stone)=minecraft:dirt"); + try { + assertFalse(invokeBoolean(dialog, "isBuilderDirty")); + + Object from = fieldValue(dialog, "from", Object.class); + ComboBox block = fieldValue(from, "block", ComboBox.class); + block.getEditor().setText("minecraft:acacia_log"); + + assertTrue(invokeBoolean(dialog, "isBuilderDirty")); + + block.getEditor().clear(); + + assertFalse(invokeBoolean(dialog, "isBuilderDirty"), + "reverting the draft to the opening state should make the session clean"); + } finally { + closeDialog(dialog, primaryStage); + } + }); + } + + @Test + void resettingRestoredRulesRemainsDirtyAfterTheBuilderBecomesEmpty() throws Throwable { + runOnJavaFxThread(() -> { + Stage primaryStage = showPrimaryStage(); + ReplaceBlocksRuleBuilderDialog dialog = showDialog(primaryStage, + "literal(minecraft:stone)=minecraft:dirt"); + try { + assertFalse(invokeBoolean(dialog, "isBuilderDirty")); + + declaredMethod(dialog, "resetBuilder").invoke(dialog); + + assertTrue(fieldValue(dialog, "ruleItems", List.class).isEmpty()); + assertTrue(invokeBoolean(dialog, "isBuilderDirty"), + "clearing restored rules must not erase the session's dirty state"); + } finally { + closeDialog(dialog, primaryStage); + } + }); + } + + @Test + void unchangedRestoredBuilderClosesWithoutDiscardConfirmation() throws Throwable { + runOnJavaFxThread(() -> { + Stage primaryStage = showPrimaryStage(); + ReplaceBlocksRuleBuilderDialog dialog = showDialog(primaryStage, + "literal(minecraft:stone)=minecraft:dirt"); + try { + AtomicInteger confirmations = autoRespondToDiscardConfirmation(dialog, false); + + fireWindowCloseRequest(dialog); + + assertEquals(0, confirmations.get()); + assertFalse(dialog.isShowing()); + } finally { + closeDialog(dialog, primaryStage); + } + }); + } + + @Test + void titleBarCloseStaysOpenWhenDiscardIsDeclined() throws Throwable { + runOnJavaFxThread(() -> { + Stage primaryStage = showPrimaryStage(); + ReplaceBlocksRuleBuilderDialog dialog = showDialog(primaryStage, ""); + try { + setFromText(dialog, "minecraft:stone"); + AtomicInteger confirmations = autoRespondToDiscardConfirmation(dialog, false); + + WindowEvent closeRequest = fireWindowCloseRequest(dialog); + + assertEquals(1, confirmations.get()); + assertTrue(closeRequest.isConsumed()); + assertTrue(dialog.isShowing()); + } finally { + closeDialog(dialog, primaryStage); + } + }); + } + + @Test + void titleBarCloseStaysOpenWhenDiscardConfirmationIsClosed() throws Throwable { + runOnJavaFxThread(() -> { + Stage primaryStage = showPrimaryStage(); + ReplaceBlocksRuleBuilderDialog dialog = showDialog(primaryStage, ""); + try { + setFromText(dialog, "minecraft:stone"); + AtomicInteger confirmations = autoCloseConfirmation(dialog); + + WindowEvent closeRequest = fireWindowCloseRequest(dialog); + + assertEquals(1, confirmations.get()); + assertTrue(closeRequest.isConsumed()); + assertTrue(dialog.isShowing()); + } finally { + closeDialog(dialog, primaryStage); + } + }); + } + + @Test + void titleBarCloseDiscardsDirtyBuilderWhenConfirmed() throws Throwable { + runOnJavaFxThread(() -> { + Stage primaryStage = showPrimaryStage(); + ReplaceBlocksRuleBuilderDialog dialog = showDialog(primaryStage, ""); + try { + setFromText(dialog, "minecraft:stone"); + AtomicInteger confirmations = autoRespondToDiscardConfirmation(dialog, true); + + fireWindowCloseRequest(dialog); + + assertEquals(1, confirmations.get()); + assertFalse(dialog.isShowing()); + } finally { + closeDialog(dialog, primaryStage); + } + }); + } + + @Test + void builderCancelStaysOpenWhenDiscardIsDeclined() throws Throwable { + runOnJavaFxThread(() -> { + Stage primaryStage = showPrimaryStage(); + ReplaceBlocksRuleBuilderDialog dialog = showDialog(primaryStage, ""); + try { + setFromText(dialog, "minecraft:stone"); + AtomicInteger confirmations = autoRespondToDiscardConfirmation(dialog, false); + + ((Button) dialog.getDialogPane().lookupButton(ButtonType.CANCEL)).fire(); + + assertEquals(1, confirmations.get()); + assertTrue(dialog.isShowing()); + } finally { + closeDialog(dialog, primaryStage); + } + }); + } + + @Test + void discardConfirmationExplainsTheTransactionAndUsesExplicitActions() throws Throwable { + runOnJavaFxThread(() -> { + Translation.load(Locale.UK); + Stage primaryStage = showPrimaryStage(); + ReplaceBlocksRuleBuilderDialog dialog = showDialog(primaryStage, ""); + try { + setFromText(dialog, "minecraft:stone"); + AtomicReference alertStateFailure = new AtomicReference<>(); + AtomicInteger confirmations = autoRespondToDiscardConfirmation(dialog, false, + () -> assertTransactionalDiscardConfirmation(dialog), alertStateFailure); + + WindowEvent closeRequest = fireWindowCloseRequest(dialog); + + assertNull(alertStateFailure.get()); + assertEquals(1, confirmations.get()); + assertTrue(closeRequest.isConsumed()); + assertTrue(dialog.isShowing()); + } finally { + closeDialog(dialog, primaryStage); + } + }); + } + + @Test + void selectingTheActiveCatalogIsANoop() throws Throwable { + runOnJavaFxThread(() -> { + Stage primaryStage = showPrimaryStage(); + ReplaceBlocksRuleBuilderDialog dialog = showDialog(primaryStage, ""); + try { + ComboBox selector = catalogSelector(dialog); + ComboBox presets = fieldValue(dialog, "presets", ComboBox.class); + presets.getSelectionModel().selectFirst(); + Object selectedPreset = presets.getValue(); + AtomicInteger confirmations = autoRespondToConfirmation(dialog, true); + + selector.setValue(selector.getValue()); + + assertEquals(0, confirmations.get()); + assertSame(selectedPreset, presets.getValue()); + } finally { + closeDialog(dialog, primaryStage); + } + }); + } + + @Test + void emptyBuilderSwitchesWithoutConfirmationAndClearsTransientPresetState() throws Throwable { + runOnJavaFxThread(() -> { + Stage primaryStage = showPrimaryStage(); + ReplaceBlocksRuleBuilderDialog dialog = showDialog(primaryStage, ""); + try { + ComboBox selector = catalogSelector(dialog); + BlockStateCatalog requested = differentCatalog(selector); + ComboBox presets = fieldValue(dialog, "presets", ComboBox.class); + presets.getSelectionModel().selectFirst(); + presets.show(); + assertTrue(presets.isShowing()); + AtomicInteger confirmations = autoRespondToConfirmation(dialog, true); + + selector.setValue(requested); + + assertEquals(0, confirmations.get()); + assertSame(requested, fieldValue(dialog, "catalog", BlockStateCatalog.class)); + assertNull(presets.getValue()); + assertFalse(presets.isShowing()); + } finally { + closeDialog(dialog, primaryStage); + } + }); + } + + @Test + void cancellingNonEmptyCatalogSwitchPreservesEveryBuilderStateWithoutReentry() throws Throwable { + runOnJavaFxThread(() -> { + Stage primaryStage = showPrimaryStage(); + ReplaceBlocksRuleBuilderDialog dialog = showDialog(primaryStage, + "literal(minecraft:stone)=minecraft:dirt"); + try { + FullBuilderState state = populateFullBuilderState(dialog); + ComboBox selector = catalogSelector(dialog); + BlockStateCatalog original = selector.getValue(); + BlockStateCatalog requested = differentCatalog(selector); + AtomicReference alertStateFailure = new AtomicReference<>(); + AtomicInteger confirmations = autoRespondToConfirmation(dialog, false, + () -> { + assertCatalogState(dialog, selector, original); + assertFullBuilderState(dialog, state); + }, alertStateFailure); + + selector.setValue(requested); + + assertNull(alertStateFailure.get(), "selector changed before cancellation confirmation"); + assertEquals(1, confirmations.get(), "selector rollback must not request confirmation again"); + assertSame(original, selector.getValue()); + assertSame(original, fieldValue(dialog, "catalog", BlockStateCatalog.class)); + assertFullBuilderState(dialog, state); + } finally { + closeDialog(dialog, primaryStage); + } + }); + } + + @Test + void confirmingNonEmptyCatalogSwitchUsesNewCatalogAndCompletelyResetsBuilder() throws Throwable { + runOnJavaFxThread(() -> { + Translation.load(Locale.UK); + Stage primaryStage = showPrimaryStage(); + ReplaceBlocksRuleBuilderDialog dialog = showDialog(primaryStage, + "literal(minecraft:stone)=minecraft:dirt"); + try { + FullBuilderState state = populateFullBuilderState(dialog); + ComboBox selector = catalogSelector(dialog); + BlockStateCatalog original = selector.getValue(); + BlockStateCatalog requested = differentCatalog(selector); + AtomicReference alertStateFailure = new AtomicReference<>(); + AtomicInteger confirmations = autoRespondToConfirmation(dialog, true, + () -> { + assertCatalogState(dialog, selector, original); + assertFullBuilderState(dialog, state); + assertCatalogConfirmationText(dialog, original, requested); + }, alertStateFailure); + + selector.setValue(requested); + + assertNull(alertStateFailure.get(), "selector changed before confirmation was accepted"); + assertEquals(1, confirmations.get()); + assertSame(requested, selector.getValue()); + assertSame(requested, fieldValue(dialog, "catalog", BlockStateCatalog.class)); + assertTrue(fieldValue(dialog, "ruleItems", List.class).isEmpty()); + assertEquals(-1, fieldValue(dialog, "rules", TableView.class).getSelectionModel().getSelectedIndex()); + assertInputReset(fieldValue(dialog, "from", Object.class), true, state.fromPropertyEditor()); + assertInputReset(fieldValue(dialog, "to", Object.class), false, state.toPropertyEditor()); + ComboBox presets = fieldValue(dialog, "presets", ComboBox.class); + assertNull(presets.getValue()); + assertFalse(presets.isShowing()); + assertEquals("", fieldValue(dialog, "result", TextArea.class).getText()); + assertEquals("", fieldValue(dialog, "validation", Label.class).getText()); + assertTrue(dialog.getDialogPane().lookupButton(ButtonType.OK).isDisabled()); + assertTrue(fieldValue(dialog, "previewButton", Node.class).isDisabled()); + } finally { + closeDialog(dialog, primaryStage); + } + }); + } + + @Test + void nonDefaultExtraNbtUsesRealCatalogSwitchConfirmation() throws Throwable { + runOnJavaFxThread(() -> { + Stage primaryStage = showPrimaryStage(); + ReplaceBlocksRuleBuilderDialog dialog = showDialog(primaryStage, ""); + try { + Object from = fieldValue(dialog, "from", Object.class); + ComboBox tileEntityMode = fieldValue(from, "tileEntityMode", ComboBox.class); + tileEntityMode.getSelectionModel().select(1); + Object selectedMode = tileEntityMode.getValue(); + ComboBox selector = catalogSelector(dialog); + BlockStateCatalog original = selector.getValue(); + BlockStateCatalog requested = differentCatalog(selector); + AtomicReference alertStateFailure = new AtomicReference<>(); + AtomicInteger confirmations = autoRespondToConfirmation(dialog, false, + () -> { + assertCatalogState(dialog, selector, original); + assertSame(selectedMode, tileEntityMode.getValue()); + }, alertStateFailure); + + selector.setValue(requested); + + assertNull(alertStateFailure.get(), "selector changed before Extra NBT confirmation"); + assertEquals(1, confirmations.get()); + assertSame(original, selector.getValue()); + assertSame(selectedMode, tileEntityMode.getValue()); + } finally { + closeDialog(dialog, primaryStage); + } + }); + } + + @Test + void nonDefaultPropertyUsesRealCatalogSwitchConfirmation() throws Throwable { + runOnJavaFxThread(() -> { + Stage primaryStage = showPrimaryStage(); + ReplaceBlocksRuleBuilderDialog dialog = showDialog(primaryStage, ""); + try { + Object from = fieldValue(dialog, "from", Object.class); + ComboBox block = fieldValue(from, "block", ComboBox.class); + block.getEditor().setText("minecraft:acacia_stairs"); + ComboBox property = firstPropertyEditor(from); + property.getSelectionModel().select(1); + Object selectedProperty = property.getValue(); + setBooleanField(from, "suppressSuggestions", true); + try { + block.getEditor().clear(); + } finally { + setBooleanField(from, "suppressSuggestions", false); + } + ComboBox selector = catalogSelector(dialog); + BlockStateCatalog original = selector.getValue(); + BlockStateCatalog requested = differentCatalog(selector); + AtomicReference alertStateFailure = new AtomicReference<>(); + AtomicInteger confirmations = autoRespondToConfirmation(dialog, false, + () -> { + assertCatalogState(dialog, selector, original); + assertEquals("", block.getEditor().getText()); + assertSame(selectedProperty, property.getValue()); + }, alertStateFailure); + + selector.setValue(requested); + + assertNull(alertStateFailure.get(), "selector changed before property confirmation"); + assertEquals(1, confirmations.get()); + assertSame(original, selector.getValue()); + assertEquals("", block.getEditor().getText()); + assertSame(selectedProperty, property.getValue()); + } finally { + closeDialog(dialog, primaryStage); + } + }); + } + + @Test + void popupNavigationFilterReceivesKeysFromPopupScene() throws Throwable { + runOnJavaFxThread(() -> { + ComboBox comboBox = new ComboBox<>(FXCollections.observableArrayList( + "minecraft:acacia_button", + "minecraft:acacia_door", + "minecraft:acacia_fence")); + comboBox.setEditable(true); + comboBox.setSkin(new ComboBoxListViewSkin<>(comboBox)); + StackPane root = new StackPane(comboBox); + new Scene(root); + root.applyCss(); + comboBox.getEditor().setText("aca"); + int[] highlightedIndex = {-1}; + ReplaceBlocksRuleBuilderDialog.installAutocompletePopupKeyFilter(comboBox, event -> { + highlightedIndex[0] = ReplaceBlocksRuleBuilderDialog.popupSelectionTarget( + event.getCode(), highlightedIndex[0], comboBox.getItems().size(), 3); + ReplaceBlocksRuleBuilderDialog.focusPopupSuggestion(comboBox, highlightedIndex[0]); + event.consume(); + }); + + ListView popup = (ListView) ((ComboBoxListViewSkin) comboBox.getSkin()).getPopupContent(); + popup.fireEvent(new KeyEvent(KeyEvent.KEY_PRESSED, "", "", KeyCode.DOWN, + false, false, false, false)); + + assertEquals(0, highlightedIndex[0]); + assertEquals("aca", comboBox.getEditor().getText()); + assertNull(comboBox.getValue()); + assertEquals(-1, comboBox.getSelectionModel().getSelectedIndex()); + assertEquals(-1, popup.getFocusModel().getFocusedIndex()); + }); + } + + @Test + void openingAutocompletePopupClearsNativeNavigationBeforeFirstArrowKey() throws Throwable { + runOnJavaFxThread(() -> { + ComboBox comboBox = new ComboBox<>(FXCollections.observableArrayList( + "minecraft:acacia_button", + "minecraft:acacia_door", + "minecraft:acacia_fence")); + comboBox.setEditable(true); + comboBox.setSkin(new ComboBoxListViewSkin<>(comboBox)); + StackPane root = new StackPane(comboBox); + new Scene(root); + root.applyCss(); + ReplaceBlocksRuleBuilderDialog.installAutocompletePopupKeyFilter(comboBox, event -> {}); + + ListView popup = (ListView) ((ComboBoxListViewSkin) comboBox.getSkin()).getPopupContent(); + popup.getSelectionModel().select(0); + popup.getFocusModel().focus(0); + comboBox.fireEvent(new javafx.event.Event(ComboBoxBase.ON_SHOWN)); + + assertEquals(-1, popup.getSelectionModel().getSelectedIndex()); + assertEquals(-1, popup.getFocusModel().getFocusedIndex()); + assertEquals(0, ReplaceBlocksRuleBuilderDialog.popupSelectionTarget( + KeyCode.DOWN, -1, comboBox.getItems().size(), 3)); + }); + } + + @Test + void firstFocusedEmptyCatalogPopupsStayAttachedAfterLateResize() throws Throwable { + assertFirstFocusedEmptyCatalogPopupStaysAttachedAfterLateResize("from", "block"); + assertFirstFocusedEmptyCatalogPopupStaysAttachedAfterLateResize("to", "block"); + assertFirstFocusedEmptyCatalogPopupStaysAttachedAfterLateResize("from", "biomeNames"); + } + + @Test + void popupPositionTrackingKeepsAPopupAttachedBelowItsField() throws Throwable { + AtomicReference stageReference = new AtomicReference<>(); + AtomicReference> comboBoxReference = new AtomicReference<>(); + try { + runOnJavaFxThread(() -> { + ComboBox comboBox = new ComboBox<>(FXCollections.observableArrayList("a", "b", "c")); + comboBox.setEditable(true); + comboBox.setVisibleRowCount(3); + ReplaceBlocksRuleBuilderDialog.installAutocompletePopupKeyFilter(comboBox, event -> {}); + Stage stage = new Stage(); + stage.setX(100); + stage.setY(100); + stage.setScene(new Scene(new StackPane(comboBox), 400, 200)); + stage.show(); + stage.getScene().getRoot().applyCss(); + stage.getScene().getRoot().layout(); + comboBox.show(); + assertTrue(comboBox.isShowing()); + stageReference.set(stage); + comboBoxReference.set(comboBox); + }); + + // Drain callbacks scheduled by ON_SHOWN before simulating a later geometry update. + runOnJavaFxThread(() -> {}); + + runOnJavaFxThread(() -> { + ComboBox comboBox = comboBoxReference.get(); + Bounds comboBounds = comboBox.localToScreen(comboBox.getBoundsInLocal()); + Window popupWindow = popupWindow(comboBox); + double belowY = comboBounds.getMaxY(); + popupWindow.setY(belowY); + popupWindow.setHeight(popupWindow.getHeight() + 32); + Bounds popupBounds = popupContent(comboBox).localToScreen( + popupContent(comboBox).getLayoutBounds()); + assertEquals(comboBounds.getMaxY(), popupBounds.getMinY(), POPUP_ATTACHMENT_TOLERANCE); + assertTrue(popupBounds.getCenterY() > comboBounds.getCenterY()); + }); + } finally { + runOnJavaFxThread(() -> { + if (comboBoxReference.get() != null) { + comboBoxReference.get().hide(); + } + if (stageReference.get() != null) { + stageReference.get().close(); + } + }); + } + } + + @Test + void popupPositionTrackingBoundsSynchronousGeometryFeedback() throws Throwable { + AtomicReference stageReference = new AtomicReference<>(); + AtomicReference> comboBoxReference = new AtomicReference<>(); + try { + runOnJavaFxThread(() -> { + ComboBox comboBox = new ComboBox<>(FXCollections.observableArrayList("a", "b", "c")); + comboBox.setEditable(true); + comboBox.setVisibleRowCount(3); + ReplaceBlocksRuleBuilderDialog.installAutocompletePopupKeyFilter(comboBox, event -> {}); + Stage stage = new Stage(); + stage.setX(100); + stage.setY(Screen.getPrimary().getVisualBounds().getMaxY() - 100); + stage.setScene(new Scene(new StackPane(comboBox), 400, 100)); + stage.show(); + stage.getScene().getRoot().applyCss(); + stage.getScene().getRoot().layout(); + comboBox.show(); + assertTrue(comboBox.isShowing()); + stageReference.set(stage); + comboBoxReference.set(comboBox); + }); + + runOnJavaFxThread(() -> {}); + + runOnJavaFxThread(() -> { + ComboBox comboBox = comboBoxReference.get(); + Bounds comboBounds = comboBox.localToScreen(comboBox.getBoundsInLocal()); + Window popupWindow = popupWindow(comboBox); + double detachedY = comboBounds.getMinY() - popupWindow.getHeight() - 40; + + AtomicInteger feedbackCount = new AtomicInteger(); + boolean[] resetting = {false}; + ChangeListener feedback = (observable, oldY, newY) -> { + if (!resetting[0] && feedbackCount.get() < 10 + && Math.abs(newY.doubleValue() - detachedY) > 0.5) { + feedbackCount.incrementAndGet(); + resetting[0] = true; + try { + popupWindow.setY(detachedY); + } finally { + resetting[0] = false; + } + } + }; + popupWindow.yProperty().addListener(feedback); + try { + popupWindow.setY(detachedY); + } finally { + popupWindow.yProperty().removeListener(feedback); + } + + assertTrue(feedbackCount.get() <= 4, + "popup positioning must not spin synchronously on persistent geometry feedback"); + + popupWindow.setHeight(popupWindow.getHeight() + 1); + Bounds popupBounds = popupContent(comboBox).localToScreen(popupContent(comboBox).getLayoutBounds()); + assertEquals(comboBounds.getMinY(), popupBounds.getMaxY(), 0.5, + "the tracker must still recover on a later external geometry change"); + }); + } finally { + runOnJavaFxThread(() -> { + if (comboBoxReference.get() != null) { + comboBoxReference.get().hide(); + } + if (stageReference.get() != null) { + stageReference.get().close(); + } + }); + } + } + + @Test + void popupHorizontalBoundsStayInsideTheBuilderWindow() { + ReplaceBlocksAutocomplete.HorizontalPopupBounds constrained = ReplaceBlocksAutocomplete.constrainHorizontalBounds( + 333, 460, 333, 270, 0, 706, 4); + assertEquals(333, constrained.x(), 0.01); + assertEquals(369, constrained.width(), 0.01); + + constrained = ReplaceBlocksAutocomplete.constrainHorizontalBounds( + 650, 460, 650, 100, 0, 706, 4); + assertEquals(242, constrained.x(), 0.01); + assertEquals(460, constrained.width(), 0.01); + } + + private static void assertFirstFocusedEmptyCatalogPopupStaysAttachedAfterLateResize( + String inputFieldName, String comboBoxFieldName) throws Throwable { + AtomicReference primaryStageReference = new AtomicReference<>(); + AtomicReference dialogReference = new AtomicReference<>(); + AtomicReference> comboBoxReference = new AtomicReference<>(); + try { + runOnJavaFxThread(() -> { + Stage primaryStage = new Stage(); + Scene primaryScene = new Scene(new StackPane(), 1200, 900); + primaryScene.getStylesheets().add(ReplaceBlocksRuleBuilderDialog.class.getClassLoader() + .getResource("style/base.css").toExternalForm()); + primaryStage.setScene(primaryScene); + primaryStage.setX(50); + primaryStage.setY(50); + primaryStage.show(); + primaryStageReference.set(primaryStage); + ReplaceBlocksRuleBuilderDialog dialog = new ReplaceBlocksRuleBuilderDialog(primaryStage, ""); + dialogReference.set(dialog); + dialog.setX(100); + dialog.setY(Screen.getPrimary().getVisualBounds().getMaxY() - 250); + dialog.show(); + dialog.getDialogPane().applyCss(); + dialog.getDialogPane().layout(); + + Field inputField = ReplaceBlocksRuleBuilderDialog.class.getDeclaredField(inputFieldName); + inputField.setAccessible(true); + Object input = inputField.get(dialog); + Field comboBoxField = input.getClass().getDeclaredField(comboBoxFieldName); + comboBoxField.setAccessible(true); + ComboBox comboBox = (ComboBox) comboBoxField.get(input); + comboBoxReference.set(comboBox); + firePrimaryMouseEvent(comboBox.getEditor(), MouseEvent.MOUSE_PRESSED, true); + firePrimaryMouseEvent(comboBox.getEditor(), MouseEvent.MOUSE_RELEASED, false); + assertTrue(comboBox.getEditor().isFocused()); + }); + + runOnJavaFxThread(() -> { + ComboBox comboBox = comboBoxReference.get(); + Node arrowButton = comboBox.lookup(".arrow-button"); + assertNotNull(arrowButton); + firePrimaryMouseEvent(arrowButton, MouseEvent.MOUSE_PRESSED, true); + firePrimaryMouseEvent(arrowButton, MouseEvent.MOUSE_RELEASED, false); + assertTrue(comboBox.isShowing()); + }); + + // Drain callbacks scheduled by ON_SHOWN before simulating a later geometry update. + runOnJavaFxThread(() -> {}); + + waitForJavaFxCondition(() -> popupIsAttached(comboBoxReference.get()), + inputFieldName + "." + comboBoxFieldName + " popup was not initially attached"); + + runOnJavaFxThread(() -> { + ComboBox comboBox = comboBoxReference.get(); + Bounds comboBounds = comboBox.localToScreen(comboBox.getBoundsInLocal()); + Window popupWindow = popupWindow(comboBox); + double originalHeight = popupWindow.getHeight(); + ListView popup = popupContent(comboBox); + Bounds popupBounds = popup.localToScreen(popup.getLayoutBounds()); + Screen screen = Screen.getScreensForRectangle( + comboBounds.getMinX(), comboBounds.getMinY(), + comboBounds.getWidth(), comboBounds.getHeight()).stream() + .findFirst().orElse(Screen.getPrimary()); + Bounds visualBounds = new BoundingBox( + screen.getVisualBounds().getMinX(), screen.getVisualBounds().getMinY(), + screen.getVisualBounds().getWidth(), screen.getVisualBounds().getHeight()); + boolean above = Math.abs(comboBounds.getMinY() - popupBounds.getMaxY()) + <= POPUP_ATTACHMENT_TOLERANCE; + double availableHeight = above + ? comboBounds.getMinY() - visualBounds.getMinY() + : visualBounds.getMaxY() - comboBounds.getMaxY(); + double growth = Math.min(32, availableHeight - originalHeight - 4); + assertTrue(growth > 0, + inputFieldName + "." + comboBoxFieldName + " has no room for a late popup resize"); + popupWindow.setHeight(originalHeight + growth); + }); + + waitForJavaFxCondition(() -> popupIsAttached(comboBoxReference.get()), + inputFieldName + "." + comboBoxFieldName + " popup detached after a late resize"); + } finally { + runOnJavaFxThread(() -> { + if (dialogReference.get() != null) { + dialogReference.get().setOnCloseRequest(null); + dialogReference.get().close(); + } + if (primaryStageReference.get() != null) { + primaryStageReference.get().close(); + } + }); + } + } + + private static Window popupWindow(ComboBox comboBox) { + ListView popup = popupContent(comboBox); + assertNotNull(popup.getScene()); + return popup.getScene().getWindow(); + } + + private static ListView popupContent(ComboBox comboBox) { + return (ListView) ((ComboBoxListViewSkin) comboBox.getSkin()).getPopupContent(); + } + + @Test + void marqueeOverlaysGeneratedPreviewWithoutChangingBuilderLayout() throws Throwable { + runOnJavaFxThread(() -> { + Stage primaryStage = new Stage(); + primaryStage.setScene(new Scene(new StackPane())); + try { + ReplaceBlocksRuleBuilderDialog dialog = new ReplaceBlocksRuleBuilderDialog(primaryStage, ""); + Field marqueeField = ReplaceBlocksRuleBuilderDialog.class.getDeclaredField("ruleMarquee"); + marqueeField.setAccessible(true); + Rectangle marquee = (Rectangle) marqueeField.get(dialog); + StackPane layer = assertInstanceOf(StackPane.class, dialog.getDialogPane().getContent()); + double initialWidth = layer.prefWidth(-1); + double initialHeight = layer.prefHeight(-1); + + marquee.setWidth(2000); + marquee.setHeight(1200); + + assertEquals(initialWidth, layer.prefWidth(-1)); + assertEquals(initialHeight, layer.prefHeight(-1)); + assertSame(layer, marquee.getParent()); + assertSame(marquee, layer.getChildren().getLast()); + } finally { + primaryStage.close(); + } + }); + } + + @Test + void marqueeUsesSubtleBlueOverlayStyle() throws Exception { + InputStream resource = ReplaceBlocksRuleBuilderDialog.class.getClassLoader() + .getResourceAsStream("style/component/change-nbt-dialog.css"); + assertNotNull(resource); + try (InputStream input = resource) { + String css = new String(input.readAllBytes(), StandardCharsets.UTF_8); + + assertTrue(css.contains("-fx-fill: rgba(74, 163, 255, 0.12);")); + assertTrue(css.contains("-fx-stroke: #4aa3ff;")); + assertTrue(css.contains("-fx-stroke-width: 1;")); + } + } + + @Test + void builderDropdownUsesTheNativePopupFrameInsteadOfTheGlobalBlackBorder() throws Exception { + InputStream resource = ReplaceBlocksRuleBuilderDialog.class.getClassLoader() + .getResourceAsStream("style/component/change-nbt-dialog.css"); + assertNotNull(resource); + try (InputStream input = resource) { + String css = new String(input.readAllBytes(), StandardCharsets.UTF_8); + + assertTrue(css.contains(".combo-box-popup .replace-blocks-builder-dropdown {")); + assertTrue(css.contains("-fx-border-width: 0;")); + } + } + + @Test + void builderPrimaryActionUsesTheSharedButtonStyle() throws Exception { + InputStream resource = ReplaceBlocksRuleBuilderDialog.class.getClassLoader() + .getResourceAsStream("style/component/change-nbt-dialog.css"); + assertNotNull(resource); + try (InputStream input = resource) { + String css = new String(input.readAllBytes(), StandardCharsets.UTF_8); + assertFalse(css.contains("replace-blocks-builder-add-rule")); + assertTrue(css.contains(".replace-blocks-builder-preset-action:disabled")); + assertTrue(css.contains("-fx-opacity: 0.55;")); + } + } + + @Test + void builderWorkflowMessagesDoNotFallBackToEnglishInOtherLanguages() throws Exception { + List locales = List.of( + "cs_CZ", "de_DE", "es_ES", "fr_FR", "hu_HU", "it_IT", "ja_JP", "ko_KR", + "nl_NL", "pl_PL", "pt_BR", "pt_PT", "ru_RU", "sv_SE", "tr_TR", "uk_UA", + "zh_CN", "zh_TW"); + List keys = List.of( + "dialog.replace_blocks.builder.catalog_switch.message", + "dialog.replace_blocks.builder.preset.save.header", + "dialog.replace_blocks.builder.preset.replace_confirm", + "dialog.replace_blocks.builder.discard.title", + "dialog.replace_blocks.builder.discard.header", + "dialog.replace_blocks.builder.help.biome.syntax"); + + for (String locale : locales) { + for (String key : keys) { + assertNotEquals(builderTranslation("en_GB", key), builderTranslation(locale, key), + () -> locale + " still uses the English Builder text for " + key); + } + } + } + + @Test + void emptyBuilderUsesCompactEmptyStateAndReadablePrimaryAction() throws Throwable { + runOnJavaFxThread(() -> { + Stage primaryStage = showPrimaryStage(); + ReplaceBlocksRuleBuilderDialog dialog = showDialog(primaryStage, ""); + try { + TableView rules = fieldValue(dialog, "rules", TableView.class); + StackPane rulesArea = (StackPane) dialog.getDialogPane().lookup(".replace-blocks-builder-rules-area"); + Label placeholder = (Label) rules.getPlaceholder(); + TextArea result = fieldValue(dialog, "result", TextArea.class); + Node sourceConstraints = dialog.getDialogPane().lookup(".replace-blocks-builder-source-constraints"); + boolean hasAddRuleButton = dialog.getDialogPane().lookupAll(".button").stream() + .filter(Button.class::isInstance) + .map(Button.class::cast) + .anyMatch(button -> button.getText().equals(Translation.DIALOG_REPLACE_BLOCKS_BUILDER_ADD_RULE.toString())); + + assertNotNull(rulesArea); + assertEquals(Priority.NEVER, VBox.getVgrow(rulesArea)); + assertEquals(160, rules.getMaxHeight()); + assertEquals("No rules have been added yet. Fill in the source and target blocks, then click Add rule.", placeholder.getText()); + assertTrue(result.isWrapText()); + assertEquals(40, result.getMinHeight()); + assertNotNull(sourceConstraints); + assertEquals(2, GridPane.getColumnSpan(sourceConstraints)); + assertTrue(hasAddRuleButton); + } finally { + closeDialog(dialog, primaryStage); + } + }); + } + + @Test + void builderKeepsAdvancedSyntaxGuidanceOutOfPersistentFooter() throws Throwable { + runOnJavaFxThread(() -> { + Stage primaryStage = showPrimaryStage(); + ReplaceBlocksRuleBuilderDialog dialog = showDialog(primaryStage, ""); + try { + boolean hasPersistentAdvancedGuidance = dialog.getDialogPane().lookupAll(".label").stream() + .filter(Label.class::isInstance) + .map(Label.class::cast) + .anyMatch(label -> label.getText().equals( + Translation.DIALOG_REPLACE_BLOCKS_BUILDER_ADVANCED.toString())); + + assertFalse(hasPersistentAdvancedGuidance); + } finally { + closeDialog(dialog, primaryStage); + } + }); + } + + private static String builderTranslation(String locale, String key) throws Exception { + String resourceName = "lang/" + locale + ".txt"; + try (InputStream input = ReplaceBlocksRuleBuilderDialog.class.getClassLoader() + .getResourceAsStream(resourceName)) { + assertNotNull(input, resourceName); + return new String(input.readAllBytes(), StandardCharsets.UTF_8).lines() + .filter(line -> line.startsWith(key + ";")) + .map(line -> line.substring(key.length() + 1)) + .findFirst() + .orElseThrow(() -> new AssertionError("missing translation key " + key + " in " + resourceName)); + } + } + + @Test + void sourceYLabelsKeepTheirPreferredWidth() throws Throwable { + runOnJavaFxThread(() -> { + Stage primaryStage = showPrimaryStage(); + ReplaceBlocksRuleBuilderDialog dialog = showDialog(primaryStage, ""); + try { + List