public static void loadItemDefinitions() {
		try {
			int parsedIndex = 0;
			setDefinitions(new ItemDefinition[7956]);
			DataInputStream inputStream = new DataInputStream(new FileInputStream("./data/item_definition/ItemDefinitions.dat"));
			while (inputStream.available() > 0) {
				ItemDefinition itemDefinition = new ItemDefinition();
				itemDefinition.setIndex(inputStream.readShort());
				itemDefinition.setItemName(Utilities.formatInputString(Utilities.readInputString(inputStream)));
				itemDefinition.setItemDescription(Utilities.readInputString(inputStream));
				itemDefinition.setStackable(inputStream.readByte() == 1);
				itemDefinition.setNotedIndex(inputStream.readShort());
				if (itemDefinition.getNotedIndex() != -1) {
					itemDefinition.setNoted(inputStream.readByte() == 1);
				}
				itemDefinition.setStorePrice(inputStream.readInt());
				itemDefinition.setLowAlchValue(inputStream.readInt());
				itemDefinition.setHighAlchValue(inputStream.readInt());
				itemDefinition.setEquipmentSlot(inputStream.readByte());
				if (itemDefinition.getEquipmentSlot() != -1) {
					for (int i = 0; i < itemDefinition.getBonus().length; i++) {
						itemDefinition.getBonus()[i] = inputStream.readByte();
					}
				}
				if (itemDefinition.getItemName().endsWith("2h sword") || itemDefinition.getItemName().endsWith("hortbow") || itemDefinition.getItemName().endsWith("ongbow")) {
					itemDefinition.setTwoHanded(true);
				}
				getDefinitions()[parsedIndex] = itemDefinition;
				parsedIndex ++;
			}
			inputStream.close();
		} catch (Exception exception) {
			exception.printStackTrace();
		}
	}