/*
* This file is part of NucleusFramework for Bukkit, licensed under the MIT License (MIT).
*
* Copyright (c) JCThePants (www.jcwhatever.com)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
package com.jcwhatever.nucleus.utils.materials;
import com.jcwhatever.nucleus.collections.MultiBiMap;
import com.jcwhatever.nucleus.utils.PreCon;
import org.bukkit.Material;
import org.bukkit.material.MaterialData;
import javax.annotation.Nullable;
/**
* Get {@link org.bukkit.material.MaterialData} based on name of the {@link org.bukkit.Material}
* or alternate name.
*
* <p>Where Minecraft 1.8 names conflict with {@link org.bukkit.Material} names,
* the 1.8 name is used.</p>
*/
public final class NamedMaterialData {
private NamedMaterialData(){}
private static MultiBiMap<String, MaterialData> _alternateNames =
new MultiBiMap<String, MaterialData>();
/**
* Get {@link org.bukkit.material.MaterialData} using the
* material name.
*
* <p>Checks alternate names first. If an alternate name is not found, the
* name is checked against {@link org.bukkit.Material} names.</p>
*
* @param materialName The non-case sensitive name of the {@link org.bukkit.Material}
* or alternate name.
*
* @return The {@link org.bukkit.material.MaterialData} or null if not found.
*/
@Nullable
public static MaterialData get(String materialName) {
PreCon.notNull(materialName);
String str = materialName.toUpperCase();
if (str.startsWith("MINECRAFT:"))
str = str.substring(10);
// check for alternate value
MaterialData data = _alternateNames.getValue(str);
if (data == null) {
// check for enum name
try {
Material material = Material.valueOf(str);
if (material != null)
return new MaterialData(material);
}
catch (Exception ignore) {}
return null;
}
return new MaterialData(data.getItemType(), data.getData());
}
/**
* Get the name of the specified {@link org.bukkit.material.MaterialData} using
* the most descriptive available name.
*
* <p>An alternate name is returned if available, otherwise the material name and
* data is returned.</p>
*
* @param materialData The material data to get a name for.
*/
public static String get(MaterialData materialData) {
PreCon.notNull(materialData);
String name = _alternateNames.getKey(materialData);
if (name == null) {
String result = materialData.getItemType().name();
if (materialData.getData() != 0)
result += ":" + materialData.getData();
return result;
} else {
return name;
}
}
/**
* Get the alternate name of the specified {@link org.bukkit.material.MaterialData} using
* the most descriptive available name.
*
* <p>The first alternate name is returned if there is more than one available.</p>
*
* @param materialData The material data to get a name for.
*
* @return An alternate name or null if none found.
*/
@Nullable
public static String getAlternate(MaterialData materialData) {
return _alternateNames.getKey(materialData);
}
static {
_alternateNames
.add("CHAIN_HELMET", new MaterialData(Material.CHAINMAIL_HELMET))
.add("CHAIN_CHESTPLATE", new MaterialData(Material.CHAINMAIL_CHESTPLATE))
.add("CHAIN_LEGGINGS", new MaterialData(Material.CHAINMAIL_LEGGINGS))
.add("CHAIN_BOOTS", new MaterialData(Material.CHAINMAIL_BOOTS))
.add("GRANITE", new MaterialData(Material.STONE, (byte) 1))
.add("POLISHED_GRANITE", new MaterialData(Material.STONE, (byte) 2))
.add("SMOOTH_GRANITE", new MaterialData(Material.STONE, (byte) 2))
.add("DIORITE", new MaterialData(Material.STONE, (byte) 3))
.add("POLISHED_DIORITE", new MaterialData(Material.STONE, (byte) 4))
.add("SMOOTH_DIORITE", new MaterialData(Material.STONE, (byte) 4))
.add("ANDESITE", new MaterialData(Material.STONE, (byte) 5))
.add("POLISHED_ANDESITE", new MaterialData(Material.STONE, (byte) 6))
.add("SMOOTH_ANDESITE", new MaterialData(Material.STONE, (byte) 6))
.add("COARSE_DIRT", new MaterialData(Material.DIRT, (byte) 1))
.add("PODZOL", new MaterialData(Material.DIRT, (byte) 2))
.add("COBBLE", new MaterialData(Material.COBBLESTONE))
.add("MOSSY_COBBLE", new MaterialData(Material.MOSSY_COBBLESTONE))
.add("OAK_PLANK", new MaterialData(Material.WOOD, (byte) 0))
.add("SPRUCE_PLANK", new MaterialData(Material.WOOD, (byte) 1))
.add("BIRCH_PLANK", new MaterialData(Material.WOOD, (byte) 2))
.add("JUNGLE_PLANK", new MaterialData(Material.WOOD, (byte) 3))
.add("ACACIA_PLANK", new MaterialData(Material.WOOD, (byte) 4))
.add("DARK_OAK_PLANK", new MaterialData(Material.WOOD, (byte) 5))
.add("OAK_SAPPLING", new MaterialData(Material.SAPLING, (byte) 0))
.add("SPRUCE_SAPPLING", new MaterialData(Material.SAPLING, (byte) 1))
.add("BIRCH_SAPPLING", new MaterialData(Material.SAPLING, (byte) 2))
.add("JUNGLE_SAPPLING", new MaterialData(Material.SAPLING, (byte) 3))
.add("ACACIA_SAPPLING", new MaterialData(Material.SAPLING, (byte) 4))
.add("DARK_OAK_SAPPLING", new MaterialData(Material.SAPLING, (byte) 5))
.add("FLOWING_WATER", new MaterialData(Material.WATER))
.add("WATER", new MaterialData(Material.STATIONARY_WATER))
.add("FLOWING_LAVA", new MaterialData(Material.LAVA))
.add("LAVA", new MaterialData(Material.STATIONARY_LAVA))
.add("RED_SAND", new MaterialData(Material.SAND, (byte) 1))
.add("OAK_LOG", new MaterialData(Material.LOG, (byte) 0))
.add("SPRUCE_LOG", new MaterialData(Material.LOG, (byte) 1))
.add("BIRCH_LOG", new MaterialData(Material.LOG, (byte) 2))
.add("JUNGLE_LOG", new MaterialData(Material.LOG, (byte) 3))
.add("ACACIA_LOG", new MaterialData(Material.LOG_2))
.add("DARK_OAK_LOG", new MaterialData(Material.LOG_2, (byte) 1))
.add("OAK_LEAVES", new MaterialData(Material.LEAVES, (byte) 0))
.add("SPRUCE_LEAVES", new MaterialData(Material.LEAVES, (byte) 1))
.add("BIRCH_LEAVES", new MaterialData(Material.LEAVES, (byte) 2))
.add("JUNGLE_LEAVES", new MaterialData(Material.LEAVES, (byte) 3))
.add("ACACIA_LEAVES", new MaterialData(Material.LEAVES_2))
.add("DARK_OAK_LEAVES", new MaterialData(Material.LEAVES_2, (byte) 1))
.add("WET_SPONGE", new MaterialData(Material.SPONGE, (byte) 1))
.add("CHISELED_SANDSTONE", new MaterialData(Material.SANDSTONE, (byte) 1))
.add("SMOOTH_SANDSTONE", new MaterialData(Material.LEAVES, (byte) 2))
.add("NOTEBLOCK", new MaterialData(Material.NOTE_BLOCK))
.add("GOLDEN_RAIL", new MaterialData(Material.POWERED_RAIL))
.add("STICKY_PISTON", new MaterialData(Material.PISTON_STICKY_BASE))
.add("PISTON", new MaterialData(Material.PISTON_BASE))
.add("COBWEB", new MaterialData(Material.WEB))
.add("TALLGRASS", new MaterialData(Material.LONG_GRASS))
.add("TALL_GRASS", new MaterialData(Material.LONG_GRASS))
.add("FERN", new MaterialData(Material.LONG_GRASS, (byte) 2))
.add("DEADBUSH", new MaterialData(Material.DEAD_BUSH))
.add("WHITE_WOOL", new MaterialData(Material.WOOL, (byte) 0))
.add("ORANGE_WOOL", new MaterialData(Material.WOOL, (byte) 1))
.add("MAGENTA_WOOL", new MaterialData(Material.WOOL, (byte) 2))
.add("LIGHT_BLUE_WOOL", new MaterialData(Material.WOOL, (byte) 3))
.add("YELLOW_WOOL", new MaterialData(Material.WOOL, (byte) 4))
.add("LIME_WOOL", new MaterialData(Material.WOOL, (byte) 5))
.add("PINK_WOOL", new MaterialData(Material.WOOL, (byte) 6))
.add("GRAY_WOOL", new MaterialData(Material.WOOL, (byte) 7))
.add("GREY_WOOL", new MaterialData(Material.WOOL, (byte) 7))
.add("LIGHT_GRAY_WOOL", new MaterialData(Material.WOOL, (byte) 8))
.add("LIGHT_GREY_WOOL", new MaterialData(Material.WOOL, (byte) 8))
.add("CYAN_WOOL", new MaterialData(Material.WOOL, (byte) 9))
.add("PURPLE_WOOL", new MaterialData(Material.WOOL, (byte) 10))
.add("BLUE_WOOL", new MaterialData(Material.WOOL, (byte) 11))
.add("BROWN_WOOL", new MaterialData(Material.WOOL, (byte) 12))
.add("GREEN_WOOL", new MaterialData(Material.WOOL, (byte) 13))
.add("RED_WOOL", new MaterialData(Material.WOOL, (byte) 14))
.add("BLACK_WOOL", new MaterialData(Material.WOOL, (byte) 15))
.add("DANDELION", new MaterialData(Material.YELLOW_FLOWER))
.add("RED_FLOWER", new MaterialData(Material.RED_ROSE))
.add("POPPY", new MaterialData(Material.RED_ROSE))
.add("BLUE_ORCHID", new MaterialData(Material.RED_ROSE, (byte) 1))
.add("ALLIUM", new MaterialData(Material.RED_ROSE, (byte) 2))
.add("AZURE_BLUET", new MaterialData(Material.RED_ROSE, (byte)3))
.add("RED_TULIP", new MaterialData(Material.RED_ROSE, (byte)4))
.add("ORANGE_TULIP", new MaterialData(Material.RED_ROSE, (byte)5))
.add("WHITE_TULIP", new MaterialData(Material.RED_ROSE, (byte) 6))
.add("PINK_TULIP", new MaterialData(Material.RED_ROSE, (byte) 7))
.add("OXEYE_DAISY", new MaterialData(Material.RED_ROSE, (byte) 8))
.add("DOUBLE_STONE_SLAB", new MaterialData(Material.DOUBLE_STEP))
.add("DOUBLE_SANDSTONE_SLAB", new MaterialData(Material.DOUBLE_STEP, (byte) 1))
.add("DOUBLE_COBBLE_SLAB", new MaterialData(Material.DOUBLE_STEP, (byte) 3))
.add("DOUBLE_COBBLESTONE_SLAB", new MaterialData(Material.DOUBLE_STEP, (byte) 3))
.add("DOUBLE_BRICK_SLAB", new MaterialData(Material.DOUBLE_STEP, (byte) 4))
.add("DOUBLE_STONEBRICK_SLAB", new MaterialData(Material.DOUBLE_STEP, (byte) 5))
.add("DOUBLE_NETHERBRICK_SLAB", new MaterialData(Material.STEP, (byte) 6))
.add("DOUBLE_QUARTZ_SLAB", new MaterialData(Material.DOUBLE_STEP, (byte) 7))
.add("DOUBLE_SMOOTH_STONE_SLAB", new MaterialData(Material.DOUBLE_STEP, (byte) 8))
.add("DOUBLE_SMOOTH_SANDSTONE_SLAB", new MaterialData(Material.DOUBLE_STEP, (byte) 9))
.add("DOUBLE_WOODEN_SLAB", new MaterialData(Material.WOOD_DOUBLE_STEP))
.add("DOUBLE_WOOD_SLAB", new MaterialData(Material.WOOD_DOUBLE_STEP))
.add("DOUBLE_OAK_SLAB", new MaterialData(Material.WOOD_DOUBLE_STEP))
.add("DOUBLE_SPRUCE_SLAB", new MaterialData(Material.WOOD_DOUBLE_STEP, (byte) 1))
.add("DOUBLE_BIRCH_SLAB", new MaterialData(Material.WOOD_DOUBLE_STEP, (byte)2))
.add("DOUBLE_JUNGLE_SLAB", new MaterialData(Material.WOOD_DOUBLE_STEP, (byte)3))
.add("DOUBLE_ACACIA_SLAB", new MaterialData(Material.WOOD_DOUBLE_STEP, (byte) 4))
.add("DOUBLE_DARK_OAK_SLAB", new MaterialData(Material.WOOD_DOUBLE_STEP, (byte) 5))
.add("WOODEN_SLAB", new MaterialData(Material.WOOD_STEP))
.add("WOOD_SLAB", new MaterialData(Material.WOOD_STEP))
.add("OAK_SLAB", new MaterialData(Material.WOOD_STEP))
.add("SPRUCE_SLAB", new MaterialData(Material.WOOD_STEP, (byte)1))
.add("BIRCH_SLAB", new MaterialData(Material.WOOD_STEP, (byte)2))
.add("JUNGLE_SLAB", new MaterialData(Material.WOOD_STEP, (byte)3))
.add("ACACIA_SLAB", new MaterialData(Material.WOOD_STEP, (byte) 4))
.add("DARK_OAK_SLAB", new MaterialData(Material.WOOD_STEP, (byte) 5))
.add("STONE_SLAB", new MaterialData(Material.STEP))
.add("SANDSTONE_SLAB", new MaterialData(Material.STEP, (byte) 1))
.add("WOOD_SLAB", new MaterialData(Material.STEP, (byte) 2))
.add("WOODEN_SLAB", new MaterialData(Material.STEP, (byte) 2))
.add("COBBLE_SLAB", new MaterialData(Material.STEP, (byte) 3))
.add("COBBLESTONE_SLAB", new MaterialData(Material.STEP, (byte) 3))
.add("BRICK_SLAB", new MaterialData(Material.STEP, (byte) 4))
.add("STONEBRICK_SLAB", new MaterialData(Material.STEP, (byte) 5))
.add("NETHERBRICK_SLAB", new MaterialData(Material.STEP, (byte) 6))
.add("QUARTZ_SLAB", new MaterialData(Material.STEP, (byte) 7))
.add("SANDSTONE_SLAB", new MaterialData(Material.STEP, (byte) 1))
.add("BRICK_BLOCK", new MaterialData(Material.BRICK))
.add("OAK_STAIRS", new MaterialData(Material.WOOD_STAIRS))
.add("STONE_STAIRS", new MaterialData(Material.COBBLESTONE_STAIRS))
.add("COBBLE_STAIRS", new MaterialData(Material.COBBLESTONE_STAIRS))
.add("COBBLESTONE_STAIRS", new MaterialData(Material.COBBLESTONE_STAIRS))
.add("STONEBRICK_STAIRS", new MaterialData(Material.SMOOTH_STAIRS))
.add("STONE_BRICK_STAIRS", new MaterialData(Material.SMOOTH_STAIRS))
.add("NETHERBRICK_STAIRS", new MaterialData(Material.NETHER_BRICK_STAIRS))
.add("SPRUCE_STAIRS", new MaterialData(Material.SPRUCE_WOOD_STAIRS))
.add("BIRCH_STAIRS", new MaterialData(Material.BIRCH_WOOD_STAIRS))
.add("JUNGLE_STAIRS", new MaterialData(Material.JUNGLE_WOOD_STAIRS))
.add("CRAFTING_TABLE", new MaterialData(Material.WORKBENCH))
.add("FARMLAND", new MaterialData(Material.SOIL))
.add("STANDING_SIGN", new MaterialData(Material.SIGN_POST))
.add("SNOW_LAYER", new MaterialData(Material.SNOW))
.add("SNOW", new MaterialData(Material.SNOW_BLOCK))
.add("REEDS", new MaterialData(Material.SUGAR_CANE_BLOCK))
.add("LIT_PUMPKIN", new MaterialData(Material.JACK_O_LANTERN))
.add("WHITE_STAINED_GLASS", new MaterialData(Material.STAINED_GLASS))
.add("WHITE_GLASS", new MaterialData(Material.STAINED_GLASS))
.add("ORANGE_STAINED_GLASS", new MaterialData(Material.STAINED_GLASS, (byte) 1))
.add("ORANGE_GLASS", new MaterialData(Material.STAINED_GLASS, (byte) 1))
.add("MAGENTA_STAINED_GLASS", new MaterialData(Material.STAINED_GLASS, (byte) 2))
.add("MAGENTA_GLASS", new MaterialData(Material.STAINED_GLASS, (byte) 2))
.add("LIGHT_BLUE_STAINED_GLASS", new MaterialData(Material.STAINED_GLASS, (byte) 3))
.add("LIGHT_BLUE_GLASS", new MaterialData(Material.STAINED_GLASS, (byte) 3))
.add("YELLOW_STAINED_GLASS", new MaterialData(Material.STAINED_GLASS, (byte) 4))
.add("YELLOW_GLASS", new MaterialData(Material.STAINED_GLASS, (byte) 4))
.add("LIME_STAINED_GLASS", new MaterialData(Material.STAINED_GLASS, (byte) 5))
.add("LIME_GLASS", new MaterialData(Material.STAINED_GLASS, (byte) 5))
.add("PINK_STAINED_GLASS", new MaterialData(Material.STAINED_GLASS, (byte) 6))
.add("PINK_GLASS", new MaterialData(Material.STAINED_GLASS, (byte) 6))
.add("GRAY_STAINED_GLASS", new MaterialData(Material.STAINED_GLASS, (byte) 7))
.add("GRAY_GLASS", new MaterialData(Material.STAINED_GLASS, (byte) 7))
.add("LIGHT_GRAY_STAINED_GLASS", new MaterialData(Material.STAINED_GLASS, (byte) 8))
.add("LIGHT_GRAY_GLASS", new MaterialData(Material.STAINED_GLASS, (byte) 8))
.add("CYAN_STAINED_GLASS", new MaterialData(Material.STAINED_GLASS, (byte) 9))
.add("CYAN_GLASS", new MaterialData(Material.STAINED_GLASS, (byte) 9))
.add("PURPLE_STAINED_GLASS", new MaterialData(Material.STAINED_GLASS, (byte) 10))
.add("PURPLE_GLASS", new MaterialData(Material.STAINED_GLASS, (byte) 10))
.add("BLUE_STAINED_GLASS", new MaterialData(Material.STAINED_GLASS, (byte) 11))
.add("BLUE_GLASS", new MaterialData(Material.STAINED_GLASS, (byte) 11))
.add("BROWN_STAINED_GLASS", new MaterialData(Material.STAINED_GLASS, (byte) 12))
.add("BROWN_GLASS", new MaterialData(Material.STAINED_GLASS, (byte) 12))
.add("GREEN_STAINED_GLASS", new MaterialData(Material.STAINED_GLASS, (byte) 13))
.add("GREEN_GLASS", new MaterialData(Material.STAINED_GLASS, (byte) 13))
.add("RED_STAINED_GLASS", new MaterialData(Material.STAINED_GLASS, (byte) 14))
.add("RED_GLASS", new MaterialData(Material.STAINED_GLASS, (byte) 14))
.add("BLACK_STAINED_GLASS", new MaterialData(Material.STAINED_GLASS, (byte) 15))
.add("BLACK_GLASS", new MaterialData(Material.STAINED_GLASS, (byte) 15))
.add("WHITE_STAINED_GLASS_PANE", new MaterialData(Material.STAINED_GLASS_PANE, (byte) 0))
.add("WHITE_GLASS_PANE", new MaterialData(Material.STAINED_GLASS_PANE, (byte) 0))
.add("ORANGE_STAINED_GLASS_PANE", new MaterialData(Material.STAINED_GLASS_PANE, (byte) 1))
.add("ORANGE_GLASS_PANE", new MaterialData(Material.STAINED_GLASS_PANE, (byte) 1))
.add("MAGENTA_STAINED_GLASS_PANE", new MaterialData(Material.STAINED_GLASS_PANE, (byte) 2))
.add("MAGENTA_GLASS_PANE", new MaterialData(Material.STAINED_GLASS_PANE, (byte) 2))
.add("LIGHT_BLUE_STAINED_GLASS_PANE", new MaterialData(Material.STAINED_GLASS_PANE, (byte) 3))
.add("LIGHT_BLUE_GLASS_PANE", new MaterialData(Material.STAINED_GLASS_PANE, (byte) 3))
.add("YELLOW_STAINED_GLASS_PANE", new MaterialData(Material.STAINED_GLASS_PANE, (byte) 4))
.add("YELLOW_GLASS_PANE", new MaterialData(Material.STAINED_GLASS_PANE, (byte) 4))
.add("LIME_STAINED_GLASS_PANE", new MaterialData(Material.STAINED_GLASS_PANE, (byte) 5))
.add("LIME_GLASS_PANE", new MaterialData(Material.STAINED_GLASS_PANE, (byte) 5))
.add("PINK_STAINED_GLASS_PANE", new MaterialData(Material.STAINED_GLASS_PANE, (byte) 6))
.add("PINK_GLASS_PANE", new MaterialData(Material.STAINED_GLASS_PANE, (byte) 6))
.add("GRAY_STAINED_GLASS_PANE", new MaterialData(Material.STAINED_GLASS_PANE, (byte) 7))
.add("GRAY_GLASS_PANE", new MaterialData(Material.STAINED_GLASS_PANE, (byte) 7))
.add("LIGHT_GRAY_STAINED_GLASS_PANE", new MaterialData(Material.STAINED_GLASS_PANE, (byte) 8))
.add("LIGHT_GRAY_GLASS_PANE", new MaterialData(Material.STAINED_GLASS_PANE, (byte) 8))
.add("CYAN_STAINED_GLASS_PANE", new MaterialData(Material.STAINED_GLASS_PANE, (byte) 9))
.add("CYAN_GLASS_PANE", new MaterialData(Material.STAINED_GLASS_PANE, (byte) 9))
.add("PURPLE_STAINED_GLASS_PANE", new MaterialData(Material.STAINED_GLASS_PANE, (byte) 10))
.add("PURPLE_GLASS_PANE", new MaterialData(Material.STAINED_GLASS_PANE, (byte) 10))
.add("BLUE_STAINED_GLASS_PANE", new MaterialData(Material.STAINED_GLASS_PANE, (byte) 11))
.add("BLUE_GLASS_PANE", new MaterialData(Material.STAINED_GLASS_PANE, (byte) 11))
.add("BROWN_STAINED_GLASS_PANE", new MaterialData(Material.STAINED_GLASS_PANE, (byte) 12))
.add("BROWN_GLASS_PANE", new MaterialData(Material.STAINED_GLASS_PANE, (byte) 12))
.add("GREEN_STAINED_GLASS_PANE", new MaterialData(Material.STAINED_GLASS_PANE, (byte) 13))
.add("GREEN_GLASS_PANE", new MaterialData(Material.STAINED_GLASS_PANE, (byte) 13))
.add("RED_STAINED_GLASS_PANE", new MaterialData(Material.STAINED_GLASS_PANE, (byte) 14))
.add("RED_GLASS_PANE", new MaterialData(Material.STAINED_GLASS_PANE, (byte) 14))
.add("BLACK_STAINED_GLASS_PANE", new MaterialData(Material.STAINED_GLASS_PANE, (byte) 15))
.add("BLACK_GLASS_PANE", new MaterialData(Material.STAINED_GLASS_PANE, (byte) 15))
.add("MONSTER_EGG", new MaterialData(Material.MONSTER_EGGS))
.add("STONE_MONSTER_EGG", new MaterialData(Material.MONSTER_EGGS))
.add("COBBLE_MONSTER_EGG", new MaterialData(Material.STAINED_GLASS, (byte) 1))
.add("COBBLESTONE_MONSTER_EGG", new MaterialData(Material.STAINED_GLASS, (byte) 1))
.add("STONEBRICK_MONSTER_EGG", new MaterialData(Material.STAINED_GLASS, (byte) 2))
.add("MOSSY_STONEBRICK_MONSTER_EGG", new MaterialData(Material.STAINED_GLASS, (byte) 3))
.add("CRACKED_STONEBRICK_MONSTER_EGG", new MaterialData(Material.STAINED_GLASS, (byte) 4))
.add("CHISELED_STONEBRICK_MONSTER_EGG", new MaterialData(Material.STAINED_GLASS, (byte) 5))
.add("BROWN_MUSHROOM_BLOCK", new MaterialData(Material.HUGE_MUSHROOM_1))
.add("RED_MUSHROOM_BLOCK", new MaterialData(Material.HUGE_MUSHROOM_2))
.add("IRON_BARS", new MaterialData(Material.IRON_FENCE))
.add("GLASS_PANE", new MaterialData(Material.THIN_GLASS))
.add("WATERLILY", new MaterialData(Material.WATER_LILY))
.add("LILY_PAD", new MaterialData(Material.WATER_LILY))
.add("NETHER_BRICK", new MaterialData(Material.NETHER_BRICK_ITEM))
.add("NETHERBRICK", new MaterialData(Material.NETHER_BRICK_ITEM))
.add("NETHER_BRICK_FENCE", new MaterialData(Material.NETHER_FENCE))
.add("NETHERBRICK_FENCE", new MaterialData(Material.NETHER_FENCE))
.add("NETHER_WART", new MaterialData(Material.NETHER_WARTS))
.add("ENCHANTING_TABLE", new MaterialData(Material.ENCHANTMENT_TABLE))
.add("END_PORTAL", new MaterialData(Material.ENDER_PORTAL))
.add("END_PORTAL_FRAME", new MaterialData(Material.ENDER_PORTAL_FRAME))
.add("END_STONE", new MaterialData(Material.ENDER_STONE))
.add("REDSTONE_LAMP", new MaterialData(Material.REDSTONE_LAMP_OFF))
.add("LIT_REDSTONE_LAMP", new MaterialData(Material.REDSTONE_LAMP_ON))
.add("COMMAND_BLOCK", new MaterialData(Material.COMMAND))
.add("COBBLESTONE_WALL", new MaterialData(Material.COBBLE_WALL))
.add("MOSSY_COBBLESTONE_WALL", new MaterialData(Material.COBBLE_WALL, (byte) 1))
.add("MOSSY_COBBLE_WALL", new MaterialData(Material.COBBLE_WALL, (byte) 1))
.add("CHISELED_QUARTZ_BLOCK", new MaterialData(Material.QUARTZ_BLOCK, (byte) 1))
.add("PILLAR_QUARTZ_BLOCK", new MaterialData(Material.QUARTZ_BLOCK, (byte) 2))
.add("STAINED_HARDENED_CLAY", new MaterialData(Material.STAINED_CLAY))
.add("WHITE_STAINED_HARDENED_CLAY", new MaterialData(Material.STAINED_CLAY))
.add("WHITE_CLAY", new MaterialData(Material.STAINED_CLAY))
.add("ORANGE_CLAY", new MaterialData(Material.STAINED_CLAY, (byte) 1))
.add("MAGENTA_CLAY", new MaterialData(Material.STAINED_CLAY, (byte) 2))
.add("LIGHT_BLUE_CLAY", new MaterialData(Material.STAINED_CLAY, (byte) 3))
.add("YELLOW_CLAY", new MaterialData(Material.STAINED_CLAY, (byte) 4))
.add("LIME_CLAY", new MaterialData(Material.STAINED_CLAY, (byte) 5))
.add("PINK_CLAY", new MaterialData(Material.STAINED_CLAY, (byte) 6))
.add("GRAY_CLAY", new MaterialData(Material.STAINED_CLAY, (byte) 7))
.add("LIGHT_GRAY_CLAY", new MaterialData(Material.STAINED_CLAY, (byte) 8))
.add("CYAN_CLAY", new MaterialData(Material.STAINED_CLAY, (byte) 9))
.add("PURPLE_CLAY", new MaterialData(Material.STAINED_CLAY, (byte) 10))
.add("BLUE_CLAY", new MaterialData(Material.STAINED_CLAY, (byte) 11))
.add("BROWN_CLAY", new MaterialData(Material.STAINED_CLAY, (byte) 12))
.add("GREEN_CLAY", new MaterialData(Material.STAINED_CLAY, (byte) 13))
.add("RED_CLAY", new MaterialData(Material.STAINED_CLAY, (byte) 14))
.add("BLACK_CLAY", new MaterialData(Material.STAINED_CLAY, (byte) 15))
.add("SLIME", new MaterialData(Material.SLIME_BLOCK))
.add("PRISMARINE_BRICK", new MaterialData(Material.PRISMARINE, (byte) 1))
.add("DARK_PRISMARINE", new MaterialData(Material.PRISMARINE, (byte) 2))
.add("WHITE_CARPET", new MaterialData(Material.CARPET, (byte) 0))
.add("ORANGE_CARPET", new MaterialData(Material.CARPET, (byte) 1))
.add("MAGENTA_CARPET", new MaterialData(Material.CARPET, (byte) 2))
.add("LIGHT_BLUE_CARPET", new MaterialData(Material.CARPET, (byte) 3))
.add("YELLOW_CARPET", new MaterialData(Material.CARPET, (byte) 4))
.add("LIME_CARPET", new MaterialData(Material.CARPET, (byte) 5))
.add("PINK_CARPET", new MaterialData(Material.CARPET, (byte) 6))
.add("GRAY_CARPET", new MaterialData(Material.CARPET, (byte) 7))
.add("GREY_CARPET", new MaterialData(Material.CARPET, (byte) 7))
.add("LIGHT_GRAY_CARPET", new MaterialData(Material.CARPET, (byte) 8))
.add("LIGHT_GREY_CARPET", new MaterialData(Material.CARPET, (byte) 8))
.add("CYAN_CARPET", new MaterialData(Material.CARPET, (byte) 9))
.add("PURPLE_CARPET", new MaterialData(Material.CARPET, (byte) 10))
.add("BLUE_CARPET", new MaterialData(Material.CARPET, (byte) 11))
.add("BROWN_CARPET", new MaterialData(Material.CARPET, (byte) 12))
.add("GREEN_CARPET", new MaterialData(Material.CARPET, (byte) 13))
.add("RED_CARPET", new MaterialData(Material.CARPET, (byte) 14))
.add("BLACK_CARPET", new MaterialData(Material.CARPET, (byte) 15))
.add("HARDENED_CLAY", new MaterialData(Material.HARD_CLAY))
.add("SUNFLOWER", new MaterialData(Material.DOUBLE_PLANT))
.add("LILAC", new MaterialData(Material.DOUBLE_PLANT, (byte) 1))
.add("DOUBLE_TALLGRASS", new MaterialData(Material.DOUBLE_PLANT, (byte) 2))
.add("DOUBLE_TALL_GRASS", new MaterialData(Material.DOUBLE_PLANT, (byte) 2))
.add("LARGE_FERN", new MaterialData(Material.DOUBLE_PLANT, (byte) 3))
.add("ROSE_BUSH", new MaterialData(Material.DOUBLE_PLANT, (byte) 4))
.add("PEONY", new MaterialData(Material.DOUBLE_PLANT, (byte) 5))
.add("CHISELED_RED_SANDSTONE", new MaterialData(Material.RED_SANDSTONE, (byte) 1))
.add("SMOOTH_RED_SANDSTONE", new MaterialData(Material.RED_SANDSTONE, (byte) 2))
.add("ACACIA_DOOR", new MaterialData(Material.ACACIA_DOOR_ITEM))
.add("SPRUCE_DOOR", new MaterialData(Material.SPRUCE_DOOR_ITEM))
.add("BIRCH_DOOR", new MaterialData(Material.BIRCH_DOOR_ITEM))
.add("JUNGLE_DOOR", new MaterialData(Material.JUNGLE_DOOR_ITEM))
.add("DARK_OAK_DOOR", new MaterialData(Material.DARK_OAK_DOOR_ITEM))
.add("STONE_SHOVEL", new MaterialData(Material.STONE_SPADE))
.add("WOOD_SHOVEL", new MaterialData(Material.WOOD_SPADE))
.add("WOODEN_SHOVEL", new MaterialData(Material.WOOD_SPADE))
.add("IRON_SHOVEL", new MaterialData(Material.IRON_SPADE))
.add("GOLD_SHOVEL", new MaterialData(Material.GOLD_SPADE))
.add("GOLDEN_SHOVEL", new MaterialData(Material.GOLD_SPADE))
.add("DIAMOND_SHOVEL", new MaterialData(Material.DIAMOND_SPADE))
.add("STONE_PRESSURE_PLATE", new MaterialData(Material.STONE_PLATE))
.add("WOOD_PRESSURE_PLATE", new MaterialData(Material.WOOD_PLATE))
.add("WOODEN_PRESSURE_PLATE", new MaterialData(Material.WOOD_PLATE))
.add("GOLD_PRESSURE_PLATE", new MaterialData(Material.GOLD_PLATE))
.add("GOLDEN_PRESSURE_PLATE", new MaterialData(Material.GOLD_PLATE))
.add("LIGHT_WEIGHTED_PRESSURE_PLATE", new MaterialData(Material.GOLD_PLATE))
.add("IRON_PRESSURE_PLATE", new MaterialData(Material.IRON_PLATE))
.add("HEAVY_WEIGHTED_PRESSURE_PLATE", new MaterialData(Material.IRON_PLATE))
.add("FILLED_MAP", new MaterialData(Material.MAP))
.add("SPAWN_EGG", new MaterialData(Material.MONSTER_EGG, (byte) 1))
.add("EXPERIENCE_BOTTLE", new MaterialData(Material.EXP_BOTTLE))
.add("WRITABLE_BOOK", new MaterialData(Material.BOOK_AND_QUILL))
.add("FLOWER_POT", new MaterialData(Material.FLOWER_POT_ITEM))
.add("SKULL", new MaterialData(Material.SKULL_ITEM))
.add("CARROT_ON_A_STICK", new MaterialData(Material.CARROT_STICK))
.add("FIREWORKS", new MaterialData(Material.FIREWORK))
.add("COMPARATOR", new MaterialData(Material.REDSTONE_COMPARATOR))
.add("NETHERBRICK", new MaterialData(Material.NETHER_BRICK_ITEM))
.add("TNT_MINECART", new MaterialData(Material.EXPLOSIVE_MINECART))
.add("COMMAND_BLOCK_MINECART", new MaterialData(Material.COMMAND_MINECART))
.add("IRON_HORSE_ARMOR", new MaterialData(Material.IRON_BARDING))
.add("GOLD_HORSE_ARMOR", new MaterialData(Material.GOLD_BARDING))
.add("DIAMOND_HORSE_ARMOR", new MaterialData(Material.DIAMOND_BARDING))
.add("LEAD", new MaterialData(Material.LEASH))
.add("STONEBRICK", new MaterialData(Material.SMOOTH_BRICK, (byte) 0))
.add("MOSSY_STONEBRICK", new MaterialData(Material.SMOOTH_BRICK, (byte) 1))
.add("CRACKED_STONEBRICK", new MaterialData(Material.SMOOTH_BRICK, (byte) 2))
.add("CHISELED_STONEBRICK", new MaterialData(Material.SMOOTH_BRICK, (byte) 3))
.add("BLACK_DYE", new MaterialData(Material.INK_SACK, (byte) 0))
.add("RED_DYE", new MaterialData(Material.INK_SACK, (byte) 1))
.add("GREEN_DYE", new MaterialData(Material.INK_SACK, (byte) 2))
.add("BROWN_DYE", new MaterialData(Material.INK_SACK, (byte) 3))
.add("COCOA_BEANS", new MaterialData(Material.INK_SACK, (byte) 3))
.add("BLUE_DYE", new MaterialData(Material.INK_SACK, (byte) 4))
.add("LAPIS", new MaterialData(Material.INK_SACK, (byte) 4))
.add("LAPIS_LAZULI", new MaterialData(Material.INK_SACK, (byte) 4))
.add("PURPLE_DYE", new MaterialData(Material.INK_SACK, (byte) 5))
.add("CYAN_DYE", new MaterialData(Material.INK_SACK, (byte) 6))
.add("LIGHT_GRAY_DYE", new MaterialData(Material.INK_SACK, (byte) 7))
.add("LIGHT_GREY_DYE", new MaterialData(Material.INK_SACK, (byte) 7))
.add("GRAY_DYE", new MaterialData(Material.INK_SACK, (byte) 8))
.add("GREY_DYE", new MaterialData(Material.INK_SACK, (byte) 8))
.add("PINK_DYE", new MaterialData(Material.INK_SACK, (byte) 9))
.add("LIME_DYE", new MaterialData(Material.INK_SACK, (byte) 10))
.add("YELLOW_DYE", new MaterialData(Material.INK_SACK, (byte) 11))
.add("LIGHT_BLUE_DYE", new MaterialData(Material.INK_SACK, (byte) 12))
.add("MAGENTA_DYE", new MaterialData(Material.INK_SACK, (byte) 13))
.add("ORANGE_DYE", new MaterialData(Material.INK_SACK, (byte) 14))
.add("WHITE_DYE", new MaterialData(Material.INK_SACK, (byte) 15))
.add("BONE_MEAL", new MaterialData(Material.INK_SACK, (byte) 15))
.add("POTATOE", new MaterialData(Material.POTATO))
.add("POTATOES", new MaterialData(Material.POTATO))
.add("POTATO_BLOCK", new MaterialData(Material.POTATO))
.add("CARROTS", new MaterialData(Material.CARROT))
.add("CARROT_BLOCK", new MaterialData(Material.CARROT))
;
}
}