public MaterialData getReqdMaterialData(ArrowType type) {
		if (data.containsKey("materials")) {
			LinkedHashMap<String, Object> materials = data.get("materials");
			String typeName = type.toString().toLowerCase();
			if (materials != null && materials.containsKey(typeName)) {
				try {
					String value = materials.get(typeName).toString();
					MaterialData r = new MaterialData(Material.AIR);
					if (value.indexOf(':') > 0) {
						int blockId = Integer.parseInt(value.substring(0, value.indexOf(':')));
						byte dataVal = Byte.parseByte(value.substring(value.indexOf(':') + 1));
						if (blockId == Material.INK_SACK.getId()) {
							r = new MaterialData(Material.INK_SACK, dataVal);
						} else if (blockId == Material.WOOL.getId()) {
							r = new MaterialData(Material.WOOL, dataVal);
						} else {
							r = new MaterialData(blockId);
						}
					} else {
						r = new MaterialData(Material.getMaterial(Integer.parseInt(value)));
					}
					return r;
				} catch (Exception e) {
					plugin.log.warning("Exception parsing requirement for " + typeName + " arrow");
					return new MaterialData(Material.AIR);
				}
			} else return new MaterialData(Material.AIR);
		} else return new MaterialData(Material.AIR);
	}