private void loadItemTypes(String fn) {
        String line;
        String parts[];

        try {
            InputStream in = getClass().getResourceAsStream(GameController.CONFIG_DIR + fn);
            BufferedReader br = new BufferedReader(new InputStreamReader(in));

            String name = "";
            int createQty = 0;
            int maxStack = 0;
            String category = "";
            String type = "";
            int techLevel = 0;
            String item1 = "";
            int item1Qty = 0;
            String item2 = "";
            int item2Qty = 0;
            String item3 = "";
            int item3Qty = 0;
            String item4 = "";
            int item4Qty = 0;
            String skill1 = "";
            String skill2 = "";
            String workBench = "";
            float xpModifier = 1f;
            String description = "";

            ItemType it;

            while ((line = br.readLine()) != null) {
                if (line.length() == 0) {
                    continue;
                }
                if (line.startsWith("//")) {
                    continue;
                }

                parts = line.split(" ", 19);

                if (parts.length != 19) {
                    System.out.println("Error in " + fn);
                }

                name = parts[0];
                createQty = Integer.parseInt(parts[1]);
                maxStack = Integer.parseInt(parts[2]);
                category = parts[3];
                type = parts[4];
                techLevel = Integer.parseInt(parts[5]);
                item1 = parts[6];
                item1Qty = Integer.parseInt(parts[7]);
                item2 = parts[8];
                item2Qty = Integer.parseInt(parts[9]);
                item3 = parts[10];
                item3Qty = Integer.parseInt(parts[11]);
                item4 = parts[12];
                item4Qty = Integer.parseInt(parts[13]);
                skill1 = parts[14];
                skill2 = parts[15];
                workBench = parts[16];
                xpModifier = Float.parseFloat(parts[17]);
                description = parts[18];

                it = new ItemType(this, registry, name, createQty, maxStack, category, type, techLevel,
                        item1, item1Qty, item2, item2Qty, item3, item3Qty, item4, item4Qty,
                        skill1, skill2, workBench, xpModifier, description);
                
                itemTypes.put(name, it);
                
                itemTypesList.add(it);
            }
            in.close();
        } catch (Exception e) {
            System.err.println("Error: " + e.getMessage());
        }
    }