Make a lot of progress on legacy conversions.

This commit is contained in:
Matthew Miller 2018-07-31 16:14:36 +10:00
parent fdb7ada295
commit c05c33cab0
6 changed files with 280 additions and 241 deletions

View File

@ -19,7 +19,9 @@
package com.sk89q.util; package com.sk89q.util;
import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.List;
import java.util.Map; import java.util.Map;
/** /**
@ -301,4 +303,24 @@ public final class StringUtil {
return type; return type;
} }
public static List<String> parseListInQuotes(String[] input, char delimiter, char quoteOpen, char quoteClose) {
List<String> parsableBlocks = new ArrayList<>();
StringBuilder buffer = new StringBuilder();
for (String split : input) {
if (split.indexOf(quoteOpen) != -1 && split.indexOf(quoteClose) == -1) {
buffer.append(split).append(delimiter);
} else if (split.indexOf(quoteClose) != -1 && split.indexOf(quoteOpen) == -1) {
buffer.append(split);
parsableBlocks.add(buffer.toString());
buffer = new StringBuilder();
} else if (buffer.length() == 0) {
parsableBlocks.add(split);
} else {
buffer.append(split).append(delimiter);
}
}
return parsableBlocks;
}
} }

View File

@ -19,6 +19,7 @@
package com.sk89q.worldedit.extension.factory; package com.sk89q.worldedit.extension.factory;
import com.sk89q.util.StringUtil;
import com.sk89q.worldedit.WorldEdit; import com.sk89q.worldedit.WorldEdit;
import com.sk89q.worldedit.blocks.BaseBlock; import com.sk89q.worldedit.blocks.BaseBlock;
import com.sk89q.worldedit.extension.input.InputParseException; import com.sk89q.worldedit.extension.input.InputParseException;
@ -59,7 +60,8 @@ public class BlockFactory extends AbstractFactory<BlockStateHolder> {
*/ */
public Set<BlockStateHolder> parseFromListInput(String input, ParserContext context) throws InputParseException { public Set<BlockStateHolder> parseFromListInput(String input, ParserContext context) throws InputParseException {
Set<BlockStateHolder> blocks = new HashSet<>(); Set<BlockStateHolder> blocks = new HashSet<>();
for (String token : input.split(",")) { String[] splits = input.split(",");
for (String token : StringUtil.parseListInQuotes(splits, ',', '[', ']')) {
blocks.add(parseFromInput(token, context)); blocks.add(parseFromInput(token, context));
} }
return blocks; return blocks;

View File

@ -48,8 +48,6 @@ import com.sk89q.worldedit.world.registry.LegacyMapper;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/** /**
* Parses block input strings. * Parses block input strings.
@ -98,7 +96,6 @@ class DefaultBlockParser extends InputParser<BlockStateHolder> {
} }
} }
private static Pattern blockStatePattern = Pattern.compile("([a-z:_]+)(?:\\[([a-zA-Z0-9=, _]+)])?", Pattern.CASE_INSENSITIVE);
private static String[] EMPTY_STRING_ARRAY = new String[]{}; private static String[] EMPTY_STRING_ARRAY = new String[]{};
/** /**
@ -210,14 +207,21 @@ class DefaultBlockParser extends InputParser<BlockStateHolder> {
} }
if (state == null) { if (state == null) {
Matcher matcher = blockStatePattern.matcher(blockAndExtraData[0]); // TODO Move away from regex because it's hella slow String typeString;
if (!matcher.matches() || matcher.groupCount() < 2 || matcher.groupCount() > 3) { String stateString = null;
int stateStart = blockAndExtraData[0].indexOf('[');
if (stateStart == -1) {
typeString = blockAndExtraData[0];
} else {
typeString = blockAndExtraData[0].substring(0, stateStart);
stateString = blockAndExtraData[0].substring(stateStart + 1, blockAndExtraData[0].length() - 1);
}
if (typeString == null || typeString.isEmpty()) {
throw new InputParseException("Invalid format"); throw new InputParseException("Invalid format");
} }
String typeString = matcher.group(1);
String[] stateProperties = EMPTY_STRING_ARRAY; String[] stateProperties = EMPTY_STRING_ARRAY;
if (matcher.groupCount() >= 2 && matcher.group(2) != null) { if (stateString != null) {
stateProperties = matcher.group(2).split(","); stateProperties = stateString.split(",");
} }
if ("hand".equalsIgnoreCase(typeString)) { if ("hand".equalsIgnoreCase(typeString)) {

View File

@ -19,6 +19,7 @@
package com.sk89q.worldedit.extension.factory; package com.sk89q.worldedit.extension.factory;
import com.sk89q.util.StringUtil;
import com.sk89q.worldedit.WorldEdit; import com.sk89q.worldedit.WorldEdit;
import com.sk89q.worldedit.extension.input.InputParseException; import com.sk89q.worldedit.extension.input.InputParseException;
import com.sk89q.worldedit.extension.input.ParserContext; import com.sk89q.worldedit.extension.input.ParserContext;
@ -39,7 +40,8 @@ class RandomPatternParser extends InputParser<Pattern> {
BlockFactory blockRegistry = worldEdit.getBlockFactory(); BlockFactory blockRegistry = worldEdit.getBlockFactory();
RandomPattern randomPattern = new RandomPattern(); RandomPattern randomPattern = new RandomPattern();
for (String token : input.split(",")) { String[] splits = input.split(",");
for (String token : StringUtil.parseListInQuotes(splits, ',', '[', ']')) {
BlockStateHolder block; BlockStateHolder block;
double chance; double chance;

View File

@ -19,8 +19,8 @@
package com.sk89q.worldedit.world.registry; package com.sk89q.worldedit.world.registry;
import com.google.common.collect.BiMap; import com.google.common.collect.HashMultimap;
import com.google.common.collect.HashBiMap; import com.google.common.collect.Multimap;
import com.google.common.io.Resources; import com.google.common.io.Resources;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.google.gson.GsonBuilder; import com.google.gson.GsonBuilder;
@ -48,8 +48,10 @@ public class LegacyMapper {
private static final Logger log = Logger.getLogger(LegacyMapper.class.getCanonicalName()); private static final Logger log = Logger.getLogger(LegacyMapper.class.getCanonicalName());
private static LegacyMapper INSTANCE; private static LegacyMapper INSTANCE;
private BiMap<String, BlockState> blockMap = HashBiMap.create(); private Multimap<String, BlockState> stringToBlockMap = HashMultimap.create();
private BiMap<String, ItemType> itemMap = HashBiMap.create(); private Multimap<BlockState, String> blockToStringMap = HashMultimap.create();
private Multimap<String, ItemType> stringToItemMap = HashMultimap.create();
private Multimap<ItemType, String> itemToStringMap = HashMultimap.create();
/** /**
* Create a new instance. * Create a new instance.
@ -85,58 +87,63 @@ public class LegacyMapper {
for (Map.Entry<String, String> blockEntry : dataFile.blocks.entrySet()) { for (Map.Entry<String, String> blockEntry : dataFile.blocks.entrySet()) {
try { try {
blockMap.put(blockEntry.getKey(), String id = blockEntry.getKey();
(BlockState) WorldEdit.getInstance().getBlockFactory().parseFromInput(blockEntry.getValue(), parserContext)); BlockState state = WorldEdit.getInstance().getBlockFactory().parseFromInput(blockEntry.getValue(), parserContext).toImmutableState();
blockToStringMap.put(state, id);
stringToBlockMap.put(id, state);
} catch (Exception e) { } catch (Exception e) {
log.fine("Unknown block: " + blockEntry.getValue()); log.warning("Unknown block: " + blockEntry.getValue());
} }
} }
for (Map.Entry<String, String> itemEntry : dataFile.items.entrySet()) { for (Map.Entry<String, String> itemEntry : dataFile.items.entrySet()) {
try { try {
itemMap.put(itemEntry.getKey(), ItemTypes.get(itemEntry.getValue())); String id = itemEntry.getKey();
ItemType type = ItemTypes.get(itemEntry.getValue());
itemToStringMap.put(type, id);
stringToItemMap.put(id, type);
} catch (Exception e) { } catch (Exception e) {
log.fine("Unknown item: " + itemEntry.getValue()); log.warning("Unknown item: " + itemEntry.getValue());
} }
} }
} }
@Nullable @Nullable
public ItemType getItemFromLegacy(int legacyId) { public ItemType getItemFromLegacy(int legacyId) {
return itemMap.get(legacyId + ":0"); return getItemFromLegacy(legacyId, 0);
} }
@Nullable @Nullable
public ItemType getItemFromLegacy(int legacyId, int data) { public ItemType getItemFromLegacy(int legacyId, int data) {
return itemMap.get(legacyId + ":" + data); return stringToItemMap.get(legacyId + ":" + data).stream().findFirst().orElse(null);
} }
@Nullable @Nullable
public int[] getLegacyFromItem(ItemType itemType) { public int[] getLegacyFromItem(ItemType itemType) {
if (!itemMap.inverse().containsKey(itemType)) { if (!itemToStringMap.containsKey(itemType)) {
return null; return null;
} else { } else {
String value = itemMap.inverse().get(itemType); String value = itemToStringMap.get(itemType).stream().findFirst().get();
return Arrays.stream(value.split(":")).mapToInt(Integer::parseInt).toArray(); return Arrays.stream(value.split(":")).mapToInt(Integer::parseInt).toArray();
} }
} }
@Nullable @Nullable
public BlockState getBlockFromLegacy(int legacyId) { public BlockState getBlockFromLegacy(int legacyId) {
return blockMap.get(legacyId + ":0"); return getBlockFromLegacy(legacyId, 0);
} }
@Nullable @Nullable
public BlockState getBlockFromLegacy(int legacyId, int data) { public BlockState getBlockFromLegacy(int legacyId, int data) {
return blockMap.get(legacyId + ":" + data); return stringToBlockMap.get(legacyId + ":" + data).stream().findFirst().orElse(null);
} }
@Nullable @Nullable
public int[] getLegacyFromBlock(BlockState blockState) { public int[] getLegacyFromBlock(BlockState blockState) {
if (!blockMap.inverse().containsKey(blockState)) { if (!blockToStringMap.containsKey(blockState)) {
return null; return null;
} else { } else {
String value = blockMap.inverse().get(blockState); String value = blockToStringMap.get(blockState).stream().findFirst().get();
return Arrays.stream(value.split(":")).mapToInt(Integer::parseInt).toArray(); return Arrays.stream(value.split(":")).mapToInt(Integer::parseInt).toArray();
} }
} }

View File

@ -114,26 +114,26 @@
"17:9": "minecraft:spruce_log[axis=z]", "17:9": "minecraft:spruce_log[axis=z]",
"17:10": "minecraft:birch_log[axis=z]", "17:10": "minecraft:birch_log[axis=z]",
"17:11": "minecraft:jungle_log[axis=z]", "17:11": "minecraft:jungle_log[axis=z]",
"17:12": "minecraft:oak_log[axis=none]", "17:12": "minecraft:oak_wood",
"17:13": "minecraft:spruce_log[axis=none]", "17:13": "minecraft:spruce_wood",
"17:14": "minecraft:birch_log[axis=none]", "17:14": "minecraft:birch_wood",
"17:15": "minecraft:jungle_log[axis=none]", "17:15": "minecraft:jungle_wood",
"18:0": "minecraft:oak_leaves[check_decay=false,decayable=true]", "18:0": "minecraft:oak_leaves[persistent=false,distance=1]",
"18:1": "minecraft:spruce_leaves[check_decay=false,decayable=true]", "18:1": "minecraft:spruce_leaves[persistent=false,distance=1]",
"18:2": "minecraft:birch_leaves[check_decay=false,decayable=true]", "18:2": "minecraft:birch_leaves[persistent=false,distance=1]",
"18:3": "minecraft:jungle_leaves[check_decay=false,decayable=true]", "18:3": "minecraft:jungle_leaves[persistent=false,distance=1]",
"18:4": "minecraft:oak_leaves[check_decay=false,decayable=false]", "18:4": "minecraft:oak_leaves[persistent=true,distance=1]",
"18:5": "minecraft:spruce_leaves[check_decay=false,decayable=false]", "18:5": "minecraft:spruce_leaves[persistent=true,distance=1]",
"18:6": "minecraft:birch_leaves[check_decay=false,decayable=false]", "18:6": "minecraft:birch_leaves[persistent=true,distance=1]",
"18:7": "minecraft:jungle_leaves[check_decay=false,decayable=false]", "18:7": "minecraft:jungle_leaves[persistent=true,distance=1]",
"18:8": "minecraft:oak_leaves[check_decay=true,decayable=true]", "18:8": "minecraft:oak_leaves[persistent=false,distance=1]",
"18:9": "minecraft:spruce_leaves[check_decay=true,decayable=true]", "18:9": "minecraft:spruce_leaves[persistent=false,distance=1]",
"18:10": "minecraft:birch_leaves[check_decay=true,decayable=true]", "18:10": "minecraft:birch_leaves[persistent=false,distance=1]",
"18:11": "minecraft:jungle_leaves[check_decay=true,decayable=true]", "18:11": "minecraft:jungle_leaves[persistent=false,distance=1]",
"18:12": "minecraft:oak_leaves[check_decay=true,decayable=false]", "18:12": "minecraft:oak_leaves[persistent=true,distance=1]",
"18:13": "minecraft:spruce_leaves[check_decay=true,decayable=false]", "18:13": "minecraft:spruce_leaves[persistent=true,distance=1]",
"18:14": "minecraft:birch_leaves[check_decay=true,decayable=false]", "18:14": "minecraft:birch_leaves[persistent=true,distance=1]",
"18:15": "minecraft:jungle_leaves[check_decay=true,decayable=false]", "18:15": "minecraft:jungle_leaves[persistent=true,distance=1]",
"19:0": "minecraft:sponge", "19:0": "minecraft:sponge",
"19:1": "minecraft:wet_sponge", "19:1": "minecraft:wet_sponge",
"20:0": "minecraft:glass", "20:0": "minecraft:glass",
@ -171,18 +171,18 @@
"26:13": "minecraft:red_bed[part=head,facing=west,occupied=true]", "26:13": "minecraft:red_bed[part=head,facing=west,occupied=true]",
"26:14": "minecraft:red_bed[part=head,facing=north,occupied=true]", "26:14": "minecraft:red_bed[part=head,facing=north,occupied=true]",
"26:15": "minecraft:red_bed[part=head,facing=east,occupied=true]", "26:15": "minecraft:red_bed[part=head,facing=east,occupied=true]",
"27:0": "minecraft:golden_rail[shape=north_south,powered=false]", "27:0": "minecraft:powered_rail[shape=north_south,powered=false]",
"27:1": "minecraft:golden_rail[shape=east_west,powered=false]", "27:1": "minecraft:powered_rail[shape=east_west,powered=false]",
"27:2": "minecraft:golden_rail[shape=ascending_east,powered=false]", "27:2": "minecraft:powered_rail[shape=ascending_east,powered=false]",
"27:3": "minecraft:golden_rail[shape=ascending_west,powered=false]", "27:3": "minecraft:powered_rail[shape=ascending_west,powered=false]",
"27:4": "minecraft:golden_rail[shape=ascending_north,powered=false]", "27:4": "minecraft:powered_rail[shape=ascending_north,powered=false]",
"27:5": "minecraft:golden_rail[shape=ascending_south,powered=false]", "27:5": "minecraft:powered_rail[shape=ascending_south,powered=false]",
"27:8": "minecraft:golden_rail[shape=north_south,powered=true]", "27:8": "minecraft:powered_rail[shape=north_south,powered=true]",
"27:9": "minecraft:golden_rail[shape=east_west,powered=true]", "27:9": "minecraft:powered_rail[shape=east_west,powered=true]",
"27:10": "minecraft:golden_rail[shape=ascending_east,powered=true]", "27:10": "minecraft:powered_rail[shape=ascending_east,powered=true]",
"27:11": "minecraft:golden_rail[shape=ascending_west,powered=true]", "27:11": "minecraft:powered_rail[shape=ascending_west,powered=true]",
"27:12": "minecraft:golden_rail[shape=ascending_north,powered=true]", "27:12": "minecraft:powered_rail[shape=ascending_north,powered=true]",
"27:13": "minecraft:golden_rail[shape=ascending_south,powered=true]", "27:13": "minecraft:powered_rail[shape=ascending_south,powered=true]",
"28:0": "minecraft:detector_rail[shape=north_south,powered=false]", "28:0": "minecraft:detector_rail[shape=north_south,powered=false]",
"28:1": "minecraft:detector_rail[shape=east_west,powered=false]", "28:1": "minecraft:detector_rail[shape=east_west,powered=false]",
"28:2": "minecraft:detector_rail[shape=ascending_east,powered=false]", "28:2": "minecraft:detector_rail[shape=ascending_east,powered=false]",
@ -239,7 +239,7 @@
"35:0": "minecraft:white_wool", "35:0": "minecraft:white_wool",
"35:1": "minecraft:orange_wool", "35:1": "minecraft:orange_wool",
"35:2": "minecraft:magenta_wool", "35:2": "minecraft:magenta_wool",
"35:3": "minecraft:wool[color=lightblue]", "35:3": "minecraft:light_blue_wool",
"35:4": "minecraft:yellow_wool", "35:4": "minecraft:yellow_wool",
"35:5": "minecraft:lime_wool", "35:5": "minecraft:lime_wool",
"35:6": "minecraft:pink_wool", "35:6": "minecraft:pink_wool",
@ -311,8 +311,8 @@
"44:14": "minecraft:nether_brick_slab[type=top]", "44:14": "minecraft:nether_brick_slab[type=top]",
"44:15": "minecraft:quartz_slab[type=top]", "44:15": "minecraft:quartz_slab[type=top]",
"45:0": "minecraft:bricks", "45:0": "minecraft:bricks",
"46:0": "minecraft:tnt[explode=false]", "46:0": "minecraft:tnt[unstable=false]",
"46:1": "minecraft:tnt[explode=true]", "46:1": "minecraft:tnt[unstable=true]",
"47:0": "minecraft:bookshelf", "47:0": "minecraft:bookshelf",
"48:0": "minecraft:mossy_cobblestone", "48:0": "minecraft:mossy_cobblestone",
"49:0": "minecraft:obsidian", "49:0": "minecraft:obsidian",
@ -556,8 +556,8 @@
"87:0": "minecraft:netherrack", "87:0": "minecraft:netherrack",
"88:0": "minecraft:soul_sand", "88:0": "minecraft:soul_sand",
"89:0": "minecraft:glowstone", "89:0": "minecraft:glowstone",
"90:1": "minecraft:portal[axis=x]", "90:1": "minecraft:nether_portal[axis=x]",
"90:2": "minecraft:portal[axis=z]", "90:2": "minecraft:nether_portal[axis=z]",
"91:0": "minecraft:jack_o_lantern[facing=south]", "91:0": "minecraft:jack_o_lantern[facing=south]",
"91:1": "minecraft:jack_o_lantern[facing=west]", "91:1": "minecraft:jack_o_lantern[facing=west]",
"91:2": "minecraft:jack_o_lantern[facing=north]", "91:2": "minecraft:jack_o_lantern[facing=north]",
@ -569,42 +569,42 @@
"92:4": "minecraft:cake[bites=4]", "92:4": "minecraft:cake[bites=4]",
"92:5": "minecraft:cake[bites=5]", "92:5": "minecraft:cake[bites=5]",
"92:6": "minecraft:cake[bites=6]", "92:6": "minecraft:cake[bites=6]",
"93:0": "minecraft:unpowered_repeater[delay=1,facing=south,locked=false]", "93:0": "minecraft:repeater[delay=1,facing=south,locked=false,powered=false]",
"93:1": "minecraft:unpowered_repeater[delay=1,facing=west,locked=false]", "93:1": "minecraft:repeater[delay=1,facing=west,locked=false,powered=false]",
"93:2": "minecraft:unpowered_repeater[delay=1,facing=north,locked=false]", "93:2": "minecraft:repeater[delay=1,facing=north,locked=false,powered=false]",
"93:3": "minecraft:unpowered_repeater[delay=1,facing=east,locked=false]", "93:3": "minecraft:repeater[delay=1,facing=east,locked=false,powered=false]",
"93:4": "minecraft:unpowered_repeater[delay=2,facing=south,locked=false]", "93:4": "minecraft:repeater[delay=2,facing=south,locked=false,powered=false]",
"93:5": "minecraft:unpowered_repeater[delay=2,facing=west,locked=false]", "93:5": "minecraft:repeater[delay=2,facing=west,locked=false,powered=false]",
"93:6": "minecraft:unpowered_repeater[delay=2,facing=north,locked=false]", "93:6": "minecraft:repeater[delay=2,facing=north,locked=false,powered=false]",
"93:7": "minecraft:unpowered_repeater[delay=2,facing=east,locked=false]", "93:7": "minecraft:repeater[delay=2,facing=east,locked=false,powered=false]",
"93:8": "minecraft:unpowered_repeater[delay=3,facing=south,locked=false]", "93:8": "minecraft:repeater[delay=3,facing=south,locked=false,powered=false]",
"93:9": "minecraft:unpowered_repeater[delay=3,facing=west,locked=false]", "93:9": "minecraft:repeater[delay=3,facing=west,locked=false,powered=false]",
"93:10": "minecraft:unpowered_repeater[delay=3,facing=north,locked=false]", "93:10": "minecraft:repeater[delay=3,facing=north,locked=false,powered=false]",
"93:11": "minecraft:unpowered_repeater[delay=3,facing=east,locked=false]", "93:11": "minecraft:repeater[delay=3,facing=east,locked=false,powered=false]",
"93:12": "minecraft:unpowered_repeater[delay=4,facing=south,locked=false]", "93:12": "minecraft:repeater[delay=4,facing=south,locked=false,powered=false]",
"93:13": "minecraft:unpowered_repeater[delay=4,facing=west,locked=false]", "93:13": "minecraft:repeater[delay=4,facing=west,locked=false,powered=false]",
"93:14": "minecraft:unpowered_repeater[delay=4,facing=north,locked=false]", "93:14": "minecraft:repeater[delay=4,facing=north,locked=false,powered=false]",
"93:15": "minecraft:unpowered_repeater[delay=4,facing=east,locked=false]", "93:15": "minecraft:repeater[delay=4,facing=east,locked=false,powered=false]",
"94:0": "minecraft:powered_repeater[delay=1,facing=south,locked=false]", "94:0": "minecraft:repeater[delay=1,facing=south,locked=false,powered=true]",
"94:1": "minecraft:powered_repeater[delay=1,facing=west,locked=false]", "94:1": "minecraft:repeater[delay=1,facing=west,locked=false,powered=true]",
"94:2": "minecraft:powered_repeater[delay=1,facing=north,locked=false]", "94:2": "minecraft:repeater[delay=1,facing=north,locked=false,powered=true]",
"94:3": "minecraft:powered_repeater[delay=1,facing=east,locked=false]", "94:3": "minecraft:repeater[delay=1,facing=east,locked=false,powered=true]",
"94:4": "minecraft:powered_repeater[delay=2,facing=south,locked=false]", "94:4": "minecraft:repeater[delay=2,facing=south,locked=false,powered=true]",
"94:5": "minecraft:powered_repeater[delay=2,facing=west,locked=false]", "94:5": "minecraft:repeater[delay=2,facing=west,locked=false,powered=true]",
"94:6": "minecraft:powered_repeater[delay=2,facing=north,locked=false]", "94:6": "minecraft:repeater[delay=2,facing=north,locked=false,powered=true]",
"94:7": "minecraft:powered_repeater[delay=2,facing=east,locked=false]", "94:7": "minecraft:repeater[delay=2,facing=east,locked=false,powered=true]",
"94:8": "minecraft:powered_repeater[delay=3,facing=south,locked=false]", "94:8": "minecraft:repeater[delay=3,facing=south,locked=false,powered=true]",
"94:9": "minecraft:powered_repeater[delay=3,facing=west,locked=false]", "94:9": "minecraft:repeater[delay=3,facing=west,locked=false,powered=true]",
"94:10": "minecraft:powered_repeater[delay=3,facing=north,locked=false]", "94:10": "minecraft:repeater[delay=3,facing=north,locked=false,powered=true]",
"94:11": "minecraft:powered_repeater[delay=3,facing=east,locked=false]", "94:11": "minecraft:repeater[delay=3,facing=east,locked=false,powered=true]",
"94:12": "minecraft:powered_repeater[delay=4,facing=south,locked=false]", "94:12": "minecraft:repeater[delay=4,facing=south,locked=false,powered=true]",
"94:13": "minecraft:powered_repeater[delay=4,facing=west,locked=false]", "94:13": "minecraft:repeater[delay=4,facing=west,locked=false,powered=true]",
"94:14": "minecraft:powered_repeater[delay=4,facing=north,locked=false]", "94:14": "minecraft:repeater[delay=4,facing=north,locked=false,powered=true]",
"94:15": "minecraft:powered_repeater[delay=4,facing=east,locked=false]", "94:15": "minecraft:repeater[delay=4,facing=east,locked=false,powered=true]",
"95:0": "minecraft:white_stained_glass", "95:0": "minecraft:white_stained_glass",
"95:1": "minecraft:orange_stained_glass", "95:1": "minecraft:orange_stained_glass",
"95:2": "minecraft:magenta_stained_glass", "95:2": "minecraft:magenta_stained_glass",
"95:3": "minecraft:stained_glass[color=lightblue]", "95:3": "minecraft:light_blue_stained_glass",
"95:4": "minecraft:yellow_stained_glass", "95:4": "minecraft:yellow_stained_glass",
"95:5": "minecraft:lime_stained_glass", "95:5": "minecraft:lime_stained_glass",
"95:6": "minecraft:pink_stained_glass", "95:6": "minecraft:pink_stained_glass",
@ -671,23 +671,23 @@
"100:15": "minecraft:mushroom_stem[north=true,east=true,south=true,west=true,up=true,down=true]", "100:15": "minecraft:mushroom_stem[north=true,east=true,south=true,west=true,up=true,down=true]",
"101:0": "minecraft:iron_bars[east=false,south=false,north=false,west=false]", "101:0": "minecraft:iron_bars[east=false,south=false,north=false,west=false]",
"102:0": "minecraft:glass_pane[east=false,south=false,north=false,west=false]", "102:0": "minecraft:glass_pane[east=false,south=false,north=false,west=false]",
"103:0": "minecraft:melon_block", "103:0": "minecraft:melon",
"104:0": "minecraft:pumpkin_stem[facing=east,age=0]", "104:0": "minecraft:pumpkin_stem[age=0]",
"104:1": "minecraft:pumpkin_stem[facing=east,age=1]", "104:1": "minecraft:pumpkin_stem[age=1]",
"104:2": "minecraft:pumpkin_stem[facing=east,age=2]", "104:2": "minecraft:pumpkin_stem[age=2]",
"104:3": "minecraft:pumpkin_stem[facing=east,age=3]", "104:3": "minecraft:pumpkin_stem[age=3]",
"104:4": "minecraft:pumpkin_stem[facing=east,age=4]", "104:4": "minecraft:pumpkin_stem[age=4]",
"104:5": "minecraft:pumpkin_stem[facing=east,age=5]", "104:5": "minecraft:pumpkin_stem[age=5]",
"104:6": "minecraft:pumpkin_stem[facing=east,age=6]", "104:6": "minecraft:pumpkin_stem[age=6]",
"104:7": "minecraft:pumpkin_stem[facing=east,age=7]", "104:7": "minecraft:pumpkin_stem[age=7]",
"105:0": "minecraft:melon_stem[facing=east,age=0]", "105:0": "minecraft:melon_stem[age=0]",
"105:1": "minecraft:melon_stem[facing=east,age=1]", "105:1": "minecraft:melon_stem[age=1]",
"105:2": "minecraft:melon_stem[facing=east,age=2]", "105:2": "minecraft:melon_stem[age=2]",
"105:3": "minecraft:melon_stem[facing=east,age=3]", "105:3": "minecraft:melon_stem[age=3]",
"105:4": "minecraft:melon_stem[facing=east,age=4]", "105:4": "minecraft:melon_stem[age=4]",
"105:5": "minecraft:melon_stem[facing=east,age=5]", "105:5": "minecraft:melon_stem[age=5]",
"105:6": "minecraft:melon_stem[facing=east,age=6]", "105:6": "minecraft:melon_stem[age=6]",
"105:7": "minecraft:melon_stem[facing=east,age=7]", "105:7": "minecraft:melon_stem[age=7]",
"106:0": "minecraft:vine[east=false,south=false,north=false,west=false,up=false]", "106:0": "minecraft:vine[east=false,south=false,north=false,west=false,up=false]",
"106:1": "minecraft:vine[east=false,south=true,north=false,west=false,up=false]", "106:1": "minecraft:vine[east=false,south=true,north=false,west=false,up=false]",
"106:2": "minecraft:vine[east=false,south=false,north=false,west=true,up=false]", "106:2": "minecraft:vine[east=false,south=false,north=false,west=true,up=false]",
@ -885,22 +885,22 @@
"138:0": "minecraft:beacon", "138:0": "minecraft:beacon",
"139:0": "minecraft:cobblestone_wall[east=false,south=false,north=false,west=false,variant=cobblestone,up=false]", "139:0": "minecraft:cobblestone_wall[east=false,south=false,north=false,west=false,variant=cobblestone,up=false]",
"139:1": "minecraft:cobblestone_wall[east=false,south=false,north=false,west=false,variant=mossy_cobblestone,up=false]", "139:1": "minecraft:cobblestone_wall[east=false,south=false,north=false,west=false,variant=mossy_cobblestone,up=false]",
"140:0": "minecraft:flower_pot[contents=cactus,legacy_data=0]", "140:0": "minecraft:flower_pot",
"140:1": "minecraft:flower_pot[contents=cactus,legacy_data=1]", "140:1": "minecraft:potted_poppy",
"140:2": "minecraft:flower_pot[contents=cactus,legacy_data=2]", "140:2": "minecraft:potted_dandelion",
"140:3": "minecraft:flower_pot[contents=cactus,legacy_data=3]", "140:3": "minecraft:potted_oak_sapling",
"140:4": "minecraft:flower_pot[contents=cactus,legacy_data=4]", "140:4": "minecraft:potted_spruce_sapling",
"140:5": "minecraft:flower_pot[contents=cactus,legacy_data=5]", "140:5": "minecraft:potted_birch_sapling",
"140:6": "minecraft:flower_pot[contents=cactus,legacy_data=6]", "140:6": "minecraft:potted_jungle_sapling",
"140:7": "minecraft:flower_pot[contents=cactus,legacy_data=7]", "140:7": "minecraft:potted_red_mushroom",
"140:8": "minecraft:flower_pot[contents=cactus,legacy_data=8]", "140:8": "minecraft:potted_brown_mushroom",
"140:9": "minecraft:flower_pot[contents=cactus,legacy_data=9]", "140:9": "minecraft:potted_cactus",
"140:10": "minecraft:flower_pot[contents=cactus,legacy_data=10]", "140:10": "minecraft:potted_dead_bush",
"140:11": "minecraft:flower_pot[contents=cactus,legacy_data=11]", "140:11": "minecraft:potted_fern",
"140:12": "minecraft:flower_pot[contents=cactus,legacy_data=12]", "140:12": "minecraft:potted_acacia_sapling",
"140:13": "minecraft:flower_pot[contents=cactus,legacy_data=13]", "140:13": "minecraft:potted_dark_oak_sapling",
"140:14": "minecraft:flower_pot[contents=cactus,legacy_data=14]", "140:14": "minecraft:potted_blue_orchid",
"140:15": "minecraft:flower_pot[contents=cactus,legacy_data=15]", "140:15": "minecraft:potted_allium",
"141:0": "minecraft:carrots[age=0]", "141:0": "minecraft:carrots[age=0]",
"141:1": "minecraft:carrots[age=1]", "141:1": "minecraft:carrots[age=1]",
"141:2": "minecraft:carrots[age=2]", "141:2": "minecraft:carrots[age=2]",
@ -917,30 +917,30 @@
"142:5": "minecraft:potatoes[age=5]", "142:5": "minecraft:potatoes[age=5]",
"142:6": "minecraft:potatoes[age=6]", "142:6": "minecraft:potatoes[age=6]",
"142:7": "minecraft:potatoes[age=7]", "142:7": "minecraft:potatoes[age=7]",
"143:0": "minecraft:wooden_button[powered=false,facing=down]", "143:0": "minecraft:oak_button[powered=false,facing=down,face=ceiling]",
"143:1": "minecraft:wooden_button[powered=false,facing=east]", "143:1": "minecraft:oak_button[powered=false,facing=east,face=wall]",
"143:2": "minecraft:wooden_button[powered=false,facing=west]", "143:2": "minecraft:oak_button[powered=false,facing=west,face=wall]",
"143:3": "minecraft:wooden_button[powered=false,facing=south]", "143:3": "minecraft:oak_button[powered=false,facing=south,face=wall]",
"143:4": "minecraft:wooden_button[powered=false,facing=north]", "143:4": "minecraft:oak_button[powered=false,facing=north,face=wall]",
"143:5": "minecraft:wooden_button[powered=false,facing=up]", "143:5": "minecraft:oak_button[powered=false,facing=up,face=floor]",
"143:8": "minecraft:wooden_button[powered=true,facing=down]", "143:8": "minecraft:oak_button[powered=true,facing=down,face=ceiling]",
"143:9": "minecraft:wooden_button[powered=true,facing=east]", "143:9": "minecraft:oak_button[powered=true,facing=east,face=wall]",
"143:10": "minecraft:wooden_button[powered=true,facing=west]", "143:10": "minecraft:oak_button[powered=true,facing=west,face=wall]",
"143:11": "minecraft:wooden_button[powered=true,facing=south]", "143:11": "minecraft:oak_button[powered=true,facing=south,face=wall]",
"143:12": "minecraft:wooden_button[powered=true,facing=north]", "143:12": "minecraft:oak_button[powered=true,facing=north,face=wall]",
"143:13": "minecraft:wooden_button[powered=true,facing=up]", "143:13": "minecraft:oak_button[powered=true,facing=up,face=floor]",
"144:0": "minecraft:skull[nodrop=false,facing=down]", "144:0": "minecraft:skeleton_skull[rotation=0]",
"144:1": "minecraft:skull[nodrop=false,facing=up]", "144:1": "minecraft:skeleton_skull[rotation=4]",
"144:2": "minecraft:skull[nodrop=false,facing=north]", "144:2": "minecraft:skeleton_wall_skull[facing=north]",
"144:3": "minecraft:skull[nodrop=false,facing=south]", "144:3": "minecraft:skeleton_wall_skull[facing=south]",
"144:4": "minecraft:skull[nodrop=false,facing=west]", "144:4": "minecraft:skeleton_wall_skull[facing=west]",
"144:5": "minecraft:skull[nodrop=false,facing=east]", "144:5": "minecraft:skeleton_wall_skull[facing=east]",
"144:8": "minecraft:skull[nodrop=true,facing=down]", "144:8": "minecraft:skeleton_skull[rotation=8]",
"144:9": "minecraft:skull[nodrop=true,facing=up]", "144:9": "minecraft:skeleton_skull[rotation=12]",
"144:10": "minecraft:skull[nodrop=true,facing=north]", "144:10": "minecraft:skeleton_wall_skull[facing=north]",
"144:11": "minecraft:skull[nodrop=true,facing=south]", "144:11": "minecraft:skeleton_wall_skull[facing=south]",
"144:12": "minecraft:skull[nodrop=true,facing=west]", "144:12": "minecraft:skeleton_wall_skull[facing=west]",
"144:13": "minecraft:skull[nodrop=true,facing=east]", "144:13": "minecraft:skeleton_wall_skull[facing=east]",
"145:0": "minecraft:anvil[facing=south]", "145:0": "minecraft:anvil[facing=south]",
"145:1": "minecraft:anvil[facing=west]", "145:1": "minecraft:anvil[facing=west]",
"145:2": "minecraft:anvil[facing=north]", "145:2": "minecraft:anvil[facing=north]",
@ -989,38 +989,38 @@
"148:13": "minecraft:heavy_weighted_pressure_plate[power=13]", "148:13": "minecraft:heavy_weighted_pressure_plate[power=13]",
"148:14": "minecraft:heavy_weighted_pressure_plate[power=14]", "148:14": "minecraft:heavy_weighted_pressure_plate[power=14]",
"148:15": "minecraft:heavy_weighted_pressure_plate[power=15]", "148:15": "minecraft:heavy_weighted_pressure_plate[power=15]",
"149:0": "minecraft:unpowered_comparator[mode=compare,powered=false,facing=south]", "149:0": "minecraft:comparator[mode=compare,powered=false,facing=south]",
"149:1": "minecraft:unpowered_comparator[mode=compare,powered=false,facing=west]", "149:1": "minecraft:comparator[mode=compare,powered=false,facing=west]",
"149:2": "minecraft:unpowered_comparator[mode=compare,powered=false,facing=north]", "149:2": "minecraft:comparator[mode=compare,powered=false,facing=north]",
"149:3": "minecraft:unpowered_comparator[mode=compare,powered=false,facing=east]", "149:3": "minecraft:comparator[mode=compare,powered=false,facing=east]",
"149:4": "minecraft:unpowered_comparator[mode=subtract,powered=false,facing=south]", "149:4": "minecraft:comparator[mode=subtract,powered=false,facing=south]",
"149:5": "minecraft:unpowered_comparator[mode=subtract,powered=false,facing=west]", "149:5": "minecraft:comparator[mode=subtract,powered=false,facing=west]",
"149:6": "minecraft:unpowered_comparator[mode=subtract,powered=false,facing=north]", "149:6": "minecraft:comparator[mode=subtract,powered=false,facing=north]",
"149:7": "minecraft:unpowered_comparator[mode=subtract,powered=false,facing=east]", "149:7": "minecraft:comparator[mode=subtract,powered=false,facing=east]",
"149:8": "minecraft:unpowered_comparator[mode=compare,powered=true,facing=south]", "149:8": "minecraft:comparator[mode=compare,powered=false,facing=south]",
"149:9": "minecraft:unpowered_comparator[mode=compare,powered=true,facing=west]", "149:9": "minecraft:comparator[mode=compare,powered=false,facing=west]",
"149:10": "minecraft:unpowered_comparator[mode=compare,powered=true,facing=north]", "149:10": "minecraft:comparator[mode=compare,powered=false,facing=north]",
"149:11": "minecraft:unpowered_comparator[mode=compare,powered=true,facing=east]", "149:11": "minecraft:comparator[mode=compare,powered=false,facing=east]",
"149:12": "minecraft:unpowered_comparator[mode=subtract,powered=true,facing=south]", "149:12": "minecraft:comparator[mode=subtract,powered=false,facing=south]",
"149:13": "minecraft:unpowered_comparator[mode=subtract,powered=true,facing=west]", "149:13": "minecraft:comparator[mode=subtract,powered=false,facing=west]",
"149:14": "minecraft:unpowered_comparator[mode=subtract,powered=true,facing=north]", "149:14": "minecraft:comparator[mode=subtract,powered=false,facing=north]",
"149:15": "minecraft:unpowered_comparator[mode=subtract,powered=true,facing=east]", "149:15": "minecraft:comparator[mode=subtract,powered=false,facing=east]",
"150:0": "minecraft:powered_comparator[mode=compare,powered=false,facing=south]", "150:0": "minecraft:comparator[mode=compare,powered=true,facing=south]",
"150:1": "minecraft:powered_comparator[mode=compare,powered=false,facing=west]", "150:1": "minecraft:comparator[mode=compare,powered=true,facing=west]",
"150:2": "minecraft:powered_comparator[mode=compare,powered=false,facing=north]", "150:2": "minecraft:comparator[mode=compare,powered=true,facing=north]",
"150:3": "minecraft:powered_comparator[mode=compare,powered=false,facing=east]", "150:3": "minecraft:comparator[mode=compare,powered=true,facing=east]",
"150:4": "minecraft:powered_comparator[mode=subtract,powered=false,facing=south]", "150:4": "minecraft:comparator[mode=subtract,powered=true,facing=south]",
"150:5": "minecraft:powered_comparator[mode=subtract,powered=false,facing=west]", "150:5": "minecraft:comparator[mode=subtract,powered=true,facing=west]",
"150:6": "minecraft:powered_comparator[mode=subtract,powered=false,facing=north]", "150:6": "minecraft:comparator[mode=subtract,powered=true,facing=north]",
"150:7": "minecraft:powered_comparator[mode=subtract,powered=false,facing=east]", "150:7": "minecraft:comparator[mode=subtract,powered=true,facing=east]",
"150:8": "minecraft:powered_comparator[mode=compare,powered=true,facing=south]", "150:8": "minecraft:comparator[mode=compare,powered=true,facing=south]",
"150:9": "minecraft:powered_comparator[mode=compare,powered=true,facing=west]", "150:9": "minecraft:comparator[mode=compare,powered=true,facing=west]",
"150:10": "minecraft:powered_comparator[mode=compare,powered=true,facing=north]", "150:10": "minecraft:comparator[mode=compare,powered=true,facing=north]",
"150:11": "minecraft:powered_comparator[mode=compare,powered=true,facing=east]", "150:11": "minecraft:comparator[mode=compare,powered=true,facing=east]",
"150:12": "minecraft:powered_comparator[mode=subtract,powered=true,facing=south]", "150:12": "minecraft:comparator[mode=subtract,powered=true,facing=south]",
"150:13": "minecraft:powered_comparator[mode=subtract,powered=true,facing=west]", "150:13": "minecraft:comparator[mode=subtract,powered=true,facing=west]",
"150:14": "minecraft:powered_comparator[mode=subtract,powered=true,facing=north]", "150:14": "minecraft:comparator[mode=subtract,powered=true,facing=north]",
"150:15": "minecraft:powered_comparator[mode=subtract,powered=true,facing=east]", "150:15": "minecraft:comparator[mode=subtract,powered=true,facing=east]",
"151:0": "minecraft:daylight_detector[inverted=false,power=0]", "151:0": "minecraft:daylight_detector[inverted=false,power=0]",
"151:1": "minecraft:daylight_detector[inverted=false,power=1]", "151:1": "minecraft:daylight_detector[inverted=false,power=1]",
"151:2": "minecraft:daylight_detector[inverted=false,power=2]", "151:2": "minecraft:daylight_detector[inverted=false,power=2]",
@ -1051,9 +1051,9 @@
"154:13": "minecraft:hopper[facing=east,enabled=false]", "154:13": "minecraft:hopper[facing=east,enabled=false]",
"155:0": "minecraft:quartz_block", "155:0": "minecraft:quartz_block",
"155:1": "minecraft:chiseled_quartz_block", "155:1": "minecraft:chiseled_quartz_block",
"155:2": "minecraft:quartz_block[variant=lines]", "155:2": "minecraft:quartz_pillar[axis=y]",
"155:3": "minecraft:quartz_block[variant=lines]", "155:6": "minecraft:quartz_pillar[axis=x]",
"155:4": "minecraft:quartz_block[variant=lines]", "155:10": "minecraft:quartz_pillar[axis=z]",
"156:0": "minecraft:quartz_stairs[half=bottom,shape=outer_right,facing=east]", "156:0": "minecraft:quartz_stairs[half=bottom,shape=outer_right,facing=east]",
"156:1": "minecraft:quartz_stairs[half=bottom,shape=outer_right,facing=west]", "156:1": "minecraft:quartz_stairs[half=bottom,shape=outer_right,facing=west]",
"156:2": "minecraft:quartz_stairs[half=bottom,shape=outer_right,facing=south]", "156:2": "minecraft:quartz_stairs[half=bottom,shape=outer_right,facing=south]",
@ -1089,7 +1089,7 @@
"159:0": "minecraft:white_terracotta", "159:0": "minecraft:white_terracotta",
"159:1": "minecraft:orange_terracotta", "159:1": "minecraft:orange_terracotta",
"159:2": "minecraft:magenta_terracotta", "159:2": "minecraft:magenta_terracotta",
"159:3": "minecraft:stained_hardened_clay[color=lightblue]", "159:3": "minecraft:light_blue_terracotta",
"159:4": "minecraft:yellow_terracotta", "159:4": "minecraft:yellow_terracotta",
"159:5": "minecraft:lime_terracotta", "159:5": "minecraft:lime_terracotta",
"159:6": "minecraft:pink_terracotta", "159:6": "minecraft:pink_terracotta",
@ -1102,38 +1102,38 @@
"159:13": "minecraft:green_terracotta", "159:13": "minecraft:green_terracotta",
"159:14": "minecraft:red_terracotta", "159:14": "minecraft:red_terracotta",
"159:15": "minecraft:black_terracotta", "159:15": "minecraft:black_terracotta",
"160:0": "minecraft:stained_glass_pane[east=false,color=white,south=false,north=false,west=false]", "160:0": "minecraft:white_stained_glass_pane[east=false,south=false,north=false,west=false]",
"160:1": "minecraft:stained_glass_pane[east=false,color=orange,south=false,north=false,west=false]", "160:1": "minecraft:orange_stained_glass_pane[east=false,south=false,north=false,west=false]",
"160:2": "minecraft:stained_glass_pane[east=false,color=magenta,south=false,north=false,west=false]", "160:2": "minecraft:magenta_stained_glass_pane[east=false,south=false,north=false,west=false]",
"160:3": "minecraft:stained_glass_pane[east=false,color=lightblue,south=false,north=false,west=false]", "160:3": "minecraft:light_blue_stained_glass_pane[east=false,south=false,north=false,west=false]",
"160:4": "minecraft:stained_glass_pane[east=false,color=yellow,south=false,north=false,west=false]", "160:4": "minecraft:yellow_stained_glass_pane[east=false,south=false,north=false,west=false]",
"160:5": "minecraft:stained_glass_pane[east=false,color=lime,south=false,north=false,west=false]", "160:5": "minecraft:lime_stained_glass_pane[east=false,south=false,north=false,west=false]",
"160:6": "minecraft:stained_glass_pane[east=false,color=pink,south=false,north=false,west=false]", "160:6": "minecraft:pink_stained_glass_pane[east=false,south=false,north=false,west=false]",
"160:7": "minecraft:stained_glass_pane[east=false,color=gray,south=false,north=false,west=false]", "160:7": "minecraft:gray_stained_glass_pane[east=false,south=false,north=false,west=false]",
"160:8": "minecraft:stained_glass_pane[east=false,color=silver,south=false,north=false,west=false]", "160:8": "minecraft:light_gray_stained_glass_pane[east=false,south=false,north=false,west=false]",
"160:9": "minecraft:stained_glass_pane[east=false,color=cyan,south=false,north=false,west=false]", "160:9": "minecraft:cyan_stained_glass_pane[east=false,south=false,north=false,west=false]",
"160:10": "minecraft:stained_glass_pane[east=false,color=purple,south=false,north=false,west=false]", "160:10": "minecraft:purple_stained_glass_pane[east=false,south=false,north=false,west=false]",
"160:11": "minecraft:stained_glass_pane[east=false,color=blue,south=false,north=false,west=false]", "160:11": "minecraft:blue_stained_glass_pane[east=false,south=false,north=false,west=false]",
"160:12": "minecraft:stained_glass_pane[east=false,color=brown,south=false,north=false,west=false]", "160:12": "minecraft:brown_stained_glass_pane[east=false,south=false,north=false,west=false]",
"160:13": "minecraft:stained_glass_pane[east=false,color=green,south=false,north=false,west=false]", "160:13": "minecraft:green_stained_glass_pane[east=false,south=false,north=false,west=false]",
"160:14": "minecraft:stained_glass_pane[east=false,color=red,south=false,north=false,west=false]", "160:14": "minecraft:red_stained_glass_pane[east=false,south=false,north=false,west=false]",
"160:15": "minecraft:stained_glass_pane[east=false,color=black,south=false,north=false,west=false]", "160:15": "minecraft:black_stained_glass_pane[east=false,south=false,north=false,west=false]",
"161:0": "minecraft:acacia_leaves[check_decay=false,decayable=true]", "161:0": "minecraft:acacia_leaves[persistent=false,distance=1]",
"161:1": "minecraft:dark_oak_leaves[check_decay=false,decayable=true]", "161:1": "minecraft:dark_oak_leaves[persistent=false,distance=1]",
"161:4": "minecraft:acacia_leaves[check_decay=false,decayable=false]", "161:4": "minecraft:acacia_leaves[persistent=true,distance=1]",
"161:5": "minecraft:dark_oak_leaves[check_decay=false,decayable=false]", "161:5": "minecraft:dark_oak_leaves[persistent=true,distance=1]",
"161:8": "minecraft:acacia_leaves[check_decay=true,decayable=true]", "161:8": "minecraft:acacia_leaves[persistent=false,distance=1]",
"161:9": "minecraft:dark_oak_leaves[check_decay=true,decayable=true]", "161:9": "minecraft:dark_oak_leaves[persistent=false,distance=1]",
"161:12": "minecraft:acacia_leaves[check_decay=true,decayable=false]", "161:12": "minecraft:acacia_leaves[persistent=true,distance=1]",
"161:13": "minecraft:dark_oak_leaves[check_decay=true,decayable=false]", "161:13": "minecraft:dark_oak_leaves[persistent=true,distance=1]",
"162:0": "minecraft:log2[variant=acacia,axis=y]", "162:0": "minecraft:acacia_log[axis=y]",
"162:1": "minecraft:log2[variant=dark_oak,axis=y]", "162:1": "minecraft:dark_oak_log[axis=y]",
"162:4": "minecraft:log2[variant=acacia,axis=x]", "162:4": "minecraft:acacia_log[axis=x]",
"162:5": "minecraft:log2[variant=dark_oak,axis=x]", "162:5": "minecraft:dark_oak_log[axis=x]",
"162:8": "minecraft:log2[variant=acacia,axis=z]", "162:8": "minecraft:acacia_log[axis=z]",
"162:9": "minecraft:log2[variant=dark_oak,axis=z]", "162:9": "minecraft:dark_oak_log[axis=z]",
"162:12": "minecraft:log2[variant=acacia,axis=none]", "162:12": "minecraft:acacia_wood",
"162:13": "minecraft:log2[variant=dark_oak,axis=none]", "162:13": "minecraft:dark_oak_wood",
"163:0": "minecraft:acacia_stairs[half=bottom,shape=outer_right,facing=east]", "163:0": "minecraft:acacia_stairs[half=bottom,shape=outer_right,facing=east]",
"163:1": "minecraft:acacia_stairs[half=bottom,shape=outer_right,facing=west]", "163:1": "minecraft:acacia_stairs[half=bottom,shape=outer_right,facing=west]",
"163:2": "minecraft:acacia_stairs[half=bottom,shape=outer_right,facing=south]", "163:2": "minecraft:acacia_stairs[half=bottom,shape=outer_right,facing=south]",
@ -1178,7 +1178,7 @@
"171:0": "minecraft:white_carpet", "171:0": "minecraft:white_carpet",
"171:1": "minecraft:orange_carpet", "171:1": "minecraft:orange_carpet",
"171:2": "minecraft:magenta_carpet", "171:2": "minecraft:magenta_carpet",
"171:3": "minecraft:carpet[color=lightblue]", "171:3": "minecraft:light_blue_carpet",
"171:4": "minecraft:yellow_carpet", "171:4": "minecraft:yellow_carpet",
"171:5": "minecraft:lime_carpet", "171:5": "minecraft:lime_carpet",
"171:6": "minecraft:pink_carpet", "171:6": "minecraft:pink_carpet",
@ -1194,16 +1194,18 @@
"172:0": "minecraft:terracotta", "172:0": "minecraft:terracotta",
"173:0": "minecraft:coal_block", "173:0": "minecraft:coal_block",
"174:0": "minecraft:packed_ice", "174:0": "minecraft:packed_ice",
"175:0": "minecraft:double_plant[half=lower,variant=sunflower,facing=east]", "175:0": "minecraft:sunflower[half=lower]",
"175:1": "minecraft:double_plant[half=lower,variant=syringa,facing=east]", "175:1": "minecraft:lilac[half=lower]",
"175:2": "minecraft:double_plant[half=lower,variant=double_grass,facing=east]", "175:2": "minecraft:tall_grass[half=lower]",
"175:3": "minecraft:double_plant[half=lower,variant=double_fern,facing=east]", "175:3": "minecraft:large_fern[half=lower]",
"175:4": "minecraft:double_plant[half=lower,variant=double_rose,facing=east]", "175:4": "minecraft:rose_bush[half=lower]",
"175:5": "minecraft:double_plant[half=lower,variant=paeonia,facing=east]", "175:5": "minecraft:peony[half=lower]",
"175:8": "minecraft:double_plant[half=upper,variant=paeonia,facing=south]", "175:8": "minecraft:sunflower[half=upper]",
"175:9": "minecraft:double_plant[half=upper,variant=paeonia,facing=west]", "175:9": "minecraft:lilac[half=upper]",
"175:10": "minecraft:double_plant[half=upper,variant=paeonia,facing=north]", "175:10": "minecraft:tall_grass[half=upper]",
"175:11": "minecraft:double_plant[half=upper,variant=paeonia,facing=east]", "175:11": "minecraft:large_fern[half=upper]",
"175:12": "minecraft:rose_bush[half=upper]",
"175:13": "minecraft:peony[half=upper]",
"176:0": "minecraft:white_banner[rotation=0]", "176:0": "minecraft:white_banner[rotation=0]",
"176:1": "minecraft:white_banner[rotation=1]", "176:1": "minecraft:white_banner[rotation=1]",
"176:2": "minecraft:white_banner[rotation=2]", "176:2": "minecraft:white_banner[rotation=2]",
@ -1645,7 +1647,7 @@
"251:0": "minecraft:white_concrete", "251:0": "minecraft:white_concrete",
"251:1": "minecraft:orange_concrete", "251:1": "minecraft:orange_concrete",
"251:2": "minecraft:magenta_concrete", "251:2": "minecraft:magenta_concrete",
"251:3": "minecraft:concrete[color=lightblue]", "251:3": "minecraft:light_blue_concrete",
"251:4": "minecraft:yellow_concrete", "251:4": "minecraft:yellow_concrete",
"251:5": "minecraft:lime_concrete", "251:5": "minecraft:lime_concrete",
"251:6": "minecraft:pink_concrete", "251:6": "minecraft:pink_concrete",
@ -1661,7 +1663,7 @@
"252:0": "minecraft:white_concrete_powder", "252:0": "minecraft:white_concrete_powder",
"252:1": "minecraft:orange_concrete_powder", "252:1": "minecraft:orange_concrete_powder",
"252:2": "minecraft:magenta_concrete_powder", "252:2": "minecraft:magenta_concrete_powder",
"252:3": "minecraft:concrete_powder[color=lightblue]", "252:3": "minecraft:light_blue_concrete_powder",
"252:4": "minecraft:yellow_concrete_powder", "252:4": "minecraft:yellow_concrete_powder",
"252:5": "minecraft:lime_concrete_powder", "252:5": "minecraft:lime_concrete_powder",
"252:6": "minecraft:pink_concrete_powder", "252:6": "minecraft:pink_concrete_powder",
@ -1841,7 +1843,7 @@
"100:0": "minecraft:red_mushroom_block", "100:0": "minecraft:red_mushroom_block",
"101:0": "minecraft:iron_bars", "101:0": "minecraft:iron_bars",
"102:0": "minecraft:glass_pane", "102:0": "minecraft:glass_pane",
"103:0": "minecraft:melon_block", "103:0": "minecraft:melon",
"106:0": "minecraft:vine", "106:0": "minecraft:vine",
"107:0": "minecraft:oak_fence_gate", "107:0": "minecraft:oak_fence_gate",
"108:0": "minecraft:brick_stairs", "108:0": "minecraft:brick_stairs",
@ -2156,7 +2158,7 @@
"348:0": "minecraft:glowstone_dust", "348:0": "minecraft:glowstone_dust",
"349:0": "minecraft:cod", "349:0": "minecraft:cod",
"349:1": "minecraft:salmon", "349:1": "minecraft:salmon",
"349:2": "minecraft:clownfish", "349:2": "minecraft:tropical_fish",
"349:3": "minecraft:pufferfish", "349:3": "minecraft:pufferfish",
"350:0": "minecraft:cooked_cod", "350:0": "minecraft:cooked_cod",
"350:1": "minecraft:cooked_salmon", "350:1": "minecraft:cooked_salmon",
@ -2199,7 +2201,7 @@
"357:0": "minecraft:cookie", "357:0": "minecraft:cookie",
"358:0": "minecraft:filled_map", "358:0": "minecraft:filled_map",
"359:0": "minecraft:shears", "359:0": "minecraft:shears",
"360:0": "minecraft:melon", "360:0": "minecraft:melon_slice",
"361:0": "minecraft:pumpkin_seeds", "361:0": "minecraft:pumpkin_seeds",
"362:0": "minecraft:melon_seeds", "362:0": "minecraft:melon_seeds",
"363:0": "minecraft:beef", "363:0": "minecraft:beef",
@ -2221,8 +2223,8 @@
"379:0": "minecraft:brewing_stand", "379:0": "minecraft:brewing_stand",
"380:0": "minecraft:cauldron", "380:0": "minecraft:cauldron",
"381:0": "minecraft:ender_eye", "381:0": "minecraft:ender_eye",
"382:0": "minecraft:speckled_melon", "382:0": "minecraft:glistering_melon_slice",
"383:0": "minecraft:spawn_egg", "383:0": "minecraft:pig_spawn_egg",
"384:0": "minecraft:experience_bottle", "384:0": "minecraft:experience_bottle",
"385:0": "minecraft:fire_charge", "385:0": "minecraft:fire_charge",
"386:0": "minecraft:writable_book", "386:0": "minecraft:writable_book",
@ -2292,7 +2294,7 @@
"430:0": "minecraft:acacia_door", "430:0": "minecraft:acacia_door",
"431:0": "minecraft:dark_oak_door", "431:0": "minecraft:dark_oak_door",
"432:0": "minecraft:chorus_fruit", "432:0": "minecraft:chorus_fruit",
"433:0": "minecraft:chorus_fruit_popped", "433:0": "minecraft:popped_chorus_fruit",
"434:0": "minecraft:beetroot", "434:0": "minecraft:beetroot",
"435:0": "minecraft:beetroot_seeds", "435:0": "minecraft:beetroot_seeds",
"436:0": "minecraft:beetroot_soup", "436:0": "minecraft:beetroot_soup",