Upgrade config, chestaccess and kills too

This commit is contained in:
Brokkonaut
2018-07-29 15:34:43 +02:00
parent dc5c8a82c3
commit 166548da18
2 changed files with 1141 additions and 83 deletions

View File

@ -3,10 +3,14 @@ package de.diddiz.LogBlock;
import de.diddiz.LogBlock.config.Config;
import de.diddiz.LogBlock.config.WorldConfig;
import de.diddiz.util.UUIDFetcher;
import de.diddiz.util.Utils;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.block.data.BlockData;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.inventory.ItemStack;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
@ -23,6 +27,7 @@ import static de.diddiz.LogBlock.config.Config.isLogging;
import static de.diddiz.util.BukkitUtils.friendlyWorldname;
import de.diddiz.util.ComparableVersion;
import java.util.regex.Pattern;
import static org.bukkit.Bukkit.getLogger;
class Updater {
@ -413,13 +418,14 @@ class Updater {
if (configVersion.compareTo(new ComparableVersion("1.13.0")) < 0) {
getLogger().info("Updating tables to 1.13.0 ...");
try {
MaterialUpdater materialUpdater = null;
checkTables(); // we need to create the tables first
MaterialUpdater1_13 materialUpdater = new MaterialUpdater1_13(logblock);
getLogger().info("Convertig BlockId to BlockData. This can take a while ...");
final Connection conn = logblock.getConnection();
conn.setAutoCommit(false);
final Statement st = conn.createStatement();
for (final WorldConfig wcfg : getLoggedWorlds()) {
getLogger().info("Processing world " + wcfg.world + "...");
getLogger().info("Processing block changes...");
boolean hadRow = true;
int rowsToConvert = 0;
int done = 0;
@ -429,75 +435,187 @@ class Updater {
rowsToConvert = rs.getInt(1);
getLogger().info("Converting " + rowsToConvert + " entries in " + wcfg.table);
}
rs.close();
PreparedStatement deleteStatement = conn.prepareStatement("DELETE FROM `" + wcfg.table + "` WHERE id = ?");
PreparedStatement insertStatement = conn.prepareStatement("INSERT INTO `" + wcfg.table + "-blocks` (id, date, playerid, replaced, replacedData, type, typeData, x, y, z) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", Statement.RETURN_GENERATED_KEYS);
while (hadRow) {
hadRow = false;
ResultSet entries = st.executeQuery("SELECT id, date, playerid, replaced, type, data, x, y, z FROM `" + wcfg.table + "` ORDER BY id ASC LIMIT 10000");
while (entries.next()) {
hadRow = true;
int id = entries.getInt("id");
Timestamp date = entries.getTimestamp("date");
int playerid = entries.getInt("playerid");
int replaced = entries.getInt("replaced");
int type = entries.getInt("type");
int data = entries.getInt("data");
int x = entries.getInt("x");
int y = entries.getInt("y");
int z = entries.getInt("z");
if (data == 16) {
data = 0;
}
try {
String replacedBlockData = materialUpdater.getBlockData(replaced, data).getAsString();
String setBlockData = materialUpdater.getBlockData(type, data).getAsString();
int newReplacedId = MaterialConverter.getOrAddMaterialId(replacedBlockData);
int newReplacedData = MaterialConverter.getOrAddBlockStateId(replacedBlockData);
int newSetId = MaterialConverter.getOrAddMaterialId(setBlockData);
int newSetData = MaterialConverter.getOrAddBlockStateId(setBlockData);
insertStatement.setInt(1, id);
insertStatement.setTimestamp(2, date);
insertStatement.setInt(3, playerid);
insertStatement.setInt(4, newReplacedId);
insertStatement.setInt(5, newReplacedData);
insertStatement.setInt(6, newSetId);
insertStatement.setInt(7, newSetData);
insertStatement.setInt(8, x);
insertStatement.setInt(9, y);
insertStatement.setInt(10, z);
insertStatement.addBatch();
} catch (Exception e) {
getLogger().info("Exception in entry " + id + " (" + replaced + ":" + data + "->" + type + ":" + data + "): " + e.getMessage());
}
deleteStatement.setInt(1, id);
deleteStatement.addBatch();
done++;
}
entries.close();
if (hadRow) {
insertStatement.executeBatch();
deleteStatement.executeBatch();
}
conn.commit();
logblock.getConsumer().run(); // force a consumer run to save new material mappings
getLogger().info("Done: " + done + "/" + rowsToConvert + " (" + (rowsToConvert > 0 ? (done * 100 / rowsToConvert) : 100) + "%)");
}
insertStatement.close();
deleteStatement.close();
} catch (SQLException e) {
getLogger().info("Could not convert " + wcfg.table + ": " + e.getMessage());
continue;
}
PreparedStatement deleteStatement = conn.prepareStatement("DELETE FROM `" + wcfg.table + "` WHERE id = ?");
PreparedStatement insertStatement = conn.prepareStatement("INSERT INTO `" + wcfg.table + "-blocks` (id, date, playerid, replaced, replacedData, type, typeData, x, y, z) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", Statement.RETURN_GENERATED_KEYS);
while (hadRow) {
hadRow = false;
ResultSet entries = st.executeQuery("SELECT id, date, playerid, replaced, type, data, x, y, z FROM `" + wcfg.table + "` ORDER BY id ASC LIMIT 10000");
while (entries.next()) {
hadRow = true;
int id = entries.getInt("id");
Timestamp date = entries.getTimestamp("date");
int playerid = entries.getInt("playerid");
int replaced = entries.getInt("replaced");
int type = entries.getInt("type");
int data = entries.getInt("data");
int x = entries.getInt("x");
int y = entries.getInt("y");
int z = entries.getInt("z");
if (data == 16) {
data = 0;
}
if (materialUpdater == null) {
materialUpdater = new MaterialUpdater(logblock);
}
try {
String replacedBlockData = materialUpdater.getBlockData(replaced, data).getAsString();
String setBlockData = materialUpdater.getBlockData(type, data).getAsString();
int newReplacedId = MaterialConverter.getOrAddMaterialId(replacedBlockData);
int newReplacedData = MaterialConverter.getOrAddBlockStateId(replacedBlockData);
int newSetId = MaterialConverter.getOrAddMaterialId(setBlockData);
int newSetData = MaterialConverter.getOrAddBlockStateId(setBlockData);
insertStatement.setInt(1, id);
insertStatement.setTimestamp(2, date);
insertStatement.setInt(3, playerid);
insertStatement.setInt(4, newReplacedId);
insertStatement.setInt(5, newReplacedData);
insertStatement.setInt(6, newSetId);
insertStatement.setInt(7, newSetData);
insertStatement.setInt(8, x);
insertStatement.setInt(9, y);
insertStatement.setInt(10, z);
insertStatement.addBatch();
} catch (Exception e) {
getLogger().info("Exception in entry " + id + " (" + replaced + ":" + data + "->" + type + ":" + data + "): " + e.getMessage());
}
deleteStatement.setInt(1, id);
deleteStatement.addBatch();
done++;
getLogger().info("Processing chests...");
rowsToConvert = 0;
done = 0;
try {
ResultSet rs = st.executeQuery("SELECT count(*) as rowcount FROM `" + wcfg.table + "-chest`");
if (rs.next()) {
rowsToConvert = rs.getInt(1);
getLogger().info("Converting " + rowsToConvert + " entries in " + wcfg.table + "-chest");
}
if (hadRow) {
insertStatement.executeBatch();
deleteStatement.executeBatch();
rs.close();
PreparedStatement insertChestData = conn.prepareStatement("INSERT INTO `" + wcfg.table + "-chestdata` (id, item, itemremove) VALUES (?, ?, ?)");
PreparedStatement deleteChest = conn.prepareStatement("DELETE FROM `" + wcfg.table + "-chest` WHERE id = ?");
while (true) {
rs = st.executeQuery("SELECT id, itemtype, itemamount, itemdata FROM `" + wcfg.table + "-chest` ORDER BY id ASC LIMIT 10000");
boolean anyRow = false;
while (rs.next()) {
anyRow = true;
int id = rs.getInt("id");
int itemtype = rs.getInt("itemtype");
int itemdata = rs.getInt("itemdata");
int amount = rs.getInt("itemamount");
Material weaponMaterial = materialUpdater.getMaterial(itemtype, itemdata);
if (weaponMaterial == null) {
weaponMaterial = Material.AIR;
}
ItemStack stack = weaponMaterial.getMaxDurability() > 0 ? new ItemStack(weaponMaterial, Math.abs(amount), (short)itemdata) : new ItemStack(weaponMaterial, Math.abs(amount));
insertChestData.setInt(1, id);
insertChestData.setBytes(2, Utils.saveItemStack(stack));
insertChestData.setInt(3, amount >= 0 ? 0 : 1);
insertChestData.addBatch();
deleteChest.setInt(1, id);
deleteChest.addBatch();
done++;
}
rs.close();
if (!anyRow) {
break;
}
insertChestData.executeBatch();
deleteChest.executeBatch();
conn.commit();
getLogger().info("Done: " + done + "/" + rowsToConvert + " (" + (rowsToConvert > 0 ? (done * 100 / rowsToConvert) : 100) + "%)");
}
insertChestData.close();
deleteChest.close();
} catch (SQLException e) {
getLogger().info("Could not convert " + wcfg.table + "-chest: " + e.getMessage());
}
if (wcfg.isLogging(Logging.KILL)) {
getLogger().info("Processing kills...");
rowsToConvert = 0;
done = 0;
try {
ResultSet rs = st.executeQuery("SELECT count(*) as rowcount FROM `" + wcfg.table + "-kills`");
if (rs.next()) {
rowsToConvert = rs.getInt(1);
getLogger().info("Converting " + rowsToConvert + " entries in " + wcfg.table + "-kills");
}
rs.close();
PreparedStatement updateWeaponStatement = conn.prepareStatement("UPDATE `" + wcfg.table + "`-kills SET weapon = ? WHERE id = ?");
for (int start = 0;; start += 10000) {
rs = st.executeQuery("SELECT id, weapon FROM `" + wcfg.table + "-kills` ORDER BY id ASC LIMIT " + start + ",10000");
boolean anyUpdate = false;
boolean anyRow = false;
while (rs.next()) {
anyRow = true;
int id = rs.getInt("id");
int weapon = rs.getInt("weapon");
Material weaponMaterial = materialUpdater.getMaterial(weapon, 0);
if (weaponMaterial == null) {
weaponMaterial = Material.AIR;
}
int newWeapon = MaterialConverter.getOrAddMaterialId(weaponMaterial.getKey());
if (newWeapon != weapon) {
anyUpdate = true;
updateWeaponStatement.setInt(1, newWeapon);
updateWeaponStatement.setInt(2, id);
updateWeaponStatement.addBatch();
}
done++;
}
rs.close();
if (anyUpdate) {
updateWeaponStatement.executeBatch();
conn.commit();
logblock.getConsumer().run(); // force a consumer run to save new material mappings
}
getLogger().info("Done: " + done + "/" + rowsToConvert + " (" + (rowsToConvert > 0 ? (done * 100 / rowsToConvert) : 100) + "%)");
if (!anyRow) {
break;
}
}
updateWeaponStatement.close();
} catch (SQLException e) {
getLogger().info("Could not convert " + wcfg.table + "-kills: " + e.getMessage());
}
conn.commit();
logblock.getConsumer().run(); // force a consumer run
getLogger().info(done + "/" + rowsToConvert);
}
}
st.close();
conn.close();
getLogger().info("Updating config to 1.13.0 ...");
config.set("logging.hiddenBlocks", materialUpdater.convertMaterials(config.getStringList("logging.hiddenBlocks")));
config.set("rollback.dontRollback", materialUpdater.convertMaterials(config.getStringList("rollback.dontRollback")));
config.set("rollback.replaceAnyway", materialUpdater.convertMaterials(config.getStringList("rollback.replaceAnyway")));
final ConfigurationSection toolsSec = config.getConfigurationSection("tools");
for (final String toolName : toolsSec.getKeys(false)) {
final ConfigurationSection tSec = toolsSec.getConfigurationSection(toolName);
tSec.set("item", materialUpdater.convertMaterial(tSec.getString("item", "OAK_LOG")));
}
} catch (final SQLException | IOException ex) {
Bukkit.getLogger().log(Level.SEVERE, "[Updater] Error: ", ex);
return false;
@ -597,40 +715,141 @@ class Updater {
}
}
public static class MaterialUpdater {
public static class MaterialUpdater1_13 {
BlockData[][] blockDataMapping;
public MaterialUpdater(LogBlock plugin) throws IOException {
Material[][] itemMapping = new Material[10][];
public MaterialUpdater1_13(LogBlock plugin) throws IOException {
blockDataMapping = new BlockData[256][16];
JarFile file = new JarFile(plugin.getFile());
BufferedReader reader = new BufferedReader(new InputStreamReader(new BufferedInputStream(file.getInputStream(file.getJarEntry("blockdata.txt"))), "UTF-8"));
while (true) {
String line = reader.readLine();
if (line == null) {
break;
}
int splitter1 = line.indexOf(":");
int splitter2 = line.indexOf(",");
if (splitter1 >= 0 && splitter2 >= 0) {
int blockid = Integer.parseInt(line.substring(0, splitter1));
int blockdata = Integer.parseInt(line.substring(splitter1 + 1, splitter2));
BlockData newBlockData = Bukkit.createBlockData(line.substring(splitter2 + 1));
try (JarFile file = new JarFile(plugin.getFile())) {
BufferedReader reader = new BufferedReader(new InputStreamReader(new BufferedInputStream(file.getInputStream(file.getJarEntry("blockdata.txt"))), "UTF-8"));
while (true) {
String line = reader.readLine();
if (line == null) {
break;
}
int splitter1 = line.indexOf(":");
int splitter2 = line.indexOf(",");
if (splitter1 >= 0 && splitter2 >= 0) {
int blockid = Integer.parseInt(line.substring(0, splitter1));
int blockdata = Integer.parseInt(line.substring(splitter1 + 1, splitter2));
BlockData newBlockData = Bukkit.createBlockData(line.substring(splitter2 + 1));
if (blockdata == 0) {
for (int i = 0; i < 16; i++) {
if (blockDataMapping[blockid][i] == null) {
blockDataMapping[blockid][i] = newBlockData;
if (blockdata == 0) {
for (int i = 0; i < 16; i++) {
if (blockDataMapping[blockid][i] == null) {
blockDataMapping[blockid][i] = newBlockData;
}
}
} else {
blockDataMapping[blockid][blockdata] = newBlockData;
}
} else {
blockDataMapping[blockid][blockdata] = newBlockData;
}
}
reader.close();
HashMap<String, Material> materialKeysToMaterial = new HashMap<>();
for (Material material : Material.values()) {
materialKeysToMaterial.put(material.getKey().toString(), material);
}
reader = new BufferedReader(new InputStreamReader(new BufferedInputStream(file.getInputStream(file.getJarEntry("itemdata.txt"))), "UTF-8"));
while (true) {
String line = reader.readLine();
if (line == null) {
break;
}
int splitter1 = line.indexOf(":");
int splitter2 = line.indexOf(",");
if (splitter1 >= 0 && splitter2 >= 0) {
int itemid = Integer.parseInt(line.substring(0, splitter1));
int itemdata = Integer.parseInt(line.substring(splitter1 + 1, splitter2));
Material newMaterial = materialKeysToMaterial.get(line.substring(splitter2 + 1));
if (newMaterial == null) {
throw new IOException("Unknown item: " + line.substring(splitter2 + 1));
}
if (itemid >= itemMapping.length) {
itemMapping = Arrays.copyOf(itemMapping, Math.max(itemMapping.length * 3 / 2, itemid + 1));
}
Material[] itemValues = itemMapping[itemid];
if (itemValues == null) {
itemValues = new Material[itemdata + 1];
itemMapping[itemid] = itemValues;
} else if (itemValues.length <= itemdata) {
itemValues = Arrays.copyOf(itemValues, itemdata + 1);
itemMapping[itemid] = itemValues;
}
itemValues[itemdata] = newMaterial;
}
}
reader.close();
}
file.close();
}
public BlockData getBlockData(int id, int data) {
return id >= 0 && id < 256 && data >= 0 && data < 16 ? blockDataMapping[id][data] : null;
}
public Material getMaterial(int id, int data) {
Material[] materials = id >= 0 && id < itemMapping.length ? itemMapping[id] : null;
if (materials != null && materials.length > 0) {
if (materials[0] != null && materials[0].getMaxDurability() == 0 && data >= 0 && data < materials.length && materials[data] != null) {
return materials[data];
}
return materials[0];
}
return null;
}
public Material getMaterial(String id) {
int item = 0;
int data = 0;
int seperator = id.indexOf(':');
if (seperator < 0) {
item = Integer.parseInt(id);
} else {
item = Integer.parseInt(id.substring(0, seperator));
data = Integer.parseInt(id.substring(seperator + 1));
}
return getMaterial(item, data);
}
public String convertMaterial(String oldEntry) {
if (oldEntry == null) {
return null;
}
try {
Material newMaterial = getMaterial(oldEntry);
if (newMaterial != null) {
return newMaterial.name();
}
} catch (Exception e) {
Material newMaterial = Material.matchMaterial(oldEntry, true);
if (newMaterial != null) {
return newMaterial.name();
} else {
newMaterial = Material.matchMaterial(oldEntry);
if (newMaterial != null) {
return newMaterial.name();
}
}
}
return null;
}
public List<String> convertMaterials(Collection<String> oldEntries) {
Set<String> newEntries = new LinkedHashSet<>();
for (String oldEntry : oldEntries) {
String newEntry = convertMaterial(oldEntry);
if (newEntry != null) {
newEntries.add(newEntry);
if (newEntry.equals(Material.AIR.name())) {
newEntries.add(Material.CAVE_AIR.name());
newEntries.add(Material.VOID_AIR.name());
}
}
}
return new ArrayList<>(newEntries);
}
}
}

View File

@ -0,0 +1,839 @@
0:0,minecraft:air
1:0,minecraft:stone
1:1,minecraft:granite
1:2,minecraft:polished_granite
1:3,minecraft:diorite
1:4,minecraft:polished_diorite
1:5,minecraft:andesite
1:6,minecraft:polished_andesite
2:0,minecraft:grass_block
3:0,minecraft:dirt
3:1,minecraft:coarse_dirt
3:2,minecraft:podzol
4:0,minecraft:cobblestone
5:0,minecraft:oak_planks
5:1,minecraft:spruce_planks
5:2,minecraft:birch_planks
5:3,minecraft:jungle_planks
5:4,minecraft:acacia_planks
5:5,minecraft:dark_oak_planks
6:0,minecraft:oak_sapling
6:1,minecraft:spruce_sapling
6:2,minecraft:birch_sapling
6:3,minecraft:jungle_sapling
6:4,minecraft:acacia_sapling
6:5,minecraft:dark_oak_sapling
6:9,minecraft:spruce_sapling
6:10,minecraft:birch_sapling
6:11,minecraft:jungle_sapling
6:12,minecraft:acacia_sapling
6:13,minecraft:dark_oak_sapling
7:0,minecraft:bedrock
8:0,minecraft:water
9:0,minecraft:water
10:0,minecraft:lava
11:0,minecraft:lava
12:0,minecraft:sand
12:1,minecraft:red_sand
13:0,minecraft:gravel
14:0,minecraft:gold_ore
15:0,minecraft:iron_ore
16:0,minecraft:coal_ore
17:0,minecraft:oak_log
17:1,minecraft:spruce_log
17:2,minecraft:birch_log
17:3,minecraft:jungle_log
17:5,minecraft:spruce_log
17:6,minecraft:birch_log
17:7,minecraft:jungle_log
17:9,minecraft:spruce_log
17:10,minecraft:birch_log
17:11,minecraft:jungle_log
18:0,minecraft:oak_leaves
18:1,minecraft:spruce_leaves
18:2,minecraft:birch_leaves
18:3,minecraft:jungle_leaves
18:5,minecraft:spruce_leaves
18:6,minecraft:birch_leaves
18:7,minecraft:jungle_leaves
18:9,minecraft:spruce_leaves
18:10,minecraft:birch_leaves
18:11,minecraft:jungle_leaves
18:13,minecraft:spruce_leaves
18:14,minecraft:birch_leaves
18:15,minecraft:jungle_leaves
19:0,minecraft:sponge
19:1,minecraft:wet_sponge
20:0,minecraft:glass
21:0,minecraft:lapis_ore
22:0,minecraft:lapis_block
23:0,minecraft:dispenser
24:0,minecraft:sandstone
24:1,minecraft:chiseled_sandstone
24:2,minecraft:cut_sandstone
25:0,minecraft:note_block
26:0,minecraft:red_bed
27:0,minecraft:powered_rail
28:0,minecraft:detector_rail
29:0,minecraft:sticky_piston
30:0,minecraft:cobweb
31:0,minecraft:dead_bush
31:1,minecraft:grass
31:2,minecraft:fern
32:0,minecraft:dead_bush
33:0,minecraft:piston
34:0,minecraft:piston_head
35:0,minecraft:white_wool
35:1,minecraft:orange_wool
35:2,minecraft:magenta_wool
35:3,minecraft:light_blue_wool
35:4,minecraft:yellow_wool
35:5,minecraft:lime_wool
35:6,minecraft:pink_wool
35:7,minecraft:gray_wool
35:8,minecraft:light_gray_wool
35:9,minecraft:cyan_wool
35:10,minecraft:purple_wool
35:11,minecraft:blue_wool
35:12,minecraft:brown_wool
35:13,minecraft:green_wool
35:14,minecraft:red_wool
35:15,minecraft:black_wool
36:0,minecraft:moving_piston
37:0,minecraft:dandelion
38:0,minecraft:poppy
38:1,minecraft:blue_orchid
38:2,minecraft:allium
38:3,minecraft:azure_bluet
38:4,minecraft:red_tulip
38:5,minecraft:orange_tulip
38:6,minecraft:white_tulip
38:7,minecraft:pink_tulip
38:8,minecraft:oxeye_daisy
39:0,minecraft:brown_mushroom
40:0,minecraft:red_mushroom
41:0,minecraft:gold_block
42:0,minecraft:iron_block
43:0,minecraft:stone_slab
43:1,minecraft:sandstone_slab
43:2,minecraft:petrified_oak_slab
43:3,minecraft:cobblestone_slab
43:4,minecraft:brick_slab
43:5,minecraft:stone_brick_slab
43:6,minecraft:nether_brick_slab
43:7,minecraft:quartz_slab
43:8,minecraft:smooth_stone
43:9,minecraft:smooth_sandstone
43:10,minecraft:petrified_oak_slab
43:11,minecraft:cobblestone_slab
43:12,minecraft:brick_slab
43:13,minecraft:stone_brick_slab
43:14,minecraft:nether_brick_slab
43:15,minecraft:smooth_quartz
44:0,minecraft:stone_slab
44:1,minecraft:sandstone_slab
44:2,minecraft:petrified_oak_slab
44:3,minecraft:cobblestone_slab
44:4,minecraft:brick_slab
44:5,minecraft:stone_brick_slab
44:6,minecraft:nether_brick_slab
44:7,minecraft:quartz_slab
44:9,minecraft:sandstone_slab
44:10,minecraft:petrified_oak_slab
44:11,minecraft:cobblestone_slab
44:12,minecraft:brick_slab
44:13,minecraft:stone_brick_slab
44:14,minecraft:nether_brick_slab
44:15,minecraft:quartz_slab
45:0,minecraft:bricks
46:0,minecraft:tnt
47:0,minecraft:bookshelf
48:0,minecraft:mossy_cobblestone
49:0,minecraft:obsidian
50:0,minecraft:torch
50:1,minecraft:wall_torch
50:2,minecraft:wall_torch
50:3,minecraft:wall_torch
50:4,minecraft:wall_torch
51:0,minecraft:fire
52:0,minecraft:spawner
53:0,minecraft:oak_stairs
54:0,minecraft:chest
55:0,minecraft:redstone_wire
56:0,minecraft:diamond_ore
57:0,minecraft:diamond_block
58:0,minecraft:crafting_table
59:0,minecraft:wheat
60:0,minecraft:farmland
61:0,minecraft:furnace
62:0,minecraft:air
62:2,minecraft:furnace
62:3,minecraft:furnace
62:4,minecraft:furnace
62:5,minecraft:furnace
63:0,minecraft:sign
64:0,minecraft:oak_door
65:0,minecraft:ladder
66:0,minecraft:rail
67:0,minecraft:cobblestone_stairs
68:0,minecraft:air
68:2,minecraft:wall_sign
68:3,minecraft:wall_sign
68:4,minecraft:wall_sign
68:5,minecraft:wall_sign
69:0,minecraft:lever
70:0,minecraft:stone_pressure_plate
71:0,minecraft:iron_door
72:0,minecraft:oak_pressure_plate
73:0,minecraft:redstone_ore
74:0,minecraft:redstone_ore
75:0,minecraft:air
75:1,minecraft:redstone_wall_torch
75:2,minecraft:redstone_wall_torch
75:3,minecraft:redstone_wall_torch
75:4,minecraft:redstone_wall_torch
75:5,minecraft:redstone_torch
76:0,minecraft:redstone_torch
76:1,minecraft:redstone_wall_torch
76:2,minecraft:redstone_wall_torch
76:3,minecraft:redstone_wall_torch
76:4,minecraft:redstone_wall_torch
77:0,minecraft:stone_button
78:0,minecraft:snow
79:0,minecraft:ice
80:0,minecraft:snow_block
81:0,minecraft:cactus
82:0,minecraft:clay
83:0,minecraft:sugar_cane
84:0,minecraft:jukebox
85:0,minecraft:oak_fence
86:0,minecraft:carved_pumpkin
87:0,minecraft:netherrack
88:0,minecraft:soul_sand
89:0,minecraft:glowstone
90:0,minecraft:nether_portal
91:0,minecraft:jack_o_lantern
92:0,minecraft:cake
93:0,minecraft:repeater
94:0,minecraft:repeater
95:0,minecraft:white_stained_glass
95:1,minecraft:orange_stained_glass
95:2,minecraft:magenta_stained_glass
95:3,minecraft:light_blue_stained_glass
95:4,minecraft:yellow_stained_glass
95:5,minecraft:lime_stained_glass
95:6,minecraft:pink_stained_glass
95:7,minecraft:gray_stained_glass
95:8,minecraft:light_gray_stained_glass
95:9,minecraft:cyan_stained_glass
95:10,minecraft:purple_stained_glass
95:11,minecraft:blue_stained_glass
95:12,minecraft:brown_stained_glass
95:13,minecraft:green_stained_glass
95:14,minecraft:red_stained_glass
95:15,minecraft:black_stained_glass
96:0,minecraft:oak_trapdoor
97:0,minecraft:infested_stone
97:1,minecraft:infested_cobblestone
97:2,minecraft:infested_stone_bricks
97:3,minecraft:infested_mossy_stone_bricks
97:4,minecraft:infested_cracked_stone_bricks
97:5,minecraft:infested_chiseled_stone_bricks
98:0,minecraft:stone_bricks
98:1,minecraft:mossy_stone_bricks
98:2,minecraft:cracked_stone_bricks
98:3,minecraft:chiseled_stone_bricks
99:0,minecraft:brown_mushroom_block
99:10,minecraft:mushroom_stem
99:15,minecraft:mushroom_stem
100:0,minecraft:red_mushroom_block
100:10,minecraft:mushroom_stem
100:15,minecraft:mushroom_stem
101:0,minecraft:iron_bars
102:0,minecraft:glass_pane
103:0,minecraft:melon
104:0,minecraft:pumpkin_stem
105:0,minecraft:melon_stem
106:0,minecraft:vine
107:0,minecraft:oak_fence_gate
108:0,minecraft:brick_stairs
109:0,minecraft:stone_brick_stairs
110:0,minecraft:mycelium
111:0,minecraft:lily_pad
112:0,minecraft:nether_bricks
113:0,minecraft:nether_brick_fence
114:0,minecraft:nether_brick_stairs
115:0,minecraft:nether_wart
116:0,minecraft:enchanting_table
117:0,minecraft:brewing_stand
118:0,minecraft:cauldron
119:0,minecraft:end_portal
120:0,minecraft:end_portal_frame
121:0,minecraft:end_stone
122:0,minecraft:dragon_egg
123:0,minecraft:redstone_lamp
124:0,minecraft:redstone_lamp
125:0,minecraft:oak_slab
125:1,minecraft:spruce_slab
125:2,minecraft:birch_slab
125:3,minecraft:jungle_slab
125:4,minecraft:acacia_slab
125:5,minecraft:dark_oak_slab
126:0,minecraft:oak_slab
126:1,minecraft:spruce_slab
126:2,minecraft:birch_slab
126:3,minecraft:jungle_slab
126:4,minecraft:acacia_slab
126:5,minecraft:dark_oak_slab
126:9,minecraft:spruce_slab
126:10,minecraft:birch_slab
126:11,minecraft:jungle_slab
126:12,minecraft:acacia_slab
126:13,minecraft:dark_oak_slab
127:0,minecraft:cocoa
128:0,minecraft:sandstone_stairs
129:0,minecraft:emerald_ore
130:0,minecraft:ender_chest
131:0,minecraft:tripwire_hook
132:0,minecraft:tripwire
133:0,minecraft:emerald_block
134:0,minecraft:spruce_stairs
135:0,minecraft:birch_stairs
136:0,minecraft:jungle_stairs
137:0,minecraft:command_block
138:0,minecraft:beacon
139:0,minecraft:cobblestone_wall
139:1,minecraft:mossy_cobblestone_wall
140:0,minecraft:potted_cactus
141:0,minecraft:carrots
142:0,minecraft:potatoes
143:0,minecraft:oak_button
144:0,minecraft:air
145:0,minecraft:anvil
145:4,minecraft:chipped_anvil
145:5,minecraft:chipped_anvil
145:6,minecraft:chipped_anvil
145:7,minecraft:chipped_anvil
145:8,minecraft:damaged_anvil
145:9,minecraft:damaged_anvil
145:10,minecraft:damaged_anvil
145:11,minecraft:damaged_anvil
146:0,minecraft:trapped_chest
147:0,minecraft:light_weighted_pressure_plate
148:0,minecraft:heavy_weighted_pressure_plate
149:0,minecraft:comparator
150:0,minecraft:comparator
151:0,minecraft:daylight_detector
152:0,minecraft:redstone_block
153:0,minecraft:nether_quartz_ore
154:0,minecraft:hopper
155:0,minecraft:quartz_block
155:1,minecraft:chiseled_quartz_block
155:2,minecraft:quartz_pillar
155:3,minecraft:quartz_pillar
155:4,minecraft:quartz_pillar
156:0,minecraft:quartz_stairs
157:0,minecraft:activator_rail
158:0,minecraft:dropper
159:0,minecraft:white_terracotta
159:1,minecraft:orange_terracotta
159:2,minecraft:magenta_terracotta
159:3,minecraft:light_blue_terracotta
159:4,minecraft:yellow_terracotta
159:5,minecraft:lime_terracotta
159:6,minecraft:pink_terracotta
159:7,minecraft:gray_terracotta
159:8,minecraft:light_gray_terracotta
159:9,minecraft:cyan_terracotta
159:10,minecraft:purple_terracotta
159:11,minecraft:blue_terracotta
159:12,minecraft:brown_terracotta
159:13,minecraft:green_terracotta
159:14,minecraft:red_terracotta
159:15,minecraft:black_terracotta
160:0,minecraft:white_stained_glass_pane
160:1,minecraft:orange_stained_glass_pane
160:2,minecraft:magenta_stained_glass_pane
160:3,minecraft:light_blue_stained_glass_pane
160:4,minecraft:yellow_stained_glass_pane
160:5,minecraft:lime_stained_glass_pane
160:6,minecraft:pink_stained_glass_pane
160:7,minecraft:gray_stained_glass_pane
160:8,minecraft:light_gray_stained_glass_pane
160:9,minecraft:cyan_stained_glass_pane
160:10,minecraft:purple_stained_glass_pane
160:11,minecraft:blue_stained_glass_pane
160:12,minecraft:brown_stained_glass_pane
160:13,minecraft:green_stained_glass_pane
160:14,minecraft:red_stained_glass_pane
160:15,minecraft:black_stained_glass_pane
161:0,minecraft:acacia_leaves
161:1,minecraft:dark_oak_leaves
161:5,minecraft:dark_oak_leaves
161:9,minecraft:dark_oak_leaves
161:13,minecraft:dark_oak_leaves
162:0,minecraft:acacia_log
162:1,minecraft:dark_oak_log
162:5,minecraft:dark_oak_log
162:9,minecraft:dark_oak_log
163:0,minecraft:acacia_stairs
164:0,minecraft:dark_oak_stairs
165:0,minecraft:slime_block
166:0,minecraft:barrier
167:0,minecraft:iron_trapdoor
168:0,minecraft:prismarine
168:1,minecraft:prismarine_bricks
168:2,minecraft:dark_prismarine
169:0,minecraft:sea_lantern
170:0,minecraft:hay_block
171:0,minecraft:white_carpet
171:1,minecraft:orange_carpet
171:2,minecraft:magenta_carpet
171:3,minecraft:light_blue_carpet
171:4,minecraft:yellow_carpet
171:5,minecraft:lime_carpet
171:6,minecraft:pink_carpet
171:7,minecraft:gray_carpet
171:8,minecraft:light_gray_carpet
171:9,minecraft:cyan_carpet
171:10,minecraft:purple_carpet
171:11,minecraft:blue_carpet
171:12,minecraft:brown_carpet
171:13,minecraft:green_carpet
171:14,minecraft:red_carpet
171:15,minecraft:black_carpet
172:0,minecraft:terracotta
173:0,minecraft:coal_block
174:0,minecraft:packed_ice
175:0,minecraft:sunflower
175:1,minecraft:lilac
175:2,minecraft:tall_grass
175:3,minecraft:large_fern
175:4,minecraft:rose_bush
175:5,minecraft:peony
175:8,minecraft:peony
175:9,minecraft:peony
175:10,minecraft:peony
175:11,minecraft:peony
176:0,minecraft:white_banner
177:0,minecraft:air
177:2,minecraft:white_wall_banner
177:3,minecraft:white_wall_banner
177:4,minecraft:white_wall_banner
177:5,minecraft:white_wall_banner
178:0,minecraft:daylight_detector
179:0,minecraft:red_sandstone
179:1,minecraft:chiseled_red_sandstone
179:2,minecraft:cut_red_sandstone
180:0,minecraft:red_sandstone_stairs
181:0,minecraft:red_sandstone_slab
181:8,minecraft:smooth_red_sandstone
182:0,minecraft:red_sandstone_slab
183:0,minecraft:spruce_fence_gate
184:0,minecraft:birch_fence_gate
185:0,minecraft:jungle_fence_gate
186:0,minecraft:dark_oak_fence_gate
187:0,minecraft:acacia_fence_gate
188:0,minecraft:spruce_fence
189:0,minecraft:birch_fence
190:0,minecraft:jungle_fence
191:0,minecraft:dark_oak_fence
192:0,minecraft:acacia_fence
193:0,minecraft:spruce_door
194:0,minecraft:birch_door
195:0,minecraft:jungle_door
196:0,minecraft:acacia_door
197:0,minecraft:dark_oak_door
198:0,minecraft:end_rod
199:0,minecraft:chorus_plant
200:0,minecraft:chorus_flower
201:0,minecraft:purpur_block
202:0,minecraft:purpur_pillar
203:0,minecraft:purpur_stairs
204:0,minecraft:purpur_slab
205:0,minecraft:purpur_slab
206:0,minecraft:end_stone_bricks
207:0,minecraft:beetroots
208:0,minecraft:grass_path
209:0,minecraft:end_gateway
210:0,minecraft:repeating_command_block
211:0,minecraft:chain_command_block
212:0,minecraft:frosted_ice
213:0,minecraft:magma_block
214:0,minecraft:nether_wart_block
215:0,minecraft:red_nether_bricks
216:0,minecraft:bone_block
217:0,minecraft:structure_void
218:0,minecraft:observer
219:0,minecraft:white_shulker_box
220:0,minecraft:orange_shulker_box
221:0,minecraft:magenta_shulker_box
222:0,minecraft:light_blue_shulker_box
223:0,minecraft:yellow_shulker_box
224:0,minecraft:lime_shulker_box
225:0,minecraft:pink_shulker_box
226:0,minecraft:gray_shulker_box
227:0,minecraft:light_gray_shulker_box
228:0,minecraft:cyan_shulker_box
229:0,minecraft:purple_shulker_box
230:0,minecraft:blue_shulker_box
231:0,minecraft:brown_shulker_box
232:0,minecraft:green_shulker_box
233:0,minecraft:red_shulker_box
234:0,minecraft:black_shulker_box
235:0,minecraft:white_glazed_terracotta
236:0,minecraft:orange_glazed_terracotta
237:0,minecraft:magenta_glazed_terracotta
238:0,minecraft:light_blue_glazed_terracotta
239:0,minecraft:yellow_glazed_terracotta
240:0,minecraft:lime_glazed_terracotta
241:0,minecraft:pink_glazed_terracotta
242:0,minecraft:gray_glazed_terracotta
243:0,minecraft:light_gray_glazed_terracotta
244:0,minecraft:cyan_glazed_terracotta
245:0,minecraft:purple_glazed_terracotta
246:0,minecraft:blue_glazed_terracotta
247:0,minecraft:brown_glazed_terracotta
248:0,minecraft:green_glazed_terracotta
249:0,minecraft:red_glazed_terracotta
250:0,minecraft:black_glazed_terracotta
251:0,minecraft:white_concrete
251:1,minecraft:orange_concrete
251:2,minecraft:magenta_concrete
251:3,minecraft:light_blue_concrete
251:4,minecraft:yellow_concrete
251:5,minecraft:lime_concrete
251:6,minecraft:pink_concrete
251:7,minecraft:gray_concrete
251:8,minecraft:light_gray_concrete
251:9,minecraft:cyan_concrete
251:10,minecraft:purple_concrete
251:11,minecraft:blue_concrete
251:12,minecraft:brown_concrete
251:13,minecraft:green_concrete
251:14,minecraft:red_concrete
251:15,minecraft:black_concrete
252:0,minecraft:white_concrete_powder
252:1,minecraft:orange_concrete_powder
252:2,minecraft:magenta_concrete_powder
252:3,minecraft:light_blue_concrete_powder
252:4,minecraft:yellow_concrete_powder
252:5,minecraft:lime_concrete_powder
252:6,minecraft:pink_concrete_powder
252:7,minecraft:gray_concrete_powder
252:8,minecraft:light_gray_concrete_powder
252:9,minecraft:cyan_concrete_powder
252:10,minecraft:purple_concrete_powder
252:11,minecraft:blue_concrete_powder
252:12,minecraft:brown_concrete_powder
252:13,minecraft:green_concrete_powder
252:14,minecraft:red_concrete_powder
252:15,minecraft:black_concrete_powder
255:0,minecraft:structure_block
256:0,minecraft:iron_shovel
257:0,minecraft:iron_pickaxe
258:0,minecraft:iron_axe
259:0,minecraft:flint_and_steel
260:0,minecraft:apple
261:0,minecraft:bow
262:0,minecraft:arrow
263:0,minecraft:coal
263:1,minecraft:charcoal
264:0,minecraft:diamond
265:0,minecraft:iron_ingot
266:0,minecraft:gold_ingot
267:0,minecraft:iron_sword
268:0,minecraft:wooden_sword
269:0,minecraft:wooden_shovel
270:0,minecraft:wooden_pickaxe
271:0,minecraft:wooden_axe
272:0,minecraft:stone_sword
273:0,minecraft:stone_shovel
274:0,minecraft:stone_pickaxe
275:0,minecraft:stone_axe
276:0,minecraft:diamond_sword
277:0,minecraft:diamond_shovel
278:0,minecraft:diamond_pickaxe
279:0,minecraft:diamond_axe
280:0,minecraft:stick
281:0,minecraft:bowl
282:0,minecraft:mushroom_stew
283:0,minecraft:golden_sword
284:0,minecraft:golden_shovel
285:0,minecraft:golden_pickaxe
286:0,minecraft:golden_axe
287:0,minecraft:string
288:0,minecraft:feather
289:0,minecraft:gunpowder
290:0,minecraft:wooden_hoe
291:0,minecraft:stone_hoe
292:0,minecraft:iron_hoe
293:0,minecraft:diamond_hoe
294:0,minecraft:golden_hoe
295:0,minecraft:wheat_seeds
296:0,minecraft:wheat
297:0,minecraft:bread
298:0,minecraft:leather_helmet
299:0,minecraft:leather_chestplate
300:0,minecraft:leather_leggings
301:0,minecraft:leather_boots
302:0,minecraft:chainmail_helmet
303:0,minecraft:chainmail_chestplate
304:0,minecraft:chainmail_leggings
305:0,minecraft:chainmail_boots
306:0,minecraft:iron_helmet
307:0,minecraft:iron_chestplate
308:0,minecraft:iron_leggings
309:0,minecraft:iron_boots
310:0,minecraft:diamond_helmet
311:0,minecraft:diamond_chestplate
312:0,minecraft:diamond_leggings
313:0,minecraft:diamond_boots
314:0,minecraft:golden_helmet
315:0,minecraft:golden_chestplate
316:0,minecraft:golden_leggings
317:0,minecraft:golden_boots
318:0,minecraft:flint
319:0,minecraft:porkchop
320:0,minecraft:cooked_porkchop
321:0,minecraft:painting
322:0,minecraft:golden_apple
322:1,minecraft:enchanted_golden_apple
323:0,minecraft:sign
324:0,minecraft:oak_door
325:0,minecraft:bucket
326:0,minecraft:water_bucket
327:0,minecraft:lava_bucket
328:0,minecraft:minecart
329:0,minecraft:saddle
330:0,minecraft:iron_door
331:0,minecraft:redstone
332:0,minecraft:snowball
333:0,minecraft:oak_boat
334:0,minecraft:leather
335:0,minecraft:milk_bucket
336:0,minecraft:brick
337:0,minecraft:clay_ball
338:0,minecraft:sugar_cane
339:0,minecraft:paper
340:0,minecraft:book
341:0,minecraft:slime_ball
342:0,minecraft:chest_minecart
343:0,minecraft:furnace_minecart
344:0,minecraft:egg
345:0,minecraft:compass
346:0,minecraft:fishing_rod
347:0,minecraft:clock
348:0,minecraft:glowstone_dust
349:0,minecraft:cod
349:1,minecraft:salmon
349:2,minecraft:tropical_fish
349:3,minecraft:pufferfish
350:0,minecraft:cooked_cod
350:1,minecraft:cooked_salmon
351:0,minecraft:ink_sac
351:1,minecraft:rose_red
351:2,minecraft:cactus_green
351:3,minecraft:cocoa_beans
351:4,minecraft:lapis_lazuli
351:5,minecraft:purple_dye
351:6,minecraft:cyan_dye
351:7,minecraft:light_gray_dye
351:8,minecraft:gray_dye
351:9,minecraft:pink_dye
351:10,minecraft:lime_dye
351:11,minecraft:dandelion_yellow
351:12,minecraft:light_blue_dye
351:13,minecraft:magenta_dye
351:14,minecraft:orange_dye
351:15,minecraft:bone_meal
352:0,minecraft:bone
353:0,minecraft:sugar
354:0,minecraft:cake
355:0,minecraft:red_bed
355:1,minecraft:orange_bed
355:2,minecraft:magenta_bed
355:3,minecraft:light_blue_bed
355:4,minecraft:yellow_bed
355:5,minecraft:lime_bed
355:6,minecraft:pink_bed
355:7,minecraft:gray_bed
355:8,minecraft:light_gray_bed
355:9,minecraft:cyan_bed
355:10,minecraft:purple_bed
355:11,minecraft:blue_bed
355:12,minecraft:brown_bed
355:13,minecraft:green_bed
355:15,minecraft:black_bed
356:0,minecraft:repeater
357:0,minecraft:cookie
358:0,minecraft:filled_map
359:0,minecraft:shears
360:0,minecraft:melon_slice
361:0,minecraft:pumpkin_seeds
362:0,minecraft:melon_seeds
363:0,minecraft:beef
364:0,minecraft:cooked_beef
365:0,minecraft:chicken
366:0,minecraft:cooked_chicken
367:0,minecraft:rotten_flesh
368:0,minecraft:ender_pearl
369:0,minecraft:blaze_rod
370:0,minecraft:ghast_tear
371:0,minecraft:gold_nugget
372:0,minecraft:nether_wart
373:0,minecraft:potion
374:0,minecraft:glass_bottle
375:0,minecraft:spider_eye
376:0,minecraft:fermented_spider_eye
377:0,minecraft:blaze_powder
378:0,minecraft:magma_cream
379:0,minecraft:brewing_stand
380:0,minecraft:cauldron
381:0,minecraft:ender_eye
382:0,minecraft:glistering_melon_slice
383:0,minecraft:pig_spawn_egg
383:4,minecraft:elder_guardian_spawn_egg
383:5,minecraft:wither_skeleton_spawn_egg
383:6,minecraft:stray_spawn_egg
383:23,minecraft:husk_spawn_egg
383:27,minecraft:zombie_villager_spawn_egg
383:28,minecraft:skeleton_horse_spawn_egg
383:29,minecraft:zombie_horse_spawn_egg
383:31,minecraft:donkey_spawn_egg
383:32,minecraft:mule_spawn_egg
383:34,minecraft:evoker_spawn_egg
383:35,minecraft:vex_spawn_egg
383:36,minecraft:vindicator_spawn_egg
383:50,minecraft:creeper_spawn_egg
383:51,minecraft:skeleton_spawn_egg
383:52,minecraft:spider_spawn_egg
383:54,minecraft:zombie_spawn_egg
383:55,minecraft:slime_spawn_egg
383:56,minecraft:ghast_spawn_egg
383:57,minecraft:zombie_pigman_spawn_egg
383:58,minecraft:enderman_spawn_egg
383:59,minecraft:cave_spider_spawn_egg
383:60,minecraft:silverfish_spawn_egg
383:61,minecraft:blaze_spawn_egg
383:62,minecraft:magma_cube_spawn_egg
383:65,minecraft:bat_spawn_egg
383:66,minecraft:witch_spawn_egg
383:67,minecraft:endermite_spawn_egg
383:68,minecraft:guardian_spawn_egg
383:69,minecraft:shulker_spawn_egg
383:91,minecraft:sheep_spawn_egg
383:92,minecraft:cow_spawn_egg
383:93,minecraft:chicken_spawn_egg
383:94,minecraft:squid_spawn_egg
383:95,minecraft:wolf_spawn_egg
383:96,minecraft:mooshroom_spawn_egg
383:98,minecraft:ocelot_spawn_egg
383:100,minecraft:horse_spawn_egg
383:101,minecraft:rabbit_spawn_egg
383:102,minecraft:polar_bear_spawn_egg
383:103,minecraft:llama_spawn_egg
383:105,minecraft:parrot_spawn_egg
383:120,minecraft:villager_spawn_egg
383:255,minecraft:turtle_spawn_egg
384:0,minecraft:experience_bottle
385:0,minecraft:fire_charge
386:0,minecraft:writable_book
387:0,minecraft:written_book
388:0,minecraft:emerald
389:0,minecraft:item_frame
390:0,minecraft:flower_pot
391:0,minecraft:carrot
392:0,minecraft:potato
393:0,minecraft:baked_potato
394:0,minecraft:poisonous_potato
395:0,minecraft:map
396:0,minecraft:golden_carrot
397:0,minecraft:skeleton_skull
397:1,minecraft:wither_skeleton_skull
397:2,minecraft:zombie_head
397:3,minecraft:player_head
397:4,minecraft:creeper_head
397:5,minecraft:dragon_head
398:0,minecraft:carrot_on_a_stick
399:0,minecraft:nether_star
400:0,minecraft:pumpkin_pie
401:0,minecraft:firework_rocket
402:0,minecraft:firework_star
403:0,minecraft:enchanted_book
404:0,minecraft:comparator
405:0,minecraft:nether_brick
406:0,minecraft:quartz
407:0,minecraft:tnt_minecart
408:0,minecraft:hopper_minecart
409:0,minecraft:prismarine_shard
410:0,minecraft:prismarine_crystals
411:0,minecraft:rabbit
412:0,minecraft:cooked_rabbit
413:0,minecraft:rabbit_stew
414:0,minecraft:rabbit_foot
415:0,minecraft:rabbit_hide
416:0,minecraft:armor_stand
417:0,minecraft:iron_horse_armor
418:0,minecraft:golden_horse_armor
419:0,minecraft:diamond_horse_armor
420:0,minecraft:lead
421:0,minecraft:name_tag
422:0,minecraft:command_block_minecart
423:0,minecraft:mutton
424:0,minecraft:cooked_mutton
425:0,minecraft:black_banner
425:1,minecraft:red_banner
425:2,minecraft:green_banner
425:3,minecraft:brown_banner
425:4,minecraft:blue_banner
425:5,minecraft:purple_banner
425:6,minecraft:cyan_banner
425:7,minecraft:light_gray_banner
425:8,minecraft:gray_banner
425:9,minecraft:pink_banner
425:10,minecraft:lime_banner
425:11,minecraft:yellow_banner
425:12,minecraft:light_blue_banner
425:13,minecraft:magenta_banner
425:14,minecraft:orange_banner
425:15,minecraft:white_banner
426:0,minecraft:end_crystal
427:0,minecraft:spruce_door
428:0,minecraft:birch_door
429:0,minecraft:jungle_door
430:0,minecraft:acacia_door
431:0,minecraft:dark_oak_door
432:0,minecraft:chorus_fruit
433:0,minecraft:popped_chorus_fruit
434:0,minecraft:beetroot
435:0,minecraft:beetroot_seeds
436:0,minecraft:beetroot_soup
437:0,minecraft:dragon_breath
438:0,minecraft:splash_potion
439:0,minecraft:spectral_arrow
440:0,minecraft:tipped_arrow
441:0,minecraft:lingering_potion
442:0,minecraft:shield
443:0,minecraft:elytra
444:0,minecraft:spruce_boat
445:0,minecraft:birch_boat
446:0,minecraft:jungle_boat
447:0,minecraft:acacia_boat
448:0,minecraft:dark_oak_boat
449:0,minecraft:totem_of_undying
450:0,minecraft:shulker_shell
452:0,minecraft:iron_nugget
453:0,minecraft:knowledge_book
2256:0,minecraft:music_disc_13
2257:0,minecraft:music_disc_cat
2258:0,minecraft:music_disc_blocks
2259:0,minecraft:music_disc_chirp
2260:0,minecraft:music_disc_far
2261:0,minecraft:music_disc_mall
2262:0,minecraft:music_disc_mellohi
2263:0,minecraft:music_disc_stal
2264:0,minecraft:music_disc_strad
2265:0,minecraft:music_disc_ward
2266:0,minecraft:music_disc_11
2267:0,minecraft:music_disc_wait