public static ItemDefinition getDefinition(int id) {
		for (int i = 0; i < 10; i++)
			if (cache[i].id == id)
				return cache[i];

		cacheIndex = (cacheIndex + 1) % 10;
		ItemDefinition definition = cache[cacheIndex];
		stream.position = streamOffsets[id];
		definition.id = id;
		definition.setDefaults();
		definition.readValues(stream);
		if (definition.noteTemplateId != -1)
			definition.toNote();
		if (!membersWorld && definition.membersObject) {
			definition.name = "Members Object";
			definition.description = "Login to a members' server to use this object."
					.getBytes();
			definition.groundActions = null;
			definition.actions = null;
			definition.teamId = 0;
		}
		return definition;
	}