forked from LogBlock/LogBlock
Upgrade config, chestaccess and kills too
This commit is contained in:
@@ -3,10 +3,14 @@ package de.diddiz.LogBlock;
|
|||||||
import de.diddiz.LogBlock.config.Config;
|
import de.diddiz.LogBlock.config.Config;
|
||||||
import de.diddiz.LogBlock.config.WorldConfig;
|
import de.diddiz.LogBlock.config.WorldConfig;
|
||||||
import de.diddiz.util.UUIDFetcher;
|
import de.diddiz.util.UUIDFetcher;
|
||||||
|
import de.diddiz.util.Utils;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Material;
|
||||||
import org.bukkit.block.data.BlockData;
|
import org.bukkit.block.data.BlockData;
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
import org.bukkit.configuration.file.YamlConfiguration;
|
import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import java.io.BufferedInputStream;
|
import java.io.BufferedInputStream;
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
@@ -23,6 +27,7 @@ import static de.diddiz.LogBlock.config.Config.isLogging;
|
|||||||
import static de.diddiz.util.BukkitUtils.friendlyWorldname;
|
import static de.diddiz.util.BukkitUtils.friendlyWorldname;
|
||||||
import de.diddiz.util.ComparableVersion;
|
import de.diddiz.util.ComparableVersion;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
import static org.bukkit.Bukkit.getLogger;
|
import static org.bukkit.Bukkit.getLogger;
|
||||||
|
|
||||||
class Updater {
|
class Updater {
|
||||||
@@ -413,13 +418,14 @@ class Updater {
|
|||||||
if (configVersion.compareTo(new ComparableVersion("1.13.0")) < 0) {
|
if (configVersion.compareTo(new ComparableVersion("1.13.0")) < 0) {
|
||||||
getLogger().info("Updating tables to 1.13.0 ...");
|
getLogger().info("Updating tables to 1.13.0 ...");
|
||||||
try {
|
try {
|
||||||
MaterialUpdater materialUpdater = null;
|
MaterialUpdater1_13 materialUpdater = new MaterialUpdater1_13(logblock);
|
||||||
checkTables(); // we need to create the tables first
|
|
||||||
getLogger().info("Convertig BlockId to BlockData. This can take a while ...");
|
getLogger().info("Convertig BlockId to BlockData. This can take a while ...");
|
||||||
final Connection conn = logblock.getConnection();
|
final Connection conn = logblock.getConnection();
|
||||||
conn.setAutoCommit(false);
|
conn.setAutoCommit(false);
|
||||||
final Statement st = conn.createStatement();
|
final Statement st = conn.createStatement();
|
||||||
for (final WorldConfig wcfg : getLoggedWorlds()) {
|
for (final WorldConfig wcfg : getLoggedWorlds()) {
|
||||||
|
getLogger().info("Processing world " + wcfg.world + "...");
|
||||||
|
getLogger().info("Processing block changes...");
|
||||||
boolean hadRow = true;
|
boolean hadRow = true;
|
||||||
int rowsToConvert = 0;
|
int rowsToConvert = 0;
|
||||||
int done = 0;
|
int done = 0;
|
||||||
@@ -429,75 +435,187 @@ class Updater {
|
|||||||
rowsToConvert = rs.getInt(1);
|
rowsToConvert = rs.getInt(1);
|
||||||
getLogger().info("Converting " + rowsToConvert + " entries in " + wcfg.table);
|
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) {
|
} catch (SQLException e) {
|
||||||
getLogger().info("Could not convert " + wcfg.table + ": " + e.getMessage());
|
getLogger().info("Could not convert " + wcfg.table + ": " + e.getMessage());
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
PreparedStatement deleteStatement = conn.prepareStatement("DELETE FROM `" + wcfg.table + "` WHERE id = ?");
|
getLogger().info("Processing chests...");
|
||||||
PreparedStatement insertStatement = conn.prepareStatement("INSERT INTO `" + wcfg.table + "-blocks` (id, date, playerid, replaced, replacedData, type, typeData, x, y, z) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", Statement.RETURN_GENERATED_KEYS);
|
rowsToConvert = 0;
|
||||||
|
done = 0;
|
||||||
while (hadRow) {
|
try {
|
||||||
hadRow = false;
|
ResultSet rs = st.executeQuery("SELECT count(*) as rowcount FROM `" + wcfg.table + "-chest`");
|
||||||
ResultSet entries = st.executeQuery("SELECT id, date, playerid, replaced, type, data, x, y, z FROM `" + wcfg.table + "` ORDER BY id ASC LIMIT 10000");
|
if (rs.next()) {
|
||||||
while (entries.next()) {
|
rowsToConvert = rs.getInt(1);
|
||||||
hadRow = true;
|
getLogger().info("Converting " + rowsToConvert + " entries in " + wcfg.table + "-chest");
|
||||||
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++;
|
|
||||||
}
|
}
|
||||||
if (hadRow) {
|
rs.close();
|
||||||
insertStatement.executeBatch();
|
|
||||||
deleteStatement.executeBatch();
|
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();
|
st.close();
|
||||||
conn.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) {
|
} catch (final SQLException | IOException ex) {
|
||||||
Bukkit.getLogger().log(Level.SEVERE, "[Updater] Error: ", ex);
|
Bukkit.getLogger().log(Level.SEVERE, "[Updater] Error: ", ex);
|
||||||
return false;
|
return false;
|
||||||
@@ -597,40 +715,141 @@ class Updater {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class MaterialUpdater {
|
public static class MaterialUpdater1_13 {
|
||||||
BlockData[][] blockDataMapping;
|
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];
|
blockDataMapping = new BlockData[256][16];
|
||||||
JarFile file = new JarFile(plugin.getFile());
|
try (JarFile file = new JarFile(plugin.getFile())) {
|
||||||
BufferedReader reader = new BufferedReader(new InputStreamReader(new BufferedInputStream(file.getInputStream(file.getJarEntry("blockdata.txt"))), "UTF-8"));
|
BufferedReader reader = new BufferedReader(new InputStreamReader(new BufferedInputStream(file.getInputStream(file.getJarEntry("blockdata.txt"))), "UTF-8"));
|
||||||
while (true) {
|
while (true) {
|
||||||
String line = reader.readLine();
|
String line = reader.readLine();
|
||||||
if (line == null) {
|
if (line == null) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
int splitter1 = line.indexOf(":");
|
int splitter1 = line.indexOf(":");
|
||||||
int splitter2 = line.indexOf(",");
|
int splitter2 = line.indexOf(",");
|
||||||
if (splitter1 >= 0 && splitter2 >= 0) {
|
if (splitter1 >= 0 && splitter2 >= 0) {
|
||||||
int blockid = Integer.parseInt(line.substring(0, splitter1));
|
int blockid = Integer.parseInt(line.substring(0, splitter1));
|
||||||
int blockdata = Integer.parseInt(line.substring(splitter1 + 1, splitter2));
|
int blockdata = Integer.parseInt(line.substring(splitter1 + 1, splitter2));
|
||||||
BlockData newBlockData = Bukkit.createBlockData(line.substring(splitter2 + 1));
|
BlockData newBlockData = Bukkit.createBlockData(line.substring(splitter2 + 1));
|
||||||
|
|
||||||
if (blockdata == 0) {
|
if (blockdata == 0) {
|
||||||
for (int i = 0; i < 16; i++) {
|
for (int i = 0; i < 16; i++) {
|
||||||
if (blockDataMapping[blockid][i] == null) {
|
if (blockDataMapping[blockid][i] == null) {
|
||||||
blockDataMapping[blockid][i] = newBlockData;
|
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) {
|
public BlockData getBlockData(int id, int data) {
|
||||||
return id >= 0 && id < 256 && data >= 0 && data < 16 ? blockDataMapping[id][data] : null;
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
839
src/main/resources/itemdata.txt
Normal file
839
src/main/resources/itemdata.txt
Normal 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
|
Reference in New Issue
Block a user