public static void createItems() throws IOException {
        itemList = new HashMap<String, Item>();

        URL url = Item.class.getResource(itemsDescriptorFilePath);
        BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()));
        assert reader != null;

        String line = null;
        String currentItemId = null;
        ItemType currentItemType = null;

        // KEY
        List<RoomDoorPair> currentKeyDoorList = new ArrayList<RoomDoorPair>();

        while ((line = reader.readLine()) != null) {
            // ID
            if (line.startsWith("O_")) {
                currentItemId = line;
            }
            // TYPE
            else if (line.startsWith("type=")) {
                String[] tokens = line.split("=");
                String type = tokens[1];

                if (type.equals("normal")) {
                    currentItemType = ItemType.NORMAL;
                }
                else if (type.equals("key")) {
                    currentItemType = ItemType.KEY;
                }
                else {
                    assert false : "Item type unknown : " + type;
                }
            }
            // DOOR
            else if (line.startsWith("DOOR:")) {
                assert currentItemType == ItemType.KEY : "Trying to define doors field for an item that is not a key : " + currentItemType;

                String[] tokens = line.split(":");
                String[] infos = tokens[1].split(";");

                int doorId = Integer.parseInt(infos[0]);

                String roomId = infos[1];
                assert roomId.startsWith("R_");
                RoomDoorPair door = new RoomDoorPair(roomId, doorId);

                currentKeyDoorList.add(door);
            }
            // END LINE -> construct item
            else if (line.equals("END"))
            {
                String id = currentItemId.substring(2);
                String name = id + "_name";
                String description = id + "_descr";
                String useFeedback = id + "_use";
                String useFailFeedback = id + "_useFail";

                Item item = null;
                switch (currentItemType) {
                case NORMAL:
                    item = new Item(name, description, null, null, false, true);
                    break;
                case KEY:
                    item = new Key(name, description, useFeedback, useFailFeedback, currentKeyDoorList);
                    break;
                }

                itemList.put(currentItemId, item);

                currentItemId = null;
                currentItemType = null;

                currentKeyDoorList.clear();
            }
        }

        reader.close();
    }